Git aliases for fun and profit

haskell-kata’s Quickstart now has this neat little ditty at the start: 1 2 git config --local alias.build '!sh -c \'for file in *.hs; do ghc -o "${file%.hs}-bin" "$file"; done\'' git build Git is the gift that keeps on giving. I was on the hunt for a subdirectory-scoped alias, and I just discovered this incredibly flexible way to create new Git subcommands. History: 2 years ago I read through the 1200 page behemoth Haskell Programming from First Principles. (Recommended!) I walked out of that with some 1300 Anki flashcards that I have been chewing through ever since. ...

December 3, 2023

Outage postmortem: Why didn't SelkoArchive get today's news?

For some reason, my daily archive of Finland’s “clear news” broadcast didn’t work today. Why not? TL;DR: Just a Git snafu. Quick recap of the archive: There are 3 Git repos: selkouutiset-scrape simply scrapes the HTML https://yle.fi/selkouutiset at 6 PM every day via a Github Action. selkouutiset-scrape-cleaned pulls in scrape and turns it into a stack of translated, properly-named Markdown files, by the magic of shell scripts, systemd timers, and a tiny VM in a datacenter somewhere. selkouutiset-archive wraps scrape-cleaned into a comfy Hugo theme, again with the magic of systemd timers and a tiny VM, and publishes it to Github Pages. Which part of the chain broke? ...

December 1, 2023

One problem with user-scoped `systemd` timers

I’ve discovered one big downside of [putting systemd times into ~/.config/systemd/user/][1]: They stop running when you log out. Two ways around this problem: Bite the bullet, and install the timers into /etc/systemd/. This means giving up chezmoi version control, making the overall system more snowflake-y. I’m not crazy about it. Remote in with tmux, instead of ever logging out, just use C-b d to detach from the session. I’m going with #2. The lead developer of ktty is known not to like tmux, so there’s probably a way to detach long-running SSH sections inside of kitty itself – but I haven’t found it yet. Have you? ...

November 26, 2023

Promoting Blog Tag Reuse with `fzf`

Some more updates to the main repo of this TIL site today, in particular I have added a new fzf-tags.fish script. til uses this script to Scrapes all the YAML tags: frontmatter from all current Markdown posts, Puts me into a multi-select fzf menu containing them, and Puts anything I select into the tags: of the new blog post. Tags form natural breadcrumb trails throughout a blog as it grows organically over time. Many an afternoon have I spent reading one or two particular tags of interest from a prolific blog. But, if you don’t remember to reuse the tags in the first place, you’ll never build the trail in the first place. ...

November 25, 2023

No such thing as a Post-Push Hook

Tonight I was hacking away at some more little automations to make this TIL nice and presentable over at https://til.andrew-quinn.me/. Git has a wonderful system called “hooks” which live under .git/hooks/, come loaded with examples so you can remember how they all work, and – surprisingly – don’t contain a local post-push hook! There’s post-receive, but that expects to be able to run a script on the server side – not helpful when I’m pushing to one of Github’s many, many anonymous boxes. ...

November 18, 2023