traceroute uses UDP by default, not ICMP

At least on Linux. Don’t believe me? Run tcpdump -nn -i <interface> 'host example.com' in one shell and traceroute example.com in another. tcpdump will pick up all 3 of {ICMP, UDP, TCP}, and on my machine the pattern is clear: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20:58:47.187086 IP 1.2.3.4.41369 > 93.184.216.34.33434: UDP, length 32 20:58:47.187160 IP 1.2.3.4.39830 > 93....

November 29, 2023

Cloud translation is more expensive than I thought

Example from yesterday’s news. Count ’em yourself – there’s 76 of them there. Mass i18n efforts like this are I think an underappreciated benefit of what static site generators like Hugo can give you. Actually, especialy Hugo – it’s multi-language support is very good, like darn near everything about the platform once you get past the initial learning curve. Another underappreciated benefit: When building HTML pages is fast, you can afford to build a lot of them....

November 28, 2023

Pomodoros and leverage ratios

I love pomodoros 🍅. But I have to admit, most of the time when I reach for them, it’s because I"m already having trouble staying on task with whatever I’m doing. I generally don’t get a lot of value out of the ’longer break’ option, a steady beat of work and breaks is enough for me. In those circumstances I often find solace in the idea that a well-constructed pomodoro creates a certain lower bound on my work-to-play leverage ratio....

November 27, 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....

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....

November 25, 2023

The Rule of Four

A communication heuristic, optimized for asynchronous communication of detailed concepts between human beings. Not really a TIL, I’ve been sitting on this one for a while. Rationale Existence “proof” Our short term memory can hold at best about 7 +/- 2 chunks of information at a time. Start with the lower end of that: 5 chunks. Assume that whatever someone is “really” trying to do takes up 1 of those 5....

November 24, 2023

Hugo's Secret RSS Feeds

This blog now has a swanky new RSS feed button right on the front page, courtesy of the well-designed PaperMod theme powering things on the backend. Hugo newbies often don’t know that Hugo usually generates these RSS feeds automatically for new websites. You usually have to go out of your way to turn them off. Example: https://andrew-quinn.me/index.xml exists, and has existed for quite some time, without me needing to lift a finger (although I might want to put a button on my home site too!...

November 23, 2023

Hosting on Azure? Don't forget to declare UTF-8

For a long time after moving my website from Netlify to Azure, none of my fancy emoji or weird umlaut characters would display properly. Today I fixed that by popping back into the the Hugo theme I built off of minimum-viable-hugo and adding 1 <meta charset="utf-8"> to themes/minimum-viable-hugo/layouts/index.html and themes/minimum-viable-hugo/layouts/partial/head.html. (There’s probably a way to intimidate Azure Static Web Apps into using UTF-8 by default too, but I didn’t bother to look....

November 22, 2023

Git controlled, user-scoped, recoverable-after-install `systemd` services and timers

TL;DR systemd timers are a serious upgrade from cron. Accept no substitutes. ~/.config/systemd/user lets you run user-scoped timers and services, in a place where you can version control them with Git easily, and even keep a handy backup with chezmoi! Story We had the great honor of having our friend Tri Phung (LinkedIn, GitHub) over for dinner yesterday. As is often the case the conversation turned to work. I’ve been on a kick of using Github Actions remotely and shell scripts + systemd services/timers locally to sketch out some ideas for new websites in Hugo....

November 21, 2023

That damned Debian 10 one-liner I always need to let me `sudo`

1 2 # ⚠️: Reboots your VM. su -c "$(whereis adduser | awk '{print $2}') $(whoami) sudo && $(whereis reboot | awk '{print $2}')" In all its glory! For Debian 10 and up, because Debian 10 is where the sysv to systemd conversion became totalizing. Let’s break down quickly why each part of this is needed: Since we are trying to add ourselves to the sudo group right now, we obviously can’t use sudo....

November 20, 2023