Things I've made trying to put my dent in the universe.
I've worked on tons of little projects over the years but these are the ones that I'm most proud of. Many of them are open-source, so if you see something that piques your interest, check out the code and contribute if you have ideas for how it can be improved.
-
RFC Browser
A delightful RFC browser with enhanced typography, relationship visualization, and personal notes. Navigate the web of IETF standards with ease.
ikdv3
-
GHC Memory Layout Visualizer
Interactive tool to visualize how GHC represents Haskell data types in memory, with heap layouts and card tables.
ikdv3
-
Temporal.io Haskell Client
Haskell support for durable execution in the face of failure.
github.com
-
Haskell OpenTelemetry SDK
I am the primary author of the Haskell OpenTelemetry SDK and the maintainer of the Haskell OpenTelemetry ecosystem.
github.com
-
HState
Dependently typed state machines in Haskell.
github.com
Hackage Packages
Open source Haskell packages I've published to Hackage.
| Package | Description | Version | Updated |
|---|
| hs-opentelemetry-instrumentation-hw-kafka-client | OpenTelemetry instrumentation for hw-kafka-client | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-gogol | OpenTelemetry instrumentation for the Gogol Google Cloud SDK | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-amazonka | OpenTelemetry instrumentation for the Amazonka AWS SDK | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-monad-logger | Bridge monad-logger to OpenTelemetry Logs | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-co-log | Bridge co-log to OpenTelemetry Logs | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-katip | Bridge Katip structured logging to OpenTelemetry Logs | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-tasty | OpenTelemetry instrumentation for the Tasty test framework | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-hspec | OpenTelemetry instrumentation for Hspec test suites | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-ghc-metrics | OpenTelemetry metrics for the GHC runtime (RTS statistics) | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-postgresql-simple | OpenTelemetry instrumentation for postgresql-simple | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-persistent-mysql | OpenTelemetry instrumentation for persistent-mysql | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-persistent | OpenTelemetry instrumentation for the Persistent database library | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-yesod | Yesod middleware for providing OpenTelemetry instrumentation | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-cloudflare | OpenTelemetry instrumentation for Cloudflare services | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-http-client | OpenTelemetry instrumentation for http-client | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-wai | WAI instrumentation middleware for OpenTelemetry | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-instrumentation-conduit | OpenTelemetry instrumentation for Conduit streaming pipelines | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-vendor-honeycomb | Optional OpenTelemetry integration for Honeycomb | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-utils-exceptions | Exception utilities for OpenTelemetry instrumentation | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-exporter-prometheus | Prometheus text exposition for OpenTelemetry metrics export batches | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-sdk | OpenTelemetry SDK for use in applications. | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-exporter-otlp | OpenTelemetry exporter supporting the standard OTLP protocol | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-propagator-xray | AWS X-Ray trace context propagation for OpenTelemetry. | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-propagator-jaeger | Jaeger trace context propagation for OpenTelemetry. | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-propagator-datadog | Datadog Propagator for OpenTelemetry | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-propagator-b3 | Trace propagation via HTTP headers following the b3 tracestate spec. | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-propagator-w3c | Trace propagation via HTTP headers following the w3c tracestate spec. | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-exporter-in-memory | In-memory exporter for OpenTelemetry testing | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-exporter-handle | Handle-based exporter for OpenTelemetry (e.g. stdout) | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-otlp | OTLP protocol buffer modules for OpenTelemetry, generated via proto-lens | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-api | OpenTelemetry API for libraries to instrument code or build wrappers. | 1.0.0.0 | 5/29/2026 |
| hs-opentelemetry-semantic-conventions | OpenTelemetry Semantic Conventions for Haskell | 1.40.0.0 | 5/29/2026 |
| hs-opentelemetry-api-types | Core attribute types for hs-opentelemetry | 1.0.0.0 | 5/29/2026 |
| wireform-proto | Protocol Buffers (proto2/proto3) with IDL parser, code generation, JSON mapping | 0.1.0.0 | 5/16/2026 |
| wireform-derive | Annotation-driven Template Haskell deriver core for wireform | 0.1.0.0 | 5/16/2026 |
| wireform-core | Shared FFI primitives for wireform format packages | 0.1.0.0 | 5/16/2026 |
| data-sketches | Stochastic streaming algorithms for approximate computation on large datasets. Includes KLL, HLL, Theta, Count-Min, and REQ sketches. | 0.4.0.1 | 4/14/2026 |
| data-sketches-core | No description available | 0.3.0.0 | 4/14/2026 |
| thread-utils-context | Garbage-collected thread local storage | 0.4.1.0 | 4/14/2026 |
| fractal-layer | Composable resource management and dependency injection | 0.1.0.0 | 3/18/2026 |
| sofetch | A low-boilerplate Haxl-like data fetching library | 0.1.0.4 | 3/11/2026 |
| sofetch-otel | No description available | 0.1.0.0 | 2/14/2026 |
| idn | Pure Haskell IDN and Punycode implementation | 0.1.2.0 | 11/21/2025 |
| uri-templater | Parsing & Quasiquoting for RFC 6570 URI Templates | 1.0.0.1 | 11/21/2025 |
| warlock | Automatic type-safe conversion between Haskell data types using Template Haskell | 0.1.0.1 | 10/12/2025 |
| temporal-sdk-core | No description available | 2025.10.1.0 | 10/1/2025 |
| temporal-sdk | No description available | 2025.10.1.0 | 10/1/2025 |
| temporal-api-protos | No description available | 2025.10.1.0 | 10/1/2025 |
| varargs | Utilities for working with variadic functions using type-level lists | 0.1.0.1 | 9/19/2025 |
| honeycomb | No description available | 0.1.0.1 | 5/5/2023 |
| thread-utils-finalizers | Perform finalization for threads. | 0.1.1.0 | 5/4/2023 |
| datadog | Datadog client for Haskell. Supports both the HTTP API and StatsD. | 0.3.0.0 | 3/30/2022 |
| json-pointy | JSON Pointer (RFC 6901) parsing, access, and modification | 0.1.0.1 | 10/30/2019 |
| now-haskell | Zeit Now haskell-side integration and introspection tools. | 0.1.0.0 | 8/21/2019 |
| multipool-postgresql-simple | No description available | 0.2.0.0 | 4/10/2019 |
| multipool-persistent-postgresql | Read and write appropriately from both master and replicated postgresql instances. | 0.2.0.0 | 4/10/2019 |
| multipool-persistent | Read and write from appropriate persistent sql instances in replicated environments. | 0.2.0.0 | 4/10/2019 |
| multipool | Generalized system for reading and writing to distributed systems that have primary/replica topologies. | 0.2.0.0 | 4/10/2019 |
| algolia | A client implementing the Algolia search API | 0.1.0.0 | 6/25/2018 |
| fastly | A highly experimental Fastly API client. | 0.1.0.0 | 6/21/2018 |
| postgresql-common | Library for sharing common PostgreSQL types across Haskell PostgreSQL libraries. | 0.1.0.1 | 6/21/2018 |
| postgresql-common-persistent | Persistent compatibility for postgresql-common | 0.1.0.0 | 6/18/2018 |
| asset-map | Asset map support for the JavaScript broccoli-asset-rev library. | 0.1.0.0 | 6/12/2018 |
| librato | Bindings to the Librato API | 0.2.0.1 | 12/20/2017 |
| wai-middleware-brotli | WAI middleware for brotli compression | 0.1.0.0 | 10/28/2017 |
| hs-brotli | Compression and decompression in the brotli format | 0.1.0.0 | 10/28/2017 |
| metrics | High-performance application metric tracking | 0.4.1.1 | 8/9/2017 |
| pipes-wai | A port of wai-conduit for the pipes ecosystem | 3.2.0 | 1/8/2016 |
| flowdock | Flowdock client library for Haskell | 0.3.0.1 | 6/25/2015 |
| hs-mesos | No description available | 0.20.3.0 | 6/4/2015 |
| serf | Interact with Serf via Haskell. | 0.1.1.0 | 5/21/2015 |
| engine-io-growler | No description available | 0.1.0.1 | 4/23/2015 |
| feature-flags | A simple library for dynamically enabling and disabling functionality. | 0.1.0.1 | 4/2/2015 |
| growler | A revised version of the scotty library that attempts to be simpler and more performant. | 0.6.0 | 2/21/2015 |
| lens-text-encoding | Isomorphisms and prisms for text <=> bytestring conversions | 0.1.0.0 | 10/12/2014 |
| hedis-simple | A simplified API for hedis | 0.1.0.0 | 11/28/2013 |
| easy-api | Utility code for building HTTP API bindings more quickly. | 0.1.0.0 | 11/22/2013 |
| snappy-iteratee | An enumeratee that uses Google's snappy compression library. | 0.1 | 11/2/2011 |
| zoom | A rake/thor-like task runner written in Haskell | 0.1.0.1 | 8/5/2011 |