All blogs / Dev tools / editors / IDEs
Andrew Quinn's TILs
Recent content on Andrew Quinn's TILs
Dev tools / editors / IDEsSoftware / engineering practiceAI / MLEssays / personal
- Posts
- 95 from 1 Jan 2001 to 17 Aug 2026
- Posting
- monthly (14 in the last year)
- Kind
- personal blog
- Feed
- https://til.andrew-quinn.me/index.xml
2026 12
- Don't use an LLM for your README.md
- Claude Max 20x plan as open source subsidy
- AI slop grenades and the principal-agent problem
- Back up your TOTP codes by just printing them
- Replacing a 3 GB SQLite database with a 10 MB FST (finite state transducer) binary
- I still like Jenkins
- The --i-tell-you-shut-up flag
- Claude Mythos and the EU Cyber Resilience Act
- The long death of programming languages
- Claude Code and executive function
- Claude Code disproportionately benefits those who touch type
- Lua is a pretty good config language
2025 29
- Copy-Item is 27 percent slower than File Explorer drag and drop on Windows
- "Courage to quit" matters more for seniors, less for juniors
- Lessons learned from 2 years of operating a teensy-tiny news archive
- Where is the DevOps for Yocto?
- LLMs solve the biggest problem with language textbooks
- Code should be clean because business isn't
- tarsnap is cozy
- It's okay to solve a problem twice
- You don't need CGO to use SQLite in your Go binary
- Incentivize grandchildren by writing them into your will
- The second wave of spaced repetition apps
- Experiment registry: Can I simply enjoy everything I do?
- Switching Vim colorschemes based on which keyboard layout I have active
- Using LLMs to generate small semantic perturbations for language learning writing practice
- The language learning "Delta" Anki card pattern
- Save your disk, write files directly into RAM with /dev/shm
- LLM, JavaScript, GitHub Pages, localStorage: A recipe for free apps anyone can use
- Create multi-stage Anki card answers with HTML's tag
- LLM tutored writing practice for secondary language acquisition
- Consider the cronslave
- LLMs make Perl great again
- Cross-platform TUIs are easier than cross-platform GUIs
- Vibe coding and complementary goods
- Binary search isn't about search III. Loop invariant of rightmost element search
- Binary search isn't about search II. Loop invariant of leftmost element search
- Binary search isn't about search
- Things you should never do: Use Expect to autotype SSH passwords in scripts
- SQLite is learnable
- `python -m http.server` as ephemeral Dropbox
2024 30
- Common-sense security for SSH on a new Debian server
- Enforce GPL compliance by offering bounties?
- The self-hosted to DevOps engineer pipeline
- PHP, Go, and Braindead Deployment
- PHP and Web Dev Phobia
- How I ask GPT-4 to make tiny Python scripts in practice
- The highest personal ROI program I have written so far
- My pet theory of how great software gets started
- What scripting languages come out of the box on Debian 12?
- Valuable software is about letting people do new things
- Layers of abstraction for me, not for thee
- Software engineers as mental athletes
- OpenBSD, the computer appliance maker's secret weapon
- Quickstarts and Slowstarts
- Lessons learned from 6 months of operating a teensy-tiny news archive
- Doing is normally distributed, learning is log-normal
- Trackballs are great for the mostly-mouseless
- tmux is worse is better
- Disable your browser history to write better internal docs
- I'm turning 30 so naturally I'm switching to OpenBSD
- PHP is Web Shell
- Language learning treated as breadth-first search
- Most "life lessons" you hear are about scaling back
- Check my math - NixOS vs the Most Complicated Program on Earth (MCPOE)
- Beware those who promise increasing marginal returns
- The 10 sentences heuristic for foreign vocabulary acquisition
- The unreasonable effectiveness of VMs in hacker pedagogy
- fd + xargs + bat = quick document review
- wall: Broadcast message all Linux users
- Some New Year experiments
2023 23
- Been quiet - studying Finnish
- Speed paint videos for software installations
- Getting `fzf` to print the preview pane
- Vagrant lets you wrap VDI images
- Most 2 digit numbers not divisible by 2, 3, or 5 are prime
- Git aliases for fun and profit
- Haskell has a rustup now?
- Outage postmortem: Why didn't SelkoArchive get today's news?
- Things Word has that SSGs, by and large, don't
- traceroute uses UDP by default, not ICMP
- Cloud translation is more expensive than I thought
- Pomodoros and leverage ratios
- One problem with user-scoped `systemd` timers
- Promoting Blog Tag Reuse with `fzf`
- The Rule of Four
- Hugo's Secret RSS Feeds
- Hosting on Azure? Don't forget to declare UTF-8
- Git controlled, user-scoped, recoverable-after-install `systemd` services and timers
- That damned Debian 10 one-liner I always need to let me `sudo`
- Art of the dotflag -- `.nojekyll`, `.gitkeep` and their ilk
- A good place to symlink local builds
- No such thing as a Post-Push Hook
- Multi-line string literals in Fish