IT Future Proofing, and Ajax
September 16th, 2005My interest in certain technologies is fundamentally driven by my need to "Future Proof" my career. Will investing my time and money in "X" technology or "Y" language benefit my career in the long run? And will I be drawn into defending "X" and "Y" when the next big thing comes along simply because I am not prepared to write off my investment? My recent observations is showing this is happening with Java and also .NET...
The current state of affairs aligns the new kid on the block, Ruby on Rails, against the well-known platforms such as Java and .NET which are used in the Enterprise market by an overwhelming amount when compared to PHP, Perl or other legacy systems. Those who have spent the last 5 to 10 years living and breathing these Enterprise platforms are now, sometimes irrationally, defending their platform of choice. One cannot simply state, "My platform is better because it is faster, more stable and quicker to develop than the next thing." Ruby on Rails may have Java and .NET beat on each of those points. But will I jump ship like so many others? My answer, no!
Why? While I have worked with Java and .NET I have also built up a great deal of knowledge in technologies which are agnostic to those platforms which are founded on open standards managed by the W3 (WWW Consortium), such as XML, CSS, and Javascript. By deepening my knowledge in these technologies I can more easily move from one language and platform to another. It also allows me to stay with the current platform more easily, through newer releases, without suddenly rebuilding the software to leverage features in the new release. I simply use the current platform as a tool to work with these standard technologies.
As a case in point, ASP.NET 2.0 has introduced Themes and Skins which allows you to control the look and feel. It seems like a great idea, but I can already manage all of this with legacy CSS. I simply set the ID or class value in elements in the XHTML code and I mark it up with CSS. Afterall, the modern browsers support CSS and I have spent more than 5 years learning the in's and out's of CSS so why not just leverage that knowledge instead of learning the quirks of something new?
Another benefit with such a case is that I can allow the design team, all using Apple computers, to work with their existing tools to assist with developing the design using standard CSS techniques. I can also use tools beyond Visual Studio which have a better handle on CSS, such as the Edit CSS extension for Firefox.
What has me feeling optimistic about Ajax is the fact that it is built entirely on web standard solutions, with the exception of the XMLHttpRequest object which has become a de facto standard itself with support in Firefox and Safari. I have discussed Ajax with a couple of developers who insist that Ajax has little value and they argue for their language and platform of choice.
One argues that Ajax is not a rich UI and that desktop systems will always trump a web interface. His preference is Java, but where is the UI standard for desktop development? With XHTML the interface is rendered by any number of different web browsers using an XML compliant markup language and I can produce XHTML with Java, .NET and Ruby on Rails. I feel that gives me a great deal of protection from lock-in as a developer and for the users of the application. And with Java you must choose between Swing and SWT which both produce interfaces through Java code, not XML descriptors such as SwixML. At least if the view was described with XML and rendered with Java code it would offer some of the same benefits of XHTML.
The other developer argues that Server Controls or ActiveX controls are preferable over Ajax because he claims they are somehow more established and are able to provide rich functionality which Ajax does not. I have explained that Ajax is just a new term and that such functionality was possible since MSIE 5.0 and only recently became so attractive due to popular Google web applications and support in Firefox and Safari. In terms of lock-in, an ActiveX control will only work in Internet Explorer on Windows. I feel lock-in is the quickest way to devalue the software you produce. To make the ActiveX argument less convincing, Microsoft is phasing out ActiveX controls in IE7 due to the many security headaches associated with them.
As I have been reading Scott Guthrie's Blog I am more and more optimistic about where he is leading the ASP.NET team. The new Atlas Framework is their approach to producing Ajax-driven controls. In his Atlas Keynote Walkthrough he notes that "all style design is done using standard CSS" which shows the ASP.NET team is seeing the value of standards over proprietary features. The server-side of these new Ajax controls also uses Web Services instead of a properietary XML format so that it may be possible to pull data from Web Services produced with other languages or platforms. These are all good moves which are geared towards working with open standards.
Moving forward Ajax and web interfaces will become even more powerful, with support for graphics with SVG which is another W3 standard. In fact, the new beta release of Firefox will have native SVG support. Over at svg.org they note SVG is closer to reality every day with support in Safari and Opera.
There is hope that IE7 may provide some support of SVG, but they have given no indication either way. In the meantime, you can get by with the Adobe SVG Viewer.
The only way to truly "Future Proof" your career is to work with a vision which will be certainly implemented. By going with open standards I feel I am on the right path. Java or .NET may change course (JSF vs Struts) with each new release or become tossed aside sooner or later (XAML) but I am going to make the bet that XML, CSS, and the rest are here to stay.

September 21st, 2005 at 1:40 pm
Something to do ... SITC