Projects

ReasonML

My colleague Michael Martin-Smucker and I develop and maintain a small but growing ecosystem of libraries for ReasonML/BuckleScript in the Reazen GitHub org.

  • relude
    • relude is our “standard library replacement” for ReasonML/BuckleScript.
    • The purpose of this library is to provide a “batteries included” style of prelude/stdlib based on the powerful abstractions from category theory and abstract algebra.
    • The library was primarily inspired by the ecosystems of Haskell, PureScript and Scala libraries like scalaz, cats, and shapeless
    • In addition to the math-based abstractions, we provide all the other helper modules and functions that you’d expect from a reasonable standard library.
  • relude-parse
    • relude-parse is a monadic parsing library, inspired by all the amazing prior art in Haskell/PureScript/Scala
  • relude-reason-react
    • A “principled” set of helper utilities for [ReasonReact], based on relude’s abstractions
  • relude-fetch
    • A interop library for the fetch API, using the pure abstractions provided by relude
  • relude-eon
    • A date/time library for ReasonML
  • relude-csv
    • A pure functional CSV parsing library based on relude-parse
  • relude-url
    • A pure functional URL parsing library based on relude-parse

NixOS

My co-worker Jeff Simpson convinced me to try out NixOS when I had recently gotten a new work computer. I still don’t completely know what I’m doing, but I’m enjoying using this quite different and innovative Linux distro.

Scala

I don’t have any open-source work to list in the Scala ecosystem, but I’ve had the opportunity to learn and work with FP libraries like:

PureScript

I haven’t done as much PureScript as I would like to, but I did a small project for purescript-halogen to wrap a now-deprecated Material Design UI library:

Haxe

  • haxpression and haxpression2
    • Math expression parser and evaluation libraries for Haxe
    • v1 was a port of a JavaScript library, and v2 was a complete rewrite using a monadic parser approach
  • graphx
    • A graph traversal/utility library for Haxe
  • thx.core
    • I had the good fortune of working for Franco Ponticelli, who is the creator and maintainer of the thx family of libraries for Haxe.
    • I contributed features and bug fixes for the main thx.core library and several of the other libraries in the ecosystem
  • abe
    • I worked with the abe library (a Haxe binding to the express.js JavaScript library), and the associated set of bindings to other js-based npm packages.
  • doom
    • Worked with and on a innovative homegrown virtual DOM UI library for Haxe

Unity

I don’t have much to show beyond some tutorial code, but at one time I decided it would be fun to learn the Unity game development framework. Knowing OCaml/ReasonML now I’m a little curious to go back and see what it looks like to use F# with Unity, rather than C#.