:wq - Writequit

Table of Contents

About me


My name is Matthew Lee Hinman1, I'm a software developer in the Denver Amsterdam Denver area who enjoys open source software, Elasticsearch, Emacs, photography, theology, and coffee. Welcome!

I'm an active contributor in the open-source Elasticsearch, Clojure, and Emacs communities, and enjoy working in teams to solve challenging and interesting problems. I care a lot about code quality as well as freedom and release the majority of my extracurricular code as open source.

I am one of the authors of Elasticsearch In Action and currently work at Elastic as a core developer2.

If you want to contact me you can do so by emailing lee @ this domain, or leehinman [at] fastmail [dot] com.

Current Projects

These are some of the main things I'm currently working on, contributing to, or maintaining. Check my Github account for the full list of stuff.


I am currently employed as a core developer for Elasticsearch Inc, working on Elasticsearch itself. I've worked on a number of parts of ES, including:

  • Disk-based shard allocation
  • Circuit breakers
  • The simple_query_string query
  • The Groovy scripting engine and (now removed) sandbox
  • Translog checksums and the translog truncation CLI tool
  • Shadow replicas
  • Plugin checksums
  • Cluster Allocation Explain API
  • Adaptive replica selection and automatic queue resizing
  • Index and Snapshot Lifecycle Management
  • Data Tier formalization
  • Node Shutdown API

I've also contributed some patches to Lucene itself:

  • Support for slop and fuzzy to the SimpleQueryParser
  • The MatchNoDocsQuery

And also a bunch of other various stuff :)


clj-http is an open-source idiomatic HTTP client for Clojure that uses the Apache HTTP client. It supports a ton of features that Apache's client supports, and uses the middleware patterm (if you can call it a pattern?). I took over clj-http from Mark McGranaghan a ways back.


Cheshire is an open-source JSON encoding/decoding library for Clojure, using Jackson's3 java library. It was designed to be as fast as clj-json, but still allow custom encoders for various Java objects. It also has some experimental stuff like encoding a stream into a single field without copying it twice (once for the source, once for the JSON string).


es-mode (aka Elasticsearch-mode) is a major mode for Emacs to send requests to Elasticsearch. It supports the same syntax as Sense4, as well as completion, indentation, and formatting of responses. It also supports executing ES requests from org-mode, which I use a lot in my everyday work. It also supports some neat things Sense doesn't have, like auto-tablification of aggregations and Elasticsearch Command Center.


java-imports is an Emacs library to deal with managing import statements in Java source code. Since I am employed working on a large Java codebase, it came about as a necessity for my own use.

Other Things

Commonplace Book

This replaces the blog below. No guarantees on what sort of content it will have. It's mostly going to be non-technical.

Commonplace Thoughts

My email newsletter. I only recently started this. A curated selection of things I’ve found interesting recently, or things from my commonplace book. May include theology, literature, philosophy, art, music, and technology.


This is a static copy of my old blog. It hasn't been updated in a long time, but it could still be useful for reference. It's mostly technical posts, though there are a few others scattered about.

My dotfiles, the Emacs Operating System (EOS)

This is my all-in-one Emacs configuration (along with Zsh) designed to do as much as possible in Emacs, using the wide range of tools available. It's a collection of .org files tangled into a configuration. The source for it can be found here on github. It's quite extensive. I used to be a hardcore Vim guy, but had to switch to Emacs for work in 2010 and have been using it ever since.

My old all-in-one configuration (called "The Setup", github) is still available, in case someone references it.

Elasticsearch and Logstash notes

A collection of various notes, examples, and how-to documentation for Elasticsearch. Whenever someone asks a question on IRC that requires me to do some sort of research, I add it here.

My old projects page

Listing mostly defunct projects (everything else has moved to my github account).

G1GC notes

I've collected a few notes about it, since a lot of people seem not to understand how it works. It includes some good links to blog posts and videos and various settings.

git-annex notes

I switched to git-annex for distributed file backups in 2014, so I am keeping some notes here for others or in case I forget how to use it. It has a slight learning curve because I used the CLI instead of the git-annex assistant.


Here are some articles that I've written, outside of my blog5. They are ordered by date with the newest articles at the top.

You can also follow the RSS feed of writequit.org

All about scripting - on the elasticsearch.org blog

Scripting and security - on the elasticsearch.org blog

Middleware in Clojure - part of clojure-doc.org

Papers and published works

Some of these are quite old, but here is a list of papers I have written or contributed to, or have been mentioned in. I've included a short synopsis or abstract exert from each.

An introduction to NSM-Console

With the proliferation of dozens of different packet analysis tools, a network traffic analyst has a dizzying amount of tools to choose from to analyze network data. As the number of tools will only increase, a framework to unite and manage each of these tools is necessary. This framework should provide a central and uni ed way to change the options for each of the tools. My solution to this problem is NSM-Console, or the Network Security Monitoring Console.

This paper was written as in introduction to the NSM-Console project I originally created while working on the HeX FreeBSD-based live CD.

Writeup of Hex and NSM-Console in the February 2008 ISSA Toolsmith column

NSM practitioners and packet analysts rejoice, the HeX System is a project with your best interests at heart.

RudolF: An Open-Source Sandbox for increasing the accessibility of Functional Programming to the Bioinformatics and Scientific Communities

Scientists are continually faced with the need to express complex mathematical notions in code. … we demonstrate and provide applied, scientifically substantial examples of functional programming which we present as the multi-language RudolF source-code repository for software integration and algorithm development, which generally focuses on the fields of machine learning, data processing, bioinformatics.


Places to find me

  • Github
  • Twitter
  • Last.fm
  • On Matrix, in the #generalisms:writequit.org room, or PM @dakrone:writequit.org
  • IRC, on freenode as dakrone, usually in #elasticsearch, #emacs, and #org-mode



I usually go by "Lee", which is why I include my middle name here


I work on Elasticsearch itself


Jackson - also known as "the best JSON parser for Java"


"Sense" will be renamed to "Console" in Kibana 5


Most of my writing these days is in article form, simply because they tend to be self-contained org-mode documents

Author: Lee Hinman

Created: 2023-04-15 Sat 09:08