ingo's blog
software curiosities in development and engineering site home

2024

14-Dec-2024 My use of command-line DSLs
An example of how my Git extensions help me maintaining a huge list of projects, especially through custom iterators that apply commands to a group of repositories as if it were one.
22-Nov-2024 Good CLIs are composable and extensible
Customization towards a productive shell environment can be hard. I identify two requirements for that.
19-Nov-2024 Git trailers to document project parameters
I automatically record system and tool version information in Git commit messages for better troubleshooting, leveraging Git trailers.
18-Nov-2024 Fat-shaming Linux app stores
I complain that both Snap and Flatpak require manual cleanup of old package versions, how that is too complex, and showcase my scripting solution.
15-Nov-2024 My workflow for signed letters
How my tooling lets me write a letter, add my signature, and produce a PDF that looks as if I had followed a classic analog workflow.
03-Nov-2024 Synology updates suck
A rant about updates on the Synology NAS and how it affected my customizations.
04-Oct-2024 Nextcloud side-by-side migration
My Nextcloud instance had to be moved to another server, and this worked very well due to their great admin tooling.
26-Sep-2024 Two approaches to file exclusions
A story of confusing backup file exclusion syntaxes in borgmatic, and how my knowledge of rsync's exclusions led me astray.
29-Mar-2024 Good documentation is priceless
Good documentation saves time and makes working a breeze; this becomes very apparent when having to work with poor documentation. Often it's the small things, like omissions and inconsistencies.
03-Mar-2024 versions-maven-plugin inconsistent interface
The Versions Maven Plugin is useful to manage dependency versions; unfortunately, its API is inconsistent and poorly discoverable.

2022

23-Jun-2022 The power of evolving abstractions
A short example of the evolution of my home-grown commands, climbing up the ladder of abstractions for greater reuse.
26-Apr-2022 Composing shell scripts
An example of my style of composing shell scripts via commands that take another command as command-line arguments, and a discussion of the benefits.
24-Apr-2022 One tool enables another enables new features
Turtles all the way down; short story of how one custom tool allowed me to quickly compose new functionality around update notifications, and in the process created yet another reusable tool.
18-Apr-2022 The curse of different regexp dialects
Lamenting the different regular expression capabilities and syntaxes in common Unix tools like Bash, sed, AWK, Perl, Vim, and how this is holding back an awesome technology.
08-Apr-2022 Fortuitous find of a compatibility bug leads to a new tool
Another short story of how a planned tool extension suddenly unearths a compatibility bug in AWK, the investigation of that prompts me to write a Git tool.
04-Apr-2022 Excursions in tool writing
Short story how a perceived need of a new shell script led to various small extensions and side quests, until coming full cycle and realizing the script isn't actually needed.
25-Mar-2022 Gmail inbox Atom feed with App password
Application tokens now need to be used for third party applications that want to access your Google account; I use that for an Atom feed of my Gmail inbox.
21-Mar-2022 ImageMagick multiple clones and compositions
How to do multiple parallel transformations of a source image and combine everything into one target image with both multiple and single ImageMagick invocation(s).

2020

22-Nov-2020 The odyssey of unison on a NAS
Trying to get a recent version of the unison file synchronizer tool running on a Synology DS220j NAS eventually proved futile, and exposed some weaknesses of the community-driven software ecosystem.
08-Apr-2020 Longevity of my notebook battery
After 7½ years, my original HP EliteBook 2170p battery finally died peacefully through reduced capacity, BIOS warning, and finally physical disintegration.

2019

03-Mar-2019 Testing a standalone Perl script
Good test coverage can be achieved without splitting a simple Perl script into separate modules, by masquerading it as a module, and combining two test libraries.

2014

03-Mar-2014 JSON is used for web apps because XML is not simple enough
Despite the stated goal of simplicity, XML and related standards are still too complex for serializing object hierarchies, so JSON is gaining ground here.

2013

06-Dec-2013 The Case of the broken mount.cifs in Ubuntu 13.10
A sudden mount error(13): Permission denied after upgrading to Ubuntu 13.10, my troubleshooting steps, and how I eventually found and fixed a small syntax issue.
05-Dec-2013 Upgrade woes - why does it have to be so uncertain
Recent (bad) experiences with the Ubuntu upgrade to 13.10 make me contemplate the difficulties of software upgrades in general.
22-Feb-2013 XML processing still hard in Groovy
A tale of woe and struggles with Groovy's XML processing APIs, mostly due to poor documentation.

2012

01-Oct-2012 Nasty Android bugs and no updates for old devices
A critique of the update policies of Google and Android handset makers in the light of a very annoying SMS problem and the recent USSD vulnerability.
10-Jul-2012 The fresh upgrade oxymoron in Linux Mint
A critique of the recommended upgrade mechanism of Linux Mint via a fresh OS install and data restore.
01-Jun-2012 Better Android app update mechanisms
Ideas to improve Android app updates by allowing rollback to previous versions and flagging app crashes on particular platforms.
31-May-2012 I want rollback for Android apps
A plea for a more sophisticated app management for Android SmartPhones (especially for phones with older Android versions) in Google Play, because I have been suffering from malfunctioning apps after a updating.
22-May-2012 Pentadactyl set filetype in external Vim editor based on URL
Determine the filetype / syntax for known sites (e.g. Wikis) based on the URL and pass that on to Vim when editing a field in the external editor via I_CTRL-I.
09-May-2012 No permissions on files created outside Cygwin with UAC active
Work around a strange Cygwin interaction with file permissions and UAC to get access permissions to files created outside of Cygwin.
29-Mar-2012 Put build number into Grails WAR manifest
Work around deficiencies in the Grails Maven plugin to get the Maven build version number included in the manifest of a Grail web application.
28-Mar-2012 FlexMojos minimized Flash Player run
Suppress work-inhibiting pop-ups of the Flash Player window when executing Flex tests through the Maven FlexMojos plugin by injecting a small batch wrapper via Maven configuration.

ingo's blog is licensed under Attribution-ShareAlike 4.0 International