Most of my projects are hosted on GitHub, so you can always check there for the latest updates.

Here are some highlights:

mix test.interactive

I created mix test.interactive as a fork of mix to add a Jest-inspired interactive mode.

Elixir SDK for ConfigCat

In collaboration with a few others, I created the Elixir SDK for the ConfigCat feature flag service.

Invoice Tracker

As a way to help me learn more Elixir, I wrote a command-line InvoiceTracker to help me manage invoices for the side contracting work I do.


I created and maintain the Jujube Ruby gem, a Ruby front-end for jenkins-job-builder. It’s a great way to support a large collection of Jenkins jobs without having to use the web UI.

Zeal Projects (former maintainer)

While at Zeal, I was the primary maintainer of eslint-config-zeal and redux-persist-sensitive-storage.

CI for VisualWorks Smalltalk

I contributed plugins for CruiseControl and Jenkins to integration them with the VisualWorks Store version control system.

Tools and Extensions for VisualWorks Smalltalk

I also created and/or maintain the following tools and extensions for VisualWorks Smalltalk:

  • The Smalltalk ports of Fit, FitNesse, and FitLibrary.

  • DoubleAgents, a test double (mocking & stubbing) library.

  • StoreCI, which integrates VisualWorks Smalltalk with continuous integration servers like Jenkins and CruiseControl. This is the Smalltalk part of the solution that goes with the Java plugins I mentioned above.

  • SUnitTools-AutoTest, which automatically runs relevant SUnitToo tests when a method is changed.

  • ExtraCatalogs, an alternative MessageCatalog for VW Smalltalk that supports XLIFF-format files.

  • DebuggerProtocolPrompt, which prompts for a method protocol when defining a new method in the VW Smalltalk debugger.

  • Threequals, which adds a Ruby-like #=== operator to Smalltalk.

  • ExternalEnumeration, which provides an external Enumerator for Smalltalk.

  • SuffixConditionals, which adds Ruby-like suffix conditionals to Smalltalk.

These projects are also available in the Cincom public Store repository.