Tim Harper

Software Craftsman


I'm Tim Harper. I care deeply about crafting reliable software, specifically systems that can withstand change and handle massive scale.

I've served as CTO for over 2 years at SpinGo, and led the software team to victory, continuously meeting the scaling needs of the organization and keeping services online 99.9% month over month. We grew our APIs to be able to support giants such as CapitalOne and Samsung.

I've helped found several companies, including a predictive analytics company which has since been acquired.

I frequently contribute to open source, speak at conferences, and write around the web.


I use, make and contribute to open source software. Below are some of my projects:

Op-Rabbit - Author

Op-Rabbit is a full-featured, high-level, opinionated messaging library for RabbitMQ, Scala, and Akka.

Op-Rabbit Home

Scala - Contributor

I contributed a fix to resolve a memory leak in the Scala programming language; it was included in Scala 2.11.5.

Scala 2.11.5 Announcement

Scala-Handlebars - Contributor

I improved the design of the code, allowing for pluggable bindings (previously, reflection-based binding was available). Using these improvements, I implemented play-json integration, allowing views to be bound to a more type-safe JSON AST with near-perfect compatibility with handlebars-js.

Additionally, I fixed several issues with the template parser, while improving the coverage of test suite.

Scala-Handlebars home My contributions

Scala TSV Serializer - Author

A macro-based, extensible, fast library to serialize case-classes to TSV.

Scala-TSV home

Git OSX Installer - Author / Maintainer

I am responsible for the official installer for Git on OS X.


Slick (Scala) Postgres Extensions - Contributor

Slick-PG provides Postgres-specific extensions for Slick, the functional / relational data mapper for Scala.

I've helped improve the library, improving GIS support, and various fixes.

More about Slick Slick-pg Home My contributions

Presentations / Publications

I frequently speak at conferences and local user-groups.

Message Driven Architecture

How a message-driven architecture enables resilience, elasticity, and responsiveness.


Akka Streams

In which I discuss Reactive Streams and the Akka-Stream implementation. In the latter half I demoed an experimental stream-visualizer to illustrate the back-pressure concepts in streams.

I gave this when I was just adopting the Akka-Stream library, and so the slides contain a few errors and I conflated some ideas.


SpinGo <3 Scala

Experience report using Scala at SpinGo.


The Need for Acknowledgements in Streams

Documents my motivation for acknowledged streams.



Send me a note / find me on the web.