Fast Fourier Transform Notes

A signal can contain multiple periodic functions with different amplitudes and frequencies. The Fourier Transform is able to decompose a signal down into the individual sine functions that constitute the overall signal. Let's say your signal is a 262hz (or middle C) sine wave, encoded as a Pulse Code Modulation…

Web Audio clock demo

This is a little demo web app that uses the Web Audio clock to correctly control the timing of audio playback. I'm contemplating the idea of implementing a web based drum machine and this is background research. The app starts by fetching a JSON manifest file (from S3). The manifest…

Conway's game of life

Edit (2021): A better solution: https://github.com/spacekitcat/convolve2d-conways-game-of-life/blob/main/main.py This is a fairly simple web based implementation of Conway's game of life. I wrote it as a Kata and for interview preparation and thought the result was kinda neat. It starts randomised, sometimes it will…

NES (6502) Assembly Notes

The following Gist demonstrates how to create a 16-bit counter using 6502 assembly. It increments the Least Significant Byte (LSB) and the Most Significant Byte (MSB) separately in such a way that the MSB is incremented once for every 256 increments of the LSB, totalling 65536 iterations. The following Gist…

LZ77

LZ77 is a lossless, streaming compression algorithm invented in 1977. The central concept is its use of a Sliding Window, which is a fixed size, sequentially ordered buffer; sometimes referred to as the history buffer. The LZ77 compression algorithm starts by reading in a string of bytes (from a stream)…

Hacker Text JS

HackerTextJS is a small JavaScript library that renders Matrix-esque animated HTML widgets with pure text.…