I'm John Azariah — a software engineer who thinks in types, composes with functions, and believes that the best abstractions are the ones mathematics already discovered.
This blog explores functional programming, language design, and the ideas that connect theory to practice — mostly in F#, C#, and Python.
Highlights
F# & Q# — A Tale of Two Languages
F# and Q# are more tightly related than you might expect. The story of how F# influenced and enabled the development of Q# — Microsoft's language for Quantum Computing.
This is not a Monad Tutorial
Some fundamentals of functional programming — what monads actually are, without the hand-waving.
Series
Intent vs Process
N-tier, Clean Architecture, CQRS — they all share the same unspoken coupling. This series names it, then fixes it with algebra.
Tagless Final in F#
Building DSLs with the Tagless-Final pattern — from a tiny frog game to elevator verification and model checking.
The Parseltongue Chronicles
A functional programmer's journey into Python — decorators, pipelines, trampolines, and finding the beauty in the snake.
Scientific Computing with F#
Evolutionary algorithms, the Ising model, and the Travelling Salesman — all in F#.
Lego, Railway Tracks, and Origami
How the foundations of functional programming — functors, applicatives, monads — have neat effects on real-life code.
Standalone Posts
- Feb 2026 One Loop to Traverse Them All DFS, BFS, Dijkstra, and A* are all the same loop with different bags.
- Mar 2026 The Trampoline is a Monad The trampoline was a monad all along — and recognizing this gives us composability for free.
- Dec 2023 Y, oh Y! How to derive recursion in a purely functional context.
- Dec 2020 Bouncing around with Recursion Using advanced techniques to retain the elegance of recursive expression.
- Dec 2017 Monkeying Around: Fun with Trees Trees, free monads, and recursion schemes in F#.