Some people like to work on tons and tons of things at the same time; I am not one of those people. This is the little list of things that I work on one at a time.

Kibana 4

Kibana is a highly complex single-page angular app for analyzing and visualizing data. The predecessor to this application, Kibana 3, was completely static and only required access to an elasticsearch cluster to function. With Kibana 4 we started with the same goal but decided to implement a back-end using node.js that removes the constraint of operating without a server.

In time we will take greater advantage of this server, but for now Kibana 4 behaves much like Kibana 3 and runs almost entirely client-side.


Elasticsearch.js is the official low-level elasticsearch client for Node.js and the browser. It provides additional features like cluster-awareness, load-distribution, connection pooling, and a standardized interface that matches the other official clients.

The neat part about the client is how the APIs are all generated, using a custom code generation utility, by reading the rest api spec that is distributed with every version of elasticsearch. In the same vein, there is a yaml test suite which is maintained by the elasticearch team and run against all of the official clients every time a changes is made in master.

These two factors make managing elasticsearch.js something I can easily do while focusing full-time on Kibana.


You could call me a linter addict. I can get a bit harsh when it comes to using proper style and keeping things consistent, and I tend to lean on my linters about as heavy as I’m leaning on spell checking right now. For this reason, me and jshint have become pretty good friends since until a few months ago it was the only reasonable tool available.

When I first gave gulp a shot though, the gulp-jshint didn’t have all of the features that I expected, so I got my fork warmed up and started submitting pulls. Before long I was taking over maintenance of the project as I had basically re-written it.

Thankfully, it’s quite small and doesn’t require much attention.


This was a fun project, and the first and only bit of Crystal I ever published (so far). Unfortunately, at this time there isn’t any way for dependencies to have dependencies in Crystal so the intented purpose of this library is no longer valid; web frameworks can’t really rely on this unless every framework consumer also adds it as a dependency.