All topics

TypeScript and JavaScript

Types, the language underneath them, and the patterns that survive a framework change.

Most of my contract work is Node and TypeScript, so this is the pile that grew fastest. It runs from the fundamentals that trip everyone up at some point through to the type-level tricks I actually reach for on client work.

22 posts on this.

Start here

Building a Type-Safe API Client with Zod

Validating at runtime so your compile-time types are not a comfortable lie.

Everything on this topic

  1. CSS :has() Is Finally Here Parent selectors that actually work, after decades of waiting.
  2. Creating Type-Safe Environment Variables in TypeScript Catching a missing environment variable at boot rather than in production.
  3. Creating a Custom ESLint Rule Getting the linter to enforce the thing you keep repeating in reviews.
  4. Building Type-Safe APIs with tRPC Type safety from client to server, with none of the code generation.
  5. Building Streaming APIs with Node.js Moving a lot of data without your process quietly running out of memory.
  6. Building a Type-Safe API Client with Zod Validating at runtime so your compile-time types are not a comfortable lie.
  7. Building a Plugin System in TypeScript Letting other people extend your code without it descending into chaos.
  8. Building a Notes MCP Server for Claude Desktop Give Claude direct access to your local notes folder using the Model Context Protocol.
  9. Building a Local-First App with CRDTs Using Yjs so your app carries on working when the network does not.
  10. Building a Job Queue with BullMQ Getting slow work off the request cycle without losing any of it.
  11. Building a CLI Tool with Commander.js and Ink Terminal UIs in React with proper command parsing.
  12. Higher-Order Functions Functions that take functions, and why you already use them every day.
  13. Reducing Katas Practising reduce until it stops feeling like witchcraft.
  14. Roll Your Own Component Generators A little trick to speed you along your development journey.
  15. Shape Shifting Functions Functions that change shape depending on what you hand them.
  16. Call, Bind and Apply Three ways to tell a function what 'this' is supposed to mean.
  17. JavaScript 101: Immediately Invoked Functions The pattern that gave us module scope before modules turned up.
  18. Comparison and Logical Operators in Javascript Double equals, triple equals, and when you can trust either of them.
  19. Javascript 101: Hoisting What JavaScript does with your declarations before it runs a single line.
  20. JavaScript 101: Implicit Type Coercion Why JavaScript quietly changes your types behind your back.
  21. JavaScript 101: Data Types Everything JavaScript thinks a value can be, and why that matters.
  22. Passing By Value and Passing By Reference The distinction that trips everyone up at some point, explained properly.

Available for Node.js and TypeScript contracts

Senior software engineer and Node.js contractor, 15+ years across fintech, betting and gaming, media, and e-commerce. If this is the kind of work you need doing, my full history is on the CV.