Currently, I enjoy working with Laravel and AngularJS, but I'm always down to learn new tech.

Languages PHP, JavaScript, HTML, CSS (SCSS, LESS), Python, Ruby
Databases Elasticsearch, Apache Solr, Redis, SQL (MySQL, PostgreSQL)
Frameworks Laravel, AngularJS, Node.js, Django, Backbone.js, CodeIgniter, Klein.php
Libraries Symphony, jQuery, OpenSeadragon, D3.js, Isotope, HighCharts, et al.
CMS WordPress, Drupal, CouchCMS
Tools Vagrant, Git, npm, grunt, bower
Misc. Linux, AWS, Google Analytics, Piwik, ArcGIS, Adobe CC (Photoshop, Illustrator, InDesign, Dreamweaver)


Unless otherwise noted, for all items listed below, I handled back-end and front-end programming, deployment, and design.

AIC Data Hub · 2017 – Current

Major microservice-driven project to provide normalized data from multiple systems via a unified API. Uses AWS, Laravel, Symphony, Redis, and Elasticsearch. Team effort.

EMA Collection Highlights · 2016 – 2017

Major digitization project in honor of EMA's 75th anniversary. Utilizes klein.php and PHP Active Record. Collaborated with a designer in the early stages of this project.

Colors of Classical Art · 2014 - 2015

Special exhibition at EMA. Fully responsive. Optimized to work offline on an iPad in the galleries. Uses CouchCMS.

TAPA @ EMA · Spring 2013

Online exhibition. Relies on OpenSeadragon. These tapa cloths are large and intricately patterned - perfect for DeepZoom technology. Used cache.manifest to run the website on an iPad in the gallery, due to poor WiFi availability.

Arts of Kenya · 2016

Gallery interactive for an EMA exhibit. Parsed Microsoft Word documents into clean data using jQuery. Built for iPad.

Bicentennial Map · Spring 2016

Gallery interactive for an IMA exhibit. Uses GA and Piwik for event tracking. Collaborated with designers and contributed to the user testing process. Built for a 72" touchscreen table.

Crazy Quilt · 2017

Gallery interactive for an IMA exhibit. Uses OpenSeadragon to navigate through points of interest in the quilt. Collaborated with a designer.

CSI: What Lies Beneath · 2017

Gallery interactive for an IMA exhibit. Uses fullPage and OpenSeadragon for image comparison. Collaborated with a designer.

Library CD Search · Oct 2013

Search for CDs from similar artists. Made during the downtimes of my shifts at the Collins LLC Library. Scraped data from IUCAT via RSS. Processed with LastFM API and MusicBrainz API. Practice with AngularJS.


I've been programming since 2001, and doing web dev since about 2004. Many of the projects I've contributed to have since succumbed to digital rot, or no longer represent my skill set. Of the rest, the following deserve mention:

  • Gauguin: Artist as Alchemist (source) – 2017 – Microsite to promote a major exhibition at the AIC. Uses Jigsaw.
  • Roundware – 2017 – Practice with Python and Django. Helped refine the API. Made an admin panel in AngularJS.
  • OSCI Toolkit – Winter 2015-16 – Online publishing project funded by a grant from the Getty Foundation. Fixed security issues in Drupal backend. Spearheaded font-end development of four new themes: Fuchsia, Red, Simple, and Simple Horizontal.
  • Zooarch Lab – Fall 2013 – Made during a post-fieldschool internship at the William R. Adams Zooarchaeology Laboratory. Uses CouchCMS and Google Sheets API to facilitate content editing by other lab members.