Tom
gagor.pro
Tom
@gagor.pro
A passionate day-to-day DevOps practitioner
Check on: https://gagor.pro
My journey of integrating IndieWeb principles into my Hugo blog-from microformats to Brid.gy syndication and building a custom Webmention renderer.
#blog #Hugo #IndieWeb (https://gagor.pro/2026/01/my-indieweb-journey-a-guide-to-posse-on-a-hugo-static-site/)
January 27, 2026 at 7:36 PM
Treating your personal website like a garden you tend continuously, not as a finished construction, but rather cultivated, authentic fragmented of web. #blog #Hugo #IndieWeb (https://gagor.pro/2026/01/digital-gardening/)
Digital Gardening
Treating your personal website like a garden you tend continuously, not as a finished construction, but rather cultivated, authentic fragmented of web. #blog #Hugo #IndieWeb
gagor.pro
January 21, 2026 at 8:24 PM
Disable the pager for apt search
I’m not sure when it happened, but for some time now, `apt search` has been using a pager (probably `less`) to display results. Whatever the reasoning behind this change, it just irritates me. After some digging, I found a few ways to deal with it. ## Don’t use `apt search`# A suboptimal solution is to rely on the older `apt-cache` command for searching, as it doesn’t use a pager. So, instead of calling: ~/2026/01/disable-the-pager-for-apt-search/ apt search kitty I could do this: ~/2026/01/disable-the-pager-for-apt-search/ apt-cache search kitty It works, but it requires a few more characters to type. I write enough time over the day writing, to waste time on typing extra characters, so that’s a no for me 😉 ## Disable with an environment variable# Another option I found was to use an environment variable: ~/2026/01/disable-the-pager-for-apt-search/ PAGER=cat apt search kitty But come on! It’s even more to write. ## Reconfigure `apt` to disable the pager permanently# This one took me a while to find, as it’s not easy to find docs for that. You can create a configuration file to disable the pager for `apt` entirely. This is the best way to do it, as it disables the pager without affecting other features like colorized output. ~/2026/01/disable-the-pager-for-apt-search/ sudo tee /etc/apt/apt.conf.d/99-no-pager > /dev/null << EOF Binary::apt::Pager "false"; EOF Now, `apt search` will print directly to the terminal, just like it used to (and in color!). * * * Enjoyed this post?
gagor.pro
January 19, 2026 at 4:49 PM
A developer's journey of building a recursive descent parser in Go, from basic concepts to tackling left recursion with Packrat memoization.
https://gagor.pro/2026/0...

#blog #Go #Programming
January 5, 2026 at 8:47 AM
Transmission on Ubuntu may be denied access to localized Downloads directories due to AppArmor profiles expecting English folder names. Here’s how to fix it.
https://gagor.pro/2025/1...

#blog #Security #Ubuntu
December 27, 2025 at 8:37 AM
Learn how to squash Docker images using Buildx to create smaller, more efficient images by consolidating layers.
https://gagor.pro/2025/1...

#blog #Best Practices #DevOps #Docker #Linux
December 25, 2025 at 8:39 AM
Responding in anger undermines leadership. Learn how managing emotions leads to better decisions and healthier team dynamics.
https://gagor.pro/2025/1...

#blog #Best Practices #Leadership #People
December 25, 2025 at 8:39 AM
Fix ZSH 'illegal modifier' errors with Git Conventional Commits by disabling the `NO_BANG_HIST` option.
gagor.pro/2025/12/zsh-...

#blog #linux #macos #zsh #git
Zsh 'illegal modifier' with Git Conventional Commits
Fix ZSH ‘illegal modifier’ errors with Git Conventional Commits by disabling the NO_BANG_HIST option.
gagor.pro
December 20, 2025 at 4:19 PM
I bend Windows to knees, so it use UTC in dual boot setup with Linux.
gagor.pro/2025/12/i-ma...

#blog #bestpractices #linux #windows
I made Windows use UTC with Linux dual boot
Configure Windows to use UTC for the hardware clock when dual-booting with Linux, avoiding time synchronization issues and maintaining Linux defaults.
gagor.pro
December 15, 2025 at 4:21 PM
A detailed guide on shucking WD Elements 20TB drives, including testing, performance benchmarks, and stress testing.
https://gagor.pro/2025/1...

#blog
November 30, 2025 at 5:19 PM
A story of how I bought a digital photo frame, and how I created a tool to generate miniatures of my photo collection to fit them all on the device.
gagor.pro/2025/11/gene...

#blog #frameo #photos #go
gagor.pro
November 28, 2025 at 5:28 PM
Reflections and practical tips from 20 years using Getting Things Done, plus a short workshop plan for leaders who want actionable routines
gagor.pro/2025/11/20-y...

