I’m a Windows guy and I’m not ashamed of it. Despite the problems it has (and what software package doesn’t have problems?) it has been a productive and profitable platform to build a career on. I don’t have anything against other platforms either. Whatever works for you, go use it. Someday I will be cool enough to own a Mac :).
So even though I’m a Windows user, I’m a technology enthusiast at my core so I’m always up for trying new things. A loooonnng time ago (probably 9-10 years ago in my late teens) I set up Linux on a spare machine to see what the fuss was about. I tried Red Hat. I tried Mandriva. Once I got it installed I didn’t know what to do with it. It was nice enough, but it just didn’t grab me. This was also pre-Firefox so the Internet browsing experience was subpar. The biggest hurdle though was installing programs, if I could even find one to do what I wanted. Package managers were sparse and compiling from source was well beyond my capabilities at the time.
Fast forward a few years and I was churning out web sites with ASP/VBScript and some PHP and this new thing called Ruby on Rails came out. I, like many others, was wowed by the famous “build a blog in 20 minutes” video so I got it up and running on my machine but didn’t do anything with it because I was a scripter not a programmer and learning Ruby was well beyond my capabilities at the time.
I’ve been a professional programmer now for 3.5 years. I worked as a sysadmin for a couple years. I’ve used Mac OS a lot more. To save time, let’s just say I’d consider myself a seasoned computer guy with a broad understanding of How Things Work and the ability to figure out almost any new thing. Or so I thought.
I’ve been wanting to learn a new programming language for awhile now. I really like C# and feel I have a pretty good grasp on it so I thought it was time to broaden my horizons. Ruby and Python are en vogue right now and have some philosophical differences from C# so I thought I’d try to learn some Ruby (and Rails along with it). I have an old ThinkPad T60 I just retired so instead of setting up Rails on Windows (which was not that great of an experience the first time around) I decided to go with Linux on the T60. Ubuntu seems to be all the rage lately so I burn the CD and it installs beautifully. No driver issues, in fact, not a single install issue. Awesome! We’re off to a great start.
Time to get Rails installed. I figured the software installing experience had to be better than 10 years ago. It is, but barely. Look what it takes to get Rails installed. Are you serious? I went through all this and encountered a couple errors along the way that I was able to solve with some lengthy Googling. I know what you’re thinking “Lame Windows dude wants a GUI.” Yeah that’d be nice, but I’d settle for an apt-get one-liner. RubyGems appears to be the solution for this, but getting that installed and configured was not exactly straightforward either.
I eventually got it running. In the process of trying to get all the packages installed and configured I had no idea what version of what was installed or how to uninstall Ruby 1.9 after accidentally installing it. I didn’t want to run into some conflict down the road because I had the wrong versions installed.
Worst of all, I felt like I was wasting tons of time configuring everything just to get going and I had no way to really verify I was doing anything right. This feeling would be mitigated with experience so I’m not blaming the platform for that feeling, just pointing out my experience.
With Rails up and running I thought I’d try to find a text editor or IDE with some basic Rails support to at least provide a little structure for messing around with it. Googling around I come across RubyMine but that’s not in the Ubuntu package manager and downloading and installing (still after all these years just an afterthought) requires Java, which is in the package manager. Download Java and try again. No go. This was about the point I had enough with trying out Rails.
Here’s my advice if you want to try Rails: buy a Mac and TextMate.
Not wanting to entirely give up on things, I recalled that there were some big Mono releases earlier in the day. I try following some steps with apt-get to get MonoDevelop 2. No go. Tried the package manager and ended up with MonoDevelop 1. I have no idea what version of the Mono core is installed anyway. Download from the Mono site? Yeah, not so much. Ubuntu, even though it’s the most popular distro, doesn’t have a supported download. So much for that.
How is it after all these years the Linux software install experience is still so awful? Are my expectations unrealistic? Am I still too dumb to get all this stuff? I really wanted to like Linux/Ubuntu/Rails/Ruby/etc and to be energized by learning something new, but apparently I’m just not ready for that yet.
I support a lot of large Classic ASP sites written years ago and every once in awhile they get hit with SQL Injection attacks. I grep through the log files, find out where they got in and patch it up and any other places where the same code is used. One site I’ve probably audited five times but it seems like I always miss a hole.
The HP Security Laboratory released a new piece of free (as in beer) software today called Scrawlr that scans your site and finds any openings. I ran it on a few of the sites I support and it found a couple more holes that when I looked at them, weren’t obvious injection points. The sites are all patched up now and I can sleep again.
I use Grisoft’s AVG Free on my home computer for anti-virus. I’ve been using it for a few years and have been pleased with it. It doesn’t have a noticeable performance penalty and it generally stays out of the way. They’ve recently discontinued version 7.5 and have replaced it with 8.0, which is still available for free (although, they’re starting to be more discreet about that).
AVG 8.0 includes a new IE add-on called LinkHelper. When you do a Google search, it checks each link in the results and presents you with some icons indicating whether or not the site listed is safe.

This is great for my mom, but I don’t like to run any unnecessary browser add-ons. IE doesn’t need any help being more unstable. I figured I’d just disable it, but it’s not that straightforward. I went in and disabled it in the AVG options. This got rid of the icons in IE, but now AVG warns you via the tray icon that there’s an error. If I left it like this and there actually was an error, at a glance I wouldn’t know.

Disabling LinkScanner also does not unload the IE addon. So here’s my workaround. Enable LinkScanner in AVG, but then unload the browser addon manually:

AVG still thinks LinkScanner is loaded, but it’s not. You can now search the Googles uninterrupted.
Before anyone responds to this by saying "Switch to Firefox" let me preemptively respond to that. First off, I like Firefox just fine and have nothing against it. The reason I use primarily use IE is because the large majority of the people that use the web sites I build still use IE. If I don’t feel their pain, I find myself ignoring them. Using IE keeps me in touch with my users.
It feels fast
I have no data to back this up, but everything feels snappier. Not just script performance but page rendering as well. Opening a new tab is still way too slow. It needs to be near instantaneous.
Bookmarks bar is improved
I’ve always been a big Links toolbar user keeping all my most frequently visited pages quickly accessible. The new Bookmarks bar takes the old Links bar and kicks it up a notch with WebSlices integration.
I never liked how IE7 took up valuable space on the tab strip for the favorites UI. Now that’s been moved to a more logical place on the Bookmarks bar.
Emulate IE 7 mode is handy
Finally a suitable solution to the perpetual issue of not being able to run two different versions of IE concurrently.
New features have potential to be very useful
WebSlices (basically chunks of a web page that you can quickly view from the Bookmarks bar) are neat and I can definitely see some potential uses (the eBay example from the MIX keynote today would definitely be one).
Activities has a lot of potential too although the right click context menu is getting to be a little crowded.
New developer tools are on the right track
They’re not quite FireBug yet, but they’re definitely a step in the right direction. What needs to happen to make it better? Make it exactly like FireBug!
Address bar text coloring is weird
IE8 highlights the current domain and dims the rest of the URL. Not sure that this is helpful for anything. I think this is going to bother the folks at site like ESPN:
Why the permanent horizontal scroll bar?
This is the only curious change I’ve seen and I’m hoping its a bug. The horizontal scroll bar is now permanently visible even when you can’t scroll side to side. I like having the permanent vertical bar to keep my layouts from jumping around but the permanent horizontal bar doesn’t solve any issues that I know of. I’d like to know the reasoning behind this.
Add-on manager is greatly improved
Extensions, search providers and activities are all managed from one place. It’s very well organized.
Few new options
A quick look through the Internet Options didn’t turn up anything that stands out. I’m shocked (and thankful) that most of what they’ve done appears to be under the hood (rendering, script perf, etc) with only a few new features. Let’s hope it stays this way until release.
Visual Studio feature request o’ the day: ‘Surround With’ in the HTML editor (highlight some HTML, hit Ctrl-K, Ctrl-S, type an HTML tag like ‘div’, press enter). Anyone know if this exists or not? How difficult would it be to write a VS add-in to make it happen?
Lately (while not blogging) I’ve been thinking of things I’d really like to blog about but haven’t made the time for. Here they are:
jQuery
I hate JavaScript. jQuery changes everything though. I can actually be a functional JavaScript programmer. I particularly like how you can attach events without overloading your code with onclick="" everywhere. I got hooked on jQuery for UI bits (especially the tablesorter and tabs plugins), but I’m becoming obsessed with it because of the sweet Ajax functions. jQuery + ASP.NET AJAX PageMethods is teh awesome (minus the HUGE ASP.NET AJAX script handlers). I’ve also been pondering using jQuery for a light-weight faux-UpdatePanel setup (similar to this). You may hear more about this in the future.
SubSonic
I can’t really add anything to the SubSonic conversation that you probably haven’t heard before so I’ll keep this section short. The unofficial MVC templates have made their way into a ton of my projects. I’m psyched for version 2.1 codename "Pakala" and the new, officially-supported Repository Pattern to replace the MVC templates.
Flee
I have an extremely fun project that’s heavily using Flee but unfortunately, that’s still under wraps for the time being.
Super Mario Galaxy
You can’t work all the time! This is the most fun I’ve ever had playing a game. I usually stick to sports games, but this game is incredible. It will redefine what you know about Mario and platformers.
Jing Project
I can’t believe I hadn’t heard about this before today. I was looking for a way to more easily take screengrabs (without spending any money) when I came across TechSmith’s Jing Project. Jing is a dead simple way to share screengrabs and even simple screencasts. The interface is exceptional and the service works great from capture to uploading. Here’s hoping they keep it free!
MozyPro
Cheap, instant off-site back up. Takes the work out of backing up.
FogBugz On Demand Student and Startup Edition
FogBugz combines my favorite things: well-made software and free. Evidence-based scheduling help us keep the January 2008 update of SnapLeague mostly on time and the SVN integration works well and has come in handy many times.
I’ve been running VS2008 Pro Beta 2 for awhile and had mostly good luck with it. There were only two recurring bugs that got to be annoying. The first was that after typing CssClass or class in the HTML source editor and hitting ‘=’ the automatic quotes (which I enabled in the settings) would be doubled so auto-complete would generate CssClass="""" instead of CssClass="". I found the bug in Connect and MS said it would be resolved in RTM.
The other bug popped up when I double-clicked a .aspx file in the solution explorer while the corresponding .aspx.cs file was already open. I’d get an "This document is opened by another project." error dialog but the file would open normally. I never took the time to track that bug down in Connect.
Today I download the RTM bits and the first bug still exists in a way. Now I don’t get any automatic quotes (I doublechecked that its enabled) for CssClass/class. So now on auto-complete I get CssClass= or class=. All other attribute names generate the auto quotes, even nonsense words. I reset my Visual Studio settings to the defaults and I still get the error.
As for the second bug, it still exists. I thought it might be VisualSVN causing it but the dialog title is "Microsoft Visual Studio" and it happens with web sites that aren’t in SVN.
Neither bug is a showstopper, but they are very aggravating. Is anyone else experiencing these issues?
UPDATE: The first bug only happens if you have no styles defined in your document or a linked stylesheet OR if VS hasn’t yet parsed your linked styles (it can take a few seconds after loading a document). Still annoying if you’re working on a new document and haven’t defined any styles yet. The second bug appears to be an issue with one of my add-ons as I was unable to replicate it on another machine. I don’t know which add-on yet.
UPDATE 2: MS was able to replicate the first bug and is going to fix it for a future release (thanks to the guys on the Web Dev Tools team for their quick and helpful responses!). After uninstalling all my add-ins, I narrowed the second bug down to VisualSVN and have contacted them to let them know.
Part 1: Navigate with the back/forward buttons on your mouse
Part 2: Fix annoying jumping toolbars
Part 3: Using the find window to quickly open a file
A couple quick ones:
- Click with your middle mouse button (or scroll wheel) on a tab to close a document window.
- Window > Close All Documents (not where I thought it should be)
- Re-map Control-W to Close Document (like IE/Firefox)
- Tools | Options | Keyboard
- In ‘Show commands containing’ type SelectCurrentWord
- Click Remove
- In ‘Show commands containing’ type File.Close
- In ‘Press shortcut keys’ type Control-W
- Click ‘Assign’ and ‘OK’
- Use Control-Backspace and Control-Delete to delete entire words. Control-Delete is especially helpful when the cursor is at the end of the line and you want to delete the line break and the leading tabs/spaces of the next line.
- Use Control-. to bring up the smart tag for adding using statements.

- Use Control-I to quickly search through a document. After you’ve located a match, hit Control-I again to cycle through other matches.
- Right-drag code to invoke context menu for with options for moving or copying (if you can’t be bothered to hold control while dragging).
Part 1: Navigate with the back/forward buttons on your mouse
Part 2: Fix annoying jumping toolbars
This tip comes courtesy of Rob Prouse who posted this recently in a comment on this very site. Here’s a quick way to open up a file without taking your hands off the keyboard:
"In the toolbar, type >of in the find window, then start typing the filename you are looking for. An autocomplete list of all files in your project will come up that you can select from. Select, hit enter and up pops the file in the editor!"
Great tip! Thanks Rob!
UPDATE: Here’s another post outlining even more tricks with the Find box.
Continuing my series of ‘Stupid Visual Studio Tricks’ (see Part 1), today’s tip fixes one of the more annoying things about Visual Studio: bouncing/flashing/crazy context-sensitive toolbars. This is particularly annoying when working with SQL Server Management Studio over RDP because it frequently causes a full-window redraw which can be soooo sloooowww. The jumping toolbars also drove me crazy when I used the Copy Web Site feature, but I don’t use that anymore.
To work around this annoyance, I create an empty toolbar as such:
- Right click in an empty section of the toolbar area, select ‘Customize…’
- Select the ‘Toolbars’ tab and click ‘New…’
- Give the toolbar a name (I use "Blank"; clever, huh?) and hit ‘OK’
- Drag the newly created toolbar (which can be tough to spot but it should be just to the right of the Customize dialog) up to the far right of the toolbar area.
The next time you open a window you might see three toolbar rows instead of two with the middle one just being the blank toolbar you created. Just drag the bottom row up to the middle row and it will be there next time you open a file. Now go ahead and switch between a .aspx and code-behind file. No more jumping toolbars!