Loom
A blog engine that just works. One binary, no setup, no dependencies.
Getting Started
Docs
Themes
Internals
Source
⌕
Archives
Post Connections
2026
2026-03-30
Building a Type-Safe Protocol — The Grand Synthesis
2026-03-29
Recursive Types and Fixed Points — The Algebra of Data
2026-03-28
Substructural Types — When Resources Are Not Free
2026-03-27
Parametricity — Theorems for Free
2026-03-26
Compile-Time Data — When Values Become Types
2026-03-25
Putting It All Together — The Full Pipeline
2026-03-25
Concepts as Logic — Propositions, Proofs, and Predicates
2026-03-24
Typestate Programming — When Types Remember What Happened
2026-03-23
Thread Safety — The Compositor
2026-03-23
Phantom Types — Making the Compiler See What Isn't There
2026-03-22
Pattern Matching — Deconstructing Values by Shape
2026-03-21
Double Buffering and Frame Lifecycle
2026-03-21
Sum Types and Product Types — The Algebra of C++ Types
2026-03-21
500MB to Print Hello World: How We Mass-Hallucinated an Entire Industry
2026-03-20
A Program Is a Theory — Foundations of Type-Theoretic C++
2026-03-19
Hardware Scroll — Moving Rows Without Rewriting
2026-03-19
You Don't Need Microservices. You Need To Write Better Code.
2026-03-17
Style Transitions — The Transition Cache
2026-03-17
247 Database Queries to Render One Page: The ORM Delusion
2026-03-15
The Diff Engine — Only Paint What Changed
2026-03-14
I Deleted Our Template Engine. Response Time Went From 35ms to 1ms.
2026-03-13
The Render Tree Walk — From Layout to Cells
2026-03-12
app.use(chaos): Why Middleware Architectures Fall Apart
2026-03-11
The Output Builder — Recording Before Rendering
2026-03-10
Your Web Framework Is Lying to You
2026-03-09
Interning Pools — Strings Are Integers Now
2026-03-07
Cell Packing — Fitting a Universe into 8 Bytes
2026-03-05
The Screen Buffer — A 2D Cell Grid
2026-03-03
How I Ported Claude Code's Rendering Engine to Modern C++
2026-03-03
The Problem — Why Terminals Are Broken
2026-03-03
Markdown Rendering Overhaul — Heading Anchors, Fence Fixes, and Performance
2026-03-01
Putting It All Together — Building a Compile-Time DSL from Scratch
2026-02-27
Reflection and Code Generation — The Compile-Time Language Grows Eyes
2026-02-25
Concepts as Interfaces — The Type System of the Compile-Time Language
2026-02-23
constexpr Everything — Real Algorithms Running Inside Your Compiler
2026-02-21
Error Messages and Diagnostics — Making the Compiler Talk to Your Users
2026-02-19
Compile-Time Strings and Parsing — Reading Text Inside the Compiler
2026-02-17
Metafunctions and Higher-Order Programming — Templates That Take Templates
2026-02-17
Loom vs Hugo vs Jekyll
2026-02-15
Pattern Matching at Compile Time — Template Specialization as Structural Decomposition
2026-02-13
Data Structures at Compile Time — Type Lists, Value Lists, and Compile-Time Containers
2026-02-11
Iteration at Compile Time — Parameter Packs, Fold Expressions, and Recursive Templates
2026-02-09
Control Flow at Compile Time — if constexpr, SFINAE, Concepts, and Tag Dispatch
2026-02-07
Types as Values — The Core Trick of Compile-Time C++
2026-02-03
Git Source — Serve a Blog Without a Checkout
2026-02-01
Two Languages in One — The Compile-Time Language Inside C++
2026-01-22
Using Loom as a Project Documentation Platform
2026-01-14
Directory-Based Series and Archive Pages
2026-01-06
SEO Out of the Box
2026-01-02
Content Loading — From Filesystem and Git to Typed Site Data
2025
2025-12-26
The HTTP Server — An Epoll Event Loop in 400 Lines
2025-12-19
Compile-Time Routing — Zero-Overhead Dispatch
2025-12-12
Pre-Rendering and the Atomic Cache — Sub-Millisecond Responses
2025-12-05
The Markdown Parser — 1200 Lines, Two Passes, No Dependencies
2025-11-28
The Theme Compiler — From ThemeDef to CSS
2025-11-21
The DOM DSL and Component System — HTML as C++ Expressions
2025-11-14
Strong Types — Making Illegal States Unrepresentable
2025-11-07
Pointer-to-Member, Tag Types, and Type-Level Programming
2025-11-03
Theming Loom: 22 Themes, CSS Variables, and Full Control
2025-10-31
Linux inotify — Watching Files Change in Real Time
2025-10-24
Linux epoll — How a Single Thread Handles Thousands of Connections
2025-10-17
Atomics, Threads, and Memory Ordering — Concurrency Without Locks
2025-10-10
std::variant and std::visit — When a Value Can Be One of Many Things
2025-10-03
C++20 Concepts — Naming What Types Must Be
2025-09-26
constexpr, consteval, and if constexpr — Making the Compiler Do Your Work
2025-09-19
Variadic Templates and Fold Expressions — The Compiler's For Loop
2025-09-15
Introducing Loom
2025-09-12
Templates — Writing Code That Works for Any Type
2025-09-05
string_view and Zero-Copy Parsing — Why Allocations Are the Enemy
2025-08-29
Ownership, RAII, and Move Semantics — Who Owns What?
2025-08-22
Lambdas — Functions as Values
2025-08-15
Structured Bindings, Designated Initializers, and Modern Syntax
2025-08-08
Containers, Iterators, and Algorithms — Thinking in Collections
2025-08-01
Values, Types, and const — The Foundation of Everything
↑