Projects
A collection of my work in graphics, systems, robotics, games, and electronics, including independent projects and earlier experiments.
Safe Cracking Robot
Built a chassis and custom PCB controller board to help unlock a safe. Don't worry, it's a friend's safe left behind from previous owners of a newly bought home! Algorithm is a brute-force approach, but with several optimizations that reduce the per-combination check to ~1 second.
Screenshots
Click to view
Game Boy Emulator
I implemented the full CPU and graphics system for this Game Boy emulator, with cycle-accurate CPU and interrupt emulation. It plays real games in real time. I also built a disassembler, stepping debugger, memory inspector, and sprite/Pixel Processing Unit inspector to see what was going on inside.
Screenshots
Click to view
Click to view
D&D Adventure
Published a Dungeons & Dragons 5th edition adventure set in a troubled academy where magical disruptions and missing students hint at a deeper conspiracy.
Dungeons!
I made a digital version of a tabletop board game, with AI agents as players and strict enforcement of the game rules. I built a UI for playing against the agents and a headless mode for running lots of simulations. Then I ran a competition with friends to find the best AI agent!
Screenshots
Click to view
Click to view
Click to view
Conjurcraft
A fun little board game created with my nephew. Started as a game written on cards, for fun with family, but ended with an online implementation of the full rules.
Screenshots
Click to view
Click to view
Click to view
Click to view
Click to view
Digital Top Hat
A wearable LED strip display integrated into a top hat. I designed a custom PCB for power and wireless control. It could draw letters, run a light show, or animate for fun.
Screenshots
Click to view
Click to view
C3208 Retro Computer
I've been building an 8-bit computer from discrete TTL chips, along with a toolchain that turns my own hardware description language into PCBs. The tools model, simulate, and lay out the circuits. I've implemented an ALU and memory control unit; the CPU design has an emulator, a compiler, and gate-level simulation, but the physical CPU isn't finished yet.
Screenshots
Click to view
Click to view
Click to view
Click to view
Click to view
CoreTCG Card Scanner
A Magic: The Gathering card scanner using Apple's computer vision models and networking to automatically determine the price of card collections. Found solutions to reduce the search-space, as the cards have yearly permutations that look subtly different.
Screenshots
Click to view
Laser128 Apple ][ Clone Restoration
Restored the electronics, keyboard, display, and plastic molding of a Laser-128: a famous 1980s Apple ][ clone. Ported Ardunix from pseudo-C++ to C89, fitting within 2KB of total RAM.
Screenshots
Click to view
Click to view
Click to view
GameBoyGPT
A small experiment using the ChatGPT API to play Pokémon Blue in a Game Boy emulator. I tried sending screenshots directly, parsing the screen with OpenCV, and analyzing memory to track progress. It was not very effective.
QuadGame
A C++ implementation of Quadradius, recreating a beloved childhood strategy game with modern C++, networking, and extensive unit testing. Game state was deterministic and hashable to protect against client-side exploits.
Screenshots
Click to view
Ardunix
A multi-level, top-down space shooter for the Arduboy, a little handheld console with 2.5 KB of RAM and a 128Ă—64-pixel screen. Fitting the game into that memory meant keeping a close eye on both RAM use and executable size.
Screenshots
Click to view
CoreSoldier
A 2D side-scrolling shooter platformer with a focus on learning lag-compensating strategies for server-authoritative simulation and client-side prediction. Added physics to explore network syncing of non-deterministic elements.
Screenshots
Click to view
CoreGlyph
An experimental arena for testing different glyph rendering strategies, focused on CPU-side optimizations relating to multithreading, SIMD, and CPU cache behavior.
Screenshots
Click to view
Wordle Solver
A simple Wordle solver with a GUI that runs on macOS.
Screenshots
Click to view
CoreBasic & ARM64 JIT
I built a BASIC-like language and interpreter for scripting in a game, then added an ARM64 just-in-time compiler to make it run faster on my Mac. In my recorded tests, the JIT was about 73 times as fast as the interpreter for Fibonacci and 828 times as fast for a busy loop.
Screenshots
Click to view
Click to view
Click to view
Click to view
ECS Rogue
An experimental roguelike I built to explore entity component system (ECS) architecture, with physics, Metal rendering, and scripted agents.
Screenshots
Click to view
Multi-Threaded Ray Tracer
A SIMD-enabled, multithreaded ray tracer with a progressive rendering preview, supporting complex lighting, textures, reflections, and soft shadows. All based on the nice "Ray Tracing in One Weekend" book series.
Screenshots
Click to view
D&D Dungeon Generator
A 5th edition Dungeons & Dragons dungeon generator that creates detailed SVG maps with rooms, corridors, and encounter areas for tabletop gaming.
Screenshots
Click to view
Click to view
Click to view
Laser Cut Dog Puzzle
A multi-layer laser-cut wooden slider puzzle designed as an interactive toy for dogs. Learned details of laser-cut wood design process.
Screenshots
Click to view
Click to view
Click to view
WWDC 2017 PDFKit Presentation
I co-presented "Introducing PDFKit on iOS" at WWDC 2017, covering PDFKit's features and how to use them in iOS apps.
Presentation
LEGO Mosaic Generator
An experiment using A* path planning to turn an image into a LEGO mosaic while keeping the cost of the bricks down.
Screenshots
Click to view
Click to view
Fermentation Fridge Controller
Created a custom PCB and PID algorithm to control the temperature of a refrigerator used for fermenting homebrew beer. Successfully created a few good beers. We don't talk about the bad beers...
Screenshots
Click to view
Click to view
Click to view
Click to view
Eve Market Bot
An automated trading bot for EVE Online using OpenCV for screen analysis and automated buy / sell behaviors for profit. Was fun to code, not play.
NeoGeo Arcade Cabinet Refurbishment
Refurbished a NeoGeo 1990s cabinet. 140 Games-in-One! Professionally printed a new controller board, replaced all controller parts & electronics, cleaned and repaired original main board.
Screenshots
Click to view
Click to view
Click to view
SimpleMalloc
A memory allocator I wrote over a weekend, for fun and to explore memory management.
OpenGL Deferred Renderer
A simple exploration of real-time deferred rendering, implemented in OpenGL.
Snake-on-a-shader
Implemented the classic "Snake" game, but through a standalone shader.
Screenshots
Click to view
32x32 LED Matrix Artistic Display
An Arduino-controlled 32x32 LED matrix for animations and visual effects. I used it to experiment with real-time rendering and color blending on constrained hardware.
Screenshots
Click to view
SNES Retro-Bright Repair
Restored a yellowed Super Nintendo with a retro-bright treatment, deep cleaning, and hardware repair to bring the console shell and electronics back to working condition.
Before & After
Click to view
Click to view
Click to view
Click to view
Neural Net Snake Game
An experimental neural network trained to play Snake. Explored reinforcement learning techniques, and reward system optimization for game AI.
Machi Koro simulation
Implemented the famous card game in code, allowing various "AI" agents to compete to try and find optimal strategies.
Rotating Cross Optical Illusion
Implemented an optical illusion in a stand-alone shader.
Screenshots
Click to view
RED FANG - No Air
Implemented a visual effect seen in a music video, through a standalone shader.
Screenshots
Click to view
LCD Display Switcher
A toy hardware project to show how to directly manage an LCD's control pins.
Screenshots
Click to view
Verlet Cloth Simulation
A small JavaScript cloth simulation from 2013 using Verlet integration and Three.js. Built to debug an equivalent C++ implementation that wasn't working. The demo is non-interactive.

Reddit DailyProgrammer
Helped moderate a programming community with thousands of participants, wrote challenges, and built a Python bot that crawled submissions, maintained the schedule, posted new problems, and awarded peer-recognition flair.
WindowSnaps
I liked snapping windows side by side on Windows and missed it on my Mac, so I wrote my own version. WindowSnaps used Objective-C and the Accessibility API to snap dragged windows to the edges of the screen. A little open-source utility, and my first chance to write Objective-C for the Mac.
Nova Legacy
A four-week sprint with developers around the world to turn a little game idea into a playable space RTS. I led the team, and we built it in Unity and C#.
Screenshots
oDataiOS
An ARC-era Objective-C OData client with futures/promises, NSOperationQueue-based work, and blocking and non-blocking APIs. Published as open source.
JSPhoenix
I remembered Phoenix, a space shooter I used to play on my TI-83+, and decided to rebuild it in JavaScript. Less than six hours later, I had a small Canvas game with enemy waves and ship upgrades. Why play it when I can program it!
3D Computer Graphics: Software Revealed
A 159-page book I wrote and self-published in 2012, paired with a free online tutorial and working source. It teaches the 3D pipeline by building a software rasterizer in JavaScript and HTML5 Canvas, from vectors and projection through clipping, shading, and texturing.
Screenshots
Click to view
RhĂ´nes (DwarfCraft)
A 3D voxel-based colony simulation game inspired by Dwarf Fortress. I built the OpenGL renderer and lighting system, along with job scheduling, entity management, basic combat, resource gathering, and the interface for managing the colony.
Screenshots
Click to view
SpaceCore Flight Simulator
A little space-flight game I wrote over a weekend to learn Java and LWJGL, and see how a managed runtime affected graphics performance. There was no story or premise: I wanted to see how quickly I could get a game running. I also had to relearn quaternions for the ship's controls and rotations.
Screenshots
Click to view
CoreBasic IDE for iPad
An iPad app for writing, debugging, and running CoreBasic programs. I built a syntax-highlighting editor and a debugger with step-through execution, variable inspection, and interactive program output.
Screenshots
Click to view
GLUI2
An OpenGL graphical user interface with dozens of controls to help with application development. Supported Windows, Linux, and macOS.
Screenshots
Click to view
Gameduino Demo Scene
A real-time graphics demo built in 2011 with an Arduino Uno and Gameduino: plasma, spirals, rotating cubes, and other effects rendered to a 400Ă—300 VGA display. The ATmega328 ran at 16 MHz with 2 KB of RAM; the compiled demo occupied about 26 KB.
2D Sidescroller with Live Level Editor
A 2D side-scroller I built in C++ and OpenGL, with an in-game level editor for changing the world while it runs. The work included bipedal animation with inverse kinematics, physics, collision detection, particle effects, audio, and a custom renderer.
Screenshots
Click to view
Competitive Programming Platform
A competitive programming website where people could solve algorithmic challenges and submit code in multiple languages. I built the site and automated judging system to run submissions against test cases.
Screenshots
Click to view
ACM Programming Competition Training
Led training sessions for Penn State's ACM Collegiate Programming Competition team. Taught algorithmic problem-solving, data structures, and competitive programming strategies through recorded lectures and hands-on practice.
Texture Synthesis Tool
A tool that builds a larger texture by stitching together patches from a source image. I compared overlapping pixels and used Dijkstra's algorithm to find low-error seams between patches, rather than blurring the edges and losing detail.
Screenshots
Click to view
Roller Coaster Simulator
I built a roller coaster in C++ and OpenGL to learn Catmull–Rom splines: turning a few control points into a smooth track and camera path. It was also a chance to try OpenGL lighting and materials, including a little reflection on the rails.
Screenshots
Click to view
Windows Phone Testing Robot
During a 2010 internship at Axelerate Solutions, I worked with Microsoft engineers on a robotic system that tested Windows Phones by physically mimicking human input. OpenCV planned the arm movement and extracted screen state so test plans could run autonomously.
Screenshots
Click to view
Penn State Robotics
Served as vice president and then president of the Penn State Robotics Club while leading autonomous-vehicle projects. We built table-top maze solvers and sidewalk-sized robots for campus navigation and the Intelligent Ground Vehicle Competition. My work covered path planning, Linux visualization tools, sensors, controls, documentation, and teaching.
Screenshots
Click to view
Battleship AI Research
Undergraduate research into an artificially intelligent Battleship player using genetic algorithms. Implemented and evaluated strategies against other approaches.
TI-89 Wireframe Renderer
A TI-89 wireframe renderer uploaded to ticalc.org in 2003. The original package includes rotating-cube demos, models, source code, a to-do list, and calculator binaries.