2017 Eclipse Traffic

paleo screenshot

Lots of conversations I had before the 2017 eclipse involved guessing what the traffic situation was going to be like, so I decided it would be neat to visualize it and threw this project together at the last minute. I created a simple HTML page that showed the map I was interested in, with the Google traffic data layer. The page used html2canvas.js to create an HTML canvas version of the map after it loads. I set up phantomJS to scrape that page every 10 minutes. After the traffic died down, I used Python and OpenCV to add a layer to all the images with the time and totality path from this data. The path is not exactly right because I had to fake the projection onto the flat images, but it's pretty close. Finally I merged all the images in Photoshop. You can see the final results here.


paleo screenshot

This is NCEI's Paleoclimatology study search and access tool, for which I am the principal developer. It is a Spring application using myBatis/Oracle providing a RESTful API, and a search interface built with Angular.js. The interface allows searching over popular fields such as study investigators, locations, and time periods, and was recently updated to support terms from the multi-year Controlled Variables standardization project. Bulk data access is enabled via a data bundling api and through the search interface. Current development is focused on performance improvements, such as virtual scrolling to handle e.g. the 4000+ investigators options, and a custom study pre-generation cache system.


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. I'm now also working on a webapp version that syncs with the Android application.

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. Unfortunately the city's GIS service is no longer active so the tool is not current.

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. D3.js is used for the Gantt chart on the MSHR tab.

Friendly Library

friend lib screenshot

FrindlyLib lets 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.

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 Spring MVC apps on Oracle, to SPA's with Node and Angular. This page is a collection of some of the things I've built, either for my job or to learn something new.


Some stuff I know how to use