: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.
Elasticsearch
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
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
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
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
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.
Blog
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.
Articles
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.
Miscellaneous
- Denver Emacs Meetup
- Various collected quotes that I enjoy enough to share
- Elasticsearch In Action - the site for the book
Places to find me
Footnotes:
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