Currently most of my open source contributions are related to the PureScript programming language.
Here’s a list of projects that I’ve worked on.
- purescript-node-postgres - PureScript bindings to the
pg node library.
Needs work / experimental
- purescript-indexeddb-safe - An attempt at a very type-safe API to IndexedDB. The goal is to make a very type safe library for interacting with the IndexedDB. I think this has already proved that we can get rid of almost all of the run time exceptions. It accomplishes this by defining your indexes at the type level so that all reading and writing are checked at compile time. The challenge with this project is how to deal with the migrations. I do not have a solution for that yet.
- psc-pane - Auto reloading PureScript compiler, much like ghcid for Haskell. If I was using Vim as much as I used to I would be maintaining this better. Right now I’m using VSCode so I have no need for a tool like this.
- purescript-monadplus-partial - Partial maps and filters over MonadPlus instances for PureScript.
Deprecated / the attic
- purescript-rx – A wrapper for the RxJS library. This was my first PureScript project. I’ve since realized that Rx is very difficult to properly port to PureScript because of the class hierarchy that it’s API is based on. It has also become apparent that working with effectful streams is difficult with Rx. It would require something like
ObservableT to make this somewhat manageable. I think there are better approaches to effectful streams and on the other hand for FRP in PureScript, so this project is deprecated.
- purescript-rx-validation - Validation combinators for RxJs in PureScript. I wanted to see how applicative-style validation works with
- Sham: Test stub and spy for PHP. This was a project inspired by dingus for Python. I used Sham for many of my PHP projects back then and really liked it.
- Behave.js: A BDD-style unit test runner for node and the browser
- spec.io: A BDD-style test runner for Io. I was hacking on Io and needed a test runner so I wrote one.