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.