Journal 2020.1 - Clojure survey, core.async

Happy new year!


I spent some time with core.async this week, trying to clear up a bunch of old patches and tickets. Many thanks to Kevin Downey, Nicola Mometto, Angus Fletcher, Leon Grapenthin, and Brian Rubinton for the patches there.

  • ASYNC-198 (CLJ) Fix exception rewriting in go can replace return value
  • ASYNC-220 (CLJ) Fix exception in go finally swallows exception of outer try
  • ASYNC-229 (CLJ) Fix go finally block executed twice
  • ASYNC-212 (CLJ) Fix go fails to compile expressions with literal nil as let value
  • ASYNC-145 (CLJ, CLJS) Fix mix throws error when many channels added
  • ASYNC-170 (CLJ) Fix binding in go block throws assertion error
  • ASYNC-127 (CLJ, CLJS) Fix mult to work as doc’ed with all taps accepting before next
  • ASYNC-210 (CLJ) Fix puts allowed when buffer still full from expanding transducer

There are still about 50 open tickets, about a dozen of those with patches. I looked at most of those the patches and those will need to wait for the next round. I’m going to try to hit these about once a month. I think we’re definitely lagging in the CLJS parts of core.async go, and that is non-trivial code to work in. If someone has the time and interest and knowledge in CLJS to help, I’d welcome some more eyeballs on that stuff.

Clojure survey

I probably spent the biggest chunk of time in the last week updating and releasing the State of Clojure 2020 Survey! We have done this survey every year since 2010 and it’s a tremendous tool to get a snapshot every year and be able to compare data over time. If you use Clojure or ClojureScript, I heartily encourage you to complete it by Jan 23rd.

Every year I do updates based on the previous year and how things have been changing. This year I added one important question about primary developer OS, which is particularly important for tooling like clj. So far, those answers are tracking just what I predicted, but you’ll have to wait till the results post to see.

I also took a hard look at some of the tooling questions that have been in there for ever. The version used last year was “What tools do you use to compile/package/deploy/release your Clojure projects?” - originally this was really about which “build” tool you used. Over the years though, this question has grown increasingly fraught - many of those verbs may not apply, or there may be a combination of tools used for each of them, so I split and narrowed the focus. First, there’s a new question “What tools do you use to define and download your dependencies?” with multi-select answers, and definitely early results show multi-tool usage. I tinkered for a long time with a question about tools used to make project artifacts but it kept growing to include the many ways people “build” or “deploy” and eventually I decided it was a mess and cut it. I did however, add a question about how people run their apps in production - certainly based on the comments in that it needs some tuning next year, but I think the results will be interesting and useful.

Anyways, please take the survey if you haven’t yet! It’s also helpful to post it in company or regional chat rooms where people might not see it otherwise.

Other stuff

I just found out that Neil Peart, drummer for Rush, passed away today. I’ve been a fan of Rush since probably middle school. I just missed seeing them on the Presto tour with my neighbors for what would have been my first concert - I don’t have many regrets in life, but that is one. Since then I’ve seen them enough times that it’s difficult to count, maybe 7? I have so many great memories of seeing Rush and enjoying their music over the years. It amazes me sometimes that I can listen to the same music for decades and still continue deriving pleasure and meaning from it, but I do. It’s impossible for me to have a favorite band, but Rush would certainly be on any Top N list. My youngest is a Rush fan and bassist and his first concert was seeing Rush on their final tour - it was particularly special getting to see Rush with him and my daughter.

Every Rush fan has their favorite era or album. For me, I have many favorite Rush songs across their whole catalog, but undoubtedly Moving Pictures is peak Rush for me. I love every song, enjoy it both lyrically and musically. I have listened to it undoubtedly hundreds of times yet still will stop if I find it on the radio and crank it up. If somehow, you haven’t heard it, go check it out (the newer remasters sound great).

Neil was a pretty darn good drummer. I know he’s had a lot of hype, and there’s some backlash to that hype, but whatever, that guy can play. I always particularly enjoyed his syncopated snare and cymbal work. Honestly, probably the best thing about Neil was how awesome he was at playing with Geddy. Those guys could lock in. I am also always appreciative of people who do the work, and Neil was legendarily focused on practice, often showing up a month early to do his own rehearsal work before the other guys arrived.

Here’s some live YYZ to dig on. RIP Neil, very thankful for all the music you made.

Written on January 10, 2020