Latest inklings

Children of the Miracle: from Algol to Prolog

Use xhyve for development

Didn’t quite get this to work, but I’ll give it anothe try later.

The Problem with the Ticket Industry

A Skip List for Multicore

Building FreeBSD for ARM64

What interests me here is possibly installing it on the Raspberry Pi 3.

Gitless: a version control system

Gitless is an experimental version control system built on top of Git. Many people complain that Git is hard to use. We think the problem lies deeper than the user interface, in the concepts underlying Git. Gitless is an experiment to see what happens if you put a simple veneer on an app that changes the underlying concepts. Because Gitless is implemented on top of Git (could be considered what Git pros call a “porcelain” of Git), you can always fall back on Git. And of course your coworkers you share a repo with need never know that you’re not a Git aficionado.

abc notation tutorial

I was looking for some way of quickly dashing out melodies on the command line for playback similar to the old PLAY statement in GW-BASIC, but there doesn’t seem to be anything like that.

The closest I’ve been able to come to is using abcMIDI to accept a melody in abc notation and generate a MIDI file, and then having timidity play it back.

That means I have to learn abc notation.

MarkeyJester’s Motorola 68000 Beginner’s Tutorial

Ah, memories! Recall writing a simple emulator for a subset of the 68000 instruction set once upon a time. Certainly one of the less sucky 16-bit processors.

Render the Mandelbrot Set with jq

All tools expand in functionality until they’re Turing complete.

Toggling mute on the default source (e.g. microphone) in PulseAudio

This isn’t very well documented, but if you want to toggle mute on your mic, run this:

pactl set-source-mute @DEFAULT_SOURCE@ toggle

How to Stop Confusing "Por" and "Para"


Flexbox Froggy

A possibly overly cute game for teaching CSS flexboxes.

Tip of the day: reversed git bisect

git bisect is great for finding where things went wrong, but not so great at finding where they went right, such as when a fix was introduced for an issue. This explains how to trick git bisect into letting you do just that.


Vertex is a theme for GTK 3, GTK 2, Gnome-Shell and Cinnamon

And quite a pretty one at that.

Hi, NewsGator users (all two of you)!

The feed for this site seems to have been broken in NewsGator as they do some canonicalisation of URLs that doesn’t play well with the code for this site.

I’ve added a quick fix to the code to allow it to work again.

I’m not sure if the problem is on NewsGator’s end or mine, but I’ll investigate the relevant RFCs to see if I’m not canonicalising URLs properly on my end.

Installing FreeNAS on a HP MicroServer Gen8

This evening’s mini-project.

I’ve been told that there’s some awkwardness with it and UEFI, but this looks like it works with FreeNAS pretty much out of the box, which is nice!

Building and installing Tarsnap on Debian

Again, this is going on my RPi 3.

How to setup a DNS server with PowerDNS on Raspberry Pi

Because I’m considering making my RPi 3 a hidden master DNS server and possibly doing DNSSEC zone signing on it rather than out in the wild.

Properly Close a Frozen SSH Session

Huh. That’s interesting.

Stuff Goes Bad: Erlang in Anger

This book intends to be a little guide about how to be the Erlang medic in a time of war. It is first and foremost a collection of tips and tricks to help understand where failures come from, and a dictionary of different code snippets and practices that helped developers debug production systems that were built in Erlang.

From the author of Learn You Some Erlang For Great Good!, which I’m going back over again to refamiliarise myself with the language after… oh… quite a long time.

Go best practices, six years in (2016)

Tarte au citron: Lemon Tart Recipe


A less horrible format for Python docstrings in Sphinx.

Plain Text Accounting

Keeping track of this stuff is something I’ve meant to do for a very long time, but never have. It’s not so much that I have a tight budget that I need to stick to so much as it would be nice to have traceability.

Pagination Done the Right Way

Practical Unix Manpages


Kind of like a lightweight React. Not sure if I’m sold on it, but I know a couple of personal projects where it might be worth trying out.

Real Crypto Has Broken Curves

The Matasano Crypto Challenges

Should do these. Probably won’t, but probably should.


A Vim plugin manager, like Pathogen or Vundle, but better!

I like the fact that it can do lazy loading and it can also automate a lot of nonsense surrounding updates.

All the Little Things by Sandi Metz

"I Contribute to the Windows Kernel. We Are Slower Than Other Operating Systems. Here Is Why."

Linux is a shitfest (from a BSD user’s perspective), but Windows is an even bigger shitfest, apparently.

The Hot News or 'After' Perfect in Irish English

Sorry for the downtime

You might’ve noticed this site was down.

What happened is that lir, the server it was running on, started experiencing drive issues. I’ve had to migrate as much as I can over to a VM in the meantime.

One pleasant upshot is that it’s allowing me to try out some stuff I hadn’t tried before. For instance, this site is now running on Nginx rather than Apache, and I’ve switched to using FreeBSD packages rather than ports. This latter change has its upsides and downsides, such as no longer running the site over HTTP/2 any longer, but overall is probably a positive.

The worst part so far was dealing with DNS as the VM formerly acted as a secondary nameserver running Knot DNS 1. In moving over, I switched from Knot DNS 1 to Knot DNS 2, which was painless enough in itself, but as I didn’t want the pain of setting up OpenDNSSEC again, I decided to using Knot DNS 2 to do zone signing… which lead to a number of zonefiles being overwritten. Thankfully, I keep everything in a git repo, so recovering the originals was straightforward, and I’ve updated the two most important domains - and - with new DS records. I’ve two .eu domains (which aren’t actively used, and are mainly testbeds) where I need to provide the updated DNSKEY records to the registry.

Last up will be setting up mail again. I’m moving from Postfix to OpenSMTPd.

This isn’t really how I’d wanted to spend Paddy’s Day, but it’s the first free day I’ve had to do all this stuff.

Bryan Cantrill on Jails and Solaris Zones

Fantastic talk!

Why is Vertical Rhythm an Important Typography Practice?

Please avoid "3 0 1" and "3 0 2" DANE TLSA records with LE certificates

Also, mistakes to avoid with DNSSEC and TLSA records.

Go channels are bad and you should feel bad

The title’s a bit inflammatory, but the article itself is good. The headings mostly give a good summary:

  • You probably won’t end up using just channels (due to dead goroutine leaks)
  • Channels are slower than implementing it yourself
  • Channels don’t compose well with other concurrency primitives
  • Callbacks are strictly more powerful and don’t require unnecessary goroutines
  • The channel API is inconsistent and just cray-cray

Also, linked half-duplex channels would be help the garbage collector, and it would be nice to be able to select on condition variables.

Learn You an Agda and Achieve Enlightenment!

Also, here’s a one-page version.