Hey there!

I'm a software engineer! This site contains a blog with my thoughts on software, a short introduction to my experience as an engineer, and, most importantly, some of my recent projects, the code for which can be found on my GitHub.

Recent Projects

Here are a few of the projects I've been working on:

JPEG Image De/Compressor

An implementation of the JPEG image coding scheme, supporting the baseline JPEG/JFIF image format, Huffman coding, and chroma subsampling. Uses the Arai/Agui/Nakajima optimized 8-point Discrete Cosine Transform, and supports output of false-color coefficients and YCbCr data to visualize each stage in compression.

gzip-like File De/Compressor

An implementation of LZ77-style dictionary compression and Huffman coding, serving as an initial venture into coding theory. Achieves similar compression ratios to low-complexity gzip.

CHIP-8 Emulator & JIT Recompiler

A CHIP-8 emulator with a JIT compiler that fully supports self-modifying code. Lowers all instructions to native code and uses multi-generational compilation to support CHIP-8's fully unprotected memory model. Uses libgccjit and wgpu for broad ISA and graphics API compatibility.

Project goals included studying JIT compiler construction in an environment with higher requirements, and as such JIT compilation was done to add additional challenge rather than achieve performance gains - JIT overhead far outweighs interpreter overhead here due to the memory model.

Automotive HUD

An automotive heads-up display specially crafted for people who didn't buy a manual by choice and still can't rev-match by ear after three years of ownership. Computes and displays the correct engine RPM to match for each available gear, along with current engine RPM to make smooth shifting less of an exercise in memorization.

Gathers speed, tachometer, and load data via a bluetooth OBDII connection. Uses an AP3216 ambient light sensor to automatically adjust brightness once the sun goes down, and a MPU9250 temperature/accelerometer combo module to handle over-temperature protection (it's sitting on a car dashboard, after all) and measure jolt from dodgy shifts.

Public Educational Content

Educational presentations about the intersection of software and hardware, and custom compositing software to make animated infographics (created shortly after I looked at the above slide and remembered that I can't draw). Unlike most compositing software, projects are plaintext and fully trackable in traditional source control.