# Wednesday, 04 November 2009

My three favourite Windows 7 features are the taskbar, default printers network-by-network, and boot to VHD. That's cheating really because "the taskbar" covers a lot of ground - jumplists, previews, previews with buttons in them (pausing media player, closing anything), notifications, and progress bar overlays. As you can see by all those links, I've already blogged most of those features - and most of my Windows 7 category is taskbar-relevant.

But I haven't yet blogged about boot to VHD and I really need to. The rise of VPC over the last few years has made such a huge difference for me and my tribe. Whether it's a safe place to put a pre-beta (typically the uninstall instructions for CTPs and private builds are "format your C: drive") or a carefully configured TFS or Sharepoint setup, a virtual PC is a great place to play or to demo a technology. The only downsides are performance, and sometimes access to hardware peripherals or networking. Boot to VHD fixes those two downsides, and it's better than having a separate laptop or a slide in/out hard drive (a solution I used years ago on the only laptop I've ever met with that capability.) Not only does it weigh a whole lot less than a separate hard drive :-), you can access the "host" hard drive while you're booted over to the guest. That means I can work on a demo or presentation and leave the powerpoint or the demo script on my "real" drive and edit them from the guest.

The only downside is that it is boot to VHD. Not "put the host machine to sleep and then bring up the guest machine." So you have to be prepared to close all the apps you have open, which for me can take some doing. But that's the only problem.

How to do it? I followed the nice clear instructions by Adrian Kingsley-Hughes. Print them out, because you're not going to have access to your machine while you're doing this. Scott Hanselman has a similar set of instructions, but they're not identical and I didn't follow them myself, so if you want to, just remember like he says "This is advanced and may hurt you, your computer, or your cat" so don't complain to either of us if something bad happens. He has nice pictures and some links to useful references too. If you really want to wander into "Danger Will Robinson" territory, take a look at Jon Galloway's post which covers the whole "wait, what about activating my copy of Windows?" story. I'm just ignoring that myself since most of these virtual machines are going to live for a month or so.

If you're running Windows 7 Ultimate, and you ever install beta or pre beta software, or otherwise ever use a virtual machine, learn how to do this. You won't be sorry.

Kate

Wednesday, 04 November 2009 05:30:36 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 02 November 2009

I remember when Design Patterns first came out. I already owned A Pattern Language - The Timeless Way of Building (an absolutely huge and fascinating book) and so I immediately "got" what Design Patterns was for. [And yes, I have used parts of Timeless Way to guide house-buying and house-renovating decisions.] I couldn't wait to get my hands on it.The member of staff I lent it to ended up reading it in the bath for hours. Geeks are funny, aren't we?

Well it's been 15 years since then. How does the book stack up?

Pretty well, really. Reuse has sort of moved from something we try to do project-to-project in our code to something that frameworks give us. But reusing design has always been a huge timesaver compared to reusing code, and that's this book in a nutshell.

Now Larry O'Brien has interviewed three of the Gang of Four and Grady Booch. You definitely need to read both of these, but I'll just give you some "taster" quotes:

  • "...writing 100K lines of new code isn't that much easier now than it was 15 years ago. It will do a lot more, but costs the same."
  • " The most important artifact any development team produces is raw, running, naked code."

Kate

Monday, 02 November 2009 04:08:36 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 31 October 2009

Have you ever heard someone make a definitive statement about a particular feature of Visual Studio or the .NET Framework that you knew just wasn't true? Did you ever wish for a Snopes equivalent you could send them to? Well, your wish has been granted.

Give it a whirl and see the official position on some popular (but unfounded) beliefs.

Kate

Saturday, 31 October 2009 02:32:26 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 29 October 2009

I have now finally been using the Internet for more than half its existence. That's 20 of its 40 years. Back in 1969 the first few bytes were sent between networks (hence the name, it was a network of networks) as part, believe it or not, of a plan to save money. The BBC has a nice article about it. The Globe and Mail tosses in a quick summary of the history of the internet, which reminds me to link to my post that points to a more comprehensive summary in Vanity Fair.

If you think the Internet is just the web, all I can say is you missed a golden age. These days it's always September. I know I prefer what we have now, just as I can still miss what we had then.

Kate

Thursday, 29 October 2009 11:57:28 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 27 October 2009

