My Q5 Review

So we leased a 2025 Audi Q5 last year; it’s the first time in a while I’ve driven a brand new car, and I have THOUGHTS.

First of all, the car is an extremely pleasant place to spend time. It’s comfortable, has a great stereo, is roomy (at 6'3" I’m a bit of a Large Lad, so space is important). Plenty of trunk space for what we need, a big sunroof, mostly sensible physical ergonomics. I quite like the HUD, for instance, because it’s purely read-only and gives me GPS directions, speed limits, the time, and like, the radio station or the now playing, without my having to look away from the road – that’s good, responsible design. Right on, Ingolstadt! It’s perfectly fast enough for driving like I do, which is to say, I don’t find myself wishing it had a few extra BHP. And as a winter vehicle, the quattro is pretty great.

The Silent Critic

Like most folks, I’ve been using The Models 1 to write code now for the better part of a year. My process has changed over the course of the last few months, partly because the models are getting better at executing on the tasks I set them, but mostly because the gap between what the models enable and the systems for controlling context we all live in is growing, and growing at an ever-increasing rate.

I shaved

I shaved

It was time. I look weird. My face is very short.

Your Code Review Process Is Theatre

✅

You open the PR. You blanch at the 10,000-line diff. You leave a fussy comment, so everyone knows you’re Paying Attention. You click Approve; the green checkmark appears. Everything keeps trundling along.

The ritual is complete.

The phrase “code review” flatters the practice. In most organizations it means little more than ritualized exposure to a textual delta followed by institutional assent. The green checkmark is not judgment. It is a surrogate for judgment.

First Post (Again)

Well, here we go again. Let’s see if the meta fiddling has satisfied my weird yak-shaving neurosis and if I can actually write something this time.

I’ve decided that I need to use Emacs, so I … use Emacs, with hugo (via ox-hugo) and Cloudflare Workers for hosting. We’ll see if I can keep it up.

The OS, Part 2 – Living On Linux, Part 3

OK, So Now What

I was going to try and finish this, but … naw.

The OS, Part 1 – Living On Linux, Part 2

How Do We Define “The OS”, Anyway?

I used to get pretty stroppy about things like Pop! OS or Elementary, both of which are just re-skinned Ubuntu, but from a this blog perspective, I’ll just say that the “OS” is the stack from kernel to UI that serves as the functional basis for providing services and applications for getting things done. In that sense, I think it’s entirely fair to consider Ubuntu as distinct from Debian as distinct from Gentoo or Arch or whatever – the UI aspect of all of them are pretty different one from the other, and at the end of the day, I am a user of my machine, so the UI is pretty much the endgame, here.

Hardware – Living On Linux, Part 1

First Things First

The most important thing to keep in mind is that this is a desktop computer, not a laptop. I don’t like laptops – while the engineering of modern laptops is pretty remarkable, you spend so much of your engineering budget on the compromises inherent in the form factor, to enable a use case that I don’t care about (mobility). So, I’m sure this whole exercise would look pretty different if I were doing this on my MacBook or something.

Living On Linux, Part 0

Linux, I Guess?

So for reasons that defy explanation, I have decided that I need to live on Linux, or at least, make a go of it. I have been a Mac user almost exclusively for decades, but as I have aged, my asks of a computer have largely shriveled down to Emacs, and a web browser. I still appreciate the craft of a lot of the software I use on the Mac; and I still think that Apple’s hardware is basically best in class, but I’m distant enough from needing e.g. XCode or Logic that I can probably make a pretty good fist of it somewhere else.

Advent of Code 2020, preparing, part 02

Ok, so in part one we got the first part of the first day of last year’s Advent of Code puzzle working in Haskell. This post will be an exploration of the second part.

Each day of the Advent of Code has a puzzle with two parts; usually the second part will be a twist on the first part; sometimes, it’s simply a scale issue, where the first part solution was naive, and you can leave your solution running over night, or choose a more efficient solution for both parts. But sometimes, it blows everything up and you need to rethink your entire approach.