Inklings: a tumblelog


htmx allows you to access AJAX, CSS Transitions, WebSockets and Server Sent Events directly in HTML, using attributes, so you can build modern user interfaces with the simplicity and power of hypertext

Racing the beam explained: Atari 2600 CPU vs CRT television

Designing a simple ADSR(-ish) envelope generator from scratch

Fitting a FORTH in 512 bytes

Also see sectorforth.

Linkers and Loaders

These are the uncorrected manuscript chapters for my Linkers and Loaders, published by Morgan-Kaufman.

Codebase 64

This wiki is the number one source of articles on Commodore 64 programming. You will find source code, tutorials, manuals, notes on clever tricks and hardware quirks and more!

Retro Sound Chip With an Arduino: the SAA1099

There looks to be an error in the description, as the common part of an audio jack should go to GND, not +5V.

Anyhoo, I don’t know enough about this stuff. I should really get a breadboard and experiment.

A simple universal 800×600 VGA signal generation circuit

Just curious as to what would be involved in generating a VGA (though 800×600 is actually SVGA) signal.

I was reading up on the Motorola 6845 CRTC to see how you’d drive a display. That only tells you what you should be rendering at any given moment, and between the VGA signal generation circuitry and the 6845 (though a HD6445 CRTC-II might be more appropriate), you’d need a bit of glue logic to take the output of the CRTC, look up the character and palette data, then translate that to pixel data based on a character and palette ROM lookup.

All this is way beyond me right now though! Still, at some point, building something like that (maybe some kind of VGA terminal) might be a fun exercise when I’ve some kind of actual competency in this stuff.

Lazy load embedded YouTube videos

This looks like an interesting approach to speeding up the rendering of pages on this site. The primary source of slowdown on this site is YouTube embeds. Now that I’ve fixed YouTube’s embed sizing issues here, I want to finish things off by replacing them with façades such as this. I’ll experiment with this, and if it doesn’t seem to do what I want, I’ll try something with <div> elements and some Javascript.


SkoolKit is a collection of utilities that can be used to disassemble a Spectrum game (or indeed any piece of Spectrum software written in machine code) into a format known as a skool file. Then, from this skool file, you can use SkoolKit to create a browsable disassembly in HTML format, or a re-assemblable disassembly in ASM format. So the skool file is - from start to finish as you develop it by organising and annotating the code - the common ‘source’ for both the reader-friendly HTML version of the disassembly, and the developer- and assembler-friendly ASM version of the disassembly.

I mainly want this for, as I want to fiddle around with some Z80 development for the Spectrum and Spectrum Next using z80asm, which is a bit barebones by itself.

PLA20V8: The Commodore 64 PLA that you can build yourself

The Commodore 64 is a computer that refuses to die and decades after its introduction, its community is still going strong. Many computers still work fine, in contrast to generations of computers that came after it, and died too soon, Commodore 64 hardware is often in good shape. But that doesn’t mean that these computers never fail, and repairing them is a common activity in the community. If you work with Commodore 64 hardware, you will know that a broken PLA is one of the most common defects. Especially PLAs that were produced in the years 1983 and 1984.

Go Modules Cheat Sheet

Well, this filled in a bunch of random gaps in my understanding!

Pasmo, a portable Z80 cross-assembler

Recreating the Jupiter Ace

It’d been buzzing around my head to make something like this a long-term project, so I could build something cool, and also learn more about PLDs and the like, but it seems somebody’s already done that in the form of the Jupiter-II (which has an expansion board that adds lots of nice things). Downside is that his design uses lots of surface-mount parts, which I wouldn’t even have remotely the skill to solder.


Seems like a reasonable alternative to Tarsnap in cases where it’s not practical. Mind you, the author still considers it alpha quality software.

Rust Language Cheat Sheet


Fast 3kB alternative to React with the same modern API

If it even happens I need something like React, this seems like a decent alternative.

Mind you, it’s only 3kB if it’s compressed: the actual module is around 10kB.

Inside the HP Nanoprocessor: a high-speed processor that can't even add

An odd bit of hardware I’d never heard of. It was contemporary of the 8008 and 6800, but had some very quirky design features that allowed it to be manufactured at a fraction of the cost. It’s use at the time seems to have mainly been in embedded systems and special purpose hardware.

How to be miserable for the rest of your life

HOME - Resonance

Wyspa - Piotr Kuciapski

So, this is stupidly good!

Seeeduino XIAO

Interesting Arduino-like board. Particularly nice is that it has a USB3 port, and is about the size of a postage stamp.

Cigarettes After Sex - Nothing's Gonna Hurt You Baby

Protect domains that don’t send email

While I’ve been setting up SPF records like this, it’s never occurred to me that domains with an appropriate SPF record might also need DMARC and DKIM records to go along with it. I’ll be setting that up.

C64 Saver 2

The C64 Saver 2 is an open-source project intended to make overvoltage protection available and easy to make for anyone interested in using the old Commodore power brick together with the C64. The power brick is 20-30 years old and it is known for failure with overvoltage. This is caused sometimes because of broken solder joints on the regulator or the regulator itself failing.

I’ve pretty much always had an aftermarket brick for my C64, as the original died a few years after I got my original. I don’t think I should trust the almost three decade old replacement brick, so if I power up my C64 again, I’d like to build something like this to put in line between it and the brick.


Pikchr (pronounced “picture”) is a PIC-like markup language for diagrams in technical documentation. Pikchr is designed to be embedded in fenced code blocks of Markdown or similar mechanisms of other documentation markup languages.

Handles are the better pointers

Minotaur Shock - Ocean Swell

Minotaur Shock - Luck Shield

The song really kicks off properly at around 1m in.

You don't need more than one cursor in Vim

Petri Nets Are Monoids

Event-Driven Architecture

Linux containers in 500 lines of code

I'm not feeling the async pressure

Strategies for Working with Message Queues

A Thought Experiment: Using the ECS Pattern Outside of Game Engines

Backpressure explained — the resisted flow of data through software

I test in prod

Testing in production is a superpower. It’s our inability to acknowledge it that’s the trouble.

TDEE Calculator

Exploring x509 by creating a toy PKI