First of all the application should be reloadable, that means restartable in the
REPL without restarting the entire process. If the app can shutdown and start
quickly, this makes development way faster, less error prone and
more pleasing experience. If you use component, this can be easily done with
the reloaded.repl library provided by weavejester.
[Read More]
Clone all those gitlab repositories
Posted on July 13, 2019
| 2 minutes
| 252 words
If you change work environments once in a while you know that there is one thing
that you are doing quite a lot of when starting off: Cloning quite a lot of
repositories. Microservices, git and infrastructure as code among other things
have let to a big number of repositories in almost all organizations.
As I was doing that the last time it got really tedious. Mainly because I wanted
to search the whole code base and that did not work with the local gitlab
instance. Naturally I turned to the shell to give this a shot and as it turns
out it is a one liner (line breaks added for your convenience ;)), mostly
thanks to python-gitlab and the inherent awesomeness of the shell:
[Read More]
Thinkpad Ultra Dock Annoyances
Posted on March 8, 2018
| 1 minutes
| 128 words
Just a few days ago I finally fixed an annoyance with my Thinkpad T460p and the Ultra Dock:
Removing the laptop from the Dock results in it going into hibernation. Then after opening the
lid it does not switch the built in screen back on. This turns out to be easy to fix.
Undocking and docking leads to a lot of events which can be observed by a simple
The event that seems to be the most promising is used as a trigger to correct the display settings.
In my case that meant putting
[Read More]
Releasing clojure libs
Posted on July 15, 2017
| 1 minutes
| 157 words
Releasing libraries is a tedious but important task.
There is lots to do and lots to screw up:
- Tagging the release state
- Making a clean build
- Signing the artifacts
- Pushing them to some repository
- Bumping the version to the next snapshot iteration
- And so on and so forth…
Having a dark past in the java world I looked for something like the maven release plugin for leiningen, which
automates the whole process quite nicely. Turns out there exist a lot of release plugins. Right now clojars lists 50 results for the search term release.
[Read More]
Create bugs with overtone
Posted on July 14, 2017
| 2 minutes
| 222 words
These days I stumbled upon some code committed by a very competent but sadly no longer present colleague and was baffled to see this:
catch (Throwable t (log/error t "horrible things happend))
This left me puzzled and after looking for clues why this had been done (and not finding any) I decided to remove this exception dodger and move on.
Turns out I created a bug.
Why? Because this code was called in a job scheduler from the very popular overtone/at-at library.
And it showed the following behavior:
[Read More]