I’m a full stack web developer. My frontend tools are Javascript, CSS (Sass/Less), and HTML. On the backend, I use Go and Ruby.

I work with Williams Sound, where I work on everything from the company website to embedded dashboards for hardware products.

Tools I use

Recent Projects

T45NET

Embedded hardware dashboard and mobile apps

T45 NET The T45NET is a network controlled assistive listening transmitter. It takes an external audio source and transmits it over FM to a receiver (usually a portable device carried by the users). It has an internal web dashboard that can be used to configure and monitor the device. The dashboard communicates with the device via a JSON API.

I built the mobile apps for Android and iOS, and a dashboard that is embedded on the device itself. The dashboard is written in HTML/CSS/JS. Due to the severe space limitations of the device, I couldn’t use much in the way of frameworks, and the JavaScript and CSS was almost entirely home rolled. The mobile apps are hybrid apps written in PhoneGap, and share much of their code with the dashboard.

I also built a standalone dashboard (with its own Ruby server) that used the same APIs that the mobile apps used, to allow a large number of users to interact with a single T45NET device (without overloading the device), and to allow a single user to manage multiple T45NET devices from one dashboard.

  • JavaScript
  • Ruby
  • PhoneGap

Hearing Hotspot Monitor

Application and Stats UI

Hearing Hotspot Monitor A standalone Go application that runs on the Hearing Hotspot server and provides a stats interface (written in TypeScript and Angular) that the customer can use to view usage information for the device. It provides a real-time view of the number of connected users, with historical graphs and breakdowns by time range and platform.

  • Go
  • Angular
  • TypeScript
  • Sass
  • MySQL
  • Responsive

Hearing Hotspot

Responsive website and dashboard

hearinghotspot.com The Hearing Hotspot is a device that multicasts live audio over wi-fi. It’s used by conferences, gyms, bars, airports — any place where someone is showing video and wants people to be able to listen to the audio from their own mobile devices. Users run an app on their iOS or Android devices, and a server can broadcast live audio (from a source like TV, radio, etc.) to thousands of clients at once. This is possible because it uses multicast networking, which is much more efficient than a traditional model where the server is maintaining individual connections to each client and sending them data separately.

I built the product website, and worked on the admin dashboard customers use to manage their hearing hotspot devices. The dashboard allows customers to edit the labels for their audio channels, and edit the information that appears in the mobile apps on user devices (company information, background images, ads, links, etc.). The dashboard is hosted centrally by Williams Sound, and the hearing hotspot devices pull down the configurations on the fly via an HTTP API.

  • JavaScript
  • CSS3
  • Responsive

WilliamsSound.com

Corporate website, product catalog and shopping

williamssound.com The corporate website for Williams Sound has a responsive design that works equally well on desktop or mobile devices, with styles written in Less. The site is always changing, and working on it means collaborating with the design and marketing departments to create and update pages for products and other content. I also worked heavily with a localization firm to translate the site in two other languages. The site also has a backend to manage products, sales territories, and downloadable assets.

  • JavaScript
  • jQuery
  • CSS3/Less
  • Responsive

Open Source Projects

Trimetric

Realtime stop and vehicle information for Trimet transit.

Rong

The game of Pong, made in React.

Homebase

A Go tool for updating Digital Ocean DNS records.

LogMonitor

Monitor log files in real-time via your browser.

Pressure

A Ruby gem for broadcasting upstream data over websockets.

SimpleScore

Add a scoreboard to your HTML5 game.

Deathbot 5000

A project to learn more about collision detection and raycasting.

Ludum Dare 31 & 32

Two games made in 48 hours using JavaScript and the Phaser framework.