It's been ten years!

So, I started this blog as an outlet for me to express my feelings on coding and technology in general. This is my first post in almost ten years.

A lot has changed in the intervening decade. Nowadays, It's a lot harder to get excited about technology as it's all just a big ball of privacy intruding AI mess that kind of works but not really. It seems like we're stuck in this horrible version of future where every single thing spies on you and AI is used as an answer to everything when in fact it should be treated as a tool to help us ask better questions. This makes me frustrated.

It's not all bad, though. I've seen a glimmer of hope in some fantastic technologies that have risen to fame in recent years. Here's a short list of things I've come to appreciate recently.

Elm and htmx

I hate React with a passion. I mean it might be a an OK tool for a lot of use cases - even great for some - but every time I touch it I feel repulsed. I build web applications and I hate managing client-side state. I hate pulling in tons of dependencies just to bootstrap a simple project and I hate keeping them all updated even more. I despise the fact that it has become the standard framework for building web UIs.

I have not done a lot of things with Elm but I have loved every single second with it. It's simple, elegant and it makes writing web UIs fun. I adore the compiler and I absolutely frigging love the fact that making changes to an existing code base is so damn nice: if it compiles it works. Also, keeping things up-to-date is a breeze. Lovely.

I used to do a few simple tools using Intercooler.js. It was a fantastic little jQuery plugin that made building something like dashboards and simple AJAX-based UIs incredibly easy and straightforward. Now, Intercooler.js has evolved into htmx and it's as sweet as ever but extends its usability into far more complex and varied use cases. Combining htmx with web components makes a lot of sense and I think in a lot of use cases it could be the way to go. Glorious.

Neovim

Yes. Double yes. Neo-effing-vim. It's great, it gives you superpowers. It's not made by Microsoft and it does not use Electron. I moved to Neovim from Sublime Text - that I had purchased a license for, mind you - and it was an extremely painful transition. I'm so glad I made the move, though. I've totally fallen in love with Neovim and I think it's my end-game editor.

I've been struggling with lateral epicondylitis (i.e. tennis elbow) in both of my arms for the last few years. The symptoms are painful and they sometimes affect my ability to do my job. Ergonomics was a major factor in my decision to move to a Vim based editor. Neovim is a modern take on Vim which means it's designed to be used with your hands on the home row of the keyboard. Reduced hand, finger and arm movements make using the editor not only faster but also a lot more ergonomic.

What's kind of crazy about Vim is that it's configured and modified using Vim Script - a bespoke programming language used only by Vim. Neovim does support Vim Script but you're actually supposed to use Lua instead. Lua is a simple but quite capable general purpose programming language designed to be easy to embed in all kinds of applications. Replacing Vim Script with Lua is a great decision and one of the major advantages for Neovim over Vim. Now that Vim Script has gone through a major update in Vim 9 - replacing Vim Script with Vim9 Script - it has also prompted Vim users to rewrite their configurations and extensions. Might be a good time to switch to Neovim?

I'm still a Neovim noob and I know there's a wonderful path of discovery ahead of me using Vim-based editors. Like all great tools, it takes time and effort to master Vim. Once you do though, it rewards you tenfold.

Go

Go is not a new programming language and I'd argue it's not even a particularly interesting one. It does have a really strong concurrency story, however, and writing fast Go programs appears to be relatively easy.

What makes me think Go is exceptionally great is that it is a good default choice for almost anything. It's not sexy and I don't think it does anything better than any other programming language but it's virtually always good enough. It's a good hammer.

As with Vim, I'm also a noob with Go. I have been tinkering with it a fair bit and I've grown to like it immensely. The tooling is top notch and the documentation is good (although, I've been spoilt by PHP in this regard). It has been a fantastic learning experience and I think it's my new go-to programming language for just about anything.

FreeBSD and NixOS

I have been running a few FreeBSD boxes for about two years now. I have been so happy with it that we decided to migrate all the internal services of our company from a fleet of Linux servers to a bunch of jails running on a single, mid-tier FreeBSD VPS. It has been great so far!

It's very common to see comparisons between BSD and Linux and usually the BSD proponents say that a major advantage for BSD is that the system just makes sense. I'd have to agree here. In my experience, a FreeBSD system is a coherent entity that just seems so well put together. It's rock solid and a joy to maintain. Also, I frickin' love Bastille.

I had been running OpenSUSE Tumbleweed on my personal laptop for about three years. Most of that time I had used KDE Plasma as my desktop environment. Last fall I decided to give Hyprland a go and there was no going back to Plasma. OpenSUSE had served me well - and it's also very well supported by Hyprland - but as I was using Tumbleweed there were a few times when upgrading packages had caused some rather nasty breakages. The role of my personal laptop is to be the computer I can use to get myself out of trouble should all the other computers in the household somehow go haywire, and that means I need to be able to rely on it when I need it the most.

Enter NixOS, the OG reproducible Linux distribution. As far as Linux distros go, NixOS is kind of strange: the state of the system is configured in a centralized configuration and each change to that state is activated by rebuilding the system. These builds are called generations and you can revert to a previous generation if something got messed up in the latest build. It's an extremely resilient system.

Switching to NixOS was rather easy. It has a nice Calamares installer that's very easy to use. The configuration is very well documented and installing software is almost trivial. As NixOS has a built-in wrapper for Hyprland, there was virtually zero effort needed to transfer my existing Hyprland desktop environment to NixOS. The whole thing took me about an evening.

I have an aging iMac Pro that I'm sure will not be supported by Apple for long. It's a stellar machine and I really, really want to keep using it for as long as possible. When Apple decides to drop support for it I'm glad I already have found a great OS candidate to replace macOS with. The t2linux wiki even has an article on installing NixOS to T2 Macs.

There you have it

These are the things that have kept me interested in technology - and especially in software. Privacy violations, AI everything and the ever increasing complexity of software make the world seem a lot more dire than it actually is. The software I listed here gives me hope and keeps me sane. It offers me a way to stay excited about software when software seems to be the very thing that drives the world to hell. I guess we all have to find our own coping mechanisms.