Matthias Nehlsen

Software, Data, and Stuff

Progress with “Building a System in #Clojure”: Hairball Removal

I’ve been struggling with finishing the next chapter of my "Building a System in Clojure" book. I tried to explain and draw the client-side architecture, but instead I’ve been procrastinating 1 around the conceptual drawings for days and now I realize why. The current architecture of the BirdWatch web client just plain sucks.

Which makes me think that procrastination is quite possibly more useful than its grim reputation suggests. Sure, I could have just forced myself to draw the current architecture while oppressing critical thought. The real message, though, was that I had a more than valid reason not to be excited. Anyway, I digress. Yesterday, I finally tried to draw it and the task made me feel uneasy in my stomach. Let’s just say that unsightly hairball had to go.

So instead, I grabbed a pencil and carefully drew the blueprint 2 for the architecture I desire. That’s done; it looks well groomed to me, and I’m excited about the refactoring ahead.

If you are a reader of the book, you can download the current version, see what I mean when I say it’s gruesome and compare that with the redesign when it’s finished. Consider that a feature of becoming a reader early on in the writing process.

That’s it; I’m back to a fun coding session. Thanks for reading.

Happy 2015, Matthias

PS - you can start reading the book right away:


  1. I had some fun animating fireworks by manipulating SVG in ClojureScript instead. Maybe I’ll make an article out of that one day.

  2. By the way, it was terrific to stow the laptop away safely and use paper and pencil instead. You should give it a try.

© 2022 Matthias Nehlsen