lifetracker screenshot 1
lifetracker screenshot 2
lifetracker screenshot 3

I was looking for a simple tool to keep track of some basic recurring information, e.g. how much do I sleep, how much time am I spending on classwork, etc. I couldn't find anything I liked, so I built an Android application. Basic functionality is done and I'm adding features as I have time. If you want to try it out, you can get the most current apk here.

Asheville Crime Mapper

avl crime screenshot

I used some of Asheville's open city data to map crime information for the area. Data is pulled from the city data web service, and stored locally to a mondgodb instance. It's then displayed interactively using lefalet.js/heatmap.js.

NCDC Normals Access

normals screenshot

One of our scientists wanted an easy way to access Normals data, so I worked up this visualization which ended up being very popular. Users can view normals station data for several time periods, and links are provided to more detailed reports. It's running on top of the CDO web service, and uses jQuery promises and deferred objects to manage multiple asynchronous requests. (Now defunct).

NCDC Historical Observational Metadata Repository (HOMR) / HOMR API

homr screenshot

This is NCDC's station metadata access system, for which I am the sole developer. It's a standard Spring MVC application using iBatis mappings into an Oracle database to serve a RESTful web service. The metadata search and visualizations are built on this service, and are presented as a single-page app. On the locations tab I implemented a new system for displaying station locations where we don't have precise coordinates, showing areas instead of points for these types of stations. rGraph is used for the Gantt chart on the MSHR tab.

Friendly Library

friend lib screenshot

FrindlyLib (or whatever it's called now) let's people create a catalog of their book, movies, and other physical media, and keep track of them when they're loaned out. Users can also search among their friends for items they want to borrow. I've used this project to learn a few technologies, so it's kind of a mess and never finished.

Asheville Transit Mobile

avl transit screenshot

I did a mobile-first redesign of the Asheville Transit website, including an interactive route map, for a class I took. It uses some Groovy scripts to assemble the route files into kml format. Tag Stats

last fm screenshot

I originally wrote this as a Python desktop app, but migrated it to Grails, and then Angular/Node. It gathers tag info for a user's top artists and displays some trend stats. I use D3 and some D3 plugins to generate the visualizations. Because the API is limited to one request per second, I also build a local cache of artist tag information when the service is used. This data is stored in a MongoDB instance.

Mission Hospital Touch Kiosk

mission screenshot

Designed and built an interface for a touchscreen kiosk at Mission Hospital. Includes some Python to make a JSON file from a database dump of donor info, a Bootstrap layout, some jQuery transitions and interactions, and some parallax effect on the timeline. Not public until it's released.

Coursera Hangman

hangman screenshot

I did a little hangman app for an interview at Coursera. It started as a Grails app, but ended up just using JavaScript for everything. I used RaphaelJS for the graphics, and had to interact with their JSONP web service. Not public.

DailyMile Calendar

daily mile screenshot

I wanted to be able to view DailyMile entries one month at a time, but they don't offer that feature. I used the jQuery plugin FullCalendar to create my own view. I've also added a D3 line chart with focus panel, from the nvd3.js library. This is a work in progress.

Robot Race

robot race screenshot

Java/Swing implementation of the Robo-Rally board game by Wizard of the Coast. My undergraduate senior project.

Sudoku Solver

Sudoku solver in Java, from a few years ago.

profile pic

Hi, I'm Ethan Shepherd, a developer building web and science data applications in Asheville, NC. I've worked on everything from satellite data products using C and Fortran, to SPA's on Node and Angular. This page is a collection of the things I've built, either for my job or to learn something new.

I don't have a lot of time for side projects right now as I'm currently enrolled in the OMSCS program at Georgia Tech, but if you have something you think I might be interested in feel free to get in touch:

Some stuff I know how to use