Steven Waterman's Blog
Authenticating JavaScript WebSockets
Prevent Mistakes with NOMERGE Comments in CI/CD Pipelines
The burden of deliberate choice
Luckily I got hit by a car
Supercharge your Teaching with Metaphors
Onboarding at a Radical Enterprise
The Sunk Cost Fallacy, and what it isn't
Don't Worry, it's Rocket Science
Decorate your Blog with AI
My Balance Box
Kind and True
A New Trajectory
Opening Up About Burnout
We Need to Talk (if you want)
You can learn to Speak Confidently
5 things you don't need Javascript for
Database sync like magic, with Svelte + Firestore
Lexoral is open-source so you can punish us
Down the ergonomic keyboard rabbit hole
Better Redux Reducers with TypeScript Builders
TypeScript Builders: Improving your types one step at a time
Svelte and TypeScript - Together at last!
Optimise your Micro:Bit code with Chrome DevTools
How to Write a Ray Tracer Intuitively
3D Rendering on a Children's Toy
GitHub is a free CI/CD/Hosting solution
Stevie W and the Quest for 60 FPS
Slow Code HATES him! From 1 to 60fps
Embrace your Obsessions!
Typescript Pick 'n' Mix
How to solve Minesweeper in 3 minutes
Planning 56 sprints per second with SAT4J
Solving Minesweeper in Polynomial Time
Rethinking the Java DTO
Introducing SharpShot