Skip to content
λ
Chris Grounds
Writing
Inspiration
About
⌘K
Programming as Discovery
Verifying Writing
The Code Smell of LLM Defensive Coding
Rust on the Frontend at Switch2
Impossible Tests
Why the Funny Names?
Coding without implementation
Two Types of TDD
A Steelman Anti-TDD Argument
Domain Modelling with Category Theory
Generate Random Data in Rust
Build a HTTP Proxy in Haskell on AWS Lambda
Haskell Through Example: ReaderT
TDD + TDD = TTDD
Data Constructors Are Functions
Compose for Speed
Wander mode
A constellation of ideas
Close
×
Latest writing
October 8, 2026
/
programming
,
software engineering
,
ai
Programming as Discovery
September 14, 2026
/
writing
,
llms
Verifying Writing
September 3, 2026
/
rust
,
types
The Code Smell of LLM Defensive Coding
August 14, 2026
/
rust
,
frontend
,
leptos
Rust on the Frontend at Switch2
June 8, 2026
/
fp
,
types
,
tests
,
haskell
Impossible Tests
August 13, 2025
/
language
,
fp
Why the Funny Names?
May 31, 2025
/
fp
,
types
,
llms
,
ai
,
haskell
Coding without implementation
April 26, 2025
/
tdd
,
testing
Two Types of TDD
April 24, 2025
/
tdd
,
testing
A Steelman Anti-TDD Argument
October 1, 2024
/
category theory
,
domain modelling
,
fp
,
rust
Domain Modelling with Category Theory
March 17, 2023
/
rust
,
random
Generate Random Data in Rust
May 5, 2019
/
haskell
,
aws
,
lambda
Build a HTTP Proxy in Haskell on AWS Lambda
March 4, 2019
/
Haskell Through Example: ReaderT
September 27, 2018
/
TDD + TDD = TTDD
September 27, 2018
/
Data Constructors Are Functions
May 16, 2018
/
fp
,
javascript
Compose for Speed