Software ... and other things that should be as simple as possible, but not simpler.
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 Engineer 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.
- @eigenhombre on Twitter
- My LinkedIn profile
- My physics/computing curriculum vitae.
Occasionally I will post about various side projects on the following blog. I also tweet about various obsessions, software or otherwise.
All Blog Posts
- 12 Feb 2015 » Lazy Physics
- 27 Nov 2014 » Clojure/conj 2014 Notes
- 03 Aug 2014 » Marginalia Hacks
- 02 Aug 2014 » Communicating With Humans
- 20 Jul 2014 » Testing, Continuously
- 20 Jul 2014 » A Workflow: TDD, RDD and DDD
- 05 Jul 2014 » Emacs Customization for Clojure
- 03 Jul 2014 » An Advanced Clojure Workflow
- 16 Feb 2014 » Dead simple scripts in Clojure
- 24 Nov 2013 » Fun with Instaparse
- 03 Nov 2013 » Nucleotide Repetition Lengths
- 13 Jul 2013 » Updating the Genome Decoder
- 10 Jul 2013 » Getting Our Hands Dirty (with the Human Genome)
- 07 Jul 2013 » Validating the Genome Decoder
- 06 Jul 2013 » A Two Bit Decoder
- 05 Jul 2013 » Exploratory Genomics with Clojure
- 09 Jun 2013 » Rosalind Problems in Clojure
- 20 Apr 2013 » Introduction to Context Managers in Python
- 19 Apr 2013 » Processes vs. Threads for Integration Testing
- 18 Apr 2013 » Thoughts on Integration Testing
- 13 Apr 2013 » Integration Testing in Python with Context Managers
- 16 Nov 2012 » Lightning fast startup times for Clojure programs
- 07 Nov 2012 » A Foray into Machine Learning?
- 21 May 2012 » Resources for Learning Clojure
- 31 Mar 2012 » Continuous Testing in Python, Clojure and Blub
- 22 Dec 2011 » Programming Languages
- 30 Jul 2010 » Managing the Most Remote Data Center in the World