It’s an image and a program

A few weeks ago I was reading about PICO-8, a fantasy games console with limited constraints. What really piqued my interest about it was the novel way games are distributed, you encode them into a PNG image. This includes the game code, assets, everything. The image can be whatever you want, screenshots from the game, cool artwork or just text. To load them you pass the image as input to the PICO-8 program and start playing.

This got me thinking, wouldn’t it be cool if you could do that for programs on Linux? No! I hear you cry, that’s a…

I’ve been running Linux on my personal computer for nearly six months now and just thought I’d write about a neat feature in systemd called systemd.socket

Personal finance on-demand

tl;dr Created a socket activated service to spin up a local webapp I use sometimes when something connects to it, and then tear it down again after 5 minutes

I’m a big personal finance nerd and have spent the last 3 years cultivating a ledger file that contains pretty much every facet of my financial life. This file is in a format understood by a suite of command line software called Beancount. …

This is another one of those posts, the one’s where Linux desktop apologists have the urge to justify to the world why they do things.

So here we go, a few weeks ago I installed Fedora 32 on my Macbook Pro (early 2015 model). In this post I hope to document the pitfalls, traps and joyous moments I found along the way, complete with the annoyances that I’ve come to tolerate.

I’ll preface this post by saying most of the issues encountered are down to the minimalist nature of the setup I’ve gone with. …

As a two-time cruise veteran, it’s time I checked in again with a fresh and exciting status report on my recent voyage to Norway with my cruise companions Mum and Dad.

This time there was no flight to catch, just a drive up the A1 and straight onto the ship, the Marella Explorer. Unpack, look at the Tyne, have a wine, watch the UK melt into the horizon, then reflect on the endless sea all around you as dusk takes its grip.

Never quite gotten used to the surreal feeling of that, to be honest.

A few months ago it dawned on me that I didn’t really understand how computers work under the hood. I still don’t understand how modern computers work.

However, after making my way through But How Do It Know? by J. Clark Scott, a book which describes the bits of a simple 8-bit computer from the NAND gates, through to the registers, RAM, bits of the CPU, ALU and I/O, I got a hankering to implement it in code.

While I’m not that interested in the physics of the circuitry, the book just about skims the surface of those waters and…

Around five years ago I wrote a Gameboy Color emulator in Go. It was a very frustrating, but rewarding experience that I’ve been dining out on in job interviews ever since.

A few weeks ago I thought I’d stumbled across something really bad when just casually browsing the web. It all started on a financial information website, upon clicking a link, the page partially loaded some of its content, then, without warning, redirected the browser to a completely different domain with some weird spam/search engine content on it, from a known domain squatter.


After refreshing a few times, it was still doing it. Oddly, this behaviour seemed to only appear in Firefox; Chrome and Safari did not exhibit the same. This was a Firefox thing, I was sure of it!

Last week I found myself in the middle of the Mediterranean sea on a huge, mobile hotel undertaking a voyage to three different countries. Or four if you count Monaco as a country.

I’m a cruiser now. That’s the term I’ve misappropriated. Not a cruisaneer, a pirate, nor a cruisetacian, just a bonafide cruiser. I’ve seen things and done things.

This is my account of what occurred and why, strap in because it might be long, it might be rambling. Just look at the pictures if you get bored, maybe take a wee break in the middle.

The ship 🚢

It was big…

Brainfuck is probably the only programming language in the world that lives up to its name, I’ve always been intrigued about how it works but never felt confident enough to dive deeper.

After starting to read this brilliantly written blog post by Thorsten Ball everything seemed to click into place. The language, while difficult to read, isn’t that complicated when you scratch under the surface.

In fact, it all felt very familiar, a few years ago I wrote an emulator for the Gameboy Color, which was fun, but a lot bigger than the 8 bit machine that Brainfuck runs on.

TL;DR created software to mimic my TV remote, integrated this with my Amazon Echo

This isn’t my TV but I liked the picture


Sometimes I just find using the remote for my TV annoying, especially when I mostly only use it for my PS4 and Chromecast. For example, getting ready to play my PS4 involves

  1. Looking for the remote
  2. Looking for the remote (go to step 1 until complete)
  3. Finding the remote
  4. Turning the TV on
  5. Waiting a few seconds for the TV to become responsive to button presses (“Smart TV” operating system)
  6. Changing the input source to HDMI input 4
  7. Adjusting the volume to around level 15 or…

Daniel Harper

video game fan. software engineer @ Cloudflare (opinions own)

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store