#blog #gtd #workshop
20 years of Getting Things Done
Reflections and practical tips from 20 years using Getting Things Done, plus a short workshop plan for leaders who want actionable routines.
gagor.pro
November 28, 2025 at 5:27 PM
Learn how to create beautiful slide decks with Markdown and Marp, a simple and powerful tool for presentations.
https://gagor.pro/2025/1...

#blog
November 7, 2025 at 9:21 PM
New post on how I use Gemini CLI on my rules:

gagor.pro/2025/10/runn...

#blog #Gemini #ai
gagor.pro
November 1, 2025 at 9:34 AM
Learn how to add an `llms.txt` file to your Hugo blog to make it more visible to AI agents and improve Generative Engine Optimization (GEO).
gagor.pro/2025/10/how-...

#blog #ai #llm #hugo
How to add llms.txt to a Hugo Blog
Learn how to add an llms.txt file to your Hugo blog to make it more visible to AI agents and improve Generative Engine Optimization (GEO).
gagor.pro
October 16, 2025 at 5:36 PM
Just finished a book, check my review: https://gagor.pro/book/2...

#blog #books
October 6, 2025 at 5:19 PM
October 5, 2025 at 6:35 PM
October 5, 2025 at 6:35 PM
October 5, 2025 at 6:35 PM
Backup from broken NVMe drive with ddrescue
I was preparing to move data from my old PC to the new one. Just wanted to backup one of my NVMe drives but when I tried standard `dd`, it failed: Calling standard dd root@box:~# dd if=/dev/nvme1n1 of=/storage/backup/disk.img obs=1M dd: error reading '/dev/nvme1n1': Input/output error ... It was my second drive, which I do not care that much but still wanted to make a backup so I could restore what’s possible on new system. I started looking for option to force `dd` to skip problematic bytes/blocks - whatever possible - and that’s how I found `ddrescue`1. I heard about it, but I didn’t had occasion to use it before. Calling ddrescue root@box:~# ddrescue -f -n /dev/nvme1n1 /storage/backup/file.img /storage/backup/file.log GNU ddrescue 1.27 Press Ctrl-C to interrupt ipos: 1024 GB, non-trimmed: 233472 B, current rate: 33996 kB/s opos: 1024 GB, non-scraped: 0 B, average rate: 258 MB/s non-tried: 92602 kB, bad-sector: 0 B, error rate: 16384 B/s rescued: 1024 GB, bad areas: 0, run time: 1h 6m 4s pct rescued: 99.99%, read errors: 9, remaining time: 1s time since last successful read: 0s Copying non-tried blocks... Pass 1 (forwards) ipos: 856031 kB, non-trimmed: 385024 B, current rate: 10264 kB/s opos: 856031 kB, non-scraped: 0 B, average rate: 258 MB/s non-tried: 6619 kB, bad-sector: 0 B, error rate: 24576 B/s rescued: 1024 GB, bad areas: 0, run time: 1h 6m 6s pct rescued: 99.99%, read errors: 13, remaining time: 1s time since last successful read: 0s Copying non-tried blocks... Pass 2 (backwards) ipos: 917962 kB, non-trimmed: 471040 B, current rate: 60645 kB/s opos: 917962 kB, non-scraped: 0 B, average rate: 258 MB/s non-tried: 393216 B, bad-sector: 0 B, error rate: 106 kB/s rescued: 1024 GB, bad areas: 0, run time: 1h 6m 7s pct rescued: 99.99%, read errors: 15, remaining time: 1s time since last successful read: 0s Copying non-tried blocks... Pass 4 (backwards) ipos: 1024 GB, non-trimmed: 577536 B, current rate: 60645 kB/s opos: 1024 GB, non-scraped: 0 B, average rate: 258 MB/s non-tried: 0 B, bad-sector: 0 B, error rate: 106 kB/s rescued: 1024 GB, bad areas: 0, run time: 1h 6m 7s pct rescued: 99.99%, read errors: 19, remaining time: 1s time since last successful read: 0s Copying non-tried blocks... Pass 5 (forwards) ipos: 1024 GB, non-trimmed: 0 B, current rate: 81920 B/s opos: 1024 GB, non-scraped: 233472 B, average rate: 258 MB/s non-tried: 0 B, bad-sector: 16384 B, error rate: 5632 B/s rescued: 1024 GB, bad areas: 32, run time: 1h 6m 8s pct rescued: 99.99%, read errors: 51, remaining time: 1s time since last successful read: n/a Trimming failed blocks... (forwards) Finished Now I had image. It wasn’t fully correct because of failed reads, but at least I didn’t need to restart `dd` multiple times. I was able to fix filesystem with `fsck`, then I had to reinstall few packages to recreate broken files and that’s it. * * * Enjoyed? * * * 1. https://www.gnu.org/software/ddrescue/ external link ↩︎
gagor.pro
January 10, 2026 at 10:35 PM