Projects

A collection of my work in graphics, systems, robotics, games, and electronics, including independent projects and earlier experiments.

Shared spatial 3D model review for visionOS

I built a shared CAD and 3D-model review prototype for visionOS using Swift and RealityKit. The work covered model hierarchies, synchronizing transforms, networking for local and remote participants, and multithreading to meet frame-rate targets. It grew from a prototype into a shipping feature.

visionOS RealityKit Swift 3D Model Parsing Real-Time Multithreading Networking Collaboration

Screenshots

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.

Robotics Sensors Algorithms Arduino

Screenshots

Robot Mechanism
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.

C++ Emulation CPU Architecture Debugging Tools

Screenshots

Emulation Tools 1
Click to view
Emulation Tools 2
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.

D&D 5e Adventure Writing Worldbuilding

PDFs & Map

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!

Algorithm Design Game AI Board Game Simulation UI Development

Screenshots

Game View 1
Click to view
Game View 2
Click to view
Game View 3
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.

Web Game Multiplayer Card Game

Screenshots

Game Board
Click to view
Story 1
Click to view
Story 2
Click to view
Game Rules
Click to view
Board
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.

PCB Design LEDs Wearable Tech Wireless

Screenshots

Top Hat Front
Click to view
Top Hat Back
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.

TTL Logic 8-bit Architecture Hardware Design Assembly

Screenshots

Hardware Description Language
Click to view
KiCad Design
Click to view
Simulation Graph
Click to view
Initial PCB Print
Click to view
PCB Memory Tester
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.

Computer Vision Apple Vision OCR macOS

Screenshots

Card Capture Setup
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.

BASIC Restoration

Screenshots

Restoration 1
Click to view
Restoration 2
Click to view
Restoration 3
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.

ChatGPT API Computer Vision Game AI Emulation

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.

C++ Networking

Screenshots

QuadGame Strategy
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.

C Embedded Systems Performance

Screenshots

Ardunix
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.

C++ Networking Physics Lag Compensation

Screenshots

Sample Screenshot
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.

C++ Text Rendering Performance

Screenshots

Sample Screenshot
Click to view

Wordle Solver

A simple Wordle solver with a GUI that runs on macOS.

Algorithm Game Strategy Objective-C

Screenshots

Wordle Solver in action
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.

Language Design JIT Compilation ARM64 Native Code Gen C++

Screenshots

BASIC-like test program
Click to view
Generated instruction bytes
Click to view
ARM64 disassembly
Click to view
Fibonacci test program
Click to view

ECS Rogue

An experimental roguelike I built to explore entity component system (ECS) architecture, with physics, Metal rendering, and scripted agents.

Algorithm Design Game Strategy Metal Objective-C

Screenshots

Screenshot
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.

C++ SIMD Multi-threading Ray Tracing

Screenshots

Sample Image
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.

Algorithm Design SVG Generation D&D 5e Procedural Generation

Screenshots

Sample Dungeon 1
Click to view
Sample Dungeon 2
Click to view
Sample Dungeon 3
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.

CAD Design Laser Cutting Woodworking Pet Toy Design

Screenshots

Dog Toy - Disassembled
Click to view
Dog Toy - In Assembly
Click to view
Dog Toy - Finalized
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.

PDFKit WWDC 2017 CoreGraphics QuartzCore Apple

Presentation

WWDC 2017 PDFKit presentation thumbnail

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.

Image Processing Color Quantization Optimization LEGO

Screenshots

LEGO Build
Click to view
Bill of Materials
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...

Robotics Sensors Arduino Raspberry Pi

Screenshots

Initial PCB
Click to view
Complete PCB
Click to view
Controller Software
Click to view
Single Stage to Orbit Beer
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.

OpenCV Automation Computer Vision

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.

Electronics

Screenshots

Original NeoGeo
Click to view
Before Repair
Click to view
After Repair
Click to view

SimpleMalloc

A memory allocator I wrote over a weekend, for fun and to explore memory management.

C Memory Management Performance Systems Programming

OpenGL Deferred Renderer

A simple exploration of real-time deferred rendering, implemented in OpenGL.

Graphics OpenGL

Snake-on-a-shader

Implemented the classic "Snake" game, but through a standalone shader.

OpenGL Shaders

Screenshots

Shadertoy
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.

Arduino LED Matrix Embedded Systems Animation

Screenshots

LED Matrix Display
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.

SNES Retro-Bright Repair Restoration

Before & After

Before 1
Click to view
Before 2
Click to view
After 1
Click to view
After 2
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.

Neural Networks Reinforcement Learning Game AI Python

Machi Koro simulation

Implemented the famous card game in code, allowing various "AI" agents to compete to try and find optimal strategies.

Card Game Optimization

Rotating Cross Optical Illusion

Implemented an optical illusion in a stand-alone shader.

OpenGL Shaders

Screenshots

Shadertoy
Click to view

RED FANG - No Air

Implemented a visual effect seen in a music video, through a standalone shader.

OpenGL Shaders

Screenshots

Shadertoy
Click to view

LCD Display Switcher

A toy hardware project to show how to directly manage an LCD's control pins.

Hardware Control LCD Switches

Screenshots

LCD Controller Front
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.

2013JavaScriptVerlet IntegrationThree.js
Original Verlet cloth simulation

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.

2013 Python Reddit API Community Automation

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.

2013 macOS Objective-C Accessibility API

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#.

Unity C# RTS Game AI Four-Week Build Team Lead

Screenshots

Collage of Nova Legacy gameplay, menus, ships, and combat

oDataiOS

An ARC-era Objective-C OData client with futures/promises, NSOperationQueue-based work, and blocking and non-blocking APIs. Published as open source.

2013 Objective-C OData Concurrency 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!

2012JavaScriptHTML5 Canvas

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.

Education 2012 JavaScript Software Rendering Self-Published

Screenshots

JavaScript software renderer
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.

OpenGL C++ Voxel Rendering Game Simulation

Screenshots

RhĂ´nes Colony Simulation
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.

Java LWJGL 3D Graphics Shaders OBJ Parser

Screenshots

Flight Simulation
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.

iOS iPad IDE Development Debugger Code Editor

Screenshots

CoreBasic IDE on iPad
Click to view

GLUI2

An OpenGL graphical user interface with dozens of controls to help with application development. Supported Windows, Linux, and macOS.

C++ OpenGL DirectX

Screenshots

Screenshot
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.

2011ArduinoAVRReal-Time Graphics

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.

C++ OpenGL Physics Simulation Animation Level Editor

Screenshots

2D Sidescroller
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.

Web Development Code Execution Algorithms Database Authentication

Screenshots

Programming Platform
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.

Algorithms Teaching Competitive Programming Mentorship

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.

Image Processing Procedural Generation Computer Graphics C++

Screenshots

Texture Synthesis
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.

C++ OpenGL Catmull–Rom Splines 3D Graphics

Screenshots

Roller Coaster Simulation
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.

Robotics OpenCV Computer Vision Test Automation QA Axelerate Solutions

Screenshots

Testing Robot
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.

Robotics Navigation Path Planning Maze Solving 2007–2010

Screenshots

Penn State Robot
Click to view

Battleship AI Research

Undergraduate research into an artificially intelligent Battleship player using genetic algorithms. Implemented and evaluated strategies against other approaches.

2009Genetic AlgorithmsGame AIResearch

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.

2003 TI-89 C 3D Graphics Early Work