Oddbean new post about | logout
 I don't understand how software teams can develop apps or major features that don't work at all, and not even notice. I try to use it one time, for 5 minutes and it's just a succession of bizarre, painfully-obvious bugs, including things like

1) Can't sign in with browser extension or nsec bunker, even though that is listed as an option.
2) Can't manage relays, even though the app hardly works without that.
3) Crash or freeze, with no recovery or error-handling.
4) Buttons wander off the page/screen, so that you can't click them.
5) Windows pile on top of windows.
6) Gigantic permission events that lead to doom loops.
7) Writes notes from the wrong/random npub, even though it displays the correct one in the profile (What is it signing with???)
8) Blank page, database error, 404 error.
9) Save button that cancels. Cancel button that saves.
10) Buttons that don't respond and then become inactive, when pressed, so that you end up pressing it over and over and generate multiples of the same event.

This is a total mystery to me, for over a year, now, and I still have not received any answer other than snark.

I do not understand how this is even a thing. 🤷‍♀️ 
 iT wOrKs On My MaChInE wHaT's WrOnG wItH yOu? 
 This is actually what they usually tell me.

Or they say "user error". 🥴 
 I've been seeing this one on #Primal web for months. It's a permanent bug. There's a Cancel button someplace way off to the right. I keep writing about it and some of those notes have trended, but their developers don't really use Nostr or follow me, so... 🤷‍♀️

It's on every mobile browser I use, and it's like...
Tell me you didn't test your software without telling me.

https://image.nostr.build/b49479c48a942a1a6dde03d394d77c7e7e8c7dc94b377b09d7efb2337ffc43a0.png 
 Here's how to recreate this bug
1) Open Primal.net in an Android browser.
2) Click on any note in any feed.
3) Try to reply, by clicking on the reply field. 
 i've just never liked primal... and i don't use mobile... but that is pretty bad lol 
 “Their developers don’t really use nostr” ☠️☠️☠️☠️ 
 Arkinox, you changed your npub?  
 haha, nah, i'm the guy who says "don't use it, i haven't got it production ready yet" 
 This is always the correct answer.
A Definition of Done that can be 💯 fulfilled isn't done yet. 
 all software development is Die Unendliche Geschichte 
 Yeah.

What drives me nuts, tho, is the idea that agile means the first releases are really buggy and you clean it up, later.

Ummm. No. The DoD starts with the first increment. The increments differ by feature set, not quality. 
 yeah, features are the hardest thing to get right, the less the better

working through this bluesky API is a nightmare because of their lack of moderation with features, and the naming scheme is so bad i could scream... i mean stutter stutter, and more stutter, and just throw in some more random meaningless words that you have to read their documents twice to even understand 
 Only one of us has even gone there, so far. We're blocking it out. 🤣  
 I have been looking at agile very critically lately for that exact reason. No professional experience, but idk man
 
 Well-done agile is extremely efficient. 
 I'm sure is efficient in development, but there is something about an app that's always in pre-release, deferring QA to the user. It's just incomplete and that's what bothers me I guess.  
 That has nothing to do with agile, tho. Agile releases a done increment. 
 If anything, agile should be raising overall quality, rather than lowering it. 
 I don't get it either. I don't even commit changes until I know they work.  
 I can see a bug occasionally getting past QC, but the bug just sitting there for weeks or even months?

That means nobody involved (and it's sometimes an entire team, and they're getting paid to build this stuff) has tried clicking on it... ever. 
 TBH sometimes devs have so much to do they are literally afraid to check prior work and find anything wrong because it will increase their stress and strain their deadlines 🫨 its literal anxiety 
 Then they need better project management. 🤷‍♀️
Software development has never not been stressful. 
 It's only stressful because they keep moving ahead when they still have bugs left behind.  
 Dragging entire cartloads of technical debt behind them and when you point to it they get pissed off because they're stressed out. But they don't want to stop because they get paid on delivery, not on quality. Because they people who are paying them actually don't care if the stuff works. 😂

