Yet another team at work staring down months of remediation thanks to "modern frontend" has caused me to write down why I've been *intensely* frustrated with the clearly broken market for web technology over our long lost decade:

https://infrequently.org/2023/02/the-market-for-lemons/

Thanks to @brucelawson, @heydon, Taylor Hunt, @andy, and @phae for spotting errors in (even more splenetic) drafts.

The Market for Lemons

New web services are being built to a self-defeatingly low UX and performance standard, and existing experiences are now pervasively re-developed on unspeakably slow, JS-taxed stacks. At a business level, this is a disaster, raising the question: why are new teams buying into stacks that have failed so often before?

Alex Russell
@slightlyoff Is that a Down Periscope reference in there?!
@allafarce Lets comport ourselves as professionals. That is all.
@slightlyoff @phae @brucelawson @heydon @andy FUCK yes. Coruscating and every bit as acidic as it should be 🙌😍
@slightlyoff @brucelawson @heydon @andy @phae Great write up as always. Unfortunately masses of developers still blindly swarm around these heavily marketed solutions. Hopefully one day change can be made

@developit @brucelawson @heydon @andy @phae I got nerd-sniped into front-running a post I've had on the brew about session-amortised perf metrics by a great comment from @brucelawson.

Which brings up 2 points:

- I tend to write blog-post length appendices to my posts, which makes me think I should extend 11ty to literally let me blog them too
- there's a world of feedback that's hard to solicit because it's an imposition. Maybe blogs should have beta channels?

@slightlyoff I use this #WordPress plug-in that generates expiring links for drafts, maybe there’s something like that for what you use? https://wordpress.org/plugins/public-post-preview/

/cc @developit @brucelawson @heydon @andy @phae

Public Post Preview

Allow anonymous users to preview a draft of a post before it is published.

WordPress.org
@slightlyoff @brucelawson @heydon @andy @phae Savage. That phrase really captures the l{a,o}st decade. Great write up.
@slightlyoff Spot on and entirely consistent with my one, deeply painful experience with a team determined against all sense to use such a framework.

@slightlyoff The mention of DX above all has brought to memory post by 1password dev team where they talked about switching to Electron, mainly in the name of making lives of their devs’ easier. To their long time loyal customer, it felt like a bit of a betrayal, to be frank, given Electron’s track record.

I know this isn’t about frontend / JS, but kind of felt somehow related.

@dkalintsev In the sense that what's *actually* wrong is a substitution of value for developers for value to users, it's 100% on-point.

That said, Electron isn't what made 1PW vulnerable, and x-platform tech isn't bad per sae. There should be counterbalances to our optimisation ambitions...but they should be more prevalent in the conversation than excuses for not optimising at all.

@slightlyoff Not sure what you meant by “#1Password vulnerable”—are you confusing it with the most recent #LastPass shitshow?

/cc @dkalintsev

@dkalintsev @slightlyoff 1PW didn’t switch to Electron. They use Tauri, which uses the OS webview and seems to have a better security model.

@jamesgecko Here a person from 1p is saying: "1Password 8 is a Rust-based app. The UI is drawn with TypeScript and React via Electron."

Source: https://www.reddit.com/r/1Password/comments/u2wgdi/comment/i4ln4h9/

Did 1Password 8 beta ever get fixed to be native again?

Posted in r/1Password by u/chemicalsam • 0 points and 5 comments

reddit
@dkalintsev Oh, huh. They're a premium sponsor on Tauri. I guess that's aspirational.

I’m not a web dev, but I have for years suspected that something like this was going on. As apps got faster, the web got slower. So there it is: massive js backends.

Wanna see what the web could be? Go see how fast The Verge loads. Seriously. https://theverge.com/, go check it out.

Effectively these frameworks, from my limited understanding anyway, try to emulate what can/should only be pulled off at build time, in run time. And that has a horrific real-world performance impact.

The Verge

The Verge is about technology and how it makes us feel. Founded in 2011, we offer our audience everything from breaking news to reviews to award-winning features and investigations, on our site, in video, and in podcasts.

The Verge

Usually the argument that gets thrown at me is “cross-platform”. Okay sure. Or you could have straightforward clients that are just as easy to make, run way faster, and take way less resources. And then you get all the advantages of being a native app.

The main benefit of web apps is immediacy. If your web app is so slow and has such bad UX that it makes me want to use a native app, your web app has failed.

@slightlyoff @brucelawson @heydon @andy @phae i think what kills me is that "DX" should be "making it easier for the devs to do what work for the users". This... This is not it.

Signed and resigned. And thanks for the yearly perf summary they have been useful to convince others. It rarely works but eh. I will keep the fight.

@slightlyoff circa 2016 I had moved from a dev team to a UX/a11y one in the same organization. The organization decided to borrow developers from an internal department that did one-off boutique sites for our organization that did hundreds of online course sites.

The developer on loan was a young framework bro, and all we needed were some features added to our existing JS with progressive enhancement. I took time to show him the specs—he told me, “I probably won’t use any of this.”

