A couple of weeks ago I introduced meo, the intelligent journal that my beloved grandma inspired around two years ago. Since that blog post, she passed away, following a stroke and subsequent coma. Those weeks have been tough, and I miss my grandma a lot. It helped me quite a bit though to be working on meo, something that she inspired and that will be part of her legacy. There were multiple occasions recently when I might have given up working on meo otherwise, throw in the towel, and look for another hobby. Yes, I still like Clojure, but this code base that I created has made me feel like an idiot way too often recently.
I would like to dedicate this blog post to my grandma. She just turned 94. Happy birthday, Grandma, I love you. This is a perfect time for introducing meo, a Clojure/ClojureScript project that she inspired. About two years ago, she showed me a few photos from a trip to Iceland, including this one:
I asked her what year that was. She did not remember but retrieved a folder, scanned a few pages, and less than a minute later reported the details of the trip - it was in May 1987. I was stunned, as it dawned on me that I did not have anything like that for the past 20 years of my life, in which I visited 39 countries. Emails with itineraries, photos with geolocation for a few years back, sure, but all very fragmented, and far from me being able to give a concise summary of any of those trips in 60 seconds or less. I told her I wish I had recordings like that, and she said, ‘Really? I wish I had recorded more.’
Oh hey, I’m back. Been a while. Today, I want to share with you how I’m using systemd to start my Clojure applications on matthiasnehlsen.com, and keep them alive, in case anything should go wrong. These are the applications managed this way:
- BirdWatch, an application for tweet stream analysis, see on GitHub
- redux-counter example, a sample application for my Clojure book
- trailing mouse pointer example, another sample application for the book
- inspect, a demo for my inspect library. This is will soon be replaced by a new version making sense of messages passed around in systems-toolbox applications.
Today, I have another sample application for the systems-toolbox library for you. This application measures roundtrip times of a WebSockets connection. Before I delve into the reasoning behind this library, here’s a little teaser of how that’ll look like:
I wrote all of this from scratch in Clojure and ClojureScript, including the histogram - no charting libraries required. There’s a live version, try it out by clicking on the animated GIF.
TL;DR: I’ve been developing a library for building systems, and it has already made the codebase of the BirdWatch application much simpler. I’ll be back to updating the book using the new code and concepts soon. Thanks for buying the book!
So within the two weeks, I spent a fair amount of time with something that should seem fairly obvious to someone who uses computers a lot, yet that I paid far too little attention in the last couple of years of my life. Now you may wonder what I’m getting at, but no worries, I’ll get there. Let me ask you something first. How many hours per week do you spend in front of your computer? Let me guess, probably most of your waking hours, considering that you read a software-related blog. But is your workplace ideal or even anywhere close to it?
This is a rant.
Most of this week, I was working on the client-side codebase of my BirdWatch application in order to remove the hairball in its architecture that I mentioned last week. That’s been going really well. But how do I make the readers aware of what I am working on right now? Your time is precious, so you may only want to read the stuff that I feel good about already, unless you have the time to dive deeper and compare the good, the bad and the ugly. That’s fine, too, but it’s just going to involve more effort on your part.
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.
Last week, I published the very first version of my “Building a System in Clojure” book. I’m thrilled by the amount of interest it has already generated and I’ll do my best to live up to your expectations.