Skip to content

Journalλ︎

A journal of thoughts and experiences from commercial work and community projects 🌐 powered by Material for MkDocs

Practical.li provides free online books covering practical guides to Clojure programming and development workflows. Practicalli Engineering Playbook contains specific guides across the full spectrum of software development.

Sponsor Practicalli

All sponsorship funds are used to support the continued development of Practicalli series of books and videos, although most work is done at personal expense and time.

Thanks to 🌐 Cognitect, 🌐 Nubank and Practicalli GitHub sponsors from the community for your continued support


Pagan festival parties

The winter holiday season is usually a quiet affair for me as friends and family are dispersed all over the planet. I do not follow a religion although I do appreciate the sun rising every day. I have cats to keep me company and I also look after my neighbours cat for a few days.

Winter is when I do less cycling outside, especially when there is a risk of ice. Instead I work on my core muscles with yoga and occasional brave the outside for a Park Run. I have had an injury on my foot which has taken a few months to heal (as I have been very active), so Park Run events for me will be a brisk part walk (maybe running for the last 50 meters).

Started to consider what this year has meant for me by looking at other peoples 2025 round-ups. The most enjoyable roundup so far is Kermod & Mayo's Best and Worst Films of the Year, which also included best TV shows (that Mark Kermod has watched) of the year.

I have a Network Attached Storage (NAS) device at home as a convenient central backup for work and media files. The NAS was configured with a RAID6 array, but unfortunately two disks in the RAID 6 array had failed. I discovered that changing 2 disks on the RAID array was not necessarily a safe option, especially if yet another disk became faulty during the rebuild (which can take many hours).

I am attempting again to recover the RAID array. If that fails, I will rebuild the NAS with 2 separate RAID6 arrays, increasing further the resilience of the storage in case of hardware issues.

Eventually I will replace the 'disk' drives with solid state storage devices (SSD), especially as a 4TB SSD can be found for around 160 GBP. Using SSD rather than spinning 'disks' also makes the NAS device really quite.

NOTE: I have other backup mechanisms as RAID should not be used as a permanent backup solution.

Entertainment this week included

  • Blakes 7 season 3 (usually watched as I fall asleep)
  • Slow Horses season 5 - excellent show that keeps my gripped (watched the first 4 episodes in one night)
  • Pol1bus - wonderfully funny and quirky show (I am not sure if I am rooting for the right protagonists)
  • Foundation season 1 & 2 - watched again in preparation for season 3 this week
  • Dr Who - watching Jodie Whittaker as the Thirteenth doctor and really enjoying the depth of stories that are portrait

Winding down for 2025

I have completed my 6,000 km distance goal for cycling, so I will focus on other activities such as walking and yoga. I aim to get into a rhythm of 3 yoga sessions a week, which will stretch my muscles and help with my breathing.

Something a foot

Completed 6,000 km distance for cycle riding this year, a very satisfying number as I wasnt able to do much cycling before May.

A new month means its time to update dependencies across all projects. Although antq has proven very good at reporting outdated dependencies for Clojure projects and GitHub actions, it is quite a niche tool and something extra to learn or maintain a config for.

When reviewing options for liquida/antq there was a link to ... GitHub workflow that generates a PR with all the dependency updates. This project is now in maintenance mode and recommends looking at the Renovate GitHub action.

So I decided to create a CI workflow using Renovate that generates a pull request to update Clojure library dependencies and GitHub actions.

Rather than write this myself, I felt it was a useful task to ask an LLM tool to tackle. I felt confident I knew how to write a clear question (prompt) for the LLM tool. It was also a small enough task that I wouldnt blow all my 'free' tokens. I also hoped that it was a simple enough task that I wouldnt have to keep refining the question to get the response I needed.

The reply should be simple enough that I can understand, as I already have plenty of experience writing GitHub workflows and configurations for the tools used by a workflow (e.g. Megalinter).

Unfortunately the resulting Renovate.json configuration doesnt like Clojure, so AI seems to have failed quite badly (or was too optimistic).

Taking my usual approach of an Internet search, I discovered the Mend App, which is described in more detail in the Mend for GitHub.com docs.

The Mend app kind of works but still seems to require some manual intervention (pressing buttons on developer.mend.io app) and only supports (or only configured for) maven dependencies and not git updates, e.g. seancorfield/deps-new.

The results of the discussion with the LLM are documented in this post and the results were also published to the web:

Create GitHub workflow with Renovate for Clojure projects

Hello darkness my old friend

It is getting noticeably darker now, before I finish 'working' on Practicalli content and other computer things.

At the end of last week I contributed questions to the next Clojure Survey, which I assume will be out in early January 2026. I also shared some thoughts about why this information was useful to capture.

Earlier this week I ran through the draft survey and provided feedback directly to Christoph. It was mostly nitpicks (I used 🌐 conventional comments style for the feedback).