I mentioned a long time ago that I have tweaked Windows 7 to my own preferences - the taskbar is 2 or 3 rows high, but I don't combine and I never hide labels. And until recently, I always used small icons. But while preparing both my Tech Ed Europe talk and my launch party demo, it annoyed me that I didn't get the icon overlays. These are incredibly helpful - better than icons in the system tray, balloon tips, focus stealing popups, toast, or other notification techniques. I mentioned to someone that I got them maybe once when I first installed, but never again since. Then just as I said that, I had a thought. A quick search confirmed it - you don't get overlays if you have small icons. And overlays are so useful, I've switched to large icons so I can have them. Not just while demoing, but for my regular life.

In the top row I don't have any new mail and I'm available on Messenger. In the middle row, new mail has come in so the Outlook 2010 icon has an overlay. In the bottom row, I'm away on Messenger. It's a very compact way to present notifications. So from now on, large icons for me!

Kate

Tuesday, 27 October 2009 11:32:01 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 25 October 2009

It's true, I signed up for a Windows 7 launch party. So did Chris Dufour. But I didn't have people over to sit on the couch and eat cake while I showed them the cool stuff in Windows 7. We just tossed an hour or so of demo at the start of a user group meeting. I had a one-page demo script which I've put as an attachment on this post. I think different default printers for different networks and a "recent/frequent" jumplist on the Windows Explorer in the taskbar were the most popular features. We also had swag! Here's a picture of mine:

Chris had a similar pile, and some books and such as we usually do, so each attendee (and we had a lot more than usual) left with something - mostly with one of those tote bags. I should have held one back to use on my next grocery trip. Aren't they surreal? After my demo (everything in the mini script, though probably not in that order, followed by boot to VHD) Chris took over and led us through CSLA for "real" part of the meeting.

Nice to see the group back in action, and hope to see plenty of folks there next month!

Kate

demo.docx (16.42 KB)
Sunday, 25 October 2009 11:09:07 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 23 October 2009

Did you like the wallpapers of Canadian scenery I showed the other day, that are already on your Windows 7 machine and just need to be selected? Would you like some more? Go to http://windows.microsoft.com/en-US/windows/downloads/personalize?T1=themes and scroll down past the Coke and Ferrari and so on to find more lovely scenery. I copied mine into the folder that was already the source for my desktop wallpaper rotation.

I think the Northern Lights is my favourite at the moment.

Kate

Friday, 23 October 2009 10:18:34 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 21 October 2009

I remember, back in the day(*), being so confused about NULL. At first I thought it was a keyword, a special value of some kind. Then I learned it was just the same as 0. Or maybe 0L. I worked with people who said it was wicked to use it, and you should always type the 0 yourself. I worked with people who said it was wicked not to use it, because it made your intentions clear to humans. I even worked with people who used it in for things other than pointer-setting or pointer-checking. I argued with people who thought if(p) was or was not more clear than if (p != NULL) and, late at night when we'd been drinking, about what would happen if some other value than numerically zero meant "null pointer" and what that would do to the world's code, and how to write our code so that could never hurt us.

But that was long ago. These days I've pretty much internalized NULL (and for the record, I'm an if(p) gal) and no longer think about it. One of the reasons I don't have to think about it is that I don't write a template library that's used by millions of developers. If I did, I might have to worry about template-argument-matching and how compilers are supposed to deal with being given an int and knowing to match that up to a Something* -- but then again, only if the int has the value of zero. It's been a pretty clever trick for a really long time, but with the advent of perfect forwarding in C++0x (thanks to rvalue references) it just becomes impossible to always pull off that trick. Luckily, the same language changes that led to rvalue references also held the solution - the literal nullptr that isn't an integer with the value 0, but actually represents a pointer-to-anything that isn't pointing anywhere right now.

For the gory details, a wonderfully transparent look at how the team decides what to do in a release and what to hold for later, as well as some delightful glee at being able to do stuff, some amazing understatement ("somewhat arcane" indeed) and moments later "the world explodes!" you have to watch STL on nullptr. BTW, he deliberately pronounces it null-putter so people can tell he's not saying "null pointer" which would still be NULL. He even gets into nullptr vs nullptr in the land of /clr and how the double underscore (seriously) rides to the rescue. Major whiteboard action and in the end you'll know a little more about why the magical STL (the library) works, why it's faster in VC++ 2010, how the team (including the human STL) thinks and works, and the insides of my favourite language.

Kate

* that would be before Microsoft had a C++ compiler, over 20 years ago. Four and a half years ago I reflected that I was very close to having 20 years of C++ experience.

Wednesday, 21 October 2009 09:49:40 (Eastern Daylight Time, UTC-04:00)  #