Welcome to my page about category theory, functional programming, and other fun topics. You may be interested in some of the projects I'm involved in, or just want to know more about me.
mkAIDerivation 2025-06-14
Generate a Nix derivation on the fly using an LLM over the network
How to Statically-link Haskell Binaries using Nix 2024-09-29
Example repo showing how to statically-link x86-64 Linux Haskell binaries with Nix
Cloudy: CLI tool for easily spinning up compute instances in the cloud 2024-09-25
Run one-off compute instances in the cloud with an interface similar to Docker
FODONUTs: Fixed-Output Derivations for Operating Network-Utilizing Tests 2023-07-24
Using fixed-output derivations to run tests that access the network
evil-nix: download files without requiring a hash 2023-06-28
A Nix library that allows downloading files without requiring a hash, even in pure-eval mode
Bound by a Free-Monad-like Structure 2023-05-11
A take on the bound Haskell library that uses a free-monad-like structure
binplz: easily curl static binaries 2023-02-26
Introducing binplz, a service that serves curl-able statically-linked binaries from Nixpkgs
Building Pandoc with stacklock2nix 2022-12-26
Use stacklock2nix to build a fully statically-linked Pandoc
Building Dhall with stacklock2nix 2022-12-20
Use stacklock2nix to build Dhall
Building the PureScript Compiler with stacklock2nix 2022-12-16
Use stacklock2nix to build the PureScript compiler.
stacklock2nix 2022-12-15
Easily use Nix to build a Haskell package with a stack.yaml.lock file
Get Involved with Nixpkgs Haskell 2022-11-16
Explanation on how to get started with contributing to the Haskell subsystem of Nixpkgs
How to Setup LXD on NixOS 2022-09-10
Explanation on how to setup LXD on NixOS with a NixOS guest using unmanaged network bridge.
Why PureNix? 2022-01-10
What lead to us starting to write PureNix?
Who Would Find PureNix Easy to Use? 2022-01-05
What sort of developers would find PureNix easy to get started with?
Getting Started with PureNix 2022-01-04
How to setup an environment for playing around with PureNix
PureNix 2022-01-03
Transpiling PureScript to Nix
Git no_push 2021-12-15
Setup a Git remote so you can't accidentally push to it
The Road to purescript2nix 2021-12-10
Steps to get to purescript2nix
purescript2nix 2021-12-10
Easily build a PureScript project with Nix
PureScript Package Sets with Hashes 2021-12-10
PureScript package sets with hashes for consumption by Nix
dhallDirectoryToNix 2021-12-10
Easily turn a directory of Dhall files into Nix
Cross-compiling and Static-linking with Nix 2021-10-20
Easily cross-compile and static-link binaries using Nix
Xephyr for GUI over SSH X-Forwarding 2021-05-07
Xephyr can be used to show some GUI programs that don't work under normal X-Forwarding
How to Make Sure Nixpkgs Can Evaluate 2020-06-02
Explain a command to make sure nixpkgs is capable of evaluating
Announcing password-2.0 2020-05-18
A library for working with passwords in Haskell
How Long Does It Take to Learn to Juggle? 2020-03-15
How many minutes do you have to practice to learn to juggle?
Announcing termonad-2.0.0.0 2019-09-13
New version of a terminal emulator written in Haskell
Announcing pretty-simple-3.0.0.0 2019-08-15
An easy-to-use pretty-printing library for debugging Haskell code
Open Sum Types in Haskell with world-peace 2019-07-11
The world-peace library gives easy-to-use open sum types in Haskell
ghcid for Web App Development 2019-04-07
ghcid is useful for quickly compiling and rebuilding a Haskell web application on changes
Nix Derivation for fast.ai Course 2019-03-16
A Nix derivation for a Jupyter environment for the fast.ai Practical Deep Learning for Coders v3 course
PlayStation 3/4 Controller Over Bluetooth on NixOS 2018-12-20
How to use a PlayStation 3 and PlayStation 4 controller over Bluetooth on NixOS
Termonad: A Terminal Emulator Configurable in Haskell 2018-11-15
Announcing termonad-1.0.0.0
Japanese on NixOS 2018-10-01
How to setup a Japanese environment on NixOS
How to get into Machine Learning for a Haskeller 2018-08-21
How to approach learning about data science as a Haskeller
Install VirtualBox Oracle Extension Pack on NixOS 2018-08-19
How to install the VirtualBox Extension Pack on NixOS
Steps for Releasing a Haskell Package to Hackage 2018-07-16
Steps to follow when releasing a Haskell Package to Hackage
Functional Sapporo 2018-06-25
A functional programming meetup in Sapporo, Japan
CLI Program for Pretty-Printing Haskell Datatypes 2018-03-02
I released a small CLI program for pretty-printing Haskell datatypes
Install VirtualBox on NixOS 2018-02-24
How to install VirtualBox on NixOS
Show all packages installed in NixOS 2018-02-20
How to show all packages installed in NixOS
Use packages from nixos-unstable in configuration.nix without nix-channel 2018-02-18
How to install packages from nixos-unstable in configuration.nix without using nix-channel
XMonad and Taffybar on NixOS using Stack 2018-02-16
Show how to setup XMonad and Taffybar on NixOS compiling with Stack
servant-rawm 2017-10-15
Replacement for Servant's Raw type that allows monadic effects
GHC Warnings You Should Use in Addition to -Wall 2017-07-28
List of important GHC warnings you should use that are not enabled by -Wall
k2pdfopt for Reading Academic Papers on a Kindle 2017-07-21
Using k2pdfopt to format academic papers to read on a Kindle
highlight CLI application 2017-07-01
CLI application for highlighting a regex in a file
Type Signatures in Instances in PureScript 2017-06-05
Allow type signatures on methods in instances
servant-checked-exceptions 2017-05-10
Specify errors thrown by a Servant API on the type-level
When is UndecidableInstances safe? 2017-04-07
Both safe and dangerous uses of UndecidableInstances
xml-html-qq 2017-02-17
Quasiquoters for XML and HTML Documents in Haskell
Inspecting generated Template Haskell 2017-01-16
Using -ddump-splices to look at generated Haskell code
Keter behind an nginx Reverse Proxy over HTTPS 2016-11-09
Steps to setup Keter behind an nginx reverse proxy server on Debian 8
Intro to PureScript for a Haskeller 2016-10-18
How to get started with PureScript for the Haskell programmer
Yahoo Finance API Wrapper in Haskell (updated to v0.2.0.0) 2016-10-15
Update to the Haskell wrapper for the Yahoo Finance API for real-time stock quotes
purescript-unicode 2016-10-06
Functions for working with unicode characters in PureScript
{-# OPTIONS_GHC -fno-warn-orphans #-} 2016-09-16
GHC pragma and flag for silencing warnings about orphan instances
Yahoo Finance API Wrapper in Haskell 2016-07-10
Haskell wrapper for the Yahoo Finance API for real-time stock quotes
5 Ways to Test Applications that Access a Database in Haskell 2015-11-20
Pros and cons of 5 different ways to test code that accesses a database.
Setup Debian MIPS 2015-08-14
Setup MIPS environment for running MIPS binaries in CTFs.
Type-level Strings, Type-level Lists, Type-level Operators, and Type Families in Servant 2015-08-13
Type-level things in Haskell and how they are used in Servant
cabal init Now Creates Main.hs 2015-07-01
I got a small patch into cabal that makes the init create a Main.hs.
Puppet Module for Keter 2015-06-26
Install Keter with Puppet on Debian 7
Installing ghcjs on Debian 7 Wheezy 2015-04-10
Steps to install ghcjs on Debian 7 Wheezy
Passing -ddump-splices from Cabal 2015-03-24
Explain how to use the GHC flag "-ddump-splices" from cabal on the command line.
Multi-parameter Type Classes in Haskell 2015-03-14
Short introduction to multi-parameter type classes in Haskell, including functional dependencies and type families
Using Spell Checking in Vim 2014-12-24
Using Spell Checking in Vim
Initial Blog Post 2014-12-23
Short introduction for this blog.