Software engineer specializing in Python, with experience
writing production code for complex robot systems in Python,
Java, JavaScript, and C++. Comfortable taking on new
responsibilities as needed and excited to learn new skills
and techniques. Proficient at the command line in Linux.
Portfolio
I Know True Is This Much
Python is my strongest language, but it's underrepresented on my github because most of what I've done has been for employers. This is a set of tests in Python that illustrate interesting situations, edge cases, and behaviors that I've encountered. Forks and pull requests welcome.
I was making a WordPress site for a friend and wanted a quick way to deploy the work in progress to a DigitalOcean droplet. This ansible playbook takes a mysqldump and .tgz of a wp-content directory and recreates the site on a fresh Ubuntu 14.x install in one step.
MandelBuddy is a short program I wrote in JavaScript to help me understand fractals. It draws the Mandelbrot set on a designated canvas, coloring the pixels based on how many steps it takes to determine if they are in the set.
My fiancee wanted an interactive way to demonstrate the value her art restoration business delivers to customers. I made this JavaScript widget to show detailed before and after views of the artworks. Use the slider in the middle of the image to swipe between the before and after images. See examples at the Allied Conservation website.
I made this persistence of vision display using the Programmable Realtime Units in a BeagleBone Black embedded Linux computer. I finished it just in time for a New Years' Eve party, and the experience taught me a lot about designing electronics and programming in assembly. There are definitely more hardware projects in my future.
I wrote a JavaScript version of Conway's Game of Life as a way to learn about cellular automata. The original version was written using SVG for the board, but I found that SVG rendered too slowly for large boards so I switched to using a Canvas element.
To run the game, click on individual squares to toggle them between the black and white states, then click "Play." The game stops when the cursor is over the board and restarts when it leaves. The slider controls the time between steps. My favorite pattern to start with is the one in the image above.