Posts (851)
2026 (103 posts)
April (9)
- git: empty stash
- Anki: corrupted database
- pre-commit: periodic garbage collection
- β pancake workflow (OR: how to solve problems only once)
- Obfuscate your email
- Brave browser: make mailto: links open in your webmail
- AWS CLI: log in to multiple SSO sessions
- β Project Hail Mary
- miniflux: cull old posts
March (27)
- π Reply to: The agentic passive voice | irrational exuberance
- π Reply to: Shell tricks that actually make life easier (and save your sanity) | larvitz blog
- Potpourri
- β mr update
- claude code: kitty keyboard protocol garbage
- How to uninstall Amp Code
- Goodbye, Amp Code
- shell: head and tail at once
- Kubernetes: one-off env exec
- π Reply to: Every layer of review makes you 10x slower - apenwarr
- cco: additionalDirectories
- Tailscale: automatic connection in the office
- sed wizardry
- displayplacer
- β Data Subject Request
- Bypass copy protection in PDFs
- Topgrade
- π Boring and dangerous professional
- Github Status
- Ghostty 1.3.0 release
- Google Translate β Kagi Translate, DeepL
- π Reply to: How Jane Street does code review
- claude: srt: sandbox runtime
- Mole
- β claude: add session ID to status bar
- Blocking Claude
- π Reply to: Brazilian affection/cuddling vocabulary
February (36)
- β cco: claude condom (sandbox)
- Kindle file transfer
- ee: exit all shells
- β Gimme subagents
- github workflow: external script
- Google Home usage
- Justfile groups
- Superwhisper
- flameshot: collating multiple screenshots
- Alpine Linux: update timezone
- β New APKBUILD: LLM edition
- Yes VPN, no printer
- β WebDriver BiDi: from spec to implementation
- β web radio player
- Import legacy posts from my old WordPress blog
- pears: word game
- zsh: glob qualifiers: most recent
- β new blog post via Claude Code
- miniflux: block entry matching URL
- Claude Code: always be 'verbose'
- Claude Code: swarm mode (agent teams)
- You are absolutely right!
- β Claude Code: /insights
- Skim
- π Reply to: the Threads algorithm loves rage bait
- β Making a slides presentation in 2026
- β Open Source security in spite of AI
- pre-commit: hazmat n1
- macOS: enable dictation
- prefers-color-scheme β light-dark
- Alpine Linux: clear /tmp upon reboot
- π Reply to: Why Am I Doing the Thinking for You?
- npm error code EBADF
- β Bravery
- GitHub: approve PRs from CLI
- just apply it
January (31)
- Miniflux themes
- starship: github PR prompt
- GitHub: disable coding agent
- β 500 days of Summer (2009)
- Emβdashes
- atuin: new machine setup
- Chrome β Brave
- terraform import arrays
- TV remote controller
- Airline Wi-Fi messaging services
- 'New' series: Raspberry Pi fun with DevOps, redux
- Random
- PostgreSQL major version upgrade on Alpine Linux, redux
- Gemini on YouTube
- git aicommit
- 2026
- ghostty: keybindings
- β ADRs and LLMs
- new script: uwatch
- claude --teleport
- git: shell prompt: worktrees
- ghostty: splits
- Claude Code: release notes RSS feed
- Claude Code tips
- git: diff untracked
- LogSeq: slowness on macOS
- Anything else you may have missed?
- β Oneshot prompting
- β neovim: inline git hunk control
- Amp Code: queue/unqueue messages
- .txt posts
2025 (415 posts)
December (35)
- β Blog discovery
- β Who watches the watchmen?
- Kagi: Add LeetCode !bang
- Finicky
- Flameshot
- β Starship
- β UptimeKuma
- ctop
- Openring
- ranger β lf
- β nginx β caddy
- β vim β nvim
- atuin: limit scope to current directory
- macOS: keyboard repeat
- β Pi
- Kindle: KOReader dictionaries
- myrepos: chain configs
- β git: stash untracked files
- β .apk-new
- MIUI debloater
- Toggle light / dark mode
- Claude Code: block dangerous commands
- Claude Code: stash
- j,k for navigation
- Claude Code: add context window % to status line
- Miniflux: NetNewsWire integration
- Offloading iOS apps
- Reordering mobile editing icons in logseq
- β friendly_ping: track your stale GitHub pull requests
- β Claude Code: notify when needed
- Stale bot considered harmful
- jj: hello world
- β Try
- Snippets manager
- Atuin: delete history entries
November (46)
- β Canary tokens
- Homebrew: bin.install: mv instead of cp
- Ghostty shaders
- Chrome -> Orion
- β Atuin
- β python-is-python3 with macOS homebrew
- CorelDRAW: disable ads on Windows
- chrome://bookmarks
- Chrome DevTools: toggle prefers-color-scheme
- β git: prune stale branches
- GitHub labels vs merge when ready
- ghostty: quick terminal
- β The almighty Blogroll
- fx
- howto
- Canary
- β Stow
- β Claude: new slash commands
- β Personal blogs are back
- git stash -m
- β help2man
- No adblocker detected
- I hope
- β Radio
- Logitech MX Master 2S
- Open the most recent blog post
- Stress
- realpath
- Flock
- Terraformer
- Google Gemini: read CLAUDE.md or AGENTS.md
- terraform: update outputs only
- new pre-commit hook: check-bash-shebang
- β new script: PDF remove password
- bash shebang #!
- β Shell memoization: lazy-load LLM API keys
- Money
- Banana
- You are absolutely right!
- md-toc: markdown table of contents
- Record Club
- new script: copy
- git diff interactively
- Desk
- Chrome: hide bookmarks bar
- vim: spellchecker suggestions
October (40)
- Highlighting text in drafts
- Oncall workflow with iOS shortcuts
- Clipboard as backup
- Basic Badminton
- β New script: SSH mux restart
- Claude Code: paste in images
- Grep in PDFs
- PostgreSQL: get database size
- .terraform-version
- brew: upgrade HEAD formulas
- GitHub: the organization has enabled or enforced SAML sso
- Instagram: unfollow non-followers
- β The Apple Store
- β Backlinks
- β Distributing my own scripts via homebrew
- MCP: model context protocol considered harmful
- git: reset default branch
- pipx run β uvx
- Alpine Linux: usr-merge
- git: partially cherry-pick a commit
- git: list branches by recent activity
- git: commit with the wrong email
- Random word
- Gmail: send email from plus address
- git: merge two repositories
- My favorite C compiler flags during development
- IMEI
- zoxide: fine-tuning
- Comma scripts
- Anki: find all suspended flashcards
- vim: reflow current paragraph
- β Claude Code: adding my first MCP server
- Post-its in the laptop
- macOS homebrew: downgrade a package
- β claude code: custom commands
- New script: AWS China MFA login
- β zizmor
- .hushlogin
- β Claude Code: cheatsheet
- β New script: sd-world: perform a full system upgrade
September (38)
- git blame: prior commits
- New script: pritunl login via CLI
- The get your shit together day
- Kubernetes: pod memory usage
- Responsible adult with a digital calendar
- β pancake: potpourri scripts
- mv: case sensitivity
- Whiteboard mark colors
- An ordinary day with Claude
- β homebrew: command-not-found
- go/keep-sorted
- Losing an AirTag
- Taking oncall
- Hacking comments with JSON
- GitHub autolinks
- β LaTeX CV
- β GitHub stale bot considered harmful
- nohello
- vim: remove trailing whitespace
- Bicycle: squeaky brakes
- Hugo: create and edit a post
- β Broot
- Slice of bread
- SCHUFA
- β Booking.com mobile-only rates
- RayCast: spotify in macOS menu bar
- Hello?!
- Career Leverage as a Developer
- β LeetCoding
- kubectl: verbose logging
- Uninstall Kyverno
- JSON pointers: escaping
- claude: compact context
- claude: ccusage
- GitHub: disable dependabot CLI notifications
- claude --resume
- Trash
- pre-commit: autoupdate
August (35)
- β 'It's never a good time'
- helm: diff manifests
- Fact-checking when blogging
- midnight commander: Fn keys
- yazi
- midnight commander: use default editor
- git: ignore changes to tracked files
- midnight commander: colorscheme
- What is a valid email address?
- ArgoCD: git index.lock issue
- β YAML: JSON patch: test
- /security-review
- Emoter
- Python: f-string help
- β Kubernetes: list all ImagePullBackOff container images
- β XSLT in RSS feed
- Docker: AWS ECR: list recent image tags
- Dockerfile: CMD and ENTRYPOINT: shell and exec forms
- GNU sed: follow symlinks
- Daily log
- "Fix typo"
- β git ll
- β git: --no-pager
- ArgoCD: app version notifications
- JIRA: create an issue with pre-populated fields
- docker: dive into images
- β Silence unknown callers
- ArgoCD: recovery when traefik is broken
- fd with xargs: filenames with spaces
- β GitHub: set up scheduled reminders on Slack
- terraform: bypass lock
- Dune 2000 soundtrack
- Block "Sign in to XXX with google.com"
- ArgoCD: all applications stuck on refresh
- β PR reviews after vacation
July (15)
- direnv: automatically load .env everywhere
- Writing blog posts on the go
- Okta: enroll into 2FA
- β Smartwatches
- vim: add word to spellchecker
- Bicycle: replacing an inner tube
- git: developer certificate of origin (DCO) sign-off
- Reader's block
- vim: join lines without producing a space
- Ghostty: migrating config to dotfiles
- Steam Deck: 640x480 external monitor resolution
- Alpine Linux: remove broken packages
- β check-json-schema: pre-commit hook
- pq: could not access file "$libdir/dict_snowball": No such file or directory
- Markdown headings and git comments
June (32)
- ArgoCD: deployment spec.selector: field is immutable
- Steam ratings
- Resize image to make an avatar
- M1 Macbook Air keeps disconnecting from Wi-Fi
- Helm repository with a trailing slash
- β Logseq template for working out
- Oh Shit, Git!?!
- Slack: reacji channeller
- Speaking to myself
- Espanso for Github PR templates
- β git delta
- Diffoscope: exclude directory metadata
- SSH: hash known hosts
- Kindle Paperwhite: KOReader: calibre sync
- Kindle Paperwhite: add custom fonts
- β ArgoCD: every application in unknown state
- β ArgoCD: custom health check for StatefulSet (OnDelete)
- β Slack: public chats first
- .gitignore .claude/settings.local.json
- Paolo the plumber
- β git commit: automatically add pull request template
- ArgoCD: application stuck in unknown
- JIRA Service Management search is terrible
- bad interpreter: perl: no such file or directory
- Apple App Store Geo-blocking
- Alpine Linux: Dockerfile: install package from edge
- Alpine Linux: package is gone?!
- git pull: authentication issues
- β Alpine Linux packaging: track new software releases
- ArgoCD: upgrade to v3, remove helm labels
- PDB: minAvailable and maxUnavailable cannot be both set
- Replace text in PDFs
May (43)
- Kagi trial expires
- Limited creativity
- Golang fuzzing
- Which book should I read next?
- Our most powerful model yet
- pre-commit: add hugo build
- β PostgreSQL major version upgrade on Alpine Linux
- Tailspin
- watch with --color
- npx serve
- WebAssembly: hello world
- mdsh: a markdown pre-processor
- Web browser privacy tests
- bash: set a trap to log errors
- kubernetes: list pending pods in daemonset
- ack with context
- Ultrathink
- ChatGPT default settings
- Backfill your blog
- β fpp: facebook path picker
- β WinterBreak: hello world
- Blog directories
- Espanso: hello world
- Stack Overflow is almost dead
- β Nostalgia: The Linux Setup - Thiago Perrotta, Student
- Cursor
- Github: dependabot: group updates
- VSCode: Github Pull Requests plug-in: collapse all comments by default
- β How to file a great feature request
- Logseq: open page in sidebar
- Slack: Github bot: post notifications
- Kagi: Small Web
- helm-secrets + vals: string interpolation
- 1Password SSH agent error
- ByteBurst Brigade
- Slack snippets
- Do you like to live in danger?
- bkt: bypass cache
- Github: pull request template
- β Kagi
- Logseq: list all pages of a tag
- JIRA: stand-up mode
- Terminal autocorrection
April (21)
- β The ack + xargs + sed pattern
- YAML: complex keys
- GitHub: create a pull request from CLI
- macOS: delete file, bypass trash
- Delete newlines in a pipe
- The LLM journey
- HashiCorp Vault from helm values
- β Github PRs: do not submit
- Bracket City
- Finding the table manual
- β Alpine Linux: the maintainer workflow
- β The Smalltalk Question
- β Serendipity vs Gatekeeping
- GitHub: vacation mode
- Pipe to Claude
- Github Actions: ubuntu-latest tools
- Against names
- Sentimental versioning
- β First Alpine Linux package in Community
- β DEFCON radio
- AppleScript discoverability: more Amphetamine
March (40)
- Experts
- llm: remove stored key
- β Badminton
- β Amphetamine: Keep awake
- Unemployment is not the problem
- pre-commit: make a hook opt-in
- β 1Password CLI + direnv integration
- Disclosing AI in pull requests
- Festering
- Slack emojis / Slackmojis
- maccy: pin items
- It is as if you were on your phone
- Hot sauce
- pre-commit: no-commit-to-branch hook
- pre-commit: pin dependencies with --freeze
- git: prefer switch over checkout
- My packaging policy
- npm: install before test
- β git freeze, git thaw
- Terraform: rename resources
- Goodreads
- Friction
- Micromarriages
- Terraform: create zip files
- Terraform: generate diagrams
- β Filling in the gaps of the internet
- YOLO: debug only after push
- yaml: wrong new line character: expected \n
- β AWS IAM resources
- keep-sorted, with quotes
- commit, pre-commit, commit
- SAML Chrome Panel
- β Have I Been Pwned?
- How core git developers configure git
- β π Reply to: Growth at BigTech
- β Using keep-sorted to keep your ~/.gitconfig tidy
- Create a git commit with multiple contributors
- SponsorBlock
- Grayjay
- Logseq: aliases
February (23)
- gh pr view
- Coffee
- Google Meet: dashes
- Kill the Newsletter
- git: prune gone upstream branches
- zsh: setopt magic_equal_subst
- β Quick look preview YAML files on macOS
- β Notify search engines of new posts
- No printer, yes paper
- Ruby: string escaping
- Crawling / indexing is wild
- git: blank commit
- ArgoCD: vertical-pod-autoscaler sync loop
- β GitHub Distributed CODEOWNERS
- Date your whiteboard notes
- LinkedIn: chronological view
- MLC Chat: off-line LLMs in your iPhone
- β DuckDuckGo email protection
- Upcoming calendar meeting in macOS menu bar with Raycast
- Instagram: get rid of all posts
- Kubernetes: create a pod in pending state
- Resetting an AirTag
- How much to charge or pay for couch surfing?
January (47)
- SmartTube
- β Raycast snippets
- Feel free to say no
- itsycal: system tray calendar on macOS
- JIRA: link issues
- Cloudflare DNS for families
- codespell: ignore words
- π Reply to: smash that subscribe button
- VSCode pets
- β Deutschland Ticket in 2025
- Kindle Paperwhite: take a screenshot
- FOSDEM Calendar
- Pawnbarian
- What time is it in your timezone?
- Stop trying to schedule a call with me
- β SSCCE
- β Cloudflare: Email Workers
- .gitkeep
- Anki: insert emoji on macOS
- Why self-answer questions in your own blog instead of Stack Overflow?
- ArgoCD: cache: key is missing
- Quick and dirty random password generator
- β YAML: enforce schema linting
- ghostty: find popular themes
- Helm: migrate chart dependencies from HTTPS to OCI
- Alpine Linux: install / pin old packages
- bash: distinguish between script invocation versus source
- Diffing two directories
- nginx: add basic auth
- Stimulation Clicker
- Your app should have been a website
- Logseq: linking and backlinking
- Linux is free if your time is worthless
- LaTeX beamer slides with notes
- Mindmaps in markdown
- π Reply to: Mistakes engineers make in large established codebases
- pre-commit + vim integration
- π Reply to: My approach to running a link blog
- iOS lockdown mode
- Unsplash: Wallpapers
- Cookiecutter: document variables
- git: update master to main
- π Reply to: 100 days to offload
- Corpspeak Bingo
- Fiction
- β git: configure identities for work
- β Scan for markdown broken links in your blog
2024 (183 posts)
December (62)
- Sourcegraph
- macOS app shortcuts
- git reset --keep
- DevOps career progression
- π Reply to: Here's how to live: Be independent
- π Reply to: CoPilot having a normal one
- β Trains in Europe
- TIL: Today I Learned
- β Cookiecutter
- β bkt: cache command outputs
- Cooking
- AI usage
- Pin all github actions
- Amazon guardrails
- Miniflux: global blocklist
- Ghostty
- Optimize images
- iOS safari with large fonts
- β Ollama: Hello World
- Folderify: Generate macOS folder icons natively
- π Reply to: Douglas Adams on reactions to technology by age
- Site performance with Lighthouse
- β Update DNS NS servers from Porkbun to Cloudflare
- localhost under your own domain
- Advents
- Versioning schemes
- β Keep sorted
- Hyperfine: a CLI benchmarking tool
- git reset --hard including submodules
- Picking a monospaced code font
- Switching from Google to ChatGPT search
- Just: make Justfile self-contained
- Running multiple servers in a single bash script
- Unbuffer
- π Reply to: Introduce yourself to your remote team
- β Anki workflow
- β Online diff tool
- Stylometry
- Digital mending circle
- New post workflow
- MBTI
- β Pre-commit
- β Default apps 2024
- π Reply to: I Hate the News
- New theme: BearBlog
- hugo: merge two tags
- git: push --force with style
- Manage your Kindle library online
- β pre-commit: create hooks for unsupported tools
- β skopeo: operate container images and registries
- Kubernetes: tail logs from pods with stern
- Kubernetes: debugging services
- β Just
- Semantic versioning constraints
- β .gitignore without .gitignore
- Alpine Linux 3.21
- Docker build: ignore cache
- bash: glob hidden files recursively
- Finding linters
- Docker image size
- atools: unpack file archives agnostically
- IaC
November (18)
- Compress a .pdf in macOS with Preview.app
- LKW mit ABS
- bash: disable pipefail
- logseq: backlog
- pre-commit: try-repo
- Rename files in bulk (cont)
- Remove the executable bit from all files with a given extension
- git: recover a snowflake commit
- pre-commit: additional dependencies in golang
- β zoxide: cd within the same directory
- Helm: JSON schema generation
- sort deterministically
- β Helm: enforce the directory name matches the chart name
- jq: remove quotes from output
- Ruby: update Gemfile dependencies
- Github Actions: multiple docker images
- VSCode: auto restart extensions
- Jellyfin Trakt plug-in
October (22)
- Mermaid: rich diagrams in markdown
- Board games
- Conventional commits
- Check if docker image exists in registry
- β Performance reviews
- β prodaccess
- Makefile: path to root dir
- kubectl: list all node pods
- kubectl: force delete pods
- β New series: Raspberry Pi fun with DevOps
- cdg: change directory to the git root
- Convert JSON to YAML
- git misspellings
- New APKBUILD: argocd
- Exponential Idle
- bash built-in date
- β cdtmp: change to a temporary directory
- β Tracking cheap flights from Munich
- Steam Deck "downloading update" boot loop
- β Erratic: human-friendly google3 piper snapshots
- fd: match full path
- ack: match and return only the matched string
September (12)
- helm: list recent chart upgrades
- Life without ack
- β Anki: custom language card (cont.)
- Slack: AI plug-in
- Chromium: Delete entry in URL bar
- less(1): scroll back one page
- Diceware passphrases
- Wi-Fi QR code generator
- End of life package info
- AWS S3: search by suffix
- git: create a throwaway branch
- YAML multiline strings
August (13)
- Helm: list all installed charts in the cluster
- Browser tabs are not TODO lists
- Accomplishment
- Diffoscope: recursive diffs
- apk autoupdate on alpine linux
- JSON schema negation
- Release
- β Self-documented Makefiles
- Optimize PNG images
- kubectl: print all secret values in plain text
- Direnv nested
- Disallow AI scraping
- No analytics
July (20)
- Docker on Alpine Linux
- Emoji appropriation
- Audiobooks read by the author
- Parallel
- Zoom
- Alpine Linux: How to install all manpages (idiomatically)
- Format dialogues in markdown
- Fans
- kubectl: get all logs from all pods
- kubectl: get secret with jsonpath and add a newline
- icdiff: side-by-side diff
- Github-flavoured Markdown: Callouts
- Pipes: RSS Manipulation
- Rejection
- t-shirt
- Terraform: perform a global update
- Explain a crontab expression
- Localhost domain
- a little
- timezones
June (6)
May (6)
April (1)
February (8)
January (13)
- Hugo: rename a tag
- Anki: find all notes with an empty field
- sd-world: perform a full system upgrade
- β (Google) Chrome for Testing: reliable downloads for browser automation
- β Terraforming a Linode: hello world
- The fundamental right to paste
- Remove large files from your computer
- Create a family tree with graphviz
- Start an HTTP server ASAP
- Why do you need to know my last name?
- β Synchronized in Python
- Python: all hail to cache memoization
- Python: debugging tip with print and f-strings
2023 (6 posts)
2022 (55 posts)
December (1)
October (1)
April (4)
March (8)
February (18)
- Linux: US International keyboard layout
- HTTP: a few acronyms
- What is my IP?
- Website fonts: just use the system font stack
- Screenshot a web page from within chrome devtools
- β Wayland: from i3 to sway
- Hugo: compose or edit blog posts from the web
- Praise for blog aggregators
- β nix-env in a nutshell for basic usage in macOS
- β SSH plus tmux automatically
- Python: interactive completion
- nix-shell in a nutshell
- RSS: bridging the gap
- Thoughts on Gemini
- Doas: bridging the sudo gap
- Transfer bash history to zsh
- Google and DuckDuckGo
- Linux swap shenanigans
January (22)
- β systemd: share environment variables with xorg
- β Watch files and react to changes during development
- Linux: Remount device with different options
- ChromeOS hterm: customize fonts
- Throwaway (disposable) accounts for ephemeral use cases
- Pihole: Add custom DNS mappings
- β Alpine Linux: New APKBUILD Workflow
- Introspect the local network for Pihole
- Git: Oops I forgot to add this thingy
- β Arch Linux: New PKGBUILD Workflow
- Alpine / Arch Linux: .apk-new and .pacnew files
- Debian: Enable unattended upgrades
- β Alpine Linux on Raspberry Pi: Diskless Mode with persistent storage
- RSS: Follow commit updates from Github
- β Keychron K2: Review
- Alpine Linux: apk logs with etckeeper
- β My First APKBUILD
- Ventoy: Automate your Distro hopping
- β Alpine Linux: apk command not found hook
- β Direnv: Automate your Environment Variables
- β Miniflux: Rolling my own RSS Reader
- Ephemeral Linux Shell Access in the Cloud
2021 (6 posts)
2017 (1 post)
February (1)
2016 (1 post)
September (1)
2015 (16 posts)
April (1)
March (9)
February (4)
January (2)
2014 (45 posts)
December (4)
November (5)
October (8)
September (6)
August (4)
July (3)
May (4)
April (4)
March (4)
January (1)
2013 (17 posts)
December (5)
November (5)
Categories %
Tags #
#advent-of-code35
#ai69
#alpine-linux30
#aws10
#bestof167
#bytebytego42
#degoogling10
#dev1080
#docker12
#fosdem6
#gaming11
#ghostty8
#git55
#kubernetes37
#leetcode207
#legacy144
#macos45
#meta56
#movies3
#pkm11
#posse2
#pre-commit30
#privacy52
#security56
#selfhosted11
#serenity234
#socialmedia13
#ssh7
#terraform11
#vim13