slog

i got tired of css, all the budget went into the links

maybe I want to make an RSS feed?

starred articles

⭐ Writing a MIDI synthesizer for Arduino

The ATmega328P is the microcontroller used in Arduinos. It's an 8-bit AVR microcontroller with a RISC instruction set. It has 32KB of flash memory, 2KB of SRAM, and 1KB of EEPROM. I wanted to play a 4 minute song with polyphonic sounds on it, and I had to use some tricks to make it happen.

⭐ Memory on x86

What even is a pointer? What happens in the CPU when I make a memory access? That's quite a long story, let me tell you.

⭐ Resizable stack allocations using a custom language, compiler, and debugger for fun and profit

The stack is not what it seems (oooo mysterious oooo)

⭐ In memory of garfbag.

I miss him already.

highlighted articles

Highlighted articles.

Articles not written by me that I personally love and would like to share.

articles in chronological order

Memory on x86

What even is a pointer? What happens in the CPU when I make a memory access? That's quite a long story, let me tell you.

A quick explainer on lifetime variance

Variance is surprisingly simple but usually explained poorly.

So... What is Pin anyway? (and why does Future need it?)

A Simple Bigram Name Generator in Google Sheets

I trained a bigram model in Python and sampled from it in Google Sheets.

Writing a MIDI synthesizer for Arduino

The ATmega328P is the microcontroller used in Arduinos. It's an 8-bit AVR microcontroller with a RISC instruction set. It has 32KB of flash memory, 2KB of SRAM, and 1KB of EEPROM. I wanted to play a 4 minute song with polyphonic sounds on it, and I had to use some tricks to make it happen.

Abusing async, functions to finite state machines, custom lisp

Absuing Rust async to convert a sequential lisp interpreter into an incremental finite state machine. Quirks included!

CSS corollary.

The only CSS you need...

In memory of garfbag.

I miss him already.

A little game I've been working on

I didn't think I'd share this game since I rarely share unfinished projects, but I've realized that this game is never going to be finished because of a core design flaw that will never make me satisfied with it.

Resizable stack allocations using a custom language, compiler, and debugger for fun and profit

The stack is not what it seems (oooo mysterious oooo)

Writing your own Linux debugger in Rust

Like everything I've ever learnt. It's easier than you think.

alloca in Rust using inline ASM

Is it possible to dynamically allocate on the stack?

Installing NixOS impermanence with LUKS

Setting up NixOS impermanence on a VM with LUKS disk encryption using ext4 for both the persistent and ephemeral storage.