Before I start prototyping some of the ideas I’ve been kicking around, I need to decide which tools I’ll be working with, making choices that’ll haunt me for months to come, as usual.

Language

At SafePage, we started with the assumption of using Java because that’s what everyone had most experience with. Eclipse was also a hard addiction to break from. I tried to get the team to play with Groovy but, in the end, Java was it. This time, I’ll be the only coder for a while so I can be flexible.

At this point, I am leaning heavily toward PHP because that’s what Aptana Cloud supports. Although I’ve been using Java since the first beta, I think I can write most of the front-end stuff in PHP and rest in server-side JavaScript using Jaxer, leaving Java for key web services and bots only. I am pretty sure that early windfalls from using Aptana Cloud will make up for late growing pains due to PHP.

Ajax Framework

At SafePage, we started with jQuery + Ext on my recommendation but discarded Ext within first few weeks because engineers found Ext awkward to use. Much later, we started missing sophisticated layout and table support both Ext and YUI offers.

This time, I am going to go with jQuery 1.3 (released today!) for most tasks and use Ext when complex widgets are needed since I personally had no problem using Ext. Quality and selection of Ext widgets is hard to beat but it’s too heavy for mundane Ajax stuff and style-conflict will create problems later unless Ext style is embraced fully which I am not willing to do. YUI style is cleaner but, egads, verbose YUI API really rubs against my simpletonian vanity. Re Dojo, I’ll just say it’s too liberal for my taste.

I like the choices John Resig made with both design and implementation so far although quality of most jQuery plugins and widgets are too brittle and selection of widgets too skimpy despite the size of jQuery developer community. I think it’ll take another year before jQuery UI widgets mature in substance, style, and selection. Note that both jQuery and Ext can be used in AIR apps which is going to be important later.