Yesterday I tagged the first release of the project that has occuppied most of my spare-time hacking for the past few months, and that I’d been working on sporadically for longer than I care to think about. It’s a Haskell implementation of Cap'N Proto. The package is available on Hackage and my Github account.
It’s alpha quality, but serialization works. I spent yesterday afternoon tying up loose ends, particularly documentation, and the package is better documented that 98% of what’s on Hackage (which is sadly not as big of an achievement as it should be). So while this is mostly intended as a “Hey look what I built!” blog entry, the balance of the post is more of a reflection on the experience than it is about the artifact itself.
So far the only other place I’ve announced this to is the Cap'N Proto mailing list, though other places will follow. Actually announcing a piece of software to the world for the first time is still something of a novel experience to me. I’ve done it with a couple of Sandstorm apps and what were basically tech demos, but other than that I’ve mostly worked on projects that fall into one of a couple categories:
- Things which are mostly for my own use
- Projects I haven’t finished
- Work for clients or employers, which aren’t really “products” as such; they’ve been stuff for internal use or that at least have a specific user in mind who we’re in contact with from day one.
- Existing projects which I’ve contributed to, or in the case of simp_le, adopted.
Historically I’ve been lacking the discipline required to stay motivated and finish large projects that aren’t externally imposed (being paid mostly solves the motivation issue). It’s a skill that I’ve only recently managed to develop.
The other projects I’ve thrown out into the world didn’t get many bites. I’ll speculate a bit as to why:
- The Sandstorm IRC bouncer I wrote requires external network access, which on Sandstorm requires administrative privileges. I don’t see a good way around this requirement, but it significantly restricts the set of users that have the access needed to use it.
- The Sandstorm filesystem protocol stuff I did was a mix of tech-demo and developer tool. I still haven’t gotten wind of anyone but myself really using the native Sandstorm APIs, so it really isn’t surprising that no one is using the thing I put together on top of them. We seriously need to improve the developer experience if anyone is going to really use Sandstorm’s capability architecture to its full potential.
- The jury is still out on docker-spk, and I’m more hopeful about people taking interest than I have been for any of my other projects. It also hasn’t felt like as big of a deal as the others; the initial announcement was after an afternoon of work. I started working on it because I realized that it was very low hanging fruit.
I don’t know what to expect re: uptake with the Haskell Cap'N Proto implementation. I’ve seen some interest already, even before the announcement. I have doubts about what people will think when they start trying to use it. I’m worried I’ve kicked it out the door before it’s really ready. But it’s always tempting to keep refining a project, and at a certain point you just have to ship it. We’ll see how it goes.