Blog
Sharing development experiences, code snippets, and technical insights.
Syncing dotfiles across 3 Macs with chezmoi (secrets encrypted with age)
Syncing shell config and ~/.claude/CLAUDE.md across 3 Macs — office, home, and laptop — with chezmoi, while encrypting API keys and SSH private keys with age. Setup commands, pitfalls like encryption not configured and the PATH chicken-and-egg, plus the source-of-truth model.
Read moreAutomating Magento Deployment — Why I Dropped GitHub Actions for a Direct Mac→SSH Setup
With a manual trigger and no main repo, GitHub Actions is over-engineering. Running the server's deploy.sh directly via ssh -t from Raycast, plus avoiding the maintenance-mode lockout with trap and the composer install pitfall.
Read moreDoing Claude Code Right on a Remote Server — Ditch the Local Clone, Use tmux + Screenshot Auto-Hand-off
A remote Ubuntu server + AI coding agent workflow. Why I ditched the local clone, tmux multi-sessions instead of the VS Code extension, and filling the image-input gap in a pure terminal with an ss sync + cc function.
Read moreThings I Learned from Basketball
A short note jotted down while playing basketball.
Read moreEnabling Claude Code to Use sudo on Ubuntu (fixing 'a terminal is required')
The Claude Code CLI hits 'sudo: a terminal is required' when running root commands like apt or systemctl. Solving it safely without NOPASSWD, using timestamp_timeout + !tty_tickets.
Read more