Blog Posts

Tiled Maps


What are tiled maps and how do they work?

Remapping Keys on Sway


A simple way to remap keys on Sway WM.

DIY Air Purifier


A simple air purifier made with an off the shelf HEPA filter

svg2gcode Progress Update


A review of major changes and what's next

ICAO location codes


What they are and where to get them

The Pinecil: a portable USB-C soldering iron


My thoughts on the Pinecil: a portable USB-C soldering iron.

Re: You should look at this


The tale of a malicious Excel macro.

Testing HDL on GitHub with Github Actions


How I automatically run tests on all FPGA libraries in the hdl-util organization.

Upgrading my Dell Optiplex 7020


Retrofitting an older desktop PC and all the challenges involved.

Switching from ProtonMail to Fastmail


Documenting my motivations for switching email providers, the steps involved, and first reactions.

Kindle DX Graphite as an E Ink Clock


Recreating my broken songbird clock as a digital smart clock.

Generating gray codes of arbitrary width


One-liner gray code conversion implemented in SystemVerilog.

Elephant bush succulent


A little water and sunshine goes a long way!

Interfacing FPGAs with MIPI Cameras


A progress update on my project to do MIPI camera control and video reception from scratch with an FPGA.

Minimal HDMI for FPGAs Released


Celebrating the first stable release of the project with a recap, discussion of changes, and what's next.

HDMI output on an FPGA


Tackling HDMI output from the ground up as my first major FPGA development project.

Enumerating Lattice Points in a Hypersphere


An intuitive algorithm for the task.

Pen Plotter


How I helped build a pen plotter from a design on Thingiverse and wrote svg2gcode to draw SVGs with it.

Lindenmayer Systems


A brief overview of L-systems and how they represent intricate patterns concisely.

2D Rendering of the Plan 9 Palette Cube


Showing the colors of the Plan 9 Palette Cube in a grid for visual understanding.