James Stevenson

software engineer in Baltimore, Maryland


I'm a software engineer by trade, with an interest in music, woodworking, and gardening in my spare time. I mostly do data engineering these days, with secondary interests in Machine Learning, Recommendation Systems, Natural Language Processing, and Functional Programming. I've lead teams working on big data pipelines, built NLP platforms and recommender systems, and helped design and develop systems to calculate complex healthcare quality metrics over billions of medical claims.


I've contributed to or maintain several open-source projects:


Robosquirt is an automated watering systems for lawns and gardens I'm building with my friend and former colleague, Ben Johnson as a fun side project. The system allows users to control valves using custom software we've written in Python running on a Raspberry Pi Zero W. The Pi is joined to your home wireless network, which allows you to control your watering system from anywhere.

The software component consists of two pieces. The first is the Robosquirt server, which is a custom python server that controls the valves, and executes scheduled watering events. The server accepts messages over a ØMQ connection which allows other applications to control the system. The second component is a web application written in Django which provides a human-usable interface to the system. This interface lets users turn the system on and off, schedule watering times, and set their geographical location.

Robosquirt watering hardware.
Robosquirt screenshot.

Robosquirt has several features:

  • Robosquirt is location-aware. Location is supplied by the user as part of the first time login and setup process.
  • Robosquirt knows the forecast. Weather data is periodically acquired from the National Weather Service which Roboquirt can use to make watering decisions.
  • Robosquirt is secure. Users provide a password to the system during initial setup to contreol who can access the UI.
  • Robosquirt uses moisture sensors to decide when to water. (coming soon)
Visit project page

NCSA Logfile Parser

An open-source implementation of a high-performance log file parser for NCSA Common and NCSA Combined log-file types. This project was intended to accompany a blog series I wrote, "High-performance Log Parsing in Haskell" while working at O'Reilly media. That blog has since been lost in sucessive redesigns, but the blog series is archived as part 1 and part 2 on Github with the project.

The series came about after I had written and deployed a Haskell-based logfile parser at the company. The parser was responsible for parsing and processing very large files and replaced a previous version written in Python that had been an order of magnitude slower (while requiring a lot more memory).

Visit project page
Haskell Logo

Older Projects


A static blogging engine written in Haskell. My blog post on the subject provides more information.


A reusable application that provides for a generic section/subsection hierarchy in Django.


A project that provides integration with the Redactor Javascript WYSIWYG editor in Django.