Getting close to a total of 6,000 km in distance for 2025. Only 146 km to ride and I've hit my target.

NOTE: the title is taken from the song "Sound of Silence" by "Simon and Garfunkel"

First taste of Winter

The days are very cold now, especially when the day is not sunny. I am determined to get out on the bicycle for several rides each week.

Previously I've have added SSH keys to my GitHub account via the GitHub website. The GitHub CLI can add SSH keys, which is more convenient that copying the contents of the public SSH key into the website. I still need to figure out a good way to cache an SSH passphrase in a key ring when not using Gnome desktop. I use the SSH key for signing a commit, so need to enter the passphrase for each commit.

Friday was house maintenance, replacing the valves for the heating system top-up loop. Now I can top up the water pressure for the heaters when ever needed (which shouldn't be very often). My neighbors boiler started making a huge banging noise when the pressure was very low, so I can avoid this situation myself (I've heard at least one other neibour have the banging boiler problem this week, but couldnt figure out where exactly it came from as its a base sound and travels).

For a distraction this week, I am continuing to watch Blakes 7, Doctor Who (Matt Smith, Jenna Coleman) and Battle of the Planets (possibly the first Americanised Anime).

Debian Linux returns

Discovered Neovim GitSigns plugin could be used to stage specific lines, as well as hunks.

Material for MkDocs is the static site generator tool used to create all the Practical.li websites. This project is now in maintenance mode and a project called Zensical is under active development. It seems that there should be a fairly smooth migration of existing projects to the new tool :crossed_fingers:

This summer has been an adventure with the new shiny Hyprland wayland compositor and tiling window manager. Whist Hyprland (and associated tools) can be made very beautiful, I find it has some major productivity limitations compared to i3 tiling window manager.

I've switched back my main laptop to using Debian Linux, using Sway Wayland Compositor via Regoligh Desktop as Sway works the same way as i3 (at least from a user perspective).

The evaluation of Terminal UI tools is proving much more successful and I have found some nice system tools to use (better than the GUI tools that come with Gnome desktop).

I use the keyboard for everything except graphics & video editing work, and the occasional link in the browser if its a busy page. Using a tiling window manager has helped me keep my fingers on the keyboard where they work the fastest.

I common keyboard combination I used is to copy the URL from a browser window into one of the Practicalli books, or this very journal.

  • Super and one of h j k l keys to navigate to the browser window (SPC followed by a number if the browser is on a different desktop)
  • Ctrl+l to highlight the current page URL in location bar.
  • Ctrl + c to copy the URL into the clip board
  • Super and one of h j k l keys to navigate to the Neovim window
  • p to paste the URL into the Neovim buffer

Peddle Peddle

Lots of cycling this week with 4 consecutive rides, Thursday to Saturday. The Cafe at East Peckham was closing, so we took a trip as a last farewell. It turns out there is a new buyer, so it should be back open before we know it.

I continue to look for the most effective way of adding data overlays to the videos captured on cycling routes.

Continuing to evaluate Terminal UI tools and finding very useful tools to understand what is going on under the hood of the operating system.

Another Arch Linux disaster

After a kernel panic with Arch Linux after a package upgrade (and many other issues), I will switch my main machine back to Debian Linux.

I did have a small issue starting Regolith on Debian after an update, but there was a fix already defined that was quick to apply successfully.

I can still choose to use Wayland compositor with the Sway tiling window manager, the Wayland equivalent of i3 for Xorg.

Terminal User Interface tools are on the rise, so I have started evaluating them to see which ones I want to adopt.

New book on engineering management

A meeting I had to discuss engineering teams was postponed, so instead I have started writing 'engineering stories' to capture and organise my experiences from various companies and roles. I will capture lessons learned from my experiences (and others) and my current thinking on how to resolve issues that I encountered.

Updated :format/cljfmt-check and :format/cljfmt-fix aliases in Practicalli Clojure CLI Config to use the newer publishing name for the library. The older cljfmt name did not have a domain, so cljfmt/cljfmt had to be used as the name when using Clojure CLI. The library published as cljfmt stopped being updated at versino 0.9.2.

Started a page on Terminal User Interface (TUI) apps in the Operating System section of Practicalli Engineering Playbook. I have been using an increasing number of TUI apps, especially after I began using Neovim. I also like apps that are completely keyboard driven, as I am a fast and effective typist and find the mouse very fiddly these days.

Created a GitHub template repository to quickly create a new Practicalli book or blog web site, using Material for MkDocs. This template repo was used to create Practicalli Engineering Manger repository

Walking, pull-ups and weights are this weeks approach to building up my health again after a few weeks of flu. No cycling since the 8th October, but this had given me a chance to catch up with editing videos of my cycle trips