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.
Monday, February 18, 2008
Wednesday, February 13, 2008
VS2008 Web Developer Hotfix
http://weblogs.asp.net/scottgu/archive/2008/02/08/vs-2008-web-development-hot-fix-roll-up-available.aspx
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:
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
AJAX
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 Bindows.net. 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:
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.
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:
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.
- 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?
- 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:
- Cisco: On a sunny day when the stars are aligned I might be able to connect to some networks.
- Citrix: This is supposed to work, I just couldn't get it to.
- Juniper: This just flat out doesn't work
- 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.
Friday, July 20, 2007
SQL Assistant Part 1
I just recently found out about another SQL intellisense product called SQL Asisstant by SoftTree Technologies. Well calling it a SQL intellisense product is a bit of an understatement as it also offers SQL reformatting, spell checking, and code structure tree.
There really is so much ground to cover that I can't possibly do it in one post or I'd be spending all day on it (I do have to actually work, you know :)
This post I'll focus on the basic intellisense engine, which is probably considered the core functionallity. I used it with both Query Analyzer and SQL Server Management Studio, as I'm a SQL Server developer. I couldn't find any difference in functionality between the two. I tested against a SQL server on my local network.
The first thing I noticed is that it's damned fast. It didn't delay the load time of the editor applications at all. And when I expected it to pop up, it did immediately. It also doesn't pop up in unexpected places. This is crucial, as an overly aggressive intellisense hurts productivity and is really anoying. I think they found the right balance.
The popup window itself is small and elegant. It displays as a kind of tree-grid, where you can expand a parent object to see it's children. I've found that it works as a great quick schema browser.
Here's an example. I invoked the SQL Assistant via Ctrl+Space, and typed in a partial name of a table, that allowed me to find and browse it's schema very quickly, especially when comparing how long it takes to find something in the object browser.

It also has a great JOIN assistant, which detects FKs and automatically brings these to the top of the list. Furthermore if you choose the actual column (by expanding the hierarchy) it will also fill in the ON condition for you.

However it does have a flaw, once you reach the ON condition this happens:

