Write ups for some past projects

See my About page for contact links

Work Projects

Understanding Linux Pipes to Capture a Process's Last Words

For a work tool, I wanted to capture the last output from a process if it crashed. I ended up doing a deep dive into Linux data pipes to accomplish...

Optimizing Searching a File for a Binary Sequence in Python

I recently spent some time optimizing a deserialization tool at work. I wanted to walk through my process for optimizing this Python code.

Software Bug Hunt

Recently, at work, I was faced with one of the more satisfying bug hunts that I’ve had in awhile.

Using NixOS to Manage Hardware Testing Environments

This was a blog post I did for Swift Navigaiton. I appears it’s been lost to the sands of time, so I’m reproducing it here.

OKCompute Analysis Framework

As part of my work at Swift Navigation I’ve done a lot of work analyzing the results of test runs and building CI frameworks to generate metrics or raise alarms based on...

A GPS Spoofing Work Project

One of my work projects from awhile back popped up on Ars Technica.

Academic Projects

Testing Cross Compiling with QEMU

Having to frequently set up cross-compilers, I figured it would be interesting to write out my current understanding and see what gaps I have. I found it educational to set...

Playing Around With JTAG

While this wasn’t a particularly novel project, I spent some time trying to better familiarize myself with how the JTAG interface works.

Building a TIS100 Node for an FPGA

It’s been awhile since I used an FPGA toolchain, so I was looking for a good project to use as a refresher.

Side-channel Attacks Using the Chipwhisperer

I finally had a chance to dig into the chipwhisperer. It’s a learning tool to teach about hardware security vulnerabilities like Side-channel attacks.

Heart Monitoring

A project at the Karlsruhe Institute of Technology, in Germany, to use accelerometers to track heart motion to aid in robotic surgery.

Autonomous Drifting RC Car

As part of a project for the machine learning lab at Cornell, I did the hardware and some of the software to make a stock RC car autonomously drift though...

FPGA Localization of Robot from its Beeps

Final project for ECE 576 at Cornell, click here for the project write up

Persistence of Vision Clock

Final project for ECE 476 at Cornell, click here for the project write up

Sumo Robot

Final project for mechatronics. Ended up winning first prize in the sumo robot competition.

All Projects

Writing an Arduino library for Pixel Dice

I wrote a library for connecting Pixel dice to the ESP32 mcu and published it for Arduino and PlatformIO.

Custom Sound Board for Pixel Dice Using QPython

Well the Pixels Dice KickStarter I supported like 3 years ago finally came in. I wanted to do something fun with them before I played my next TTRPG session, so...

Adding Custom Songs to a Toy Guitar

A friend wanted to use a toy guitar as a prop for a halloween costume, and they asked if I could swap out the sound effects with playing some song...

CLI Murder Mystery

For old time’s sake, I decided to do a quick write up of the cute “educational” mystery game that tests your Bash knowledge https://github.com/veltman/clmystery. This is very reminiscent of the...

Toy Controller WiFi

A friend of mine gave me a baby toy to hack awhile back, and I finally got a chance to take a crack at it.

Running Syncthing on ancient QNAP NAS

Syncthing is a Dropbox alternative that I’ve wanted to try out. I decided to set it up to run on my decade old QNAP NAS.

Server Side Site Analytics

I’m removing Google Analytics from my blog, but I’d still like to see view counts. To do this I’m running my own analysis on the HTTP request logs provided by...


As an educational project I could do purely in software, I decided to make a toy OS for an AVR microcontroller from scratch.

Cat Door Sensor

I added a cat door to one of our windows to give our cat a bit more freedom to make up from our lack of attention due to the baby....

Understanding C Struct Binary Representation

While C structures seem very straightforward, there are some surprising behaviors if you need to get consistent binary representations across different processors and compilers.

Custom PCB Magic Card Game Life Tracker

I had my first circuit board printed. I made an extremely over engineered life total counter.

Controlling WLEDs with Scratch

Scratch is an online visual programming tool meant to introduce children to programming. I made an extension that allows the language to control LEDs through a WLED controller.

Haunted Doll Keyboard with VUSB

I added a USB cable to a doll which would be detected as a USB keyboard, and give a personality quiz through notepad. The user starts and responds to the...

Two Keys Wedding Gift Box

I made a decorated box that opens when a magnet key is placed on both sides.

Logging a Cheap Air Quality Monitor

With fire season approaching in California I wanted to get a air quality monitor to see how bad the air is over time. I thought I’d do another reverse engineering...

Adding Wifi to a Weather Station

I bought a cheap weather station with the intent of adding networked data logging. I ended up reverse engineering both the RF transmission, as well as the inter-chip communication at...

Setting Up GNURadio and Tracking Planes

I bought a cheap software defined radio (SDR), and tracked planes in realtime with ADS-B. This was a bit of a warmup for a bigger project I wanted to use...

Dashboard to See Dice Stats from Roll20

Unsurprisingly, I am a member of a DnD (Pathfinder actually) group. During the pandemic we switch to playing online with a service called Roll20. We would often joke about the...

Creating a Library for Google Nest API Monitoring

After the Roomba and Reolink, I thought Nest devices would be a snap. How wrong I was. Google made this much, much then it had any right to be.

Reolink Python API with checkmk

Who watches the watchmen? In this case I set up a check to monitor my security cameras.

Roomba Python API with checkmk

I wanted to know what my Roomba was up to without going through official channels.

