Posts

Functional programmers enter a diner…

October 20, 2025

A fun, I think, thought experiment to avoid concurrency deadlocks by enforcing a fixed, predefined order for acquiring static sets of MVars.

Human-editor interfaces

September 27, 2025

A rambling of thoughts and my experience up till now with text editors.

Can I pet your DAG?

July 29, 2025

Haskell's ordered maps are fun tools to have in any arsenal. In this post I give an example on doing dependency resolution quickly using the partially ordered nature of dependency relations, using an extremely contrived example.

We’re All CHAMPs On The Inside

March 31, 2025

HAMT's are cool, Haskell has a ubiquitous one in unordered-containers. But other languages have the even cooler CHAMPs. This post is about optimizing the filter-ish functions in an attempt at a drop-in replacement that uses CHAMPs.

Harder-Coded Newtypes

October 20, 2024

Newtypes are generally useful to avoid parameter-blindness, but can be cumbersome if each type has it's own wrapper. I explore the use of TypeData and phantom types in Haskell as an alternative way to improve type safety and reduce developer errors.

Lazy-ing in My Pool

October 6, 2024

Laziness is underrated. Here I lay out a lazy initialization strategy for managing a pool of resources. It is beneficial to defer initialization to improve performance in scenarios where not all resources are needed simultaneously.

Better than Revivify

September 24, 2024

I lay out my journey of revitalizing my long-neglected website, transitioning to using Hakyll. Including styling with Clay, implementing syntax highlighting with Pygments, using KaTeX for mathematical typesetting, and optimizing font usage.

…or you can find more in the archives.