Sunday, December 7, 2008

What happened to RAD?

For those of us who hate TLAs, RAD stands for Rapid Application Development. It is the idea that you have the tools necessary for you to quickly solve a business problem and not worrying too much about technology. From my limited experience, that was the promise of Powerbuilder and Visual Basic. Then architecture changed or my experience increased but we had to worry about thin client, web services, scalability, concurrency and design templates.

So here is the deal, I am trying to create a small contact management application. I have decided there is nothing out there which helps me do what I need to do. Apart from all the information about people, I wanted to track who I talked to last and make sure I would share that information with only a few people. I wanted to enter very private information and was not comfortable putting the information on-line and I was quite interested in using this to coordinate my email accounts and my social accounts. I might even get to do the last part before I stop working on it :). I honestly tried to find something that would let me do most of the job with no efforts but could not find anything that could just about make it. Being available off-line was an important criteria for me.

Anyway, so I look at my options:

I was quite attracted by a web application and looked at Google Gears to allow off-line access but it still seemed a bit limited. Admittedly I would love to come up with a project I could just start using Ruby on Rails but it never quite working out.

So I look at the 2 languages I know the most Java and .NET (C# really). I look at the frameworks, the tools already there. Depress myself by considering I should be using a database a realized the persistence framework require us to spend much maintenance time; too be honest the Entity Framework which promised to do most of that wok for me graphically was not up to par (still is not in my opinion). I was attracted by the C# option because I could use a SQL Server database and synchronize it automatically with a local database. I could not find anything that promised to be easy in java land; anything I could find required learning a lot of new things.

So trash the database idea, let's go to XML. After all, how many contacts will I have. No more than 200 I am sure, so performance is not really that big of an issue. I figured I can always put the file in a source control and synchronize them that way. The xml could be coming from a web service instead of a local file and then I am all set. Anyway, that decision made, I need to think about the UI. Java is famously difficult and not very pretty (it is looking better but still tough to have to code most things). There are quite a few framework but I don't really know many of them. On the other hand, .NET UI are pretty solid, but they don't give you any useful/pretty components with the basic package. I was not going to buy components for playing around with a contact application. The redeeming factor was a free grid WPF component from XCeed, but now I have to learn WPF. I suppose I may as well try to stay up to date and learn that also, but boy, that looks cumbersome and complicated. If you are not really doing complex graphics and streaming video, do you care? The separation of concerns between developers and graphic designers is great, much more like a web application. But as usual I need to be able to handle both myself, in short the application will not be looking very artistic. Again I fnid myself wishing I could do graphics, I just don't have the time to learn how to make basic application graphics (if there is such a thing).

So man, isn't there anything out there that will let you create an application that does not look so bad and does not take months to write? Even with all the simplifications I can take, it is still quite a lot of work. I am not doing anything weird, you would think that would already be available through minimal effort. Show a list you can search with the ability to add new elements through mouse and keyboard is every application task. Why does it take so much effort? Maybe it just takes money to buy the components. I cannot even put the application as an open source application because of the XCeed grid license terms won't allow me to. Isn't there anything out there which would let me worry about solving my business problem without coding for hundreds of hours? Actually I finally found a free grid I could use within the WPFToolkit. Also found a series of libraries C4FDevKit which have a lot of nice stuff in it. Thinking about using the library for updating vista contacts and updating the contacts on my phone using the Bluetooth library. Windows is finally getting some good open source projects to help build projects without starting from scratch every time.

In the same vein, I came across an article about Situated Software which I though was pretty interesting in terms of complexity of software. After spending all those years trying to write software for re-usability, connectivity and all kind of other -y words, it seems there is still a need for writing a mom-pop software that does little and maybe not for that long that does not require weeks of architecture work before you can start solving the issue. I am not sure web applications are always the right answer but I think once we solve the off-line issue (web application or not) we will see a new set of focused applications that solve very specific issues. I have an issue with the current Google gears web applications because I need to take the application offline before I can unplug. I am afraid I don't always have that much foresight. If only those local storage could be in an xml format and then I can have my own local application combining all that specialize functionality into what my own personal suite of applications which solves my own personal needs and I am a happy camper.