Knowing when to finish and knowing where to start

Announcing the completion of varcaser, and discussing prioritization.

by on

Today, I'm pleased to annouce that my open-source Go project Varcaser is code complete, and ready for use. I will not be adding any more features to varcaser, although I will of course be happy to review and merge patches, and fix any bugs my users may detect. Since at the moment the only users appear to be myself, I'm not too worried about this.

When I set out to write varcaser, I needed a way to convert between variables written in camelCase and snake_case. The reason for this is my (as yet unreleased) project xsd2proto. I was trying to solve the problem of converting xsd files into collections of protocol buffer definitions, and the two formats differ in their casing conventions. In typical yak-shaving fashion, I decided that a more general case-conversion library would be a worthwhile product1, and so I decided to work on that first.

Now that this project is complete, I find myself at a crossroads. In the time that I've been working on finishing up varcaser, I've lost the motivation for working on xsd2proto. I don't simply mean that my feelings towards that problem have changed (although that is also true). The projects I work on in a professional capacity have changed, and as a result I don't need xsd2proto myself any more.

At the same time, I've collected a really long list of aspirational projects I would love to work on, and I don't know what to pick up next. The voice of discipline inside my head insists that I follow through with the predefined progression, and continue with xsd2proto. The rest of me is really willing to go along with it right now, just because it saves me from having to make a decision.

It's definitely something to think about, and immediately after posting this, I'm going to review my list of project ideas to see what gets me the most excited. In the meanwhile, I would be privileged if you would share your experiences with prioritizing your side projects with me at this discussion thread over at Hacker News.

  1. In the general sense of something produced—I have no intention of charging for something so trivial. [return]