Projects and Portfolio

Since getting my Computer Science degree in 2004, I’ve primarily been doing .NET web development and single page apps at my day job, but I’ve been exploring other languages and environments in my own time. My personal projects use browser-based JavaScript, node.js, and I've been looking into Elixir with interest.

Here are some cherry-picked examples of projects I’ve worked on in the past that you might find interesting. If you’re more of a code person, my personal projects are all on GitHub. You can find a formal résumé and other details at my LinkedIn account page.

Modular Property Management Software for HomeAway

At HomeAway Software we develop for and support several similar, but separate software systems for property managers. Instead of building significant new features in each of the systems separately, some are built once as “modules” and loaded into each system. This saves initial development time, increases consistency, and introduces some interesting design problems.

In order to remove the need to update both end systems and modules at the same time, each end system’s Dragoman service is versioned and modules communicate via a re-useable client which can translate messages between major versions.

In addition to designing the original application structure, I’ve also worked on several modules as part of the modular team:

  • LMS helps property management companies track inquiries about their properties with realtime availability, templated messaging, and reporting.
  • RezGrid visualizes unit availability with customizable unit and reservation information, searches units with advanced filters, books new reservations, and displays unit and reservation details.
  • Business Dashboard shows both up-to-the-minute and historical data that helps property managers run their business and plan future growth.
  • Automated Payments displays, notifies about, and collects upcoming and overdue payments for confirmed reservations. A companion guest-facing site also allows for travelers to solve payment issues without involving property management staff.

Technologies

  • Knockout
  • Moment.js
  • SVG
  • .NET Web API
  • Entity Framework

My Favorite Parts

  • Working with a motivated and talented development team
  • Knockout has been a lot of fun to work with and has been able to handle all we’ve wanted to do with it
  • Building a backwards-compatible API translation layer was challenging, but worthwhile

B-Cycle Admin Site & Infrastructure

B-Cycle was in a prototypical phase when we started working with them to build what would be the first production version of their automated bicycle sharing system. This project was technically interesting because it required multiple physically and logically separated systems to act in concert to provide a responsive end-user experience and an information rich administration system.

Bikes are rented and returned to kiosks by users with either a credit card or an RFID card that had been previously purchased. Kiosks contact a central server to confirm the user account, manage payment details, and track the rented equipment. The central server bridged the distributed kiosks and the administration website, which aggregated user, equipment, and system level data. By tracking the RFID tag for each bike, usage patterns and equipment location was used to coordinated maintenance and customer service efforts.

The administration website included some unique features that made the system powerful:

  • Google Maps-based dashboard for geographic visualizations of near real-time data
  • Configurable and templated messaging/alert system through email or SMS with localized messages
  • Custom ticketing system based on user reports and maintenance schedules
  • Remote hardware monitoring and control systems
  • A public web service for supporting first- and third-party mobile applications

My Role

As the primary developer and architect of the central server application and administration web site I evaluated the high-level and detailed business requirements for technical feasibility, created a development plan that identified potential risks, provided plans to mitigate them, and used continuous integration to show our progress throughout the project.

Technologies

  • ASP.NET WebForms
  • WCF for web services
  • NHibernate & Fluent NHibernate
  • Autofac
  • CruiseControl.NET
  • jQuery
  • Google Maps API

My Favorite Parts

  • A feel-good goal for the product: more biking, less driving, and better city living
  • The development team cared about the success and well-being of the project and had many productive discussions about both the software and business
  • I’m often reminded of this project when passing a B-Cycle or kiosk

Can You Read It Now?

Can You Read It Now (or CYRIN) is a two-part project: an open-source jQuery plug-in for analyzing the visual readability of text and a bookmarklet to help users make specific style changes to improve readability. I wrote it to help me learn about typography, readability, and bookmarklets.

Technologies

  • jQuery
  • Jasmine for testing the core analysis library
  • Node.js & MongoDB for the bookmarklet hosting site as well as accepting and responding to feedback

My Favorite Parts

  • It’s a strange kind of fun evaluating specific pages for readability
  • This was one of my first attempts at a non-trivial JavaScript codebase for both client and server
  • I made the design for the CYRIN homepage and I don’t hate it