All articles

Greybeards rise

How I unified my entire desktop under one vim colorscheme, iceberg, spanning terminal, prompt, i3, rofi, screensaver, and git. Consistency over aesthetics.

I just wanted PHP 8.2 (Composer had other ideas)

Create a Laravel 12 project targeting PHP 8.2 while running 8.4. Composer said no. This is the docker workaround, and the permission fix that followed.

Yet Another CLI framework

YA::CLI is a Perl CLI framework that eliminates boilerplate by auto-discovering subcommands, handling POD help pages, and using Moo roles — so you just write the logic.

Living on the edge: truncating the path on your PS1

How to build a zsh prompt that dynamically truncates long paths based on terminal width. Uses a custom precmd hook and Zig-Zag logic to keep PS1 clean.

Git rebase vs merge - there can be only one.

An analysis of Git rebase and merge as complementary tools, covering interactive rebasing, autosquashing, and how to maintain clean history during development and integration.

Workspace on Demand in i3wm

Build dynamic context-aware workspace groups in i3wm using Perl, AnyEvent::I3, and YAML config to switch between client, company, and personal contexts without losing state.

Bash-ing on nodejs: build your first CLI tool with Bash (or Zsh)

Why you should learn bash, zsh, and CLI tools like bc, awk, and sed before reaching for npm to build command-line utilities.

Mixtaping in 2025 – A Personal Build Log

Building an offline HTML mixtape with web components, custom video/audio players, and hidden tracks - a love letter rendered in code, delivered on USB.

Limiting tags when using git fetch

Use negative refspecs and tagOpt to filter out CI-generated tags when fetching from Git remotes, keeping your local repository clean.

Moving from single-line source files to deb822 source files

Migrate from single-line apt sources to deb822 format for better repository management, embedded GPG keys, and cleaner configuration on Debian systems.

A guide on how to configure multiple git identities or accounts

Learn how to manage multiple Git identities on one machine using SSH keys, git config, and custom wrapper scripts without hacking .ssh/config.

Docker to the rescue

Run perl CPAN modules in docker containers with MiniCPAN and cpm to avoid slow networks and system pollution

Managing my dotfiles with GNU Stow

organize and version your dotfiles using gnu stow to manage symlinks and keep your home directory clean

bum: 11 Years of Git, Wrapped in a Toolkit

Bum is a Git toolkit built from 11 years of shell scripts, aliases, and workflows covering branches, commits, stashing, and merging with minimal configuration.