I managed to survive the rise and fall of the blockchain without writing a single goddamn word about it. So it is with a heavy heart I take to the keyboard this time, because as you probably surmised upon reading the B-word, this post is me finally waving my white flag and writing something about AI. I'm sorry, and I wish things could be different, but this is apparently what the world wants and I am powerless in the face of it.| Johan Halse's blog
These last few months have been a whirlwind, haven't they?| Johan Halse's blog
Everyone keeps turning their noses up about developers having "hot takes" online but you know that article? Yeah, that one. You're all talking about that one because they cranked their opinions up to eleven.| Johan Halse's blog
Every techie dreams of one day writing a considered harmful post and today, my friends, today that honor is finally bestowed on me. Gather round the fire, and I'll tell you the blood-curdling tale of a library once known as PJAX, whose restless ghost still haunts these realms.| Johan Halse's blog
I once heard Dave Rupert call types "baby unit tests" and that never really left my mind.| Johan Halse's blog
My social media has taken a hard turn for the nerdier since Twitter shut down and everyone with a modicum of moral fibre stopped posting there. So even though I'm not really a Linux developer, I was recently exposed to the drama around Hyprland and its maintainer.| Johan Halse's blog
I recently stumbled over a reddit thread about children and parenting. Those threads pop up every now and then and I find them amusing and distressing in roughly similar amounts, because boy howdy are people wrong on the Internet, but also: that nagging dread that parents are always carrying in the back of their mind, that they're being judged by people around them? Yeah, that's absolutely true.| Johan Halse's blog
I've been using Web Components lately. I quite like them.| Johan Halse's blog
It seems to be open season on Tailwind CSS! Go and read this post by Tero Piirainen. Nothing I haven't heard before, it hits basically the same notes as the other stop-using-utility-css posts: it implies that people mostly use Tailwind because of successful PR, and it assumes that its proponents are React-pilled newbies who just haven't been exposed to the beautiful fire stolen from the gods by Jeffrey Zeldman, Prometheus incarnate, in the early aughts. This one goes a step further and includ...| Johan Halse's blog
In the dying embers of 2023, Mayank wrote a post that went through the trials and tribulations of React Server Components. I read the article, eyes widening all the way through to the end until my face vaguely resembled a US electrical socket, and it ultimately left me feeling like, man, I'm glad I'm not doing React at the moment.| Johan Halse's blog
The Gävle goat is still standing, for now.| Johan Halse's blog
I'm sometimes linked to Twitter (sorry, I mean X) threads. It's usually updates on the war in Ukraine, because Twitter is still the default medium if you want to see Russian tanks merrily tossing their turrets. That's fine, I guess, if a little weird—why post on a medium where the proprietor is an unhinged plutocrat who is clearly aligned against you?—but every now and then I click on a link to the birdsite and it looks like some people are still on there discussing tech of all topics?| Johan Halse's blog
There seems to be a little swirl of anti-Tailwind sentiment brewing. Which is fine! All fine, I assure you. Tailwind is intensely polarizing and I don't want to harsh anyone's mellow. But I'm honestly getting sort of sick of the "skillful and experienced developers don't like Tailwind because it holds them back" trope because it just ain't true. I read a long and pretty entertaining piece yesterday that argued essentially that: Tailwind is a crutch for beginners that blunts the edge of expert...| Johan Halse's blog
Brandon Weaver posted a thread on Mastodon a couple of days ago stressing the importance of planning ahead in software projects, and I caught myself feeling kind of offended. I'm a super-duper senior developer who's been in charge of projects, teams, apps, a company, released open-source, and won awards, and I'm not great at planning ahead. That means I'm not one of those "most senior and skilled leaders" from Brandon's thread. Well, dang.| Johan Halse's blog
DHH is in the tech news again! It's a stunt. It usually is, with him. And here I am, shamefully but eagerly taking the bait.| Johan Halse's blog
Figma has been in the news lately, probably as a result of their Config event where they announced a bunch of new features. Vercel's CEO gave a talk about something-something React Components, I think. That, in turn, seems to have spawned a few takes about Figma really being an unnecessary intermediate step: designers should just write HTML and CSS. I disagree.| Johan Halse's blog
There's a certain trajectory you follow as a developer. Most of us start out as tiny programmer larvae, blindly fumbling our way through trial and error until things seem to work. We then pupate into overly clever Rockstar Ninjas who try to solve everything with ternary operators and arrogance. The Rockstar Ninja's code usually looks like someone lost a bet with Larry Wall and had to drink a whole-ass bottle of Perl 5.0 -- but that doesn't matter: the Ninja is there to kick ass and ship featu...| Johan Halse's blog
I've been the sole developer of Bidders Highway for something like a year and a half now. It's been rewarding in many ways, if kind of lonely at times, and I suppose the distillation of it feels like "my skills and experience having coalesced into something that probably not everyone can do." Good for introspection, not great for getting better at the craft. Velocity is off the charts and has been since day one, but my personal development (and, I suppose, career ‒ I'm at home in front of m...| Johan Halse's blog
An article came out recently, declaring the seven Swedes still playing in the Russian KHL "a shameful part of Swedish sports history." I am in full agreement. This has to be the easiest moral choice in the world right now: you really shouldn't be sportswashing an aggressive dictatorship currently engaged in a war of conquest, terror, and ethnic cleansing right on the border of your home country.| Johan Halse's blog
Many years ago, we went to London to watch football. Arsenal won, of course, so the game itself was sort of forgettable, and what ended up sticking mostly in my mind was the overall experience of Emirates Stadium. I would describe it as solid, pricey, and sort of... sterile? Modern oligarch-owned football trends towards expensive food and drink and a very exit-through-the-gift-shop atmosphere. That's fine, I suppose! Football isn't just about the game itself: it's the pre-game beer, the jam-p...| Johan Halse's blog
I'd never heard of Silicon Valley Bank before it exploded in a shower of pretty sparks last week. Amazingly, upon just hearing the name my brain made a bunch of associations that proved to be mostly correct ‒ it WAS indeed a nasty cross-section of Wall Street and Sand Hill Road, thoroughly infested with both their money and their questionable politics. The whole fracas is obviously going to shake out badly for me and my programmer brethren in the trenches, these things always do, but that's...| Johan Halse's blog
There's been a bit of a brouhaha these last weeks as parts of the Internet suddenly woke up to the realization that most Single Page Apps are slow and overcomplicated, and — shock horror — it turns out that Facebook, the lovable scamps that brought us React and QAnon, have conducted themselves badly! Refreshingly, rather than launching a thousand caustic subtweets, this little stormwind has caused the blog posts to start flying again. Thank you, Elon "Vain gobshite" Musk. I'm totally here...| Johan Halse's blog
I thought I would be the cool dad playing video games with my kid. Turns out I want to go back to the 80s.| Johan Halse's blog
The short version is that I'm on Mastodon now and that feels okay, but I'm bitter about it and I wish it never had to go so far.| Johan Halse's blog
As you all know I'm a big fan of Twitter. It's really the only social network I spend time on, and honestly it's 99% "interesting links and art directly to the face" and 1% "actual social network" and that's why it works. It's with great sadness I see the Obnoxious Electric Car Man come in like an elephant in a china shop, trying to stir things up.| Johan Halse's blog
I like my software boring and stable. I try to keep myself patched and all that, but I don't really trust updates. That said, sometimes you gotta mix it up a little.| Johan Halse's blog
I was a late adopter of Tailwind CSS. Now, I've been a fan of atomic CSS for a good many years, but it was a wasteland for the longest time while everyone was off doing CSS-in-JS, and nothing really caught my fancy. I had been eyeing stuff like ACSS and Tachyons and they looked good but I'm very, very tired of pulling in and learning new dependencies. I've also been doing CSS since before you were born, and making an atomic CSS framework really isn't that hard. Make a class for a rule, done. ...| Johan Halse's blog
I keep coming across the phrase "strong opinions, weakly held" and I swear to God I've never heard a more wishy-washy piece of spineless bullshit in my life.| Johan Halse's blog
I recently read an article by Jason Swett where he argues against Sandi Metz' old chestnut "duplication is better than the wrong abstraction" and it made me feel like I have to articulate why I'm Team Sandi here. I'm sure I've used the saying a million times in discussions with colleagues and, as such, I feel personally attacked by Jason's article and need to defend my honor.| Johan Halse's blog
Look, I'll freely admit to knowing next to nothing about the Enterprise world. It's like a separate universe of its very own, populated by Solutions Architects and threatening-sounding acronyms like ITSM and SAFe.| Johan Halse's blog
Unless you're cool enough to commission your own icon set, you're probably using a library like Font Awesome or Google's Material Icons. We're using Material Icons for the new thing we're building. They're good!| Johan Halse's blog
I've started a new job! It's kind of hush-hush at the moment. We'll be in stealth mode for a few months while we build this thing out, and then we'll see what happens with the business side of things -- nobody ever knows, right? But we're absolutely going to ship a solid, well-built piece of software.| Johan Halse's blog
I've set up a Gemini server for johan.hal.se! You can check it out if you want: gemini://johan.hal.se.| Johan Halse's blog
Well, wouldn't you know it! The ol' homepage has a new face. You've probably stared at your RSS feed for a good long while, impatiently tapping your foot, wondering "why hasn't Johan updated with his yearly-ish blog post" and I'm here to tell you that I had good reason! Many good reasons in fact, the biggest of which was, I, uh, ilstmysrcode.| Johan Halse's blog
There's a recognizable type of snobbery that stems from mastery, and you can see it practically everywhere. A common one is in architecture: the people chosen to build our cities and houses are generally pretty far removed from what people think of as, well, uh, for lack of a better word, "good."| Johan Halse's blog
Welp, here we are: stuck in the blessed land of carbon footprint reduction. Nobody's flying. We stopped buying frivolous takeout lattes. We're not even driving ourselves back and forth from work. The latest number I've seen is an estimated 50% decrease in industrial activity and a global reduction in carbon emissions of around 5%.| Johan Halse's blog
A significant chunk of the web runs on Amazon hardware now. I don’t get it.| Johan Halse's blog
I can never remember the syntax for find. And when I do remember it, it tends to be something stupid like find . -name package.json.| Johan Halse's blog
I absent-mindedly leave my headphones at work about once a month. My immediate reaction is always “asdfghjkl no no please god no this will be the bus ride from hell” but it usually turns out to be a surprisingly thoughtful 30 minutes instead. Or a nice long nap.| Johan Halse's blog
It’s time to stop what we’re doing for a second and talk about automatic updates! Unsurprisingly, I have Opinions.| Johan Halse's blog
Confession time: I’m partly powered by smugness. I’m not even sure that’s a bad thing.| Johan Halse's blog
We all know a bunch of good stuff happens when you delete social media apps from your phone. What we didn’t know is that a bunch of bad stuff happens, too! I went there so you don’t have to.| Johan Halse's blog
My tech posts often come from kind of a negative place. I wish it wasn't like that, but we all know how the mind works: writing with nuance and positivity is a lot harder than fired-up screeds of the "someone is wrong on the Internet" variety.| Johan Halse's blog