Commercial Projects

I currently work on a contract basis using a broad skill set of full-stack software development, electronics, and fabrication to develop unique and engaging experiences, exhibits, tools, and interfaces both physically and on the web.

Commonly-used Technologies and Skills

Languages: Python, C/C++, Javascript, PHP
Environments: Processing, OpenFrameworks, PureData, Max/MSP
Web platforms and libraries: Node-JS, Meteor, WebGL, Paper
Databases: MongoDB, PostgreSQL, Redis
Hardware: Electronics design, Atmel microcontrollers, Arduino, Raspberry Pi

Selected Projects

Warhol Amiga
with Iontank for the Andy Warhol Museum

A modified vintage Amiga computer system with an attached camera allowing visitors to make a pop-art styled self-portrait, upload it to the internet, and get a copy via email.

* Wrote software in OpenFrameworks to to emulate Amiga operating system and Graphicraft drawing program
* Wrote custom C++ UI widget library to match Amiga’s look and feel
* System modified to run on Raspberry Pi hidden inside Amiga shell
* Images uploaded to server via python script
* Web server running meteor displays images to visitors

Fiberoptic Tapestries
for Ligorano+Reese

A series of data-driven electronic tapestries made of woven fiber optics and illuminated by LEDs.

* The project IAMI renders a portrait of the user based on personal data collected over weeks. Data from a fitbit fitness tracker and results from random daily “mood questionnaires” sent to the user’s phone are collected in a database. A web app allows the user to control the tapestry and start new portraits, archive data, etc.
* Other projects visualize air traffic information, global disasters, and ambient sound in real-time on the fiber-optic displays.
* Low-level graphics library and visualization routines written in Python

Warhol Film/Video/TV Archive
with Iontank for the Andy Warhol Museum

Interactive touchscreen archive for Andy Warhol’s Film, Video, and TV works. Museum visitors can browse archives, watch videos, and get detailed information.

* Client app written in javascript and distributed by nodejs server
* MongoDB instance to store metadata for assets
* Each client kiosk has a copy of the multi-gigabyte archive and serves the content locally via a lighttpd server to avoid unnecessary network traffic
* nodejs/express stack runs an admin console for curators to update archives

Our Nuclear World
Iontank for Arizona Power Service

Interactive touchscreen kiosk displaying nuclear power generation sites around the world. Visitors can explore output statistics, plant photos, and construction timeline infographics.

* Client is a javascript web app served by nodejs/express
* MongoDB stores nuclear site information
* PaperJS used for 2D infographics
* WebGL used for graphics acceleration on spinning globe animation

Quiz Show
with Iontank for Novartis

A quiz show about pet pharmaceuticals for a veterinary trade show required building a client-server architecture able to support real-time, millisecond-accurate data synchronization across 20+ iPads, large plasma displays, and the host’s control screen.

* Constructed with the Meteor web framework
* MongoDB back end

Additional End Clients include Hyundai, Kia, Oreo, IGT Gaming, and Questcor