Blog
Projects
I don’t actively contribute to any open source projects, but here are some projects that I’ve worked on.
- purescript-rationals – Rational numbers for PureScript. A very small library to solve the float arithmetic problem that we have in JavaScript. It has a fairly nice test suite using property based testing.
- purescript-node-postgres - PureScript bindings to the
pg
node library.
- 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.
- 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
purescript-rx
.
- 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.