Handling asynchronous code in TypeScript without losing control
How to compose promises, preserve useful errors, cancel obsolete work, limit concurrency and test asynchronous behaviour without timing-dependent tests.
Read articleInsights
Technical articles on languages, databases, serverless platforms and the awkward realities of keeping systems moving.
Showing 37–45 of 71 articles
How to compose promises, preserve useful errors, cancel obsolete work, limit concurrency and test asynchronous behaviour without timing-dependent tests.
Read articleA practical guide to Vim’s modes, motions, operators, text objects, search, undo, registers and file navigation, without beginning with a wall of commands to memorise.
Read articleHow Git aliases are resolved, where configuration lives, which everyday aliases earn their place and why shortcuts should never conceal destructive repository operations.
Read articleHow to model representative traffic with Grafana k6, define checks and thresholds, avoid coordinated overload, and correlate latency and errors with application behaviour in Grafana.
Read articleHow ceremonies, ticket workflows and delivery metrics become harmful when they replace direct collaboration, and how to recover useful structure without abandoning discipline.
Read articleHow to choose and transform immutable Scala collections, avoid accidental work, and recognise the performance and semantic differences between List, Vector, Set, Map, View and Iterator.
Read articleHow recursive Scala functions use the call stack, how @tailrec makes constant-stack loops possible, and when folds or explicit work queues are the clearer design.
Read articleHow implicit parameters, implicit scope and context bounds work in Scala 2.13, how Scala 3 expresses the same ideas, and where invisible dependencies become a maintenance problem.
Read articleA practical account of tagless-final programs, effect capabilities, interpreters and testability, including when a concrete IO or Future service is the better design.
Read articleStart a conversation
A feature that needs shipping, an ageing service that needs attention, or a deployment that has become harder than the code. Talk to us about your problems.