ingo's blog
software curiosities in development and engineering
- 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.
- 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).
- 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.
- 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.
- 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.
- 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.
- 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