Monday, March 31, 2014

StaGen: The static site generator from WizTools.org

Maintaining websites is a hard task. The last version of WizTools.org was maintained using RapidWeaver. In the quest to design a good looking site, I had sacrificed the joy of working with text. While working on recent updates to the site, RapidWeaver brought back nightmares of using MS Word five years back—just a minor text formatting that I could do in less than a second in Markdown was taking minutes of workaround in RapidWeaver.

Then I started researching the best tool for maintaining my site using just text. I just wanted to fire up BBEdit and be productive. Jekyll sounded attractive. But is written in Ruby—I did not want to invest time in hacking this. JBake is in Java, but seemed bulky and used Freemarker templates. I had been sold out to StringTemplate couple of years back, and did not want to maintain my site in Freemarker.

Based on these parameters, I finally decided to write my own static site generator—specific for my needs of maintaining a tiny site like WizTools.org. And thus was born StaGen. Right now, there is no public release of StaGen (it was just written last night!)—but it already is powering WizTools.org home page as of now.

Thursday, March 27, 2014

The Joy of Unix in Windows: Cli Tools Bundle

I am happy to announce the immediate availability of WizTools.org Cli Tools Bundle for Windows. This is a commercial build of OpenSource software available for $5.

Saturday, March 15, 2014

Offsetting the cost of OpenSource development

There is a cost associated with OpenSource development. The cost I pay to maintain the domain, the hosting cost, and most importantly, the time I spend coding and fixing things up. Recently, I have been thinking of how to offset this cost of OpenSource development. One arena I was thinking was of making available my builds via App Stores. This gives the end-users the value add of having a certified build, automatically updated to the latest version. I believe, a person, like me, wouldn’t mind paying a small amount for this additional value add, and would provide a source of income for the OpenSource project. Thus started my experiment.

Experiment 1: Mac App Store

I selected my most popular OpenSource project for this experiment: RESTClient. I began the effort. My initial estimate was for one week after reading this blog. And one fine Monday, couple of weeks back, I began the work. As I progressed, I understood the enormity of the task I had undertaken. From building OpenJDK, to scouring Apple documentation (excellent BTW) written for Xcode development—translating to the Java counterpart, complying to Apple sandbox. I understood that I had jumped into something enormous.

During mid-week, I discovered that making RESTClient compliant to Apple sandbox restrictions is near to impossible due to two reasons:

  1. The file open API I was supposed to use, needed to open related files. Example, if I open a file of request type, this particular file could link to external files like SSL certificates. I cannot use normal-file-open APIs if I have to use these linked files. The solution? Use JNI technologies to comply to sandbox restrictions, and link them to Java application. Not elegant. No other platform would benefit from these code changes.
  2. The application configuration were stored by RESTClient in ~/.rest-client folder. Sandbox restricted me from writing/reading to/from this location. And this location is shared between the Cli and GUI application. Again, I would have to do some crazy logic to write generic configuration files for sandboxed and non-sandboxed version of the software.

Based on these developments, I changed my course of plan:

  1. I wanted to experience Mac App Store onboard. So I selected a more simple application for that experiment, RegularExpression Tester. It is currently under review by Apple.
  2. I didn’t want my effort spent on RESTClient go waste. I wanted to provide a signed build of RESTClient that could be purchased.

Experiment 2: FastSpring

I wanted a store-front to sell my RESTClient binaries. The effort setting up the store and maintenance of it should be minimal. For the customers, it should be simple effort to purchase and download. The only store I explored was FastSpring. I got hooked to its simple interface, and created my product page. This experiment is now ongoing—I am trying to figure out how many people would really pay for a software that is easily available for download as OpenSource.