Sunday, 4. May 2025 Week 18
You’re in a rush and you need to grab a bottle of wine for a special occasion. You’ve got $40 and no preference for red or white, but you like wines with animal labels. Which wine are you buying?
We used ChatGPT Vision to identify animals on close to 1,500 wine labels to see if we could predict the price and quality of a bottle based on the animal on the label.
The Pour-Igin of Species by The Pudding.
TL;DR: New Zealand wines provide good quality for reasonable price. Cats are high quality.
(via)
Tuesday, 29. April 2025 Week 18
In the Hiding elements that require JavaScript without JavaScript article, dade explains techniques to hide elements when JavaScript is not enabled.
The result is a generic class that can be applied to hide elements, and works with a clever use of <noscript>
:
<noscript>
<style>
.d-js-required {
display: none;
}
</style>
</noscript>
(via)
Saturday, 26. April 2025 Week 17
In his latest article Russ Cox explains the concept of using Differential Coverage for Debugging.
It's a clever approach using the difference of the coverage output between two test runs, to directly highlight the lines of code that contributed to a bug.
# collect coverage of a passing test run (skip the failing test)
go test -coverprofile=c1.prof -skip='TestAddSub$'
# collect coverage of a failing test run (run the failing test only)
go test -coverprofile=c2.prof -run='TestAddSub$'
# calculate the coverage difference between the runs (so only the code of the failing test gets highlighted)
(head -1 c1.prof; diff c[12].prof | sed -n 's/^> //p') >c3.prof
# display the code in a web browser (green/covered code did contribute to the failing test)
go tool cover -html=c3.prof
Saturday, 19. April 2025 Week 16
The Web Key Directory (WKD) is a standard for discovery of OpenPGP keys by email address, via the domain of its email provider.
The following command can be used to test/import a key via WKD.
gpg --locate-keys --auto-key-locate clear,nodefault,wkd address@example.org
(via)
Added a -f
flag to the pgp-expiry-monitor tool.
It takes the fingerprint of a PGP key and looks it up on keys.openpgp.org to get the keyfile to verify.
% pgp-expiry-monitor -f 401F1D483C69BF624364CC01E9A68DCFA3A54203 -v
Key A3A54203 (401f1d483c69bf624364cc01e9a68dcfa3a54203) expires on 2030-04-13
Key 29A48884 (1e8838bdcf9adf702496866f6baf170e29a48884) expires on 2025-10-15
Key B645E283 (47122b88b77ece545effb494498ea9eab645e283) expires on 2025-11-17
Key 93DDE912 (2f21f0dd9af127d61363423d4099876b93dde912) expires on 2027-04-24
Key 0240ACAF (a1f4c70962f89c2e628e8f05d29a32fd0240acaf) expires on 2026-04-09
Key 0B691623 (0d0bc31f58b8d18cb97c31eeebd187b60b691623) expires on 2027-04-13
Key 3AB76067 (43a83177a4ec64a62bae1ac77d779e883ab76067) expires on 2026-04-09
Key 7AE809A1 (9a6d5dbde2703d7c54806f1b5acb66c47ae809a1) expires on 2027-04-13
Thursday, 17. April 2025 Week 16
Hallucinated package names fuel 'slopsquatting'.
All that's required is to create a malicious software package under a hallucinated package name and then upload the bad package to a package registry or index like PyPI or npm for distribution.
Thereafter, when an AI code assistant re-hallucinates the co-opted name, the process of installing dependencies and executing the code will run the malware.
(via)
Monday, 14. April 2025 Week 16
To ensure I don't forget to rotate/extend one of the subkeys of my PGP key, I created a little monitoring tool.
I wanted something that reminds me well before my published PGP key shows sign of expiry.
And I wanted it built in a way so it can be used in a simple cronjob to continuously nag me until the expiring key has been replaced. 😈
So pgp-expiry-monitor was born.
It takes two parameters, the URL of a PGP key and the number of days in advance it should start warning.
If all is fine and the PGP key does not contain any expiring keys, it returns without any output.
Thus ideal for a cronjob.
Sunday, 13. April 2025 Week 15
Discovered a very helpful debugging utility: GPG/PGP Decoder
The hosted version helps to quickly find out which subkey was used to sign a message.
I used it to check that this signature contains the fingerprint and ID of my new subkey 🔐
One of my yearly digital routines is to update my GPG key.
Part of this involves adding new ECC subkeys (ECDH and EdDSA).
These are the commands I used this time (so I don't have to look them up again next year).
% gpg --edit-key 401F1D483C69BF624364CC01E9A68DCFA3A54203
gpg> addkey
Select number 10 ECC signing
Select number 1 Curve 25519
Select a validity of 2y
gpg> addkey
Select number 12 ECC encryption
Select number 1 Curve 25519
Select a validity of 2y
gpg> save
After this the new subkeys are available and the updated public key can be exported and published.
Tuesday, 8. April 2025 Week 15
TIL: With iOS 18 a new feature was added to lock or hide apps.
Apps can be locked so that they require the passcode or FaceID to be opened.
And they also can be hidden so that they no longer appear on the homescreen.
How to lock, hide, and unhide an app on iPhone or iPad | Apple Support
Lock or hide an app on iPhone - Apple Support
(via)
Sunday, 6. April 2025 Week 14
zkbro discovered the nice Blanket web version of the Blanket Gnome/Linux app.
Provides you with a selection of ambient sounds.
Ranging from Nature over Travel, Interiors to Pink/White Noise.
Saturday, 5. April 2025 Week 14
50 ways to rest – Nicola Jane Hobbs
For anyone else who is in a season of their life where naps and hot baths and yoga classes are inaccessible, we can still rest.
We might not be able to get the rest we truly need, but we can find little pockets of respite among the demands and responsibilities of our lives.
(via)
Friday, 28. March 2025 Week 13
Hubble explores the universe 24 hours a day, 7 days a week.
That means it has observed some fascinating cosmic wonder every day of the year, including on your birthday.
What did Hubble look at on your birthday?
Enter the month and date below to find out!
What Did Hubble See on Your Birthday? - NASA Science
My birthday picture is of the Whirlpool Galaxy:
(via)
Wednesday, 26. March 2025 Week 13
no hello - please don't say just hello in chat
(via)
Dione - Rewinder
Monday, 17. March 2025 Week 12
Saw this Blog Questions Challenge about Travel Adventures and it piqued my interest.
- What's the silliest souvenir you've ever brought back from a trip?
- If you could teleport anywhere right now, for a day trip, where would you go?
- What's the weirdest food you've ever tried while traveling?
- What's the most memorable "wrong turn" you've taken on an adventure?
What's the silliest souvenir you've ever brought back from a trip?
More stupid than silly. On my way to Australia, I bought some very nice honey in Mauritius.
It promptly got confiscated by the Australian Border Force as their biosecurity does not allow the import of honey.
If you could teleport anywhere right now, for a day trip, where would you go?
Off the top of my head this would be Île des Pins in New Caledonia.
I spent two very nice days there in 2018 while doing an extended New Caledonia weekend trip during my last rotation in Sydney.
What's the weirdest food you've ever tried while traveling?
Probably crocodile. This was in 2013 while traveling in Australia.
There was a australian game meat BBQ organized for us tourists, and various meats could be tasted.
Didn't particularly like the crocodile, it tasted a lot like chicken.
The hosts explained that crocodile usually tastes like the thing it eats, and these ones were fed with chicken, cue them tasting like chicken.
What's the most memorable "wrong turn" you've taken on an adventure?
While traveling by train to Amsterdam, somewhere outside Frankfurt there was a problem with the tracks.
The ICE I was on, returned halfway to Frankfurt and then used a very long but scenic route along the Rhine river to reach Koeln.
Overall the journey to Amsterdam took 4 hours longer than planned, but we got to see some very pitoresque villages along the river.
(via)
Sunday, 16. March 2025 Week 11
How to write exceptional documentation
(via)
Wednesday, 12. March 2025 Week 11
I recently tried out Claude Code for both some personal project as well as some work project.
Was very impressed how far the AI coding assistants have come already.
Looks like a powerful tool when used by an experienced software engineer.
I've been using Claude Code for a couple of days, and it has been absolutely ruthless in chewing through legacy bugs in my gnarly old code base. It's like a wood chipper fueled by dollars. It can power through shockingly impressive tasks, using nothing but chat. [...]
Claude Code's form factor is clunky as hell, it has no multimodal support, and it's hard to juggle with other tools. But it doesn't matter. It might look antiquated but it makes Cursor, Windsurf, Augment and the rest of the lot (yeah, ours too, and Copilot, let's be honest) FEEL antiquated.
— Steve Yegge, who works on Cody at Sourcegraph
(via)
Saturday, 8. March 2025 Week 10
Deborah De Luca SUNRISE SET
Friday, 7. March 2025 Week 10
If your content is only on social media, I'm not going to see it by Cory Dransfeldt.
If you only post on social media, I won't see it.
If you don't have an RSS feed, I won't follow it, I won't subscribe to it.
I don't want want your app because I don't want a homescreen full of apps for publications and platforms.
I don't have a fear of missing out.
I am missing out.
I've come to terms with that.
Algorithms can be a convenient means of surfacing relevant content.
They can be.
But those algorithms are tailored by platform operators whose aims are (very) often not aligned with yours.
They tailor content discovery purely to keep you hooked.
Eyeballs to ads, money to shareholders.
Or as commented on by Mike Sass:
Same same. Just get an RSS feed, and stop relying on the hegemonic platform silos.
(via)
Wednesday, 5. March 2025 Week 10
Tmux - the essentials is a concise article by David Winter giving a gentle introduction to the tmux terminal multiplexer.
tmux
create a new tmux session
tmux ls
list any existing tmux sessions
tmux a
reattach to the last open tmux session
ctrl
+ b
the default tmux command prefix
prefix
+ d
detach from current tmux session
prefix
+ c
create a new window
prefix
+ 0
-9
to switch to the numbered window
prefix
+ ,
rename the existing window
prefix
+ %
split the current pane into two vertical panes, left and right
prefix
+ "
split the current pane into two horizontal panes, top and bottom
prefix
+ q
view numbered panes for current window
prefix
+ q
, 0
-9
switch to pane immediately after displaying pane numbers
prefix
+ z
to zoom and unzoom
(via)
Friday, 28. February 2025 Week 9
Jan-Piet Mens wrote up a short note explaining how to sign Git commits using an SSH key. It also includes a short guide how to setup your GitHub account to recognize the SSH signing key.
$ git config --global user.signingkey ~/.ssh/key_file.pub
$ git config --global gpg.format ssh
$ git config --global commit.gpgsign true
$ git config --global tag.gpgsign true
Wednesday, 26. February 2025 Week 9
In SPACE Framework: 5 Metrics That Actually Work, Csaba Okrona explains the five dimensions of the SPACE framework for developer productivity. For each dimension he presents examples of real-life indicators.
Satisfaction and Well-being: The Foundation
- Work-life balance metrics (after-hours commits, weekend work patterns)
- Team survey responses about job satisfaction
- Voluntary overtime trends
- Project ownership satisfaction
- Learning and growth opportunities
Performance: Outcomes Over Output
- Feature adoption rates
- Customer impact metrics
- System reliability improvements
- Technical debt reduction impact
- Time-to-value for new features
Activity: The Daily Reality
- Time distribution across different types of work
- Code review participation patterns
- Documentation contributions
- Technical design involvement
- Mentorship and knowledge sharing activities
Communication and Collaboration: The Force Multiplier
- Code review response times
- Cross-team collaboration frequency
- Knowledge sharing effectiveness
- Documentation quality and usage
- Meeting efficiency ratings
Efficiency and Flow: The Productivity Engine
- Time blocked on dependencies
- Context switching frequency
- Deployment pipeline efficiency
- Build time trends
- Interruption patterns
Tuesday, 25. February 2025 Week 9
How Core Git Developers Configure Git
What `git config` settings should be defaults by now? Here are some settings that even the core developers change.
TLDR
# clearly makes git better
[column]
ui = auto
[branch]
sort = -committerdate
[tag]
sort = version:refname
[init]
defaultBranch = main
[diff]
algorithm = histogram
colorMoved = plain
mnemonicPrefix = true
renames = true
[push]
default = simple
autoSetupRemote = true
followTags = true
[fetch]
prune = true
pruneTags = true
all = true
# why the hell not?
[help]
autocorrect = prompt
[commit]
verbose = true
[rerere]
enabled = true
autoupdate = true
[core]
excludesfile = ~/.gitignore
[rebase]
autoSquash = true
autoStash = true
updateRefs = true
# a matter of taste (uncomment if you dare)
[core]
# fsmonitor = true
# untrackedCache = true
[merge]
# (just 'diff3' if git version < 2.3)
# conflictstyle = zdiff3
[pull]
# rebase = true
(via)
Sunday, 23. February 2025 Week 8
There's a corner of the Internet where people have been reclaiming their digital independence by hosting their own websites and promoting the idea of owning your own content—it's called the IndieWeb.
This movement promotes the idea that individuals should control their own digital presence through personal websites.
But every time this topic comes up in online discussions, someone inevitably claims that the IndieWeb hasn't taken off!
The IndieWeb doesn't need to go mainstream to be meaningful.
It's a celebration of a more personal, decentralised, and creative world wide web.
And for those of us who still care about these values, it is already meaningful.
The IndieWeb Doesn't Need to "Take Off" — Susam Pal
Nice article by Mike Sass explaining how he added shark fins to the <hr> on his site: Shark Fin <hr>
(via)
Wednesday, 19. February 2025 Week 8
MapCanvas creates beautiful map portraits.
You can enter any city and have it generate minimal custom maps.
And if inclined also order them as printouts and framed posters.
(via)
Tuesday, 18. February 2025 Week 8
Name your own gulf by MapQuest.
(via)
Sunday, 16. February 2025 Week 7
Finding Flow: Escaping Digital Distractions Through Deep Work and Slow Living – a personal guide to reclaiming focus in the age of endless temptation.
— Simon Späti
The Stolen Focus: Why You Can’t Pay Attention book by Johann Hari which inspired this article goes on the /reading list 📖
Saturday, 15. February 2025 Week 7
“I urge you to please notice when you are happy, and exclaim or murmur or think at some point, ‘If this isn’t nice, I don’t know what is.’”
— Kurt Vonnegut
(via)
It’s a simple two-step process:
- First, notice. Notice that things are good. Notice the feeling of pleasure. Notice today’s perfect temperature. Notice the art project your child is sharing with you.
- Then, say thank you. To the person you’re with, for the life you live, to the reality you’ve been blessed with, to the God you feel must be there.
And if none of those feel like the right objects of gratitude, that’s okay too. Simply murmur to yourself, ‘If this isn’t nice, I don’t know what is.’
(via)
Friday, 14. February 2025 Week 7
Ruben Schade published a post with answers to the terminal survey that Julia Evans recently conducted.
Inspired by this, below are my answers to these questions.
- How long have you been using the terminal?
-
Since 2002.
- Which shells do you use?
-
zsh (on my laptop/workstation), bash (on servers).
- Do you use your system’s default shell?
-
No and yes (was using zsh before macOS made it the default).
- What OS do you use a Unix terminal on?
-
macOS, Linux.
- What Terminal emulators do you use?
-
Terminal.app, GNOME Terminal.
- Do you use a terminal-based editor?
-
Yes, vim.
- Do you customise your terminal’s colour scheme?
-
Yes, my current scheme evolved from the 2003 Gentoo default scheme.
- If your terminal get messed up, what do you do?
-
Run reset
.
- What terminal settings do you customise?
-
PATH
, environment variables, alias, the prompt, custom functions, history, syntax-highlighting.
- Do you use job control?
-
No. Tried it sporadically, but not really my thing, rather using a terminal multiplexer.
- Do you manage your files using the terminal, or a GUI file manager?
-
Basic local operations mostly in the GUI. Anything advanced, automated, remote or mass-operations in the terminal.
- Which of these environment variables have you set intentionally?
-
PATH
, EDITOR
, and some others:
% grep export zshrc/zshrc|sed -e 's/=.*//'
export GIT_AUTHOR_NAME
export GIT_COMMITTER_NAME
export TZ
export PERL5LIB
export GOPATH
export LOCKPRG
export SAM_CLI_TELEMETRY
export JAVA_HOME
export RSYNC_RSH
export CVS_RSH
export EDITOR
export USE_EDITOR
export CVSEDITOR
export BROWSER
export LESS
export HOMEBREW_NO_ANALYTICS
export WWW_BROWSER
- Do you use vi mode in your shell?
-
Yes.
- How do you navigate files in less?
-
/
to search, then mostly spacebar to scroll and the occasional j
/k
.
- How do you use pipes?
-
sort
, uniq
, tr
, sed
, find
with xargs
to parallelise, and awk
.
- Do you use a terminal multiplexer?
-
screen
(still trying to migrate to tmux
, eventually).
- What’s the most frustrating thing about using the terminal for you?
-
Scripts assuming GNU specific parameters/tools on macOS.
Wednesday, 12. February 2025 Week 7
Whenever somebody sends you a pull request, give them commit access to your project.
The Pull Request Hack
Tuesday, 11. February 2025 Week 7
In the Conventional Commits article, Mike Perham explains how git commit templating can be used to support commit message consistency.
The key part is the template
statement in the ~/.gitconfig
:
[commit]
template = ~/.gitmessage
This references the ~/.gitmessage
file which is used as template for every new commit message.
For Conventional Commits, the following can be useful:
# type(subsystem): short description
### Types
# feat: A new feature
# fix: A bug fix
# docs: Documentation only changes
# build: Changes that affect the build system or external dependencies
# ci: Changes to our CI configuration files and scripts
# perf: A code change that improves performance
# refactor: A code change that neither fixes a bug nor adds a feature
# style: Changes that do not affect the meaning of the code
# test: Adding missing tests or correcting existing tests
Sunday, 9. February 2025 Week 6
In Re-ordering Git commits, Cassidy Williams explains nicely how interactive Git rebasing can be used to re-order Git commits.
TL;DR:
git rebase -i HEAD~4
Friday, 31. January 2025 Week 5
In The beauty of goofy diagrams Einenlum explains how a diagram drawn in a more casual style, can support conveying information easier to the audience.
The thing is, I’m more and more convinced that the style of a presentation matters.
Even before looking at the content itself, the style puts you in a particular mood.
[...]
To me, although they convey the same content, the first one creates a sense of seriousness and gravity.
It feels like only clever people can understand it.
I’m already a bit tense and I feel like I need to focus.
I almost take a deep breath and say to myself “okay, you can do it”.
I feel dumb but I feel that with enough curiosity and hard work I can understand the content.
The second one, on the other hand, makes me feel more relaxed and probably more curious.
The topic seems easier to grasp and I’m quite confident I can understand it.
It doesn’t mean it brings more clarity: the first diagram is actually probably clearer but the content has more chance of reaching my brain with the second one because I’m more open to it.
(via)
Tuesday, 28. January 2025 Week 5
I upgraded the blog to the newest Jekyll 4.4.0 which was released yesterday.
Unfortunately this first resulted in the following segfault while running jekyll build
🙈
/usr/gem/gems/sass-embedded-1.83.4/ext/sass/embedded_sass_pb.rb:11: [BUG] Segmentation fault at 0x0000000000004410
ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [x86_64-linux-musl]
Turns out that this is a known problem of the google-protobuf gem (which is used by jekyll-sass-converter which is part of the default Jekyll).
Luckily there is a workaround.
Adding the following to my Gemfile
fixed it 🎉
gem 'google-protobuf', force_ruby_platform: true if RUBY_PLATFORM.include?('linux-musl')
Saturday, 25. January 2025 Week 4
Robert Birming maintains a very nice Blog Inspiration page.
It contains a collection of articles and resources providing inspiration for blogging.
Ranging from inspiring stories why people blog, over blog directories to accessibility and design resources.
(via)
One more for the list of blog directories: blogroll.club — A Blog Directory
A space dedicated to curating a diverse and comprehensive collection of blogs, and personal sites across the web.
The goal is to foster a community where content is available for anyone and everyone.
Everything about this site is hand-crafted by two human beings: JCProbably and Lou Plummer.
Friday, 24. January 2025 Week 4
Russel Baylis shares this helpful article about their learnings regarding improving the working environment to reduce eye strain.
I work from home everyday, I am susceptible to eye strain, eye pain, and dizziness. Having a working environment that’s as easy on my eyes as possible is of critical importance. I'd like to share what I've learned over the years in hopes that it can be helpful to you if you work from home, and like many, have experienced WFH eye strain.
- An even, diffused lighting environment is best for the eyes
- When it comes to light brightness, too much is just as problematic as too little
- Use natural light wherever possible
- Quality of artificial light matters
- The best lighting for camera, is not necessarily the best lighting for ergonomics
- Even the perfect lighting environment will fatigue you — take breaks, and take care of yourself
(via)
Tuesday, 14. January 2025 Week 3
When connecting to an older SSH device the following 'unable to negotiate' errors occurred.
They indicate that my client-side config does not allow the (old/obsolete) methods offered by the device.
Unable to negotiate with 10.222.23.2 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1
This can be fixed by enabling one of the old key exchange methods:
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 10.222.23.2
Unable to negotiate with 10.222.23.2 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
This can be fixed by additionally enabling one of the old host key types:
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-rsa 10.222.23.2
Sunday, 12. January 2025 Week 2
terra tauri quotes from the Platform Engineering book:
If you only promote people who solve big technical problems, you’re going to have a hard time retaining the people who do the work to smooth out the usability edges, actively listen to the customer teams, and adjust their work priorities to fix the stuff that is causing the most pain.
So, look closely at what you are celebrating, compensating, and promoting, and make sure you are including work that makes the product better, whatever that looks like, even if it isn’t the hardest technical bits.
You may even want to reevaluate your engineering ladder to make sure the expectations at each level reflect all of the skills you now demand.
Remember, this is a cultural change, and cultural changes that don’t involve changes to what is valued (as seen by what you recognize and reward) are destined to fail.
Looks like this might be a candidate for my /reading list.
(via)
Flexoki — a great looking color scheme inspired by paper and ink colors.
Flexoki is an inky color scheme for prose and code.
Flexoki is designed for reading and writing on digital screens.
It is inspired by analog inks and warm shades of paper.
Flexoki is minimalistic and high-contrast.
The colors are calibrated for legibility and perceptual balance across devices and when switching between light and dark modes.
Full Flexoki palette.
(via)
Monday, 6. January 2025 Week 2
Manu Moreale: Blogging: you’re doing it right
That’s all you need to know.
If you’re doing it, you’re doing it right.
If you have decided to reclaim ownership of your place on the web, you’re doing it right.
It doesn’t matter how you did it.
[...]
What matters is that you’re doing it.
Your effort is commendable.
You deserve to be thanked so, thank you.
(via)
Sunday, 5. January 2025 Week 1
My new favorite type of CAPTCHA: DOOM CAPTCHA
(via)
Thursday, 2. January 2025 Week 1
During casual surfing I found this article from Brain Baker explaining their revised backup strategy.
The most interesting part was the brief mention of PhotoSync used to sync photos to their Linux system.
This came just at the right moment, as I was exploring options how to get photos from an iPhone to a Linux machine as seemlessly as possible.
Previous attempts with ifuse/libimobiledevice didn't work reliably, and uploading the photos to iCloud and somehow scraping/downloading them again doesn't look very future-proof either.
Thus very happy about PhotoSync which runs on the iPhone and talks a plethora of protocols on the other side (in my case I opted for SFTP).
It is a freemium app with paid in-app purchase for the pro/premium features (raw photo sync and autosync in the background).
Based on the good reviews and initial functionality testing of the free version I decided to fo for the one-time purchase to unlock the premium features.
I did setup a chrooted SFTP user to receive the photos on the Linux machine.
Then configured this SFTP access in the app which worked seamless.
So far the manual sync of existing photos and videos worked reliably over WiFi.
And I'm looking forward for the geofence-triggered autosync to run 🤞🏻
Wednesday, 1. January 2025 Week 1
In this article, MacKenzie builds up a config, script and systemd file to respectfully fetch an RSS feed with curl.
It uses the following as base config for curl:
fail
compressed
max-time = 30
no-progress-meter
alt-svc = alt-svc-cache.txt
etag-compare = tech.CitizenLab.rss.etag
etag-save = tech.CitizenLab.rss.etag
output = tech.CitizenLab.rss.xml
time-cond = "Tue, 05 Nov 2024 15:00:35 GMT"
write-out = "%output{tech.CitizenLab.rss.lm}%header{last-modified}"
url = "https://citizenlab.ca/feed/"
next
Then adds conditional checks for the etag-compare
and time-cond
directives, so they are only added if the corresponding file contains a non-empty value.
The last part is then to use a systemd Timer file with OnUnitInactiveSec=1hour
, so that the command will be run one hour after the previous run finished.