@slightlyoff I reminded him that whatever he wrote needed to be accessible. “We didn’t need to be accessible at my old job, [name drop cable company people love to hate]. I pointed him to our a11y expert, but he kept trying to find another internal expert who would under 40 and less female.
@slightlyoff as I was warning management about these red flags and not seeing and change of course, he was touting his preferred framework as the way things are done.
@slightlyoff because he refused to believe accessibility would be hard and that he should work with the experts and because he hadn’t focused on the fundamentals of HTML, CSS, and vanilla JS, his efforts failed our testing again and again.
@slightlyoff his projects were months overdue with nothing to show, requests were piling up. I offered to step in and do the projects that hadn’t even started but in the meantime someone covering for this guy told mgmt my code didn’t meet modern standards.

@slightlyoff I left that place with shaken confidence, a mistrust of framework bros, and a belief that a11y can’t just exist in a vacuum separate from development.

That developer left the org before any of his projects were due. The person who lied to sideline me is also long gone. That department hasn’t built anything new since 2016. They are still using the stuff I made a decade which looks extremely dated but still works.

@slightlyoff all this to say that the sidelining we all experienced was real, and it has lasting effects.
@nikkimk @slightlyoff That sounds familiar - stuff I wrote over 20 years ago is still going strong because the replacements (many) just didn't cut it. But I still threw in the towel because I got tired of JavaScript developers who knew absolutely nothing about HTML, CSS and UX; and refused to learn.
@paulhmason @slightlyoff I’m actually a bit embarrassed that what I wrote back then is still live. It’s like flipping through an old yearbook and cringing at your old hairstyle. When I interviewed at the department I left them for I told them, “I built a mullet.”
@slightlyoff @brucelawson @heydon @andy @phae Thanks for this. Tomorrow morning I am adding questions about UI latency to future risk assessments.

@slightlyoff @brucelawson @heydon @andy @phae

I moved to systems engineering because web frontend is cursed. And hard, and annoying. And very broken, and I'm tired and very burned out from it.

@slightlyoff why are there two different font sizes?
@flogehring Browser/OS? Screenshot? Thanks in advance
@slightlyoff iOS latest
@flogehring those are the footnotes. Will investigate why Safari isn't rendering the numbers correctly.
@slightlyoff oh! To me it felt like that part was the conclusion and answering everybody’s question of what to do/use instead.

@slightlyoff @brucelawson @heydon @andy @phae

just for the record. IMHO, the JS Party started much earlier. My fight against the all javascript web was lost over a beer with Håkon Lie and very young Ian Hickson in 2003 in Oslo. At the time I wanted to sign/encrypt everything, which was feasible with declarative stuff, but not with scripts.

Would XForms, pushed by IBM have prevented that complexity failure so emotionally described?

Unfortunately... :((

@slightlyoff Excellent article. Web dev for 15 years; React for the last 5. There's no doubt that circa 2010, the amount of state we were dealing with became unmanageable in jQuery. But for several years now, I've been trying to work out why everything takes so long to develop nowadays.

In particular, I am often working for clients who really just need forms and tables, business apps that once upon a time would have been Access or similar. Developing those in React can take forever.

@slightlyoff the much-vaunted DX seems to be more about having nice displays of test coverage, CI/CD pipelines and whatnot. Spending days trying to work out why your rollup build is importing SVGs in a different way to Storybook's webpack system is not a good use of a developer time.

Many younger (~30 and below) devs aren't even aware of the power of native browser and web features. React has dominated the educational environment.

@slightlyoff and accessibility ends up being tacked on - lots of aria-this and aria-that - when native components are usually accessible by default. Of course nobody even adds the arias unless someone like me shows up and imposes automated accessibility testing in the CI pipeline.
@slightlyoff oh no, I’m the person in the closet keeping the webs packing in the face of rising complexity…
@slightlyoff I agree with many of your observations but I wonder if we can blame the technology. Isn't it the way we misuse Javascript frameworks that is wrong? It should be possible to build a React or Vue website that scales at a reasonable cost. Installing dozens of libraries to avoid writing HTML and CSS is not a requirement from those frameworks. Working without paying attention to when a component rerenders either. Or spending more than half of development time on Dev X.
@slightlyoff I also believe we behave irresponsibly, but I am not sure if a better ecosystem can fix it.
20 years ago we used to blame Flash for crappy websites.

@ototoi I have spent a lot of time writing about how our management class has utterly failed here:

https://infrequently.org/2022/05/performance-management-maturity/

A Management Maturity Model for Performance

Despite advances in browser tooling, automated evaluation, lab tools, guidance, and runtimes, modern teams struggle to deliver even decent performance with today's popular frameworks. This is not a technical problem per se. It's a management issue, and one that teams can conquer with the right frame of mind and support.

Alex Russell
@slightlyoff I had missed this, very interesting, thanks!

“Maybe blogs should have beta channels?”
@slightlyoff further down in the reply chain

More seriously, this is a lovely rant. If you’re at all involved in developing interaction on the web I commend it to you.

@slightlyoff I don’t dislike JavaScript. I dislike militant, radicalized JavaScriptionists.