I’ve been using Tailscale for around four years to connect my disparate
devices, servers and apps together. I wanted to talk a bit about how I use it, some cool features you might
not know about, and some stumbling blocks I encountered.
I’m not sure Tailscale needs an introduction for the likely audience of this blog, but I’ll give one anyway.
Tailscale is basically a WireGuard orchestration service, with lots of nice features sprinkled on top. It’s a
subscription product, but it has an insanely generous free tier that covers basically anything you’d ever want
to do as an individual. They also open source all their client software, and there’s a third party control
server implementation called Headscale if you want to
avoid the hosted system entirely.
Basic connectivity
At its core, Tailscale lets you easily connect from one device to another, even if they’re not directly
exposed to the Internet. You install the Tailscale client wherever you like (on your phone, computer, servers,
Raspberry Pi, etc), authenticate the machine with the control server, and it can then talk to all the other
machines on the tailnet using their private Tailscale IP addresses.
That isn’t anything revolutionary: it’s the basic premise behind VPNs. But Tailscale makes it so easy. You
don’t have to bother with any networking configuration. You don’t have to distribute keys. You just install
the client, and login.
The Ethics of LLMs
Published on Jun 22, 2025
I’ve written about LLMs a few times recently, carefully dodging the issue of ethics each time. I didn’t want
to bog down the other posts with it, and I wanted some time to think over the issues. Now I’ve had time to
think, it’s time to remove my head from the sand. There are a lot of different angles to consider, and a lot
of it is more nuanced than is often presented. It’s not all doom and gloom, and it’s also not the most amazing
thing since sliced bread. Who would have thought?
It’s worth noting that I’m just setting out my position here. I’m not trying to convince you to change your
mind. To set the scene a bit, I mainly use Claude Code as a programming tool. I use the Claude chat interface
sometimes to proofread things, do random one-off data analysis, or help organise things. More rarely I’ll try
to use it to brainstorm things, or recommend things, or do more “creative” things, but I don’t trust it enough
in those domains to do it often. I don’t use it for research or as a Google replacement, which I recognise
probably makes me a weird half-in-the-water, half-out-of-it class of user.
Copyright & Corporate Control
One of the key issues, and something that is being prosecuted in several court cases right now, is how LLMs
interact with the copyright system. And by “interact with” I mean “run roughshod all over”. It seems pretty
obvious from my lay perspective that if having 10 seconds of pop music in the background of a YouTube video is
copyright infringement, then
Meta pirating books via BitTorrent
must also be.
If all you have is a hammer…
Published on Jun 18, 2025
This, dear reader, is a hammer. It is almost entirely irrelevant to the article. Enjoy.
I presume everyone is familiar with the idiom “if all you have is a hammer, everything looks like a nail”. If
not, well, there it is. It’s generally used pejoratively about being single-minded, but I think it also gives
a glimpse into something more interesting: mental and perceptual sets.
Before I explain, let me tell you a story about a person who bought a 3D printer. When they were first
thinking about getting one, they weren’t sure if it was worth it. They could print a few board game
accessories, but then what? After they got it, though, a whole new world opened up: everywhere they looked
there were opportunities to improve things by adding 3D printed plastic. Broken appliances were repaired with
3D printed parts, all sorts of shelves, organisers, hooks and other things were made. But when they talked
about this to other people, most often the response was “That’s nice, but I don’t think I’d use one”. How
could they not see the truth in all its glorious layer lines?!
The answer is in the concept of a ‘set’, and instead of trying to explain it, I’m just going to quote
Wikipedia:
In psychology, a set is a group of expectations that shape experience by making people especially sensitive
to specific kinds of information. A perceptual set, also called perceptual expectancy, is a predisposition
to perceive things in a certain way. […] A mental set is a framework for thinking about a problem. It can be
shaped by habit or by desire. Mental sets can make it easy to solve a class of problem, but attachment to
the wrong mental set can inhibit problem-solving and creativity.
This perfectly captures what happened. They’d developed a ‘3D printing mental set’: a predisposition to see
problems that can be solved with their hammer 3D printer. Once I started noticing this pattern, I
started seeing it all over the place.
An app can be a ready meal
Published on Jun 11, 2025
It's not a home-cooked meal, but it does the job sometimes.
Three years ago I read “an app can be a home-cooked meal” by Robin Sloan. It’s a great article about how Robin cooked up an app for his family to replace a
commercial one that died. It’s been stuck in my head ever since. It’s only recently that I’ve actually done
anything like Robin described, though. Part of the reason was my brain got too hung up on the family aspect:
in my head, a home-cooked meal is one where your family or friends all gather around to eat it with you (in
much the same way as Robin’s app is used in the article). It took me an embarrassingly long time to realise
that you can apply all the same arguments to an app built just for you. And it doesn’t even have to be
difficult. In fact, it can be more like a ready meal than a family dinner.
Why not open source?
I love open source software. Almost everything I use day-to-day is open source, and most things I write for
myself I release as open source. I believe that should be the default stance for most software. So why would
you want to make something and keep it just for yourself?
Building a new Computer
Published on Jun 3, 2025
The finished PC. Cat pen for scale.
I recently built a new computer, after exclusively using a laptop for three years. It’s also the first time
I’ve departed from the usual combo of an Intel CPU and Nvidia GPU.
While the form factor of a laptop did make it amazingly handy for travelling and attending LAN events, it was
starting to show its age and there was basically no sane upgrade path. The main problem was its 3060 mobile
graphics card, which was okay for the first few years and then slowly descended into
painful. At the time, the (fairly disappointing) 50-series had just been released, but hadn’t yet
made it into laptops. Nvidia had stopped production on the 40-series beforehand, so there also weren’t any
compelling options there, either.
That’s not to say there were no laptops at all that I could have upgraded to. There were. Just not really any
that ticked all of my perfectly normal boxes like “run Linux”, “have at least 64GB of ram”, and “run modern
games well”. Having to upgrade the entire system just because the graphics card was showing its age was a bit
of a drag, too. So back to the land of desktop computers I went!
To try to preserve some of that convenience, I opted for a small form factor (SFF) case. The computer and all
the accessories can fit inside a hand-luggage-sized flight case. More on that later, though.
Components, Choices, and Cramming
So what, exactly, is in this computer? The case is a Fractal Design Terra, which is a lovely little 10.4L
case. My last desktop PC was a normal-sized Fractal Design case, which I liked a lot, and it seems like
they’ve upped their game since then. The Terra is both pleasant to look at (just look at that wooden panel!),
and a breeze to work in. The sides and top are fully and easily removable, giving you great access to
everything inside. I expected an SFF build to be fiddly, but the case made it feel about the same as a normal
full-sized build.