Tuesday, April 15, 2014

RESTClient 3.3.1 Released

This release fixes a nasty bug #7 that was causing NullPointerException when POSTing. For this reason, request everyone using 3.3 version to upgrade to 3.3.1. Quick links:

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.

Friday, February 28, 2014

XML Validator 1.0

This is a tool I wrote long back, and used exhaustively for a project, and then forgot about it. I did not even do a public release of the tool. When migrating WizTools.org Google Code projects to GitHub, I noticed this project. Today, I invested some time and cleaned the code and made a release. Get it from: https://github.com/wiztools/xml-validator/releases.

Tuesday, February 25, 2014

Thursday, February 20, 2014

Newer desktop tool releases will require Java 7 to run

All newer releases of desktop tools published by WizTools.org will require Java 7. This is a evolutionary step we are taking to benefit from newer constructs introduced in this version of Java.

Friday, February 14, 2014

Mini-projects move to GitHub

Last couple of weeks I have been working on moving mini-projects from Google Code to GitHub. The social experience provided by GitHub is unmatched. Also, Google Code seems to be a lost child of Google--as feature after feature have been removed in the recent past. The approach I am taking when moving the projects is:

  1. Export the svn-history for the mini-project, and create it as a new project under GitHub.
  2. Create git/GitHub specific source assets like README.md and .gitignore.
  3. Update the mini-project GitHub URL in the pom.xml.
  4. Update the dependencies for the project to the latest version.
  5. Make a new minor-release through GitHub.
  6. Remove the code for the project from Google Code.
  7. Deprecate the download from Google Code.
Note that following this process, you will see lot of releases happening at WizTools. Many of them are superfluous and may not have any improvement compared to the last release. Some, like Markdown2HTML, that depend on external library for core functionality, would benefit from the new releases. So use your judgement after reading the Release Notes on deciding if you need to upgrade your software.

Monday, February 3, 2014

RESTClient Source Code Migrated to GitHub

The message from Google seems to be clear: it does not want to invest in non-profit making venture like Google Code. Google has been killing feature-after-feature from the Google Code service recently. The two most affected me were:

  1. Removing Updates page without any notification.
  2. Removing the Downloads service.

Add to this fact, Google not adding any new feature to Google Code in the recent past.

Well, the message seemed clear. And we have initiated on our part to move WizTools.org code to other well maintained services like GitHub / BitBucket. Our most used project, RESTClient code is already moved to GitHub. Note, we have moved only the source code, Issues and Wiki is still hosted in Google Code. Moving Issues and Wiki will be done in a phased manner in near future.

Friday, December 20, 2013

Google Code Downloads Download Script

A small script to download all downloads from a given Google Code project: https://bitbucket.org/subwiz/gcode-download/ Since Google turned evil, and deprecated Google Code download service, this script can be used to migrate the downloads to other services.

Saturday, December 7, 2013

Sunday, October 6, 2013

CSV2HTML Tool Project

A new project has been initiated: CSV2HTML. This is a command-line tool to convert from CSV format to HTML table. Download the pre-release version from here: https://bitbucket.org/subwiz/csv2html/downloads.

Saturday, August 31, 2013

3.2.1 Release of WizTools.org RESTClient

The latest version of our flagship product, version 3.2.1 is available for download. The release has two bug fixes: one affecting proxy users in cli tool, and the other affecting people working on IDN URLs. There is one excellent feature improvement that is also implemented: Groovy Test Scripts can now have supporting external Jars. Checkout the release notes for details.

Friday, July 5, 2013

3.0 Release of WizCrypt

Happy to announce the 3.0 release of WizCrypt. WizCrypt is the oldest project from WizTools.org. This is a command-line tool to encrypt files. Originally designed as a cross-platform tool to encrypt my secret files from a shared PC. The algorithm and file-format have been chosen/designed for speed from Desktop user perspective.

Thursday, June 27, 2013

WizTools.org RESTClient Book

Get this Kindle book:

RESTClient Book

RESTClient 3.2 Release

Get the latest and the greatest release of RESTClient. This release supports Internationalized Domain Name (IDN) and history. View detailed Release Notes here.

Sunday, May 12, 2013

PHP OOP Book Updated

New chapter on PHP Functional Programming and few concepts left in the original edition (like Object Cloning) are covered in this update. Get the new edition here: http://www.amazon.com/dp/B00CM4ZECG. Readers who have already bought the book will receive a mail from Amazon detailing how to download this free update.

Wednesday, May 8, 2013

Applying Lean Principles in Publishing

Launch the minimum-viable product. Then keep improving.

Can this be achieved in publishing industry? This is going to be my experiment. Technical books are best suited for this type experiments, considering the rapid innovation in the software field.

Friday, May 3, 2013

PHP OOP: Quick & Dirty for Advanced Learners

Our first book is published:

PHP OOP: Quick & Dirty for Advanced Learners

The book is available for free under a promotion that ends midnight May 4 midnight PST.

Monday, April 22, 2013

Focusing on the Essentials: A way of Learning

There are many things that we do in our life that don't add any value to our life. One such thing is learning the complete detail of a technology. Ever since I started learning programming, I have taken one approach to learn: learn the essentials. Then jump into implementation. The details of the language / software / environment are just a search-term away.

When buying a technical book too, I try to avoid reference books. Most of the information available in the reference books can be fetched quicker by a web-search. What I want a book to be is like a tutor: explain the fundamentals and give enough information to inspire me to explore more.

The same approach will be followed by books published by WizTools.org. The first in the series of books that will be published is under preparation and will be available shortly. The book covers PHP Object Oriented and Modular Programming.

Monday, October 8, 2012

Android---here we come!

I am happy to announce the start of WizTools.org Android Mini-Projects. We have also made available the first project in Google Play: Date Arithmetic.

I assure you that this foray into this wonderful platform is the beginning of a rich product line from WizTools.org.

Sunday, September 2, 2012

RESTClient 3.0 version available for download

One of the biggest milestone in the development of RESTClient is reached today: with the release of 3.0 version of RESTClient. The release is a major release which breaks backward compatibility with the earlier file format of RESTClient, but with that loss comes loads of new features including binary request and response body. Also not visible to the end users is the major design-level code refactoring and re-writing which has gone into this release: this ensures continued ease of development of the tool in near future.
As usual, the release includes:

Have fun developing/testing HTTP applications using RESTClient :-)

Sunday, August 19, 2012

RESTClient 3.0 Preview Available for Download

Get the latest and greatest work-in-progress version of RESTClient: 3.0 preview release. This revision is a major revision with lots of internal design changes and rewrites. Functions present and functioning in 2.x series could also be broken. Request everyone's help in testing this revision.

Wednesday, August 15, 2012

RESTClient: 3.0 Development, move to GIT and code re-organization

The word 3.0 in relation to RESTClient brings horror to my memories. I started working on 3.0 couple of years back, implemented major changes, made the build unstable, and was not able to fix the working functionality of the previous versions. Then I had to do the inevitable: shelve the 3.0 release plan and start fixing the 2.x branch. And the development has continued in similar vein till now---that is until recently.

Now, I once again took the plunge: started working on the 3.0 release. The 3.0 release is major because:

  • Change the internal data-structure for holding request and response (to support binary formats)---this will break backward compatibility with the 2.x file formats.
  • The UI will have major code re-writes as it will need to support binary formats.
  • The public API will change.
Today I am happy to say that, I have successfully completed many of these changes as of now, and 3.0 preview release should be up for downloads within a week or two.

One of the best decisions I made recently for this 3.0 development is choosing Google Guice. Using the normal capability of Object Orientation provided by Java, it was increasingly difficult to wire UI components and develop maintainable code. Guice was some kind of nirvana in this sense: wiring components with participating APIs was made so much simpler. The choice of Guice and the API re-write made it easier for me to break monolithic classes into maintainable modules. This effort of mine will have long-term implications will provide quicker capability to change / add features.

One of the other changes is move to GIT from Subversion. Subversion was proving to be too restricting as a SCM tool. I was also acting as God---providing prospective committers commit rights. It was proving to be a hindrance---people cannot fork quickly and start developing. They had to wait for my permission before they can be productive. So, I believe, this move to GIT would prove to be extremely healthy for improving external participation.

So guys, as you are awaiting the next big version of RESTClient, I request all of you to actively participate in testing the preview release once it is made available!

Tuesday, August 14, 2012

RESTClient source moved to GIT

Today I moved RESTClient source code from SVN to GIT. This happened after a frustrating issue with SVN last night. Similar issue is discussed in this stackoverflow thread. The problem with centralised SCM software is this: when you are focusing deep in your code, a merge or update has the possibility of hijacking your focus from code to not so glamorous problems.