Yeah, I'm a computer programmer. I write computer programs. Constantly.

just add software
1977 isn't old, it's industry proven
Cowgol 2.0
a modern language for tiny machines
EmuTOS on the AlphaSmart Dana
$4750 cheaper than an Atari STacy
a chiptune tracker for the BBC Micro
A simulator for the OBP spaceflight computer
spaceship not included
POLF: a game for the Commodore PET
this should never happen
Fuzix on the Raspberry Pi Pico (update)
let's call it done
Fuzix on the Raspberry Pi Pico
surprisingly non-awful
Porting Fuzix to the ESP8266... on video
every tedious minute of it
Writing 800kB Mac disks with FluxEngine
technically impossible
WordGrinder 0.8 released!
now thirteen years old
a word processor for processing words
6303 arithmetic: more dull than you think
but in a good way
Cowgol 2.0: this time it's useful
well. debatably useful
Jumping ahead with Cowgol 2.0
that's two days of work wasted
Old but freely distributable compilers
not quite dead yet
Writing a lunar lander game for an actual lunar lander
the oldest of old schools
Live coding a compiler for CP/M, from scratch
well, part of one
Live coding a vi for CP/M, from scratch
more vi-adjacent, really
R.T. Russell's Z80 BBC Basic is now open source
one of the originals and best
Resurrecting CP/M, or at least CP/Mish
clearly this got out of hand
Live coding an assembler for CP/M
rewriting software for a 40-year-old OS is clearly a good use of time
A small, portable and thoroughly evil Forth interpreter
but evil in a good cause
TypeTalk: smalltalk about Javascript
the softest of software
FluxEngine released!
getting serious about floppy disks
WordGrinder 0.7.2 released!
ten years old --- they grow up so quickly
How to write a game on a ZX81
obsolete machines for fun and profit
Rapidly rendering fractals on stupidly unsuitable machines
actually really, this time!
A twelve second Mandelbrot on the BBC Micro
yes, really! but no, not really
Cowgol 0.5 released!
now, an industry standard
Z80 arithmetic: also surprisingly terrible
surprising plenitude of awfulness
Cowgol 0.4 released!
smaller, better, faster...
jpegfinder vs. the Hubsan H107D
and the terrible secret!
6502 arithmetic and why it is terrible
yes, that's what I said
Cowgol 0.2 released!
should actually work now (but I said that last time)
a very small programming language
Cowgol 0.1.1 released!
6502s never die, they just... stop moving...
chording keyboards the easy way
Fuzix port for the MSP430
a possible record for the smallest Unix ever
Ancient BBC Micro software
relics from my childhood
A Random Walk Through Ada
the language everyone's heard of but never used
Flooded Moon
an art project
a text-based CYOA MMORPG
Conway's Game of Life (as a GNU Make macro)
exactly what it says on the tin
a pure Lua JVM
Random Cybiko hacking
the Cybiko was never hip
PiFace: a bare metal boot loader for the Raspberry Pi
no ARMs need apply
a ANSI C compiler for high-level languages
a Java bytecode to C++ transpiler
an experimental typed typeless language
Cowj GWT library
bending GWT to breaking point and beyond
a greylisting SMTP proxy
Prime Mover
a powerful alternative to 'make'
Hacking the Kindle
WebSocket Transflector
a simple WebSocket to socket service proxy
a Hershey font manipulation tool
Go, going forward
I have a dream
On Go
oh, go on
Objective Lua
Lua, objectified
a Gaim plugin for the Citadel groupware client
an instant messenger chatbot
A short guide to building a gcc cross-compiler
while still remaining nominally sane
A first look at the SheevaPlug
small, white, powerful
a RISC OS work-a-like
GEOS software
programs and tools for the GEOS operating system
How to set up a Hercules Graphics card under Linux and still stay reasonably sane
setting up a twin-headed system with a Hercules monochrome graphics card and a PCI VGA graphics card, on Linux with XFree86 3
a MIDI mapper for the ALSA sound system
Amstrad Hardware Recyling
information and tools about doing unexpected things to Amstrad hardware
Foo Fighter
a simple yet playable shoot-em-up for intent
troff in the twenty-first century
Miscellaneous Unix Software
various small pieces of code that aren't important enough to warrant their own page
Silicon Castles
chess playing genies rule OK
a C compiler that targets the Z machine
a minimal Basic interpreter for the Z-machine
a MySQL-based mail reader
DOS software
programs I wrote back when DOS was still hip
my cross-platform programming system
Twiny very old
for when you just need that one extra character
A No Instruction Set processor very old
an interesting, unusual, and probably totally useless processor architecture design
Running native programs on the Amstrad NC200 very old
playing with my new laptop