The setup, and why each part of it earns its place.
Short lists on purpose. Anything here removes a decision rather than adding a feature - the bar for a new tool is that it stops me thinking about something.
- Sections
- 6
- Bias
- Boring and fast
Where most of the day goes. The bar for adding anything here is that it removes a decision rather than adding a feature.
Visual Studio Code
Primary editor for TypeScript, Node and everything web-facing.
Visual Studio
For .NET work - the debugger and profiler are worth the weight.
Vim keybindings
Editing without leaving the home row. The investment pays back within a month.
Low contrast between syntax colours, high contrast between code and background. Anything more decorative gets tiring by hour six.
Dark, low-saturation theme
Colour reserved for things that are actually different.
JetBrains Mono
Clear zeros, readable at small sizes, generous line height.
Ligatures off
A personal preference. I want to see the characters I typed.
Short list on purpose. Each one has to justify its startup cost.
ESLint + Prettier
Formatting is not a conversation worth having in review.
GitLens
Blame inline. Half of understanding code is understanding when it changed.
REST Client
API requests as files in the repo, versioned with the code they test.
Error Lens
Diagnostics inline, so problems surface before the save.
Docker
Container and image management without leaving the editor.
Deployment and debugging both live here. It should be fast and boring.
Windows Terminal
Panes, profiles, and a sane copy-paste story.
PowerShell + Git Bash
PowerShell for the Windows-native work, Git Bash for POSIX scripts.
tmux
Sessions on remote hosts that survive a dropped SSH connection.
ripgrep & fzf
Searching a large codebase should never take long enough to break focus.
Nothing exotic. Comfort over specification, past a baseline.
Multi-monitor setup
Editor on one, logs and browser on the other. Context switching is the tax.
Mechanical keyboard
Tactile switches. Typing is the job.
Wired headphones
No pairing, no battery, no latency.
The ones that changed how I build rather than what I know. All still worth the second reading.
Designing Data-Intensive Applications - Martin Kleppmann
The clearest explanation of why distributed systems break, and why the fix is usually a different model rather than a bigger machine.
Clean Architecture - Robert C. Martin
Read critically. The dependency rule is the durable idea; not every chapter around it is.
Release It! - Michael Nygard
Stability patterns from real outages. This is the book that makes you add timeouts everywhere.
The Pragmatic Programmer - Hunt & Thomas
Mostly about judgement, which is the part that transfers between stacks.