Archives

Here you can find all my previous 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.

What’s in the Name?

September 20, 2024

One of the first things functional programmers do is implement a lambda calculus interpreter. This post examines various representation methods, including first-order representations and higher-order abstract syntax (HOAS).

Roly, Oly, …, Polyvariadic Boogaloo

September 18, 2020

I revisit the topic of polyvariadic functions, building on a previous attempt by introducing type families to create a more streamlined implementation.

Roly, Oly, …, Polyvariadic

July 6, 2019

This introductory post illustrates the concept of polyvariadic functions, using the example of a function that can sum an arbitrary number of integers or return another function.

Flooding my ’base

February 15, 2019

I discuss populating a database with generated data, resulting in a simple solution that generates objects sequentially, following a topological sort to ensure dependency preservation.

Cat… amarphisms

April 15, 2018

Briefly explore the concept of catamorphisms in functional programming, primarily focusing on their application to algebraic data types, such as binary trees.

Shuffle-athon

November 10, 2017

Examine the problem of shuffling a one-dimensional array in a single pass, employing a linked list structure along with reservoir sampling for random selection.