2026-08-20

Claude Code's Bash tool runs zsh, not fish

the system prompt said fish, so the LLM wrote fish. the tool ran zsh with an empty environment. a zprofile and four lines of CLAUDE.md fixed it.

#til#claude-code#zsh
2026-07-19

replacing ag with rg and fd

the last ag release was in 2018. it took two tools and a fish abbr to replace it.

#til#shell#ripgrep
2026-07-17

PowerShell 7 ships with fish-style autosuggestions

a script refused to run on my shell. the new shell finishes my sentences.

#til#windows#shell
2026-07-10

hiding ::before decorations from screen readers

this site fakes markdown syntax with css generated content, and screen readers read every marker aloud. the content property accepts empty alt text that mutes them.

#til#css#a11y
2026-07-09

react: a render prop is called, a slot is mounted

MUI render props always looked like remount traps to me. turns out my suspicion was exactly backwards: called functions never enter the tree, mounted components do.

#til#react#render-props
2026-07-04

save the Chrome console to a file

a web app left open overnight showed errors in the morning. right-click the console, save as, and the whole session is a log file.

#til#chrome#devtools
2026-07-03

copy a Claude Code answer as markdown with /copy

mouse-copying a Claude Code answer loses the code ticks and the links. /copy puts the raw markdown on the clipboard instead.

#til#cli#claude-code
2026-07-02

finding what freezes VS Code: tsserver log and extension host profile

cmd+click on a type froze VS Code, and the tsserver log looked healthy. an extension host profile found the culprit.

#til#vscode#performance
2026-06-26

disable Chrome's AI features with a macOS config profile

Chrome put AI in my address bar, and the flags I turned off came back after an update. a macOS config profile sets the enterprise policy that turns it off for good.

#til#chrome#enterprise-policy
2026-06-24

lazygit: open a file straight from the diff

to edit the file i'm looking at, i'd have to find it again in my editor. pressing `e` opens it directly, in whatever editor i configure.

#til#git#lazygit
2026-06-20

reset Karabiner after sleep without a reboot

Karabiner stopped remapping after my Mac woke. i finally found a way to reset it without a reboot.

#til#macos#karabiner
2026-06-19

keep an AVD session awake with f15

AVD logged me out over lunch and killed a long job. f15 is a key that does nothing, so I send one every two minutes to look busy.

#til#windows#avd
2026-06-18

make shift+enter a newline in Claude Code on Windows

shift+enter sent my half-written message instead of making a newline. ctrl+j fixes it in any terminal; a keybinding wins back the muscle memory.

#til#terminal#keyboard-protocol
2026-06-17

fake a non-retina screen on Chrome

a Chrome flag retired the old non-retina monitor I kept around just to test on.

#til#chrome#device-scale-factor
2026-06-16

stop pnpm churning package.json line endings

pnpm add rewrote package.json from CRLF to LF and git diffed the whole file. one line in gitattributes fixed it.

#til#git#gitattributes
2026-06-15

TIL the <a> tag has a download attribute

i spotted the download attribute on an anchor tag and assumed Content-Disposition already did the job. turns out it's for when you can't touch the server.

#til#html#anchor
2026-06-11

serialize TanStack Query mutations

my optimistic drag and drop raced itself. one scope id fixed it.

#til#react#tanstack-query
2026-06-09

reproduce a flaky test with stress-ng

it passed locally and failed on CI. stress-ng made it fail locally too.

#til#testing#cli
2026-06-05

fish-style abbreviations for PowerShell

abbreviations expand inline before they run. here's how in PowerShell.

#til#windows#shell
2026-06-03

a fish-style prompt for PowerShell

starship gives PowerShell a prompt i can live with.

#til#windows#shell
2026-05-16

iTerm: unlimited scrollback

iTerm's default scrollback is 1000 lines. you can turn that off.

#til#macos#iterm
2026-03-24

pointer events replace touch + mouse in drag and drop

pointerdown/up/move handles both touch and mouse. no more duplicate listeners.

#til#javascript#dom
2026-03-22

responsive font-weight with tailwind

lighter font weights on HiDPI screens using Tailwind v4 theme variables.

#til#css#tailwind
2026-03-20

cli tool: worktrunk

git worktree management for humans.

#til#cli#git
2026-02-22

mdx kitchen sink

every MDX formatting option this site supports, in one place.

#meta#mdx