I've used LEGO Mindstorms to create my own machines, including one that works out the combination for a padlock by trial and error, and a recreation of the PHaNTOM haptic device that I got a chance to try during a visit to MIT years ago. In addition to building and prototyping with LEGO, I have 3D printed my own supplemental LEGO parts, and modeled my builds in LEGO CAD.



I set up a continuous display of soil moisture in my kitchen to alert me to water plants, and to test the efficacy of using rope as a system of self-watering through capillary action. I consulted on the design and implementation of an undergraduate project for environmental monitoring using Arduinos as well, along with incorporating one into my academic work in order to operate an automatic chocolate dispenser! I have played around with sound sensors, data logging, servos, and various displays. I have also used the Arduino to connect a mouse and keyboard to the PS3 in order to have better control in a game, and as a means of decoding information from magnetic strips and infrared devices. One of the more complicated things I made was a remote locking mechanism for my front door, using the Yun module and 3D printed mounts. I later upgraded this to use a Raspberry Pi.


Raspberry Pi

I currently have OctoPi working as a print server for my 3D printer, use another Pi as a backup/test server for an ongoing project involving Eterna, one that I'm using as a camera/remote access platform, and one to use with other projects. I upgraded my door lock from Arduino to Raspberry Pi in order to add buttons and a peephole camera as well.



I'm still learning how to best use this little wonder. I got a few in order to try out adding wireless capabilities to the Arduino, only to learn that they're quite capable on their own. I have one that works as a tiny weather station, and another that I built as a remote control for my front door lock.



As a backer of the CHIP, I got two of them, and one PocketCHIP. The availability of the GPIO ports along with a battery, screen, and keyboard was very appealing, but I found the system slightly lacking in functionality. I added a hardware mouse by incorporating a small multidirectional button and writing code to translate the motion into mouse movements. I also worked to put a full GUI desktop on the system and to find a way around the screen resolution limits by using VNC to replicate a larger display. Other than the mouse, my biggest contribution to the PocketCHIP was the design and creation of a physical overlay for the keyboard, printable within the limited area of my small 3D printer. The plans for this project were made available on Github.


3D Printing

I've done quite a bit with my 3D printer. I scanned and made 3D copies of people and objects, keychains and fidget toys, and useful tools. I have made replacement parts for furniture (shelf pegs and drawer sliders), board games (stands for Arkham Horror), and house keys. Beyond simply printing objects, I have also made molds from the plastic in order to cast objects in metal (most notably a ring with Wolverine claws), and I printed molds directly with which I cast replacement rubber feet for a kitchen appliance.


My biggest JavaScript project to date was for my dissertation. I created an online experiment that required a game to play with, so I make one. See for more on that. In addition, I've done some minor things here and there, including writing a very useful bit of code for our school's LMS, Canvas. The previous system had a way to show the faces of all the students in a class on a grid, but this function is absent in Canvas, so I wrote a bookmarklet to generate such a page. The code for this was posted to the Canvas development forum, as others have asked for similar functionality.


I have used AutoCAD, TinkerCAD, Sketchup, Inventor and Revitt, among others, to both recreate objects and to design them. When my family moved into a new house some years ago, I took the blueprints and modeled the entire house on the computer in order to assist visualizing how it would look, and made a number of changes and edits that were then incorporated into the plans before the house was constructed.

Other Projects:

While I did not originate these projects, I do have a habit of taking part in their implentation, and working to expand the capabilities of devices. I supported the development of the Afterburner, a front-light solution to brightening the Game Boy Advance, and installed one into my own. I used the GBA movie player to bring videos and homebrew games to the Game Boy Advance, and the PassMe to open up the DS to install Linux and use the game system as a wireless internet radio, VNC console, and more. I did the same for the original Wii and XBox. Before those, I followed the progress of adding assembler programs to the TI-85, and did quite of bit of TI programming on TI-85 and TI-89.

Misc Programming:

Years ago I got into creating multiplayer text-based games, mostly in MUSH form, and I wrote the engine for such a game in LISP as a project in graduate school.

As part of work to restore photocopied books for my undergraduate school, I wrote code to split and rotate pages from scans, cleaned up the text and used OCR where possible, then made them available online behind a password-protected wall for students. I built the website for this resource as well, and used Flash to animate the interface and logo.