The work and workings ofEric Shull


I’ve taken sketchnotes at numerous events, including Clojure/conj and Agile Conf. Sketchnotes are a great way of using doodles as a memory aid and visual trigger of a talk, as well as help capture high-level ideas and conceptual relationships. I’ve written more about sketchnoting and tips on getting started on Atomic Object’s blog.


Peg is a mnemonic generator using the Major system. It accepts a string of digits and generates phrases that can visualized and remembered more easily than a plain sequence of digits.


Islands is an island map generator. Its remarkably simple algorithm generates complex island shapes, complete with bays, river inlets, lagoons, chains of islands, and rocky shoals. It’s a perfect blank slate for creating imaginary island civilizations.

Stack Math

Stack Math is a tool for creating and verifying mental math algorithms. Inspired by stack-based programming languages like Forth, it helps in re-designing useful math formulas so they’re easy to calculate mentally rather than with pen and paper.

Atomic Spin

Atomic Spin is Atomic Object’s technology and business blog. I’ve contributed to it since 2012. My work ranges from specifics like scripting Tmux and how to sketchnote all the way to high-level, abstract ideas like story, notation, and agility.

Solar System

Solar System is a map of the major bodies in our solar system on any given date. It can also show the distance between any two selected bodies.

Burn Chart

Burn Chart is a simple burn-up chart generator. It plots the total project scope and progress so far. It also estimates when the project is likely to be complete. Charts can be downloaded as PNGs.

Suarez Quilt

Suarez Quilt generates intricate, random grids evocative of quilts. This browser-based generator also allows coloring sections.


Swatch is a tool for visualizing color palettes. Given a set of colors, Swatch groups them into categories and makes it easy to find similar colors. Here’s an example palette.


Pennygame is a simulation of a simple manufacturing line. Based on an exercise in the book Velocity, Pennygame illustrates how higher productivity can increase work in progress—and therefore costs—and how constraints can reduce WIP and free up resources even while maintaining the improved throughput.

Implementing the Elm Architecture in ClojureScript

Having used the Elm architecture to build several simple, in-browser apps, I presented Implementing the Elm Architecture in ClojureScript as a lightning talk at Clojure/conj 2015. The presentation describes the Elm architecture, the virtual-dom project, and how to use core.async channels to drive an application’s state and rendering.

Communicating Sequential Processes

Having used the Go programming language and developed an appreciation for communicating sequential processes, I presented Communicating Sequential Processes at SoftwareGR in September 2015. The presentation discusses problems caused by sharing memory and shows how CSP is a better way to model concurrent logic.


Taxicabland is a web app for exploring geometric constructions in a non-Euclidean world. Users can build and manipulate diamond-shaped circles, octagonal ellipses, and unpredictable perpendiculars as they discover the consesquences of redefining distance.

Conflict Resolution Diagrammer

Conflict Resolution Diagrammer is a web app for resolving conflicts. Users can outline a problem and the reasons behind it, including the underlying assumptions, in the process revealing the erroneous assumptions without which the conflict disappears.


Vdom is a ClojureScript library for building web apps. It’s based on the virtual-dom project and has a much smaller learning curve than more sophisticated libraries like Om and Reagent. It also facilitates building apps with the Elm architecture.

Streak Calendar

Streak Calendar is a annual calendar for tracking daily practice. It’s useful for developing regular, skill-building habits, such as writing, drawing, exercising, playing the piano, or anything else. It’s small and simple, perfect for chaining 365 days of X’s.


Vizard is a command line tool for creating D3 visualizations of JSON data. Rather than having to write an HTML file that fetches D3.js, your script, and your data, all you have to do is pipe your data into vizard and provide the name of your JavaScript file. It’ll even open a browser window for you.

Small, Fast, and Simple

Small, Fast, & Simple is a series of 29 micro essays on how to program smaller, faster, and simpler. It ranges from old ideas like functions to new tools like D3 and Hugo. Each entry is less than 100 words, leaving further investigation to the reader.

Sketchnotes: Harnessing the Messy Mind

Having learned about sketchnoting at Midwest UX in 2013 and practiced through 2014, I presented Sketchnotes: Harnessing the Messy Mind at the first ever Atomic Con. In it, I argued for the superiority of visual notetaking and shared tips and tricks. The presentation features sketchnotes I took at AgileConf 2014.


V is an experimental K-like programming language intended for data visualization.


Flinch is a stack-based programming language useful for modeling and improving mental math algorithms.


Scriptulus is a simple web server that renders Fountain-formatted screenplays to HTML. The rendered output is styled for stage plays and includes a breakdown of the number of speaking parts and their respective sizes—information especially useful when putting on elementary school productions.


Fountain is a Go parser library for the Fountain markup language. Developed primarily for Scriptulus, it relies on fast, robust parsing instead of regular expressions.


State-lexer is a lexing library based on Rob Pike’s talk “Lexical Scanning in Go”. The library includes both Go and JavaScript versions, and is the basis of lexing in fountain, flinch, and V.


saveSvgAsPng is a JavaScript library for saving SVGs in the browser to a local PNG file. Especially useful for allowing users to save web-based data visualizations, it’s by far my most popular work.


Elevations is a web app for reading GPS XML files and showing not only where individual trips took place but also their change in elevation. I originially wrote it in 2013, the year my wife and I finally met our goal of biking 1,000 miles in a single summer.

Rail Baron Payoffs

Rail Baron Payoffs is a web-based map of cities in the board game Rail Baron. It’s used to look up the cash payoff of hauling goods between two cities, and replaces the 67×67 table of payoffs that comes with the original game.


D3-raylabel is a D3.js plugin for creating angled labels on pie and ring graphs. Supports placing labels inside the ring, on the ring, or outside the ring, as well as several other configuration options.


Levenshtein is a Go library for calculating Levenshtein distances. It includes support for finding edit distances letter-by-letter or word-by-word, but is also extensible to other types of sequences. It forms the core of the like toolsuite.


Like is a suite of command-line tools for working with similar text. Included are commands to find the entry in a list that best matches the given text, finding files whose names are most similar to the given text, and sorting text by similarity.


Having experimented with the Io programming language in the past, I presented io in 2012 as part of a lunch and learn series based on the book Seven Languages in Seven Weeks. The presentation discusses some of the paradigms and features of the language, briefly covering Io’s simple syntax.


As part of a lunch and learn series based on the book Seven Languages in Seven Weeks, I presented Scala in 2012. The presentation is a light overview of the ideas behind the language and discusses some of the controversy that at the time surrounded the language.