Full stack web developer with a focus on mobile, accessibility, and creative coding
AI model for computer vision and music composition
Built a custom YOLO5 AI model to detect objects in video frames and use the results to compose music. Winner of the Seeed Studio Vision challenge.
C++
MQTT
Roboflow
Python
AI utility to add WCAG compliance for Cloudinary hosted images
This AI based utility adds brief visual descriptions to the metadata for images hosted on the Cloudinary platform. It's important for use on websites that want accessibility compliance. This tool streamlines a process that used to take weeks with specialized staff.
Node
APIs
LLM
Advanced advertising and tracking features for Berliner Zeitung
Developed advanced advertising and tracking features for a complex Next.js codebase to support the Berliner Zeitung's monetization strategy. Co-ordination with multiple third-party vendors for custom React solutions.
React
Next.js
Typescript
Node.js
React Native codebase refactor for Berliner Zeitung mobile app
Refactored and modernized the React Native codebase used in the iOS and Android mobile applications for Berliner Zeitung. Improved code maintainability, performance, and developer experience while ensuring backward compatibility.
React Native
Typescript
Node.js
Xcode
Android Studio
vid2midi: open source tool to sonify video files
When soundtracking videos in a Digital Audio Workstation such as Reaper, Ableton, or Reason, it is useful to have a timing track that corresponds to the video to match the timing of scene changes. As a creative tool it is the reverse of visualizing audio. Instead of generating audio reactive animation, this allows for creating a video first, without a soundtrack. Then you can make music or sounds that match the tempo and feel of the visuals.
Python
Dynamic directory of Berlin art galleries
Berlin has over 300 active art galleries and pop-up projects. Keeping track of them all can be overwhelming. This web application scrapes the gallery websites on a regular basis to provide current screenshots of the homepages. I built berlinartgalleries.de as a way of checking the emphasis and vibe of the different spaces.
Puppeteer
Node.js
Google Places API
JavaScript
React Native mobile app development for Deed
Frontend development for the Deed mobile app using React Native. Specialized in accessibility improvements, ensuring that applications met WCAG standards and provided excellent user experiences for all users.
React Native
Typescript
Node.js
Xcode
Android Studio
MongoDB
Mobile app for Charleston Wine+Food
Bespoke event app for the annual event. Widely compatible and highly engaging.
Foundation
Javascript
APIs
AI-powered art review generator
This site serves a LLM from a Flask web application to generate reviews based on natural language prompts. It makes use of 1000s of reviews from 50 years of Artforum Magazine. Art Review Generator also uses a novel queuing system to avoid overloading server resources. The overall project makes use of a wide range of machine learning techniques, including tuning GPT-2 language models and Tensorflow generation.
Python
Tensorflow
Flask
RabbitMQ
MySQL
Code refactor for Chegg
In the middle of a large code migration from PHP to React, Chegg called me in to help with their Math Solver (now Mathway) product. It was a high traffic destination with multiple levels of login states. Each state had different behaviors and constraints beyond presentation changes. Special attention was given to accessibility. In addition to converting Twig templates to React components with JSX, new functionality was added along with Jest unit tests.
React
Next.js
Typescript
Node.js
PHP
Accessible navigation and web development for Oath
As part of a major branding effort and integration of company wide accessibility initiatives, Oath (now Verizon Media Group Yahoo!) commissioned me to rebuild the navigation and significant sections of the website. The navigation works with screen readers and assistive controls on both mobile and desktop, using a single codebase. As a global brand, the site required legacy compatibility with older browsers as well as modern mobile and tablet contexts. Localization and marketing tracking were also high priorities.
React
Next.js
Typescript
Node.js
PHP
Twig
IoT steam engine with its own API
I used Runscope and Thingsboard to prototype an IoT API for a working steam engine. With experience in API production and consumption, I wanted it to be a relevant POC for devs trying to integrate the physical world with the virtual. One of the challenges I wanted to take on is how to differentiate a hardware failure versus an API failure and then pass that response on for debugging by a dev down the line. The base IoT capability of the devices is to send MQTT messages to an external broker. Thingboard.io digests MQTT and offers distinct REST API endpoints for each device, as well as an administrative API that offers historical data queries.
C++
MQTT
Thingsboard
Runscope
Embers: a breath powered interactive installation celebrating collaboration
Originally prototyped at the Gray Area Art Foundation Creative Code Immersive, Embers is an interactive installation built from 1250 LEDs that react to collaborative wind movement such as breath. The core of the piece is an Arduino Mega 2560, followed by 25 strands of 50-count WS2811 LEDs, 16 improved Modern Device wind sensors (Rev. P), and 300 ft. of calligraphy grade rice paper. It was debuted at the SubZERO art festival and displayed at Kaleid gallery.
C++
Lead development for redesign of Blackbaud Interactive
The interactive division of Blackbaud, Inc. was looking for a distinctive and modern way to showcase their extensive custom design work. The challenge was to offer unique, yet responsive, layouts for each case study. Also, the information and bio pages had their own designs and interactivity needs. I used Bootstrap to build a custom Wordpress theme and tailored the CMS to offer custom content types and fields for future entry without additional development. The project entailed extensive device testing, javascript, and PHP.
PHP
Javascript
Wordpress
Bootstrap
UX/UI development and API integration for DreamFactory Software
After an interim redesign, DreamFactory needed a wide variety of site and platform enhancements. From simple network visualization to 42 A/B tested landing pages, I provided a wide spectrum of frontend services, including Javascript refactoring, responsive design elements, form processing, and tasteful CSS and Javascript animation. Using PHP, I modernized a legacy platform authentication flow with their changing API plaftorm needs.
Drupal
Google Ad Manager
Hubspot
PHP
Spoleto Festival mobile app
The Charleston City Paper provides comprehensive coverage of the annual Spoleto Festival USA over the course of three weeks. To better serve the many out of town visitors using mobile devices, I planned, designed, and coded this fully featured HTML5 app. In addition to editorial content and complete event calendar, it offered geolocation based suggestions for dining near events. It was compatible with a broad range of devices and automatically updated with fresh content.
PHP
Foundation
Javascript
GPS enabled web app for tracking wolves
To follow a public art performance of animated wolves projected in neighborhoods, viewers used this GPS powered app. It was made with Python, Javascript, PHP, and MySQL. Wolf Tracker also uses OpenLayers to display a custom map with bespoke KML overlays. It was designed to be platform independent and function on a wide variety of mobile devices. The client and server components were built from scratch.
Javascript
Mapbox GL JS
PHP
MySQL
OpenLayers
AAN Web Conference event app
Dynamic and effective mobile app for the annual tech conference in San Francisco. Offered easy updating with a simple backend for organizers.