RSS.Social

Chris Done's Blog

follow: @[email protected]

Posts

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