But we can all see that nobody is using their app. We can't use it. It doesn't work. 
 I blame react ⚛️ 
 A lot of Nostr devs use Svelte, it seems. 
 Then I blame JS in totality  
 I can agree with that. 
 Yeah, JS is...well it's JS. 
 This is why I Go...

With a sprinkle of HTMX  
 Go makes me vomit all over the keyboard but I've gotten used to cleaning it up. I just try not too eat much before I go looking at it.  
 Precisely. JS and all of its frameworks.

HTMX gives 95% of all the functionality of JS, 95% confusing bloated functions I no longer have to write.  Just need JS for some animations and switches. And MOST of that is just animation...  
 I need to start looking into HTMX more seriously. While I'll talk crap, I feel like a JS is a necessary evil at this point, it's just a huge percentage of the job market now.  
 Clarify, TS specifically, I can't work with weakly typed languages, it just isn't for me. I started using PHP when they introduced strict typing semantics :) 
 HTMX.org 

You must learn to handle everything server side. HATEOAS

Think differently. It weird at first, and the longer you've been using JS traditionally the harder it's going to be to re-wire your brain to program that way. It seems wrong at first but then the code base is so much smaller and less worry about how the client behaves because most compute is server side.  
 This is why Agile software development is a thing.  It's saying "we'll get there when we get there, because we're doing it right."  Deadlines are antithetical to Agile. 
 the hardest thing with deadlines and dev is that architecture is hard to measure without years of experience at actually implementing feature sets

very often marketing is in charge of feature sets and architects rapidly turn grey and drop dead of heart attacks by deadline

that is, if the architects are actually qualified, and IMO, software architects can only be called qualified after 10 years working as an engineer

there is no magic trick learning how to spec out a project without getting into overruns and quality problems due to deadlines and unrealistic expectations of management 
 Well, that's why architect is a real job. 🤷‍♀️ 
 yeah but most of them are like 3 years CS and 2 years writing waffly documents and get hired to direct work they don't understand 
 for real, i've seen this at a shitcoin job, the "architect" was really a marketing guy in disguise 
 i'm getting close to being able to do it now, but i've been working mostly full time since 2018

nothing like failing to build the features you thought you could build to teach you prudence in architecture...

where building architects must learn to work with material and space, software it's about time and brains 
 It's like Product Owner and Business Analyst. Real roles that require competent, talented, experienced technicians, but usually end up filled with business people. 
 GM! 🐸 🥕 :beetroot:  
 We've got that at my day job right now.  The deadline is artificially imposed by the big trade show, the research and product teams take their time in figuring out what they want to debut at the trade show, they ask the devs to do it, the devs say "there's not enough time before the trade show," and chaos ensues. 😅 
 Demo Mode™ 
 yeah, my most recent "release" was that

i already knew by that point it couldn't stand up to 24 hours running, but perfectly fine and great without many users on it 
 But I'm just one guy... Not a team.  
 But you at least asked other people to help you test stuff out and then tidy up before an official release.

They seem to just push this stuff out there, do a victory lap, collect some 🌽, and move on. 
 Shoot... I didn't even collect any 🌽 

For critical nostr infrastructure no less... 

Well nostr:nprofile1qqsw3mfhnrr0l6ll5zzsrtpeufckv2lazc8k3ru5c3wkjtv8vlwngkspypmhxue69uhky6t5vdhkjmndv9uxjmtpd35hxarn9ehkumrfdejj7qgwwaehxw309ahx7uewd3hkctcpremhxue69uhkummnw3ez6ur4vgh8wetvd3hhyer9wghxuet59u6hf4wa dropped me 2k sats but that's all. 🙏🏻 Appreciate you so much nostr:nprofile1qqsw3mfhnrr0l6ll5zzsrtpeufckv2lazc8k3ru5c3wkjtv8vlwngkspypmhxue69uhky6t5vdhkjmndv9uxjmtpd35hxarn9ehkumrfdejj7qgwwaehxw309ahx7uewd3hkctcpremhxue69uhkummnw3ez6ur4vgh8wetvd3hhyer9wghxuet59u6hf4wa 
 Hey I appreciate you too bro! Can I help do some testing still on grain? I was really busy when you DMd me before 😅 
 Please. I'm doing a bit of front end work to add the ability to import your notes from other relays. It works, but it needs improvement. I don't get a success result on large imports (it still imports them though) and my spinner works now, but doesn't go away when I get the result. I'm still kind of fresh with go and front end stuff. Other stuff to-do is in the issues on GitHub. 
https://github.com/0ceanslim/grain 
 You should add paid services to your relay to help cover running costs.  Maybe also set up a tip wallet.

nostr:nprofile1qqsggm4l0xs23qfjwnkfwf6fqcs66s3lz637gaxhl4nwd2vtle8rnfqprdmhxue69uhhg6r9vehhyetnwshxummnw3erztnrdakj7qfqwaehxw309ahx7um5wghx26tww4hxg7nhv9h856t89eehqctrv5hsz8rhwden5te0w35x2cmfw3skgetv9ehx7um5wgcjucm0d5hsjmvd7t has a Geyser fund where we can accept sats for our work and distribute them to the team at intervals.

Don't ignore monetization just because you're early.  It's easier to go from paid to free than the other way around. 
 I don't plan on running a public relay. I'll whitelist with my domain and certain pubkeys for my relay. I did think about applying for an open sats grant though. 

And if I ever get around to it, I would run a public relay with configurations for cost per kind event insertion. 1 sat per kind 1, 10 sats per kind 3, 0... Etc. using lightning or eCash to top up credit, right through the frontend.  
 I love the idea of buying credits and tracking usage per npub, I think that's a good strategy.  Keeps out the riff-raff 😆 
 They'd better hire you 😉 
 Nah, too late. @GitCitadel already hired me. 😉 
 We may not have great pay, but we do have dreams. That count's for something right? 
 Yes, so long as the people dreaming are talented, motivated, and competent.
Which we are. 😊 
 Yeah. Quite a few things don't work for me, for example the badges site, and i am not going to use something that doesn't work with the browser of my choice. 
Devs don't have to cover my case, but i don't  have to use their stuff either...  
 They get paid whether you use their stuff or not. Their customer is the grant foundation, not the end user. 
 Wish the grant givers would at least test, but whatever. 
 Well some end users are happy using their stuff. Just not us.  
 Doubt. Buggy apps have few users. 
 The Yin and Yang of #nostr development

Nostr needs the enthusiasm and the energy to explore the protocol and do crazy shit at the edges

Nostr needs to get basic shit nailed down

Atm I feel the balance is too much Yang and nostr:nprofile1qqsd6ejdteqpvse63ntf7qz6u9yqspp4z7ymt8094urzwm0x2ceaxxgprdmhxue69uhhg6r9vehhyetnwshxummnw3erztnrdakj7qguwaehxw309a6xsetrd96xzer9dshxummnw3erztnrdakj7qgcwaehxw309anxjmr5v4ezumn0wd68ytnhd9hx2tcn2pqw8 throwing a bucket of cold water is #goodvibesonly

Nostr devs could use a month or two of not writing new feature code and not starting new projects

Just testing, fixing, refactoring, going through open issues and merging bug fix PR's

Then back to the fun stuff

nostr:nevent1qqsvk47mnc6nh2ndftj2kssah7lwt5ycncxwwk2083cmv5lnzlvpurcpz9mhxue69uhkummnw3ezuamfdejj7q3qm64hnkh6rs47fd9x6wk2zdtmdj4qkazt734d22d94ery9zzhne5qxpqqqqqqzy5s74w

nostr:nevent1qqszk3zek0z0yfhd374xjn8yv257829gncwju0v4vv66g4thaxq68hcpz9mhxue69uhkummnw3ezuamfdejj7q3qm4ny6hjqzepn4rxknuq94c2gpqzr29ufkkw7ttcxyak7v43n6vvsxpqqqqqqzde0nsm