EventStore: One Ordered Log for Everything
One index, one writer, and the exact delivery guarantee you get.
I'm Mark. I write long, hands-on tutorials and build the tools I write about.
One index, one writer, and the exact delivery guarantee you get.
Event logs · One index, one writer, and the exact delivery guarantee you get.
Actors · Part 4 of 4 · Testing timers and timeouts without sleeps, using a clock you control.
Actors · Part 3 of 4 · One actor codebase on the JVM, as a native binary, and in the browser.
Actors · Part 2 of 4 · Typed actors in Cats-Actors 2.0, through Alice and Bob's wallet transfers.
Actors · Part 1 of 4 · A logic circuit simulator where every gate is an actor.
Functional programming · A small procedural program, made functional one step at a time.
Infrastructure · How our GKE node pools recover from crashes on their own.
Functional programming · Rebuilding ACME's order summary with ZIO, pure and fast.
Infrastructure · Why we moved to Kubernetes, from my talk at Google Cloud Event Malta.
Functional programming · Why FP is more than a refactor: effects as computation contexts.
Functional programming · Numbers, booleans and recursion from nothing but functions.
Web · Making ACF and WordPress fast enough to be a headless CMS.
Actors · Modelling actor behaviour with Akka FSM, and delivering at most once.
Web · Defining Angular routes at runtime with UIRouter.
Actors · A web crawler built from Akka actors, one task at a time.
Functional programming · A set library where every set is just a function.
Machine learning · Learning "Play Tennis" with a decision tree written in Kotlin.
Web · Mapping JSON onto typed TypeScript classes.
Web · Finding and fixing AngularJS digest bottlenecks in a big ng-repeat.
Machine learning · Part 2 of 2 · Building language profiles from real text, and scoring sentences against them.
Machine learning · Part 1 of 2 · How n-gram profiles tell which language a sentence is in.
Infrastructure · A Spring Boot Hello World, packaged with Docker and deployed on Kubernetes.
Web · Three JavaScript module formats, and one loader that handles them all.
Web · Set up Slack and Hubot so a chat bot can talk to GitHub.
Functional programming · Mapping, filtering and reducing a street of houses with higher order functions.
Functional programming · What a higher order function is, shown in JavaScript.
Functional programming · SICP's picture language in JavaScript, to show data abstraction with closures.
One index, one writer, and the exact delivery guarantee you get.
Messages, mailboxes and supervision, from Akka to Cats-Actors.
6 posts · 2016–2026 Cats-Actors on GitHubA web crawler built from Akka actors, one task at a time.
Modelling actor behaviour with Akka FSM, and delivering at most once.
Part 1 of 4 · A logic circuit simulator where every gate is an actor.
Part 2 of 4 · Typed actors in Cats-Actors 2.0, through Alice and Bob's wallet transfers.
Part 3 of 4 · One actor codebase on the JVM, as a native binary, and in the browser.
Part 4 of 4 · Testing timers and timeouts without sleeps, using a clock you control.
From closures to lambda calculus to ZIO.
8 posts · 2016–2021SICP's picture language in JavaScript, to show data abstraction with closures.
What a higher order function is, shown in JavaScript.
Mapping, filtering and reducing a street of houses with higher order functions.
A set library where every set is just a function.
Numbers, booleans and recursion from nothing but functions.
Why FP is more than a refactor: effects as computation contexts.
Rebuilding ACME's order summary with ZIO, pure and fast.
A small procedural program, made functional one step at a time.
Containers and Kubernetes, the parts I actually used.
3 posts · 2016–2019A Spring Boot Hello World, packaged with Docker and deployed on Kubernetes.
Why we moved to Kubernetes, from my talk at Google Cloud Event Malta.
How our GKE node pools recover from crashes on their own.
Part 1 of 2 · How n-gram profiles tell which language a sentence is in.
Part 2 of 2 · Building language profiles from real text, and scoring sentences against them.
Learning "Play Tennis" with a decision tree written in Kotlin.
Front-end tricks from the Angular years.
6 posts · 2016–2017Set up Slack and Hubot so a chat bot can talk to GitHub.
Three JavaScript module formats, and one loader that handles them all.
Finding and fixing AngularJS digest bottlenecks in a big ng-repeat.
Mapping JSON onto typed TypeScript classes.
Defining Angular routes at runtime with UIRouter.
Making ACF and WordPress fast enough to be a headless CMS.

