Let’s face it, our industry hasn’t felt as fun as it used to in the last year or so.
Economies don’t seem to have fully recovered post-pandemic, companies aren’t hiring as much as in the good old days, and of course silicon valley VCs and executives are pouring obscene quantities of money into “AI” just so they can enjoy the look on our faces when they tell us that they’re coming for our jobs (not that they have any idea what our jobs consist of, but that’s kinda why they think ChatGPT can do it).
Meanwhile, I’ve done my best to isolate myself from the noise and focus on getting better at my craft, finding more ways to add value, and helping others grow and succeed.
So I thought I’d spend a moment to write down a few of the tools and technologies that have brought me joy in 2024. Some of them were just plain fun, but others have actually caused me to think more deeply about the way we build software; I’m looking forward to share some of those learnings and reflections throughout 2025.
1. Containers
Frankly, I was quite happy when Lambda opted for zip archives as opposed to Docker for the default runtimes. It’s not that I hated containers, but they always felt quite heavy and cumbersome.
In the past, on the rare occasions when Lambda wouldn’t suffice (and I had to setup ECS or Fargate) I never enjoyed it.
But in 2024 I I got to work with Docker a lot more. We’ve introduced some Rust and Go into our codebase, so we had to use Docker because there are no provided runtimes on Lambda for those languages. I got to interact with the Docker ecosystem again, setting up Docker Compose, pushing images into our private registry, etc.
It all felt polished and robust. I’m impressed by how much progress there has been in container-land and I was pleasantly surprised by how smooth the local development experience was.
2. Kamal
One of the main reasons why I wasn’t so keen on containers in the past is because I always felt that most deployment and orchestration solutions were insanely difficult to setup and operate. It’s always been my argument that unless you’re a Fortune 500, you probably don’t need Kubernetes.
But if you accept my point, then that leaves you with few options. On AWS, we have Fargate which is not that complicated, but it can still be a bit of an overkill depending on what your use case is. There is also AppRunner which is super simple but potentially quite a bit limited in features.
None of the above-mentioned options are possible if you’re not on AWS though (or even if you are, but you’re worried about vendor lock-in).
Kamal is the tool that someone should have come up with years ago, before so many startups built their whole businesses on that monstrosity Kubernetes.
I had the pleasure of working with Kamal for a consulting customer that doesn’t run on AWS. I was SO impressed: it is exceedingly simple to configure and to operate.
3. Go
I wrote a fair amount of Go several years ago, and I really enjoyed it. For various reasons though, for the last few years I’ve been almost exclusively exposed to Javascript (and subsequently Typescript).
As we set out to introduce some Go into our stack (primarily for performance reasons), I got my hands dirty again and it made me so happy. I still can’t get over how quickly you can get from near-zero to super productive with Go.
This experience has made me reflect on what it means to get the right balance between performance and simplicity. I shared some slightly controversial thoughts on the topic, comparing Go and Rust. While Rust is as performant as it gets, it is really quite hard to work with. Early in the year, it took us days to get a tiny bit of Rust code into production (with no prior Rust experience).
Go is so much easier to get going with. Everyone can work with it, everyone can understand it. But it still manages to deliver performance levels approaching those of Rust. That is remarkable, and I don’t think we give enough credit to Go’s designers for this.
4. HTMX
I had heard about HTMX a few times in the past, but I kept assuming that it was something you could only use for childishly simple UIs.
I was intrigued nonetheless.
Since I needed to set up a small dashboard for internal use only, I decided to have fun with it and use HTMX instead of React (which would have been my go-to).
I was astonished at how quickly I got things done. And as I kept digging and pushing, I realised that I could build something truly complex and interactive with it. With no frontend Javascript whatsoever. No heavy frameworks like React. All coming straight from the server.
It is now my belief that most projects should default to HTMX, whereas heavy frameworks like React should be seen as a niche, highly specialised tool for very specific use cases involving an unusually high degree of interactivity.
5. Hono
Hono is a lovely, simple, lightweight, fast framework for building APIs. I was able to play with it and build a few projects in 2024. It is the framework we’ve always wanted (and needed) in the Javascript/nodejs world.
I highly recommend it.
6. Linux
I started using Linux as a teenager, and kept using it all throughout school and even into my first couple of jobs as a young developer. But then I joined a company that had a Mac-only policy; I made the switch to Mac, and decided to stick with it until a few months ago.
Over the summer of 2024, I decided that I wanted to try Linux again. I wasn’t sure what to expect to be honest! As much as I enjoyed playing with it back in the day, I had many memories of days wasted trying to get things working, all while my colleagues using Mac and Windows were busy shipping code.
I imagined that it would be a little better than it used to, but I didn’t think it would be this good.
Linux on desktop (Ubuntu is the distro I’m using) has improved so much. It’s smooth, it looks good, it works like a charm.
Sure some things take a little longer to set up than on Mac, but you get that feeling of true ownership. This truly feels like my machine. It may sound like a silly thing to say, but it’s a feeling worth exploring (and embracing) if you think of your work as your craft (as I do!).
7. neovim
For years, I would look at people working on vim wondering why would anyone want to work like this! But my return to Linux gave me a chance to look afresh at my tooling of choice.
Having used VS Code for the last few years, it didn’t take me long to realise that I felt no affection for it. I’m no Microsoft fan, and although VS Code is a solid product, it’s also quite bland. There’s nothing especially appealing about it apart from the fact that it gets the job done.
So I asked myself if perhaps neovim could be a better companion for my daily work. Having no idea where to begin with, I watched a few videos on YouTube and then installed the standard version of neovim. Within minutes I was banging my head against the wall in desperation. Let’s just say, neovim on its own is not for the faint of heart!
I threw neovim away in rage and contempt and decided that I would stick with VS Code. But something was nagging me! How is it that so many people are using vim and I’m the only idiot who couldn’t get to grips with it?
And then I realised!
It turns out, neovim (much like Linux) has flavours and distros. And, as far as I understand it, almost no one with a life uses the standard version of neovim. Most sane people download one of these distros. There are several, they’re all very nice and they come complete with plugins, plugin managers, sensible defaults, the works.
I ended up downloading lazyvim. After that, everything clicked into place within a few days.
I’ve been using it daily for almost a year now, and I regret not making the switch before. vim motions are a superpower!
It’s just uniquely satisfying to string a handful of these combos together and see the text beneath you radically manipulated. In a way you just know would have been a drag to do in any other editor. That’s the game-like joy of vi’s power moves.
So these were the tools and technologies that brought joy into my daily work in 2024.
Getting exposed to each of them throughout the year made me grow as a professional. They gave me a better appreciation for the value of growing in my craft, picking the right tools, and prioritising simplicity over unnecessary complexity.