Learn
Things I write, build, and teach.
Notes from real client work, code you can paste, and the occasional class.
Writing
All articles (6)
OpinionJuly 24, 20264 min read
How I Bring USD Earnings to CAD for About $20
Every route from a USD paycheque to CAD charges a percentage, except one. Wire straight to your brokerage and use Norbert's gambit when you need CAD.
Read article
Your Personal GitignoreOpinionJune 10, 2026You joined a team. They have their workflow, you have yours. Here is how to run yours on the shared repo without touching the shared gitignore.
Shadcn Components Are YoursOpinionJune 4, 2026Customizing shadcn feels risky if you treat it like a library. It is not a library. Here is how I ended up thinking about variants, CSS variables, registries, and upgrades without fear.
Build Products and Become UnstoppableOpinionJune 2, 2026AI lets product people finally ship the things they always wanted to build. Here is the technical learning path I think makes you unstoppable in the AI era.
Snippets
All snippets (5)- Change a git remote's URLPoint an existing remote at a new URL without removing and re-adding it.bashMay 10, 2026
- Delete local and remote git branchesDelete branches one at a time, or sweep up local branches whose upstream has already been deleted.bashMay 10, 2026
- Remove node_modules from a git repoStop tracking a committed node_modules folder and ignore it going forward.bashMay 10, 2026
- Stop tracking a file that's already committedAdding a path to .gitignore does not untrack files git already knows about. Use git rm --cached to drop it from the index while keeping the local copy.bashMay 6, 2026
- Apply a shadcn preset with the CLIUpdate a project's shadcn config and UI components from a preset using the official init command.bashMay 6, 2026
Classes
All classes (0)Structured courses on topics I write and ship. Sign up for the newsletter to hear when the first one drops.
Curious what tools all of this is built with? Browse my bookmarks.