The craftsmanship and engineering behind software development have never been in greater danger–nor seen a greater chance at a renaissance–than they do now.

genAI use, whether in the form of discussion with ChatGPT’s web interface on SQL or in the purest yolo form of near AI-psychosis we see with Gas Town, has spurred our industry to look at itself in ways that we really haven’t in years. I think we’ll come out of this functioning at a higher level than before–but it’s gonna hurt.

Once upon a time I got a 5-bay QNAP, and all was well until it got sulky and one of its SATA connectors decided to give up on life. Drafted in its stead, I’ve had a ZFS NAS setup for ages–going back to Fall of 2019. 8 x 4TB drives, Norco ITX-S8, 32GB ram, Ryzen 2400G, nothing too fancy. NixOS, ZFS with raidz2, great.

I ran a handy little tool I slopped up and lo-and-behold all the drives are nearly at five and a half years of online time; this is solidly in their golden years. I’d been meaning to upgrade the array to larger disks, since a good amount of space is going (cheerfully!) to error-correction and parity, and so had begun collecting replacement disks in anticipation of an upgrade. Rebuilding the array would be time-consuming and annoying and so I’d been putting it off.

Humbly Maintaining a NixOS Package

- 4 mins read

I’ve got a small handful of packages on Nixpkgs that I maintain. When I was starting out, I didn’t really know how to do any of that, and was fortunate enough to have some friends onboard me. In the spirit of giving back, I’ll walk through how I do an update pass today on a simple package, and give some background information on how to make it easy.

Workflow of updating a NixOS package

I’m a maintainer for the lmstudio package, which wraps the binaries from LM Studio (a friendly GUI/IDE for AI model development work). This workflow is for that package; other packages (especially those used by others or built from source) will probably have different details.

Bozon Detection for Communities

- 4 mins read

Every community has some amount of bozo behavior.

Past a certain point, the number of bozos in a community exceed a healthy carrying capacity, and will crowd out or drive away sane and healthy members. No community is without some amount of bozos but it’s easy to find yourself at a circus without realizing it until the clown car pulls up.

Here are some questions to help score your community of choice, each worth one point.

Introduction

apologia, n. – a defense or justification of one’s beliefs, attitudes, or actions. – Webster’s College Dictionary

I’m getting a bit tired of reading (what I consider to be) increasingly reflexive, dismissive, and (frankly) lazy objections or dismissals of what is broadly now termed generative AI–often abbreviated to just AI (a travesty) or LLMs (a synecdoche).

By writing this, I hope that I might be able to help in some small way by providing my own observations and experiences with these tools, in neither the fawning and hustling tone of breathless wonderment you might find on Twitter or the performative aggrievedness of the Fediverse and various tech communities I frequent.

Reactionary engineer, radical engineer

- 8 mins read

Bit of a shower-thought today, a continuation of something that’s been rattling around in my brain for a minute.

I think there’s a helpful way of thinking about what I consider to be a core belief spectrum in engineering (and indeed, other fields, but let’s set that to the side for the moment), and that by naming and describing it we can come up with a lens that helps us operate more happily and effectively in our lives and careers.

Centaur writing, centaur coding

- 6 mins read

I think there’s a much better way of thinking about and referring to what we call “vibe coding”–which quite unfortunately is not at all what it sounds like (warning, sorta NSFW)!

I also see an opportunity to be more open-minded about other applications of generative AI when done in concert with an artist.

In this post, I’ll suggest a better terminology and try to sell you on using it.

A bit of history

Centaur Chess

Chess is a game that has been played for well over a millenia by humans.

Moving from Zamrazac to Hugo

- 9 mins read

Moving over

One of my goals for my sabbatical since last November has been upgrading my blogging infra. This is now done.

I went from an old (read: Ubuntu 19 or so?) VPS running Nginx hosting static files generated by my Zamrazac static site generator to a NixOS 24.11 VPS running Nginx hosting static files generated by Hugo with a slightly-modified Poison theme (as well as self-hosted analytics via Plausible).

Why move?

My original goal with Zamrazac was “archival quality” blog posts in a language I enjoy. This turned the design space into:

Fragments from a pandemic

- 25 mins read

Embattled.

One word, neatly conveying my experiences of world and of self for near two years. What follows are pieces, images, moments, reflections–some absurd, some short, some glib, some pretty awful–on a truly bizarre time in my life.

The timeline is, to my recollection, monotonic. I cannot be certain of all, most, or perhaps any of the dates.


1.

We’re watching a dragon invade a storefront, the brazen clang and crash of cymbals causing us to wince only occasionally as we enjoy the proceedings.

Adventures in bookmark parsing

- 8 mins read

Introduction

I’m working on a bookmark manager, and one of the minor features I want is to import all my old Firefox bookmarks.

This adventure has been…an adventure.

At least one other person has tackled this problem over in Node, but I’m taking stabs at it in Elixir because that’s kind of my schtick.

On Mozilla exports

From Firefox you can have it export all of your bookmarks as an HTML file.