Chris Done's Blog
Applicative-wired monad pattern
My blog now runs on a Raspberry Pi at home
LLMs
The LLM Curse
Less-Than Estimation
Registers of code authoring
Hell (Haskell shell): Year in Review
Adding sum types (variants) to Hell
A modest critique of Htmx
Naming sum types is often hard
Portals in Emacs
All my projects (2008-2023)
Halogen is better than React at everything
Reports of RSS/Atom's death are greatly exaggerated
Hell: Shell scripting Haskell dialect
A spectrum of web dev abstraction
Codebases and love
AI and Machine Thinking
Pickling: The really obvious missing feature of all web browsers
Tamagotchi tooling
Reasoning violently
Three questions of language design
Things I've changed my mind about
Inflex
Immutable Publishing Policy
A plain English description of monads without Haskell code
Thoughts on type class implementation
My negative views on Rust
Inflex Bibliography
The Movement Principle
What's wrong with ImplicitParams
How exactly ExceptT differs to EarlyDo
Haskell doesn't have macros
Is it Try.do that is dangerous?
Try.do for recoverable errors in Haskell
Recoverable errors in Haskell
Use import aliases to easily access fields
The language of spreadsheets is bad
What’s wrong with the grid?
Ghosts of Departed Proofs Convenience
Defaulting fields in a record
Statically Checked Overloaded Strings
Static Smart Constructors with Double Splices
Client-side web programming in Haskell: A retrospective
German Naming Convention
Dynamically typed Haskell
Web engines in Haskell
Lazy list length
Type inequality operator
Fast Haskell: Competing with C at parsing XML
hindent 5: One style to rule them all
A philosophical difference between Haskell and Lisp
Use the REPL, Luke
The path package
Existentials and the heterogenous list fallacy
The constraint trick for instances
Stream fusion and composability (Java 8 and Haskell) for newbies
My Haskell tooling wishlist
Measuring duration in Haskell
Lucid 2.0: clearer than before
Lucid: templating DSL for HTML
Fast pagination on PostgreSQL
shell-conduit: Write shell scripts in Haskell with Conduit
hindent: A Haskell indenter
Formatting in Haskell
Teaching: A good (and bad) example
An alternative Haskell home page
Presentations update
The Identity monad trick
The printer Haskell deserves
Typeable and Data in Haskell
Haskell structured diffs
Reloading running code in GHCi
Attempto Controlled English
Emacs, Notmuch and Offlineimap
Pure IO monad and Try Haskell
Dijkstra on Haskell and Java
Emacs users are like Terry Pratchett’s Igors
structured-haskell-mode
Recording simple GIFs for demos
Making GHCi scale better and faster
Twitter waterflow problem and loeb
God-mode for Emacs
Functional Programming is Hard?
CamelCase vs under_scores vs hyphenated-words
Analysis of Emacs keys pressed
Haskell News
IRC Browse
Fay, JavaScript, etc.
Making HaskellDB slightly more type-safe
Comments on my blog
Ji, a little library for controlling a web browser from Haskell
A concept for editing code as an AST rather than text
A map generic upon the value thanks to typeable
HaskellDB: A long tutorial
Common Lisp/Haskell syntactic comparison
Deprecate Prelude.head and partial functions
“Value polymorphism”, simple explanation with examples
Rank-N types, a simple DB example
Experimenting with GHCJS, the Haskell→JavaScript compiler
Some insights from The Mythical Man Month starting from Chapter 11
‘amb’ operator and the list monad
Hulk: A Haskell IRC server
Lisk - Lisp and Haskell
Duck typing in Haskell
Applicative and ConfigFile, HSQL
Lojbot
Kibro on Shared Hosting
Kibro: Haskell, Lighttpd and FastCGI
Haskell Formlets: Composable web form construction and validation
New Kibro
Kibro refactoring
GHCi on Acid