Archives

Archives / 2005 / May
  • DOSKEY in XP

    Add this one to the "how did I not know about this?" file. Via the Off-Topic list, I learned that the venerable "doskey" app is still alive and well in XP. I remember doskey from the old MS-DOS days, but I didn't realize that it had survived to the present. One cool thing about it is that it lets you define macros - essentially your own command-line commands - without messing around with batch files. For example, from the command prompt type:

    doskey mydocs=cd /d "%USERPROFILE%\My Documents"

    and when you type "mydocs" from the command line, it will change to your "My Documents" folder. Sweet.

    Full docs can be found here.



  • Episode III

    • If anger and hatred are the path to the dark side, and Yoda is good, why he does look so pissed off when he fights? And if he can jump, twirl, flip, and spin when he fights, why does he walk with a cane?
    • Apparently, despite all of the technical marvels of the Star Wars universe, nobody ever invented railings. Numerous fight scenes take place on platforms hundreds of feet up in the air, and inevitably someone ends up hanging over a ledge. I guess there were no lawsuits in the Republic.
    • Any scene where two people converse has to take place in front a giant window with hundreds of flying cars whizzing by. At times it felt like the actors were positioned practically out of frame to avoid blocking the window. OK, George, the cars fly, we get it.
    • What's with the R2-D2 Inspector Gadget upgrades? Jetpack? Oil slick? Apparently he actually gets downgraded in the future.
    • Why did Padme have to turn from a scrappy fighter in Episode II to a weepy nothing in Episode III?

    Easily the best movie of the second series. It had its slow spots, and I had some issues with the way "the big switch" was done, but the last half hour was very good. It had some nice connections to the original series at the end, and actually made me want to go back and watch Episodes 4,5, and 6 again.

  • Firefox's dirty little secret

    OK, it's not really a secret. And for me, it's definitely not little. The issue? Firefox leaks memory. I mean, like crazy. It's getting really bothersome. Memory usage simply grows and grows while browsing, and closing all open tabs doesn't release the memory. I quickly end up with Firefox taking 150MB+ of memory, and at times end up using 250MB+ (although I try not to let it get that high). I'm forced to periodically shutdown the app and start fresh, and that's a serious pain - I practically live in the browser, and always have half a dozen tabs open.

    Now, I love Firefox. It's a great browser. But the leaks are very frustrating, and although there are numerous bug reports on Bugzilla, there doesn't seem to be a lot happening on them. There have been several Firefox updates, but no fix yet. I see that 1.1 is on the horizon - I can only hope that the problem is addressed in that release.




  • Web Projects in VS2005

    Chris Szurgot posted complaints about the changes to web projects in VS2005 - especially the elimination of the project file for web projects. I quite agree with him (I've been meaning to blog about it for some time). Now, VS2003 had it's problems - the evil .webinfo file in particular. Being able to open a web project directly, without setting up a virtual dir, is brilliant. But the complete elimination of the project file is not, in my opinion, a good change.

    I don't really understand the problem that they were trying to address by eliminating the project file, but it seems to do more harm than good. I've actually lost capabilities, such as the ability to selectively exclude files from a project. Also, I was hoping that the next version would supporting file links - a feature in VS2003 for non-web projects - but obviously that's impossible with the new model.

    My biggest complaint, though, is that the web project model is simply very different from non-web projects. I would guess that many, if not most, web site developers will eventually create class libraries, which means that most developers will be forced to use two different development models. Why?

  • Choosing project code names

    From an eWeek article: MS has chosen "Hawaii" as the code name for a future Visual Studio release "because the team plans to celebrate redesigning the IDE (integrated development environment) in Hawaii".

    Now THAT is a brilliant bit of project planning. Code name your releases after beautiful vacation destinations and convince management to have the release celebration party there. I've already started lining up code names for our future products - Tahiti, Bali, Venice, Paris, Fiji...


  • Problems with Mac OS X Tiger Upgrade

    Earlier this week, my wife upgraded her PowerBook to Tiger. Big mistake. She found herself unable to connect to our wireless network at home. Even worse, while her machine was trying to connect, it prevented any other machine from connecting. It appears that something about how Tiger requests an IP address causes our US Robotics 8054 router to continously reboot itself. Other people have reported a similar problem with a D-Link router - supposedly the problem has been fixed in the forthcoming 10.4.1 update. A work around that solves the problem in the short term is to use a static IP address on the Mac instead of a dynamically allocated address.

    The other problem that she encountered was that her Epson printer stopped working - it displayed a cryptic error about the raster imaging system. It is apparently quite a common problem with the Tiger upgrade - removing the printer and re-installing it seems to fix the problem.

    At least I know that even if I switch my parent's computers to Macs, I'll still be needed for tech support duty. ;)


  • Easily installing MSIs with verbose logs

    While building and testing the WiX-based installer for our product, I often need to run the install with verbose MSI logging. This also turns out to be handy for figuring why other product's flaky installs won't run on my machine (which is surprisingly common). Here's a registry script I created that adds a couple of new context menu items for .MSI files - "Install with Log" and "Uninstall with Log". Simply copy the following into a text file named with a .REG extension, then double click it in Explorer to merge into your registry.

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\Msi.Package\shell\LoggedInstall]
    @="Install with &Log"

    [HKEY_CLASSES_ROOT\Msi.Package\shell\LoggedInstall\command]
    @="\"msiexec.exe\" /i \"%1\" /l*v \"%1.install.log\""

    [HKEY_CLASSES_ROOT\Msi.Package\shell\LoggedUninstall]
    @="Uninstall with Lo&g"

    [HKEY_CLASSES_ROOT\Msi.Package\shell\LoggedUninstall\command]
    @="\"msiexec.exe\" /x \"%1\" /l*v \"%1.uninstall.log\""



  • VS2005 C# Code Snippets for NUnit

    Many moons ago, James Newkirk posted some VS2005 code snippets for unit testing with Team System's unit test framework. I'm a NUnit user, so I converted those snippets to use NUnit constructs. I'm sure I'm not the first to do this, but I haven't seen anything similar posted yet, so if anyone else is interested, here they are. To use them, simply copy them to either the "My Documents\Visual Studio 2005\Code Snippets\VC#\My Code Snippets" folder or the "Program Files\Microsoft Visual Studio 8\VC#\Snippets\1033\Visual C#" folder (the latter makes it available to everyone on the machine).

    On a related note, although VS2005 Code Snippets are easy to use and very nicely integrated, I do wish they had a little bit more flexibility. In particular, they don't have a way of transforming user input in the snippets. I've used QuickCode.NET for code expansions in the past, and it lets you do things like take a snippet parameter and convert the first character to lower case in the expanded text. That little extra bit of flexibility allows you to, for example, generate a property declaration by only entering a single string, the property name, with the snippet automatically creating the appropriately named private backing field with the correct casing.