code • words • emotions

Daniel Janus’s blog

Dutch Clojure Days 2022

7 November 2022

It’s a tradition of this blog that I write down impressions on my way back from Amsterdam conferences (addendum a week later: unfortunately I took a flight this time, too short to complete this entry, and it had to wait until I caught up). This time, it was Dutch Clojure Days 2022, my first post-COVID full-size conference and the first DCD I’ve ever been to. And, hopefully, not last. I know I want to come back.

Continue reading

How to pay for books

24 September 2022

This post was originally published in Polish. This translation has been slightly edited to explain some details that are likely to be obscure for people outside Poland.

Continue reading

I love my GPD Micro PC

18 August 2022

I bought two computers this year: a beefy Macbook Pro with M1 Pro and a GPD Micro PC.

The MBP is meant to be my mobile workstation, to satisfy all my needs whenever I need to work outside of my home office (at home, I’m still mostly using a two-year-old Intel-based Mac Mini). The GPD was a caprice. Perhaps I’m at the stage in life when well-off men buy themselves Ferraris to fend off a mid-life crisis; or perhaps I just have a separate heart for small computers.

Continue reading

Testing a compiler that can’t even print stuff out

25 September 2021

I’m enjoying a week-long vacation. In addition to other vacationy things (a trip to Prague, yay!), I wanted to do some off-work programming Just For Fun™ and revisit one of my dormant pet projects, to see if I can make some progress.

Continue reading

Things I wish Git had: Commit groups

1 July 2021


Everyone 1 and their dog 2 loves Git. I know I do. It works, it’s efficient, it has a brilliant data model, and it sports every feature under the sun. In 13 years of using it, I’ve never found myself needing a feature it didn’t have. Until recently.

Continue reading

I made a website to guess tomorrow’s number of COVID-19 cases, and here’s what happened

8 November 2020


It seems so obvious in hindsight. Here in Poland, people have been guessing it ever since the pandemic breakout: in private conversations, in random threads on social media, in comments under governmental information outlets. It seemed a matter of time before someone came up with something like this. In fact, on one Sunday evening in October, I found myself flabbergasted that apparently no one yet has.

Continue reading

Making of “Clojure as a dependency”

8 May 2020

In my previous post, “Clojure as a dependency”, I’ve presented the results of some toy research on Clojure version numbers seen in the wild. I’m a big believer in reproducible research, so I’m making available a Git repo that contains code you can run yourself to reproduce these results. This post is an experience report from writing that code.

Continue reading

Clojure as a dependency

2 May 2020

I have a shameful confession to make: I have long neglected an open-source library that I maintain, clj-tagsoup.

This would have been less of an issue, but this is my second-most-starred project on GitHub. Granted, I don’t feel a need for it anymore, but apparently people do. I wish I had spent some time reviewing and merging the incoming PRs.

Continue reading

Indenting cond forms

10 February 2020

Indentation matters when reading Clojure code. It is the primary visual cue that helps the reader discern the code structure. Most Clojure code seen in the wild conforms to either the community style guide or the proposed simplified rules; the existing editors make it easy to reformat code to match them.

Continue reading

Careful with that middleware, Eugene

21 January 2020


I’ll be releasing version 0.3 of Skyscraper, my Clojure framework for scraping entire sites, in a few days.

More than three years have passed since its last release. During that time, I’ve made a number of attempts at redesigning it to be more robust, more usable, and faster; the last one, resulting in an almost complete rewrite, is now almost ready for public use as I’m ironing out the rough edges, documenting it, and adding tests.

Continue reading