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.
starred articles
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.
The stack is not what it seems (oooo mysterious oooo)
I miss him already.
highlighted articles
Articles not written by me that I personally love and would like to share.
articles in chronological order
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.
Variance is surprisingly simple but usually explained poorly.
I trained a bigram model in Python and sampled from it in Google Sheets.
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.
Absuing Rust async to convert a sequential lisp interpreter into an incremental finite state machine. Quirks included!
The only CSS you need...
I miss him already.
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.
The stack is not what it seems (oooo mysterious oooo)
Like everything I've ever learnt. It's easier than you think.
Is it possible to dynamically allocate on the stack?
Setting up NixOS impermanence on a VM with LUKS disk encryption using ext4 for both the persistent and ephemeral storage.