Welcome to the technical blog of John Jacobsen, a software developer currently living in Chicago, IL.

Recent Blog Posts (all posts)

I’m a software developer with a background in physics and art and a passion for writing awesome programs in Clojure.

I am currently a Senior Software Architect at OpinionLab in Chicago. I have created software for more than two decades in industry and in the fields of high energy physics and particle astrophysics, and have built a wide range of systems, including front-end Web applications, control systems, Linux device drivers, embedded systems for physics detectors, data mining / analysis, and numerical simulations.

I like to write elegant, powerful, maintainable code. Generally this means striving for simplicity whenever possible. (Almost all the code I’ve written in the last decade is still in production use.) When practical, I practice iterative, test-driven development and fully-automated deployment workflows with frequent releases.

In the ten years prior to starting at OpinionLab (2014), I worked primarily for clients on the IceCube Neutrino Telescope, the world’s largest detector of astrophysical neutrinos, which was recently constructed at the Amundsen-Scott South Pole Station. For the last five of these years, I was the lead programmer and architect of the IceCube Experiment Control and Monitoring system, known as IceCube Live. This distributed system, created in Python and hosted at the South Pole and in Madison, Wisconsin, welds together a heterogeneous collection of subsystems together across a network of 200 or so servers at a data center at the Pole, and, using modern Web application tools, provides interactive sites used by detector operators, subsystem experts and data analysts in both hemispheres to control the instrument and to understand its current and historical performance. During this work for IceCube I traveled ten times to the South Pole and wrote extensively about the experience.

I have originated or contributed to several Open Source projects, including two implementations of Clojure in Python, Hy (another Lisp dialect based in Python), a continuous testing tool, and the Toolz project, a library for functional programming in Python.

Other interests include machine learning, logic programming (MiniKanren, core.logic), AI in general, and creating visualization tools (I am currently working on a JavaScript charting library using D3.js). I’m also an on-again, off-again visual artist (painting, drawing and photography).


Occasionally I will post about various side projects on the following blog. I also tweet about various obsessions, software or otherwise.

All Blog Posts