Creating Home IT Monitoring with checkmk

My home has a lot of computers and other devices on the network. To the point where I decided to set up some monitoring infrastructure.

A Sun Following Chair for my Cat

I wanted to do a quickish project over my time off for the holidays. I had a recently broken a coffee grinder, and it inspired me to automate a chair...

Scraping a web journal with Selenium

Last year I kept a daily journal using the Journey android app. After falling off the wagon, I wanted to export my entries to a more durable format, so I...

Adding Video Call Effects with OpenCV

After seeing some co-workers use snapchat filters with Zoom, I was inspired to find a simple way to program custom effects that would work with video calls. I skipped out...

Experimenting with GCC Linker

I spent a little bit of time trying to expand my understanding of the GCC linker. I was a bit surprised the hoops I needed to jump through, but I...

Hacking Capture the Flags

I’ve been learning the basics of penetration testing and reverse engineering by doing capture the flag (CTF) puzzles.

Unity Cat Stopwatch Game

I wanted to make a very basic game to get a bit more experience with Unity, so I made a game base on how our cat stakes out her food...

Icosahedron Travel Globe

Well it’s been awhile since we’ve been able to travel, so to feel better I decided to make a memento to the big trip Maria and I went on last...

Lying Game with React and Websockets

With the current call for social isolation, online games have been a way to get some level of socialization. Since a lot of the people I want to play with...

Web Based Door Control Update

Another update to Web Based Door Control. Here I take the path of least resistance to add Google Assistant integration and uptime monitoring by integrating with Blynk, IFTTT, and UptimeRobot....

Added SSL to Blog

I finally decided to go through the hassle of setting this blog up with SSL. While normally this wouldn’t be too hard with https://letsencrypt.org/, since I’m using S3 bucket based...

x86 Boot Loading

In my previous careers, I’ve spent a decent amount of time involved with bringing up processors in embedded platforms. However, despite spending a decent amount of time working with bootloaders...

AWS IoT Setup

As a followup to NodeMCU Development, I decided to connect my project to the AWS IoT cloud to see what that entailed. Turns out, it’s a huge amount of headache...

NodeMCU Development

I’m starting another electronic art project, and decided to use the NodeMCU for the processor. It’s cheap, easy to setup, and has WiFi. However, when I previously used the board...

SQL Murder Mystery

Had some fun playing the SQL murder mystery game at https://mystery.knightlab.com/. Pretty fun way to refresh myself on SQL syntax. I figured I’d record my thought process playing through it....

Fog of War Game

I made a tactics game with a gimmick of espionage in the LibGDX Java framework. This is probably the most complete game I’ve put together.

Sushi Go Arena

I made a framework for testing AI’s made to play the card game “Sushi Go”. Source at https://github.com/axlan/sushi_go_ai . It included a GUI to allow a human to play against...

Laser Stars Revisited

During some time off, I decided to rewrite the laser_stars (http://www.robopenguins.com/laser-stars/) code using the ROS framework. During the original project I ended up creating a lot of the configuration /...

Laser Stars

This is a bit of a weird one. I’m not sure what drew me to this project, but I decided to do a project to use a laser to draw...

Site Moved to AWS / Jekyll

I decided I should probably move my site to a less fragile platform. I’ve been using Wordpress on 000webhost. 000webhost is fine for a free host, but about a year...

K40 Laser Cutter

Maria got me a k40 laser cutter for my birthday!

Spirit Island Boardgame Helper

Over the holidays my wife and I had some fun playing Spirit Island. The game describes itself as “The cooperative settler-destruction strategy game”. As a fun project to refresh my...

Visual Studio Code Multiline Find Extension

Visual Studio Code has been my text editor of choice for awhile. I enjoy that it’s a bit out of left field when it comes to the VIM vs Emacs...

Wreath Pixel Display

This idea was based on the concept of making a “Sound Catcher” pixel display. I’ve been wanting to make this for a long time, but only recently made the time...

New Scope

Quick demo of my new scope. I finally broke down and got one to help with an audio visualizer project I’m working on.

Version Control Game

I often get ideas to make games, but rarely have the time needed. I had an idea for a game mechanic based on version control, and thought it would be...

Web Based Door Control

After have locked myself out of my apartment one too many times, I decided that running to make a keyless entry system. I’ve been looking for a project to use a Raspberry...

Time Tagger App (Part 2)

After getting the most basic functionality working I realized I had hit a bit of a dead end. SQLJet was severely limited in how it could manipulate the data. I...

Time Tagger App (Part 1)

I’ve wanted to document my work from start to finish on a project for a while, so I decided to try a screen capture program. I’ve used a bunch of...

A* for 2D path finding

I wrote this almost a year ago, but never posted it since I didn’t get a chance to fully comment the code. Since I probably won’t get around to it...

Scraping Google Maps for Traffic Data

I have a daily commute that I drive down the US 101 highway. The length of the drive can vary immensely with traffic, and I’ve always been curious what the optimal departure...

Webcomic Viewer

This was another app made to add a specific function I couldn’t find elsewhere. This apps purpose is to view the title text associated with an image. Specifically for webcomics...

Plant Pal

Google Play Link My first published android app. I decided to take a problem that I couldn’t find an existent app for and make a solution myself.

GPS Spoofer

This was an app that I didn’t publish. It used the developer interface to control the phones apparent GPS location over the network. This was just a proof of concept,...