As best we can tell, the pub is shut

I was alerted by a commenter that it’s been more than a year, now, since this video dropped:

COVID measures had already begun to be implemented; national borders shut, most schools already closed. Watching this press conference, a scene from The Simpsons played in my mind. I’d been getting a little comfy with a video editing program to record IIDX plays, so I gave it a crack.

I don’t really have networks to tap, but Niki liked it so much she diligently dropped it into comments on Facebook and Twitter replies wherever it seemed appropriate. Before I knew it, I had a moderately popular YouTube video. It entered the popular discourse when it was further remixed, but if you ask me, the Trump oversamples are just kinda gross.

One thing that’s been interesting to see has been how the popularity of the video corresponded with (literally) viral events:

A graph showing the views for the video

The three major events were:

  • Late March, video released, Dan Andrews said “get on the beers”.
  • Mid-May, first lockdown restrictions eased.
  • October 26, Victoria recorded zero new cases/deaths for the first time since June. Dan reported that he “might go a little higher up the shelf” than beers.
Read more!


My other half — not my partner, but the other half that makes “Asherah” up — writes a very different kind of blog. We don’t tend to cross the streams here too much, but seeing as we’re not on any social media, this might be a time to introduce one to the other.

Content note: trigger warnings etc. are rarely used. Read at your own risk. Content is highly personal and often covers developmental and sexual issues.

Read more!

Knowing when to look past your code

There’s a weird tension in programming — on the one hand, as you learn the ropes, you (hopefully) learn very quickly that the problem is almost always in your code, and not, say, the compiler, stdlib, kernel, etc. This is usually very correct; the people who’ve worked on those things have many times the experience you did when you decided that there must be a bug in printf or something.

You’ll later realise you tried to print something through a pointer to a stack-allocated variable that’s long since gone. These accusations tend to wane as you gain familiarity with your subject matter, and wax as you step out into lands populated with ever more footguns, exposing more of the architecture than you ever suspected was there. (See also: the emails from me to the libev mailing list in 2011.)

At some point, though, your journies will take you to places where things aren’t so clear cut, and you’ll start to gain a sixth sense; a kind of visceral experience that things are not as they have been promised to be.

A few weeks ago, that sixth sense whispered in my ear: “what if, instead of your cruddy bootloader written in a pre-1.0 systems language for a platform you don’t fully understand, it’s the 20 year-old project with 80,000 commits that’s wrong?” And it was right.

Read more!

Inkplate done quick

I recently received an Inkplate, and while I’m in the middle of a few interesting projects already, I couldn’t let it sit there unused. Until I get a longer chunk of time to turn it into something really nifty — maybe an embedded debugging helper of some kind — it can at least mean I no longer need to have open.

kmlyink’s README explains:

This repo has two parts:

  • a Dockerised IMAP proxy written in Ruby.

    It speaks plain HTTP, like an ESP can manage. It just fetches your Inbox listing and puts it in JSON.

  • a MicroPython module that connects to your wifi, speaks to the IMAP proxy, and formats it into the display.

It took just a few hours to get it all up and running. Delightful!

A photo of kmlyink in action. There's some emails listed on an e-ink

DTB parser implementing notes

Ever find yourself needing to implement a device tree blob (aka FDT, flattened device tree) parser and want to save yourself some time? Learn from my mistakes!

If you try to do it in one pass, you will hurt yourself

I charged headlong into writing dtb.zig by starting at the top of the Devicetree Specification page on the “Flattened Devicetree (DTB)” Format” and reading down. It looked delightfully simple. Keep in mind, I still didn’t know what I yet needed out of it, just that I probably needed to reference the DTB to get it. (I kind of know better now.)

Read more!