In an epiphany saturday night gin and tonic in hand I realized a completely new way of integrating external web services in StakeItOut.
This way will make it a lot easier for me to support more different webservices as well as allow my users to add support for their own web services and share them with others.
I will write more about this later, however it made me think about one of the benefits of using something like Ruby on Rails for application development. It makes it less painful to throw away code and start afresh.
My first version of StakeItOut was made in November, 2004. I have scratched and started over 4 times now. This has mainly been because I’ve made changes and simplified the business model. It is funny though, that now I am actually back to the original idea that I had last summer.
Besides these major throwaways I have done several major changes to the current version. I decided to encrypt everything 2 weeks ago, which meant a major rewrite of some of the core code. This was harder than I had expected, because the crypto libraries are poorly documented in Ruby. I will write a blog post at some point documenting how I did this. And now this major web service change. I figure though that before I go to Reboot I will have it working.
Is throwing away old code a bad idea. Well, in the financial world where I work in the daylight hours it is standard that no one dares rewrite old code. That however is also the source of most of the production problems that we have at work.
Rails makes it very easy to rewrite code. It is so simple to start over again and the experiences you earned from your last iteration makes it ridiculously fast to get started again. The current version started 4 weeks ago, where I cut out a whole bunch of content creation code that I had worked on. The new version is much simpler without any internal content creation. I figured it was much better to allow people to use their existing sites such as Backpack. It is focused on a core of secure sharing of web services.
Bear in mind when you look at these 4 weeks and remember that I am working a day job as well and I was away on vacation for 1 week. Even though I am considered by some a J2EE expert, I don’t think I could have done it that fast in J2EE.