Today's lesson: Once you've gotten an application to the point that it's releasable, release it. It's been months since I decided to add "just one more feature" to my trialware app before releasing it, and it's nowhere to be found. Why add the feature now? Well, I covinced myself that doing so would save me time not coding for backwards compatibilty later. It's not even that I'm particularly stuck. I just haven't set aside the time for this next relatively major refactoring and feature addition.

Of course a smart man would have simply added the functionality to anticipate the new feature instead of trying to add it all now, making major changes to the GUI, etc. In this case, I just have to add one extra line of text for each entry in a particular file. For now, the code just needs to know to write a dummy entry into that line and to ignore it when reading later. Easy as that, my app's infrastructure is ready for the future update.

This, of course, is the time I wish I had source control on my tiny app. I've got old folders with the whole slew of source around, but no notes saying what's been done to each. But I think I can pull out something old, add the anticipatory functionality only, and finally get the danged thing out the door.

As I think I've mentioned before, this experience has really helped me see why so many apps have quirks that you think would be awuflly easy to fix. At some point, you have to stop worrying about quirks and ship your product. It may not be idealistically perfect, but if it's a useful, fairly priced app, the proverbial world will still be better for your having released it.