Very niche software, part 2
Hot on the heels of
my Bluesky client for an audience of one,
I’ve now shipped a coding harness
for an audience of one too.
This post is about Opair,
the coding harness that no-one asked for
but I built anyway.
Read more
Existing by coincidence, programming deliberately
Hot on the heels of
my Bluesky client for an audience of one,
I’ve now shipped a coding harness
for an audience of one too.
This post is about Opair,
the coding harness that no-one asked for
but I built anyway.
Read more
Before the advent of LLMs,
my hobby was failing to finish software projects
that I hoped might be generally useful to a wider audience.
But now that the cost of writing software is effectively zero,
it feels like there isn’t much point
making it for other people.
So my new hobby is applying absurd levels of polish
to incredibly niche software projects
with a target audience of one.
It turns out this is a lot of fun!
One of these niche projects
that I worked on recently
is Blue Friday.
Read more
I reckon I’ve drafted and then deleted a version of this post
at least 10 times in the last 12 months.
Deleted because it falls in the category
“I must be wrong about this as everyone else is saying the opposite”.
But this week’s release of Fable,
and especially the reasons people are saying it’s such an improvement,
are the nudge I needed to finally publish.
So, here goes:
I think everyone is wrong
about how to write code with LLMs.
Or at least,
I think they’re wrong
about how I should write code with LLMs.
The reason is to do with mental models.
Read more
Last summer I was about to start a new job
where I’d be working with the Go programming language
on a daily basis.
Not having used it before
and with a few weeks of freedom between jobs,
I decided to implement a little chess engine
in Go as a learning exercise.
It turned out to be sufficiently interesting
that I didn’t abandon the project
and this week I reached a point
where it finally felt usable enough to share.
So, ladies and gentlemen,
I give you: Pawno.
A free, open-source, multiplayer chess game
that runs in your terminal.
Read more
This post is an expansion of
a comment I made on HN recently
and continues my Extreme Learning series.
Previously I discussed how I’ve managed to break production
with Redis,
with PostgreSQL
and with healthchecks.
Now I’ll show you how I did it with Cloud Run too.
Read more
When engineers discuss program design and system architecture,
a common source of misunderstanding is concurrency.
Often that’s because we make internal assumptions about it,
which we presume to be self-evident.
But we don’t all make the same assumptions,
so you can end up in a situation
where multiple conflicting beliefs are held
about the concurrency of a system
and nobody realises.
Left unchecked,
these misunderstandings can lurk
until much later in the development process,
when they’re more expensive to fix.
You can prevent these misunderstandings from happening
by making concurrency explicit up-front,
in a diagram.
Read more
Every technology stack has idiosyncrasies
that can trip people up
when they first encounter them.
For whatever reason,
I’ve particularly experienced this
with engineers coming to Node.js from other platforms.
Node is versatile,
but there’s a specific paradigm of usage
that can be surprising to the uninitiated.
So, having been through this journey with people a few times now,
here is my primer for anyone new to Node.
The paradigm it talks about is asynchronous programming,
or async for short.
Read more
There’s a fascinating chapter in Keith Johnstone’s Impro,
called Status.
The context is improvisational theatre
but it contains some real wisdom about life in general.
I’ve thought about it a lot over the years
and it’s gradually informed some opinions I hold
about healthy and unhealthy ways
that engineering teams work together.
Read more