Oops! What if I don't want to JOIN on that? It's perfectly valid to have alternative JOIN conditions. (Note: there is a workaround for this which I'll cover at a later time)
Other supported items are local variables. Temp tables aren't supported, and table variables are semi supported, in that you can see them in candidate lists like scalar variables, but you can't get the column information.
Well that's it for now. Like I said above this is just the 1st of a multi part series.
There really is so much ground to cover that I can't possibly do it in one post or I'd be spending all day on it (I do have to actually work, you know :)
This post I'll focus on the basic intellisense engine, which is probably considered the core functionallity. I used it with both Query Analyzer and SQL Server Management Studio, as I'm a SQL Server developer. I couldn't find any difference in functionality between the two. I tested against a SQL server on my local network.
The first thing I noticed is that it's damned fast. It didn't delay the load time of the editor applications at all. And when I expected it to pop up, it did immediately. It also doesn't pop up in unexpected places. This is crucial, as an overly aggressive intellisense hurts productivity and is really anoying. I think they found the right balance.
The popup window itself is small and elegant. It displays as a kind of tree-grid, where you can expand a parent object to see it's children. I've found that it works as a great quick schema browser.
Here's an example. I invoked the SQL Assistant via Ctrl+Space, and typed in a partial name of a table, that allowed me to find and browse it's schema very quickly, especially when comparing how long it takes to find something in the object browser.
It also has a great JOIN assistant, which detects FKs and automatically brings these to the top of the list. Furthermore if you choose the actual column (by expanding the hierarchy) it will also fill in the ON condition for you.
However it does have a flaw, once you reach the ON condition this happens:
Oops! What if I don't want to JOIN on that? It's perfectly valid to have alternative JOIN conditions. (Note: there is a workaround for this which I'll cover at a later time)
Other supported items are local variables. Temp tables aren't supported, and table variables are semi supported, in that you can see them in candidate lists like scalar variables, but you can't get the column information.
Well that's it for now. Like I said above this is just the 1st of a multi part series.
Tuesday, July 10, 2007
Media Player Tray Control for Vista
As someone who programs for a living and works from home it goes without saying that one of my primary applications is none other than Windows Media Player. When listening to music I rarely need to actually bring up the application window. Coupled with the fact that only one instance of the application is ever used it makes a perfect candidate for an alternative to the Windows Taskbar.
The most popular way to do this is to use Media Player Mini Mode, which adds a new toolbar to the taskbar. This provides some advantages over minimizing to the taskbar:

Not to say that the tray control doesn't have its share of flaws as well:

I clicked the "Check for solutions online" button, but it was unable to find any solutions (big surprise).
However I was pretty confident that there was only one or two applications that were actually incompatible with Vista. Since I noticed that the executable I downloaded was a self extracting archive, I figured I'd poke around the files it extracted. It even gave me the path where it dumped everything.
Low and behold I found mpxptray.exe in the temp directory. I copied it to a new folder in the Program Files and ran it. Apparently it has no file dependencies because it ran just fine. Right click the tray control, open options, check "Run Tray Control at Startup" and your install is done.
The most popular way to do this is to use Media Player Mini Mode, which adds a new toolbar to the taskbar. This provides some advantages over minimizing to the taskbar:
- The Media Player Toolbar is in a fixed location. You always know where it is if you ever need to pause or skip to the next track. If you have a lot of windows open you don't have to hunt for it.
- Every time a track changes a popup window displays the track info like Song Title, Album, and Artist.
- The player controls are always displayed, you don't have to switch to the application to control it.
- It takes up too much screen real estate. Under most people's Windows setup it takes up the same amount of space on the taskbar as traditional taskbar application. However I run my taskbar at 2U, which means that twice the real estate is used, as the media player toolbar is separated from the taskbar applications.

- I actually find the song information popup window annoying. Especially because it activates when your mouse wanders over any part of the toolbar. And the popup lingers for a full seven seconds, which seems like an eternity when you want to get to whatever is behind the window. What makes it worse is that it is located directly underneath where I have the Solution Explorer/Property Window Tab Group docked in Visual Studio. My mouse is always wandering that direction, and if I happen to wander a few pixels down too far I get this for seven seconds.


Not to say that the tray control doesn't have its share of flaws as well:
- It seems to have a hard time keeping track of the Media Player application, it's supposed to hide it but various things will cuase media player to come back which confuses the tray app.
- If Explorer crashes for any reason you can't get the tray icon back without first killing the mpxptray.exe process.
- Having the volume controls as menu items? Come on...
- Sometimes that Information Popup window is quite handy when you really want it With the tray control you have to right click the tray app, unhide the media player, find the app in the taskbar, then activate it.

I clicked the "Check for solutions online" button, but it was unable to find any solutions (big surprise).
However I was pretty confident that there was only one or two applications that were actually incompatible with Vista. Since I noticed that the executable I downloaded was a self extracting archive, I figured I'd poke around the files it extracted. It even gave me the path where it dumped everything.
Low and behold I found mpxptray.exe in the temp directory. I copied it to a new folder in the Program Files and ran it. Apparently it has no file dependencies because it ran just fine. Right click the tray control, open options, check "Run Tray Control at Startup" and your install is done.
Monday, July 9, 2007
Friend of Red Gate
After seeing my SqlPromptSnippetEditor application Bart Reed, the project manager for SQL Prompt nominated me for the Friends of Red Gate program, which I gladly accepted. For those of you unfamiliar with the program (like I was), it is a lot like a Red Gate version of the Microsoft MVP Program. In fact if you are a Microsoft MVP there's a good chance you are eligible for the Friends of Red Gate program, especially if it is of a SQL or .NET flavor.
I'm not quite yet sure how I'll use this new award, if anything my opinions may carry more weight in future versions of SQL Prompt, which I intend to become even more active in.
I'm not quite yet sure how I'll use this new award, if anything my opinions may carry more weight in future versions of SQL Prompt, which I intend to become even more active in.
Subscribe to:
Posts (Atom)
