Monday, February 18, 2008

RainbowText 2.0

This is the upgrade 8 years in the making!

I was going over some of my old projects and I realized the old version of RainbowText was in sore need of an upgrade.

Well a few hours later version 2.0 was ready to go. The biggest difference is this one supports all the latest major browsers. In order to do this I had to ditch the IE Behavior. However the new version is just as easy to use, and it is a bit clearer, in my opinion.

RainbowText is one of those scripts that annoy the hell out of most people, and a handful of people absolutely love it. Which are you?

View a demo and download the code here.

Wednesday, February 13, 2008

VS2008 Web Developer Hotfix
I would seriously recommend this to anyone who does web development with VS2008. Most of these are performance fixes, almost all of these I've personally experienced:

  • Source editor freezes for a few seconds when typing in a page with a custom control that has more than two levels of sub-properties

    Yep. Got this when working with Infragistics controls. Even hitting the down arrow to scroll through the intellisense list of attributes caused this delay. Very annoying.

  • “View Code” right-click context menu command takes a long time to appear with web application projects

    Got this too, though I didn't notice too much of a difference after the hotfix. I guess my PC's just slow on this one.

  • Visual Studio has very slow behavior when opening large HTML documents.
  • Visual Studio has responsiveness issues when working with big HTML files with certain markup
    Check and check. I still get unresponsiveness issues, but mostly now just when a document loads, whereas before it would happen constantly. I noticed if there was a lot of invalid HTML this would cause problems, also when using custom namespaced elements (running on the client, not ASP.NET controls) the editor seemed to have problems with these kinds of documents too.

  • The Tab/Shift-Tab (Indent/Un-indent) operation is slow with large HTML selections
    That's always been the case, and not just in HTML but in any code section that has intellisense parsing.

  • Slow typing in design view with certain page markup configurations
    Got this one too, again when working with Infragistics Controls. Typing in labels directly in TDs in design view was REAALLLY slow, and it didn't seem to buffer properly so you couldn't just type the whole thing then wait.

  • When opening a JavaScript file, colorization of the client script is sometimes delayed several seconds.
    Sometimes? Anything more than a trivial document would exhibit this behavior.

Monday, February 11, 2008


It's funny, the last time I was seriously into client side web development in mid 2004 it was so stagnant. The only framework that truly seemed to be harnessing the full power of the browsers was This was about the time that the original AJAX library was introduced. I had thought "What's the big deal? The underlying technologies have been around since around 1998." I still snicker whenever I see client heavy web development referred to as "Web 2.0".

It's weird though how a good abstraction and clever name can shift momentum and spark creativity. Every major software vendor has their own AJAX library. In addition a slew of new browser based UI frameworks have come about. However they are all still based on the same old technologies. JavaScript hasn't changed since 1999 (ECMAScript v3) with V4 in a seemingly never ending development cycle. Even when it is released and all the major browsers implement it V3 will be the minimum supported for a llloooonnngg time. Even with this almost decade old base technology such great innovations have come about.

Here are a couple of my favorite new libraries:
  • Ext JS this in many ways reminds me of Bindows in that it has a complete UI framework all the way from comboboxes and datepickers to dialogs, datagrids and multi column treeviews . It seems a lot easier to integrate individual components into a web site without having to initialize an application framework surface. Finally add that it has an LGPL license, most people (including companies) can use it free of charge.
  • Microsoft AJAX. Well there are certain parts to this that I really enjoy. I'm not a big fan of the way ASP.NET does a lot of things. And wrapping the mechanics of ASP.NET into an XMLHTTP request seems incongruent. The end result is a huge abstraction over another huge abstraction which in the end makes it very difficult to do anything more than the most basic task. However, I do really like the way they've done their purely client side library. It creates a very .NETesque framework that in many ways makes it a lot easier to make truly OO JavaScript libraries. I bet I could even create a pretty sweet ASP classic framework on top of it.
  • Adobe Spry: I really enjoy the Spry.Data library. It seems by far the most intuitive way of working with a variety of data sources. This is great for working with different server side technologies. Also their Widget design is the most backwards compatible with both down level browsers and JavaScript disabled browsers (that I've seen).

The best side effect of all this new fervor is people are now using JavaScript/DOM best practices. It used to be that JavaScript libraries were the worst in development practices. The global namespace was polluted with variables and functions, many of which had common names that would stomp over other libraries'. Additionally it was common to stomp over the window.onload delegate instead of using addEventListener or attachEvent. Now people fully use prototypes, object notation (JSON), nested anonymous functions, and all the other great features of JavaScript that mostly went unused.

Upgrading to XP

I did what all the cool kids are doing and upgraded my main PC from Vista to XP. I actually do have good reasons:
  1. The top reason is that my network just stops working at random. There doesn't seem to be any rhyme or reason that I can tell. Sometimes its when I'm web surfing, sometimes its when I'm copying files or remote desktop. It could go hours or days before it happens. Then once it does nothing short of a reboot makes it work. I've tried swapping out the OEM with MS supplied drivers to no avail and I couldn't find anything like this on any support forums. If I was planning on keeping Vista I would have actually contacted the manufacturer's support, but since this is no longer happening on XP why bother?
  2. I was doing a huge chunk of my work over VPN connections, and here are a list of VPN clients that either flat out don't work or barely work at all on Vista:
    1. Cisco: On a sunny day when the stars are aligned I might be able to connect to some networks.
    2. Citrix: This is supposed to work, I just couldn't get it to.
    3. Juniper: This just flat out doesn't work
    This means I had to use an XP Virtual PC to connect to a remote network. If I was deploying software I have to copy the files locally to the VPC then copy to the remote network. Basically it was just a big pain in the ass.
  3. Everything runs slower/less responsive. I'm talking about general file system navigation, program launching, and switching between applications. Yeah we all said the same thing about XP when it came out, but it was true at the time as well. I'm sure in 7 years after a couple service packs and PC hardware quadrupling in power Vista will run just as fast as XP does today.

Additionally I don't have any compelling reason to use Vista over XP. While I do like the Vista theme and Aero look I wouldn't say it really adds any significant value to my general user experience. I disabled UAC because it was so annoying. I get by just fine with XP home networking, all the .NET 3.0 technologies (WPF, WCF, Cardspace) work just fine. While I think that Vista's WPF rendering takes better advantage of the video hardware acceleration, WPF hasn't really become wide spread enough to matter yet. I like XP's Windows explorer better than Vista's.

I'll still run Vista over a VPC in order to test application compatibility, but I'm really much more productive using Windows XP.