# Sunday, 25 November 2007

I stopped blogging this fall because I had just too much on my plate. Most days I never found a peaceful half hour, and those days I did find it, I chose not to spend it blogging. But I have a lot of “stuff to blog” saved up, and it’s time to clear out that file and get this habit back on track. For those of you reading the feed, it will be a bit of a deluge. For the rest of you, I’m going to spread these out dated one a day because that makes them easier for me to manage later.

Kate

Sunday, 25 November 2007 15:24:44 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 06 August 2007

Recently I got an email, sent to a largish list of semi-anonymous people (the sender knows us all, but we don't know each other and aren't a "community"), asking "can you give me some advice about why I don't have a job yet?". Having now received several more requests and questions from this same person, it's pretty clear to me that the answer is "because you really need a job right now." The sad truth is, you can't get a job when you NEED a job. The most desirable candidates are the ones who can pick and choose, and who are coming to an employer because that employer is their very best fit. The least desirable candidates are the ones who might not enjoy the work or have career plans that involve that employer for decades or even years, but have a rent payment due so they have to take SOMETHING and this is the only thing going.

This little irony or paradox is not confined to job hunting. Say you want to borrow some money because you lost your job, your SO left you and you have to pay all the rent by yourself, and your car broke. You  NEED the money, and not a bank in the world will lend it to you. But if you just finished high school, have no income other than the student loans you expect to receive, and no plans to work within the next few years, you can have an unsecured credit card. You don't need the money, and that's what makes it safe to lend it to you. Here's a tip for young people: when you first get a job, and have a nice income, but no mortgage or other payments, borrow 5 or 10 thousand dollars. Put it in a savings account, make the payments like clockwork using the money from the savings account, and you will have a lovely credit rating, because you borrowed money and paid it back. Better still, put it in your retirement savings and make the payments out of your income -- you'll get a lovely credit rating and a lump of retirement savings that can compound for the next 40 years. It's not just money that follows the "it's better not to need it" rules -- most of us learned in high school that lonely people make very few friends and go on very few dates, but the popular people get invited to everything and never sit alone.

The only way around the paradox is to act less needy than you feel. The simplest rule to describe this is "give before you take." Before you ask someone for something, give them something - typically information. In many cases, you can give them "I am a terrific candidate for your job". Just changing your attitude from "please please I need you to give me this" to "you are lucky today because I am just what you need" makes a huge difference. I blogged about that over three years ago, with some specific advice about knowing what you want.

Give before you take can extend into so much else as well. Do you call people and say "what are you doing tomorrow?" That makes me really uncomfortable. I am always doing SOMETHING - even lying around on the couch and watching TV - and if I say "nothing" then I may have accepted an invitation sight-unseen. So before you take information about my plans, give me information about why you're asking. "I've got a spare Jays ticket for tomorrow, would you like to come?" or "I have to move on short notice and I need friends to help load the van" or "I'm by the side of the road and need someone to come and get me" work fine all by themselves without the dance of "are you doing anything right now / tomorrow night / this weekend ?" preceding them. Sales guys call me up and say things like "so, does your company accept credit cards?" and while it's not a secret or anything (we do) it rankles me that they want that information but I don't know why I should give it to them. I'd be way happier with "I represent a credit card processing company, and we <whatever they do.> We can save you money if you already take credit cards, or get you set up if you don't. Do you accept credit cards already?"

I try to give before I take in everything I do. Before I ask a new client for a deposit or a commitment, I give them a proposal. Before I ask questions of the candidate in a job interview, I tell them a little about us. I do good deeds where I can and rarely ask for favours. On mailing lists, forums, newsgroups, or active blog comment threads, I answer other people's questions before I ask one of my own. And I blog, which is a form of giving information to many many people at once. Some day I may ask you a question, and if you read my blog you'll remember that I gave before I asked.

Kate

Monday, 06 August 2007 17:24:41 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 05 August 2007

I am generally loving Vista and have no intention of going back. I keep a few VPCs of older OS'es around, for various reasons, and some of the machines in my firm haven't been updated, mostly single-purposes boxes like a file-and-print server that isn't hurting anyone, or a machine dedicated to running our accounting software. But I won't pretend there haven't been annoyances - there have. And one of them has been opening a folder full of files and getting these weird columns like Date Taken and rating and the like:

Scott Hanselman showed me how to fix it. Do this in the root of C if you like, and apply to all subfolders. I have a "working" folder, with subfolders under it for each client, and I did it there. Aaaah, relief.

Kate

ps: Still filing Scott under RD for a little while until the assimilation takes full effect :-)

Sunday, 05 August 2007 08:06:07 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 04 August 2007

Jon Udell posted recently about a compelling graphic in the New York Times:

This is a very intruiging graph that immediately gets you thinking about survival rates, about whether new cases are rising or falling, and the obvious contrasts between, say, prostate and pancreatic cancers. But Jon then goes on to link to a post about how to make graphs like this yourself featuring your own numbers (sales? expenses? bug rates? time spent?) in Excel. I am consistent amazed at what Excel will do for people who know what they're doing. Check it out.

Saturday, 04 August 2007 07:54:08 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 03 August 2007

Andrew Clifford has a slightly controversial blog post in which he makes this claim: real programmers don't test. Well, on further investigation, what he really says is that really good and experienced programmers don't have a separate testing step at the end. And even in that diluted form, I'm not sure I agree. My developers think of tests before they code, and they test as they go, but on large development projects (and some small tasks for that matter) I still have a tester take a run through the system to make sure there is nothing that we would cringe if the client were to find :-).

The Braidy Tester has a way of thinking that may scare you a bit and a huge list of tests that you need to run at the end in his "you are not done yet" lists for testers and developers. The first item on the developer list is the most important to me -- when you find a bug, ask yourself why it didn't turn up earlier. Why did we wait until we were 90% complete to test with their old data? Why did nobody print this before? Why has it been three months since anybody tried adding a customer record before using this screen? "Why" questions tend to hurt a bit, but they prevent pain in the future. And folks who test as they go, who test in their minds before they design or code, can fly through a "you are not done yet" list and say "yes I am!"

Kate

Friday, 03 August 2007 07:43:17 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 02 August 2007

Another tip from Steve Clayton, this one about Hotmap, which aggregates local.live.com searches and maps, letting you know what places people are asking for maps of - where they want to go. Steve did an England map, but I did Ontario and surrounding areas. The darker red squares have had more map requests:

To a certain extent it just correlates with population, but also with Internet use, how visited a place is, and perhaps a certain Microsoft-vs-Google demographic as well.

Kate

Thursday, 02 August 2007 21:10:39 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 01 August 2007

The transparency from Microsoft these days is getting frankly astonishing. Here's something I've never seen before, courtesy of Steve Clayton, blue-monster-spreader:

When you understand where a company gets revenue from (and where it doesn't) then things are more likely to make sense to you. Steve's comments about SharePoint are interesting too and follow his link back to Todd Bishop's take on this.

Kate

Wednesday, 01 August 2007 21:04:16 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 31 July 2007

A former Softie friend of mine IM'ed me about this job. Sure, you need C++ skills, but there's more to it than that. They need a variety of skills because you'll get to do a variety of work... off the top of his head he listed:

  • multiplayer game infrastructure
  • chat and presence application
  • drm / installer
  • IE toolbar
  • flash applets
  • a bunch of other stuff

There's a Craiglist ad, which includes application instructions. This is in Seattle, by the way.

Kate

Tuesday, 31 July 2007 17:30:21 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 30 July 2007

Long Zheng has a lot of Microsoft-watching going on. This image comes from a slide he highlighted from Steve Ballmer's presentation for FAM (I already highlighted Craig Mundie's comments to the same audience.)

The comments are interesting too. Read the post.

Kate

Monday, 30 July 2007 17:05:30 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 29 July 2007

If you want to get started in C++ development, or try some parts of it you haven't tried before (remote debugging, perhaps?) then you should take a look at these little video lessons on MSDN. They're adding more as they go, so keep an eye on it...

Kate

Sunday, 29 July 2007 18:47:49 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 28 July 2007

Check it out ... sessions are starting to appear. I've been looking at the Tools and Languages track... there are some talks here I'll be sitting in on for sure.

It's going to be a fun fall!

Kate

Saturday, 28 July 2007 22:56:00 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 27 July 2007

You know this is one of my hobbyhorses. But I didn't write this quote, and neither did Herb Sutter or Larry O'Brien:

And so the world is going to move more and more away from one CPU that is multiplexed to do everything to many CPUs, and perhaps specialty CPUs. This is not the world that the programmers target today. This kind of complexity was historically reserved only for the wizards who wrote the core operating system; or, in the world of supercomputing in science and engineering, people who had the ultimate requirement for computational performance built big machines like this and have used them to solve some of the world's tough computational problems. That was always a niche part of the industry.

This presages a change where the industry at large, the whole concept of applications, will ultimately have to be restructured in order to think about how to take advantage of these machines, because they won't just get faster every year. They'll get more powerful, but in fact only if you're able to master these problems of concurrency and complexity.

The concurrency is a real challenge, because the way the industry has grown up writing software - the languages that we chose, the model of synchronization and orchestration, are actually not things that lend themselves toward either exposing parallelism or allowing large-scale composition of big systems and it's in part why we and everybody else, as the software grows in scale, you know, deal to a greater and greater degree with the difficulty of perfecting the software, making it absolutely secure, being able to predict every aspect of its operation. And so today we face the dual challenge of having the prospect of meeting even bigger, more sophisticated pieces of software to do the powerful things that we want, and to do it in an environment where to get that performance at the client on an individual application will require the mastery of parallelism.

This is Microsoft's Chief Research & Strategy Officer, folks. And he says what I say: concurrency is hard, and the future is concurrent. I know we all get by in this crazy churning world of constant new releases by ignoring stuff, but you can't ignore this.

Kate

Friday, 27 July 2007 22:40:15 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 26 July 2007

I'm in! I went for the VPC. Get yours!

Kate

Thursday, 26 July 2007 22:23:56 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 25 July 2007

Hey, this is fun! Want to write an application? In C++? For Vista?

Maybe it should have a split button:

Or a drop down with a cue banner:

Or ... well how about you read the article? It's by Kenny Kerr. It's the start of a new column for him -- look for it every other month in MSDN Magazine.

Kate

Wednesday, 25 July 2007 21:11:34 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 24 July 2007

I like to tell the "C++ is still sitting at the grownups table" story whenever I can. Sometimes that gets hard -- people ask why there's a C# wizard or designer for something, and a VB one, but no C++ one. For example, in Visual Studio 2005 the class designer could understand C# and VB code, but not C++. Well that one at least is somewhat fixed. I'm sure you can guess that C++ code is harder for a diagramming tool to understand, so perhaps that's why it had to wait a version.

Please take the survey from the Visual C++ team blog!

Kate

Tuesday, 24 July 2007 20:21:05 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 23 July 2007

There has long been a kind of mystery around getting hotfixes from Microsoft. Maybe you read a KB article or a blog or something and you learn that the fix to your problem is in a hotfix. Then there are all kinds of disclaimers about how you shouldn't get the hotfix unless you're totally sure you need it, and on top of that in order to get it, you have to phone someone!

In the last year or so I've obtained two hotfixes. One was sent to me by a friend who'd already gone to the trouble of getting it (something you're totally not supposed to do, but people do it anyway) and the other I got myself - it took less than ten minutes and was no trouble at all, but it was intimidating to do it for the first time. Well now there's an easier way ... hotfixes on the web.

https://support.microsoft.com/contactus2/emailcontact.aspx?scid=sw;en;1410&WS=hotfix

I don't exactly look forward to needing a hotfix, but it will be cool to try this eventually.

Kate

Monday, 23 July 2007 20:10:20 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 22 July 2007

A lot of people are so into Agile that they object to writing down requirements. Take this article on why fixed bid projects are bad - one of the major reasons given is that in order to produce an accurate bid, the developers will run around trying to write requirements and keeping track of changes to them, and making people get together and agree when they change them. We do a lot of fixed bid projects and they are generally a success - finish roughly on time, cost roughly what the customer was expecting to spend, and solve the problem the customer was facing. Those "we don't know what we want but we'll pay you by the day until we have it" ones can sometimes become a complete nightmare. We like requirements. So I really liked this article by Eric Sink on Requirements. I agree with so much of what he says. What do you think?

Kate

Sunday, 22 July 2007 20:25:58 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 21 July 2007

I should have pointed this out before, but I wasn't blogging at the start of the month. Herb Sutter has a new column at DDJ on, of course, concurrency. In his first outing, he talks about all the different words and concepts that show up in a concurrency conversation, and presents an organization of those concepts that can give you a framework for deciding what you're going to do about the future.

Words like blocking, coupling, background, asynchronous, responsive, isolated, scalability, threads, locks, race, mutable shared objects, transactions, and so on are actually applicable to different parts of the concurrency space. If you try to think about all of it at once, it's too hard. And make no mistake, concurrency is hard today. Anything that makes it easier is welcome, and in this case it's rearranging your head a bit.

http://www.ddj.com/dept/cpp/200001985

Kate

Saturday, 21 July 2007 20:08:11 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 20 July 2007

Recently I told you how to get a virtual image of Vista for evaluation purposes. Now you can try a variety of operating systems, applications and server products, preinstalled onto evaluation VHDs. Try Vista, Office 2007, Visual Studio Team System, SQL Server 2005, Office Sharepoint Server 2007, and more. Some of these products are a little tricky to get installed and ready to go, so a virtual image is just what you need. Even if you have an MSDN subscription, you might like to use these VHDs just for that convenience factor.

http://www.microsoft.com/technet/try/vhd/default.mspx

Kate

Friday, 20 July 2007 19:46:05 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 19 July 2007

Did you know there is no entry for gullible in the dictionary? Really! You can check and everything!

If you needed to check, you may not get a perfect score on the McAfee phishing quiz that Roy pointed to. I managed to get 10 out of 10 - and some of them are pretty hard. Try it yourself.

I hate spam, phish mails etc. The other day I got a Nigerian-style letter from Spain. And when I say letter, I mean on paper, in an envelope. Came with cool stamps on it, which I kept. The letter, I tossed.

Kate

Thursday, 19 July 2007 15:21:50 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 18 July 2007

I really like Outlook 2007. I just LOVE the ToDo bar, and the searching, and the flagging for followup and marking done, and the way the calendar looks now, and well pretty much everything. Except one thing. I hate that Outlook Today view and I hated it before too. Well... I just made it go away.

Tools, Options, Other tab, Advanced button, click the Browse next to "Startup in this folder" ... and no more Outlook Today when Outlook first starts up. Simple, but so satisfying!

Kate

Wednesday, 18 July 2007 13:47:40 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 17 July 2007

So you were thinking about entering the Gadget contest, but then you didn't get around to it? Well lucky you, you get another chance. Here's what I heard today: the deadline has been extended a month. You have to get your gadget into the Gallery to enter, and it's a process with a few steps to it:

Process to Enter Competition

 

Developers will need to perform the following actions:

 

1.       Post their Gadget on the Windows Live Gallery (approval process can take a few days)

2.       Return to the Gadget Vs. Gadget site and select ‘Enter Contest’ tab and use their Live ID to login

3.       Complete the entry form to submit their Windows Vista gadget for review

 

Winners will be announced September 4, 2007.

Same cool prizes, same great exposure, so go for it! http://www.microsoft.com/canada/msdn/gadgetvsgadget/default.aspx . Remember, Canadians only!

Kate

Tuesday, 17 July 2007 16:38:39 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 16 July 2007

Steve Clayton reports on a British university that offers a B.Sc. in .NET ... well in Computer Science but with a deliberate emphasis on .NET technologies. Interesting approach since here in Canada universities like to distinguish themselves from colleges and trade schools by teaching theory and concepts and not worrying too much about what tools the students learn how to use along the way. The belief is that learning to use tools in general and learning the commonalities behind them (what is a compiler, what is a renderer, what are the aspects of identity management) has greater long term value than learning one particular tool or toolset. In general, I agree with that belief, and I've hired people from a wide variety of backgrounds over the two decades we've been in business. But on the other hand, if you're going to teach all that general stuff, why not teach it in the context of some tools that happen to be immediately useful in the work world?

Kate

Monday, 16 July 2007 16:56:17 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 15 July 2007

Roy Osherove is looking for a Test Driven C++ trainer who lives in Israel already. He can make you a better trainer, he can get you the TDD background you need, but you need to have the C++ chops already and to be in the area. If you're interested, read his blog entry and make yourself known to Roy directly.

Kate

Sunday, 15 July 2007 16:48:25 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 14 July 2007

This is actually something that got settled during Tech Ed USA but my June schedule meant a lot of things I intended to blog didn't get blogged. Now I see myself listed on the Featured Speakers page (I told them, "flattery will get you everywhere" and they're going for it) so it's official.

My talks? The C++/Vista talk I did in the USA, plus a managed-code Vista one. We're still working on an abstract for that.

This will be my third trip to Barcelona. Will this be the year I do the Gaudi-tourist thing? Sure hope so!

Kate

Saturday, 14 July 2007 15:43:33 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 13 July 2007

Speaker Idol is happening again at Tech Ed Developers in Barcelona this fall. You have months to sign up, but only the first 30 are accepted, so if you already know you're headed to Barcelona (and not speaking, live in EMEA, don't work for Microsoft, etc ... full eligibility rules on the contest site) then you want to give this some serious consideration. Speaking as a judge at this year's US event, I can tell you that the experience of trying to do 5 minutes on a topic you know well can only be good. In order of the worst-possible-thing to best, here's what can happen:

  • You can do your talk, do OK, not win, and learn nothing from the judges while still failing to impress anyone with your speaking skills. I think this is pretty unlikely, but anyway it would leave you where you were before you tried - no loss
  • You can learn some very specific tips on being a better speaker, both from observing other speakers whose content you don't understand, and from the judges giving you ideas
  • You can show your skills in front of people who choose speakers - and not just for Tech Ed either
  • you get some publicity and bragging rights just by being selected
  • You can win a speaking slot at Tech Ed

To enter, you need to make a 3 minute video of yourself presenting on a technical topic, so don't dawdle!

If you are sure you don't want to enter, either because you're already a Tech Ed speaker or because you'd rather die than speak in public, be sure to at least plan to watch. I found it highly entertaining.

Kate

Friday, 13 July 2007 15:34:19 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 12 July 2007

Why, you call 911 of course. I imagine it would be a challenge for the 911 operator not to laugh out loud, but it was true...

http://www.theglobeandmail.com/servlet/story/RTGAM.20070712.welephants0712/BNStory/National/home

http://www.cbc.ca/canada/toronto/story/2007/07/12/elephant-stroll.html

http://www.thestar.com/News/GTA/article/235173

My favourite part is the elephant who didn't particularly notice they'd escaped and went to sleep just outside the pen. She's the one at the far left not being sprayed with the hose.

Update: The National Post provides this delightful picture, and links to the 911 call and dispatcher conversation. "Outstanding elephant" indeed. And what a nice police department to host the mp3s - not all would.

http://www.police.york.on.ca/Press/07-160928%20Comm.mp3

http://www.police.york.on.ca/Press/07-160928%20Dispatch.mp3

Kate

Thursday, 12 July 2007 17:19:57 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 26 June 2007

In a talk on IDE tips and tricks for Visual Studio, I asserted that good programmers are ten times as productive as ordinary ones. I didn't remember where I'd read that, but I knew it was true. I've just worked with so many folks who need a week to do what some superstars can do in a morning. The ordinary guy needs half a day to find some samples that are similar, half a day to tweak them so they fit into the current situation, a day to test and realize they aren't quite right, a day to adjust them and then fix the things that broke while adjusting them, half a day to get distracted and lured into scope creep by some comments during user testing, then another day to fix up what they did that they shouldn't have, and finally a half a day to clean things up and make documentation. The terrific guy only spends an hour finding samples, stays focused, documents and tests along the way, and makes short work of a specific small task. And I find this holds over months and years as well as over the course of a week.

Now I bumped across a proper cite of that, and not surprisingly it's from the Mythical Man Month. The quote and some related musings is over on Phil Haack's blog. Worth reading and worth thinking about. There are many ways to be productive ... write code that solves the real problem, don't write buggy code, don't write brittle code, and so on.

Kate

Tuesday, 26 June 2007 04:06:47 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 25 June 2007

One of the things that people comment on when they work with me is how much of a keyboard shortcut person I am. In fact I really like the fact that Vista supports my typing-preferences and doesn't make me mouse so much. But when I'm presenting, I try to use the mouse as much as I can and stay away from keyboard shortcuts. I just find such presentations hard to follow myself, when I don't know what the demo-ing person is typing and what shortcuts they are using. It's easier to see what they are clicking on.

This became a bit relevant during Speaker Idol when I mused aloud about whether to dock Mark Miller for using CodeRush while demo-ing. Anyone else I would definitely have told not to, but perhaps Mark has a dispensation. I just find that many attendees can't follow along with the blazing speed that CodeRush enables and really lose track of the demo.

Roy Osherove has put together a little utility that displays your shortcuts as you type them. His first post on the topic suggests its value to presenters, while his second one focuses on using it to become more keyboard oriented or to train a coworker to be more keyboard oriented. If you really can't switch to the mouse while presenting, consider using this utility so that people can see what you're doing.

Kate

Monday, 25 June 2007 03:12:41 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 24 June 2007

Can you lose weight by coming to Canada? Yes you can, but not mass, just weight, because apparently gravity in parts of Canada differ from elsewhere in the world. And this is some sort of slow rebound from the retreat of the glaciers...

http://www.livescience.com/environment/070510_odd_gravity.html

Kate

Sunday, 24 June 2007 03:01:44 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 23 June 2007

Just a small personal observation. My oldest child turned 18 and is now technically a grownup ... though of course still living at home and still technically in high school ... graduation is only six days away though. So many of my fellow RDs and MVPs are new parents, it seems strange to be approaching "the end of the beginning" of my parenting journey. But that's how it is.

Kate

Saturday, 23 June 2007 02:57:20 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 22 June 2007

There is a lot of confusion about writing your own exception classes. I see far too much code out there that just catches "Exception" anyway, that I hate to complain about someone who has set themselves up to have different catch behaviour for "The server is probably offline" than for "you probably don't have permissions on that file you just told me to use". However those who write their own exceptions have generally derived them from ApplicationException. If you ask why, they say things like "well" and "er" and "um" a lot because there's no extra stuff in an ApplicationException compared to an Exception. It just made it possible for you to catch "ApplicationException" and know it would be one of yours and not from some framework code.

Only thing is, that didn't really work out -- some framework code throws exceptions that derive from ApplicationException. And really, catching ApplicationException is just as generic as catching Exception. What can you meaningfully decide to do when all you know is "some code I wrote is unhappy in a way that the built-in exceptions (invalid argument, access denied and so on) cannot properly express" ?

So the word is out. Don't inherit from ApplicationException. Got it.

Kate

Friday, 22 June 2007 18:38:01 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 21 June 2007

Here is something really cool. If you happen to hold Shift while you right-click a file in Windows Explorer, you get more options on the menu:

   

The one I'm most likely to use is Copy as Path. Lets say you've just put a file on some shared drive somewhere and now you're emailing someone that you've done so, or you're passing the full file name to another application, or you're recording the file name in the files itself so that printed copies make sense. You need to copy the path from the address box, then the file name - it's annoying. This little trick doesn't save a ton of keystrokes, but I like it.

Kate

Thursday, 21 June 2007 18:25:11 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 20 June 2007

Recently we took a large SharePoint project live at a company that is acquiring others quite fast, and having trouble keeping its Active Directory situation up to date as new domains are assimilated. When the project first went live, everyone had to authenticate to the server when they first browsed to it, and in some cases a second or even third time, depending on what kinds of files they opened, whether they followed links to other internal servers, and so on. As you might imagine there were plenty of complaints from folks who didn't like having to authenticate all the time.

We as the developers couldn't do a lot about this, but we worked hard with their IT folks and did a few clever things of our own until we achieved single sign on glory. Workers throughout this global firm would sign in to their own Windows desktops, and from then on everything in their whole intranet was theirs with no more authentication needed. Of course it was all strictly controlled - only HR people could see the HR files, only Finance people could see the Finance files, and so on. But it was perhaps a little too transparent. After we achieved this lovely state people stopped emailing to complain about authenticating, only to be supplanted by a new chorus of complaints from people we hadn't heard from before. The most poignant read simply "Everyone can see all my files!" and was accompanied by a screen shot of a browser opened to the HR area. Our correspondent hadn't been challenged for a password and was therefore sure all these files were completely unsecured. It took an in-person visit that included "why don't we go over to Bob's desk so you can see what the portal looks like for him?" to finally convince this user that invisible security is still security.

For all I know, there are scores or even hundreds of people in that firm who don't realize their sensitive information is protected. Typing in a password annoys many users, but it soothes others.

Kate

Wednesday, 20 June 2007 18:13:32 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 19 June 2007

I got a real aha moment when I saw this graph:

The blog post where I saw it was talking about "management by ..." but I think it also applies to the motivation that individuals are moved by. That is, relative newbies to a job tend to do things a certain way because those are the rules. As they progress over time, most of them move on to "this is the method I use" and then to "my team's objectives are" and finally "this is what my team values." I think this is a hugely important progression to understand.

Let's take one little thing, say source control behaviour - do you check in too often, not often enough, are your comments any good, are your changesets too big or too little, and so on. If I want to direct your source control behaviour I need to know what zone you are in.

  • If you're in the "rules" zone, I must tell you the rules for source control. I need to write a long document with lots of examples and if there are exceptions, or different rules for different projects, I need to elaborate them all. Whenever you do something "wrong" I will probably hear that you were just following the rules, and I will need to update the rules to attempt to prevent that problem in the future.
  • If you're in the "methods" zone, I must cover source control in the documentation of my methodology, put it into context, show you why we use it and how things you type at step 17 will be used by someone else at step 35. The rules don't need to be so black and white or so detailed, but there may need to be different methodologies for different kinds of projects or circumstances. If I correct you I am still likely to hear that it's because the methodology is flawed.
  • If you're in the "objectives" zone, I need only remind you that we need to be able to pick up projects again for a version 2 long after we shipped version 1, or that we need to be able to recover from two people editing a file at once, or that we need to be able to explain to clients which files are different in version 2.3.4 than they were in 2.3.3. The detailed rules can go; you will choose your changeset size and your comments knowing which of our objectives you are supporting when you do so. If you make an incorrect decision and I point it out to you, your response is most likely to be "oh" and then you will adjust your own internal set of rules and methodologies accordingly.
  • If you're in the "values" zone, it's even simpler - we value making money on each project, and serving our clients well, and you know that, and you have the capability to make the right decisions in order to support those values. I barely have to manage you, just provide you from time to time with information.

In contrast to the blog where I found this graph, I don't see it as just being a matter of how managers choose to manage their projects and people. I see that some people cannot be motivated by values alone, or objectives alone. Either they lack the career maturity to recognize that supporting the team's objectives is always in their own self-interest, or they lack the skill and knowledge to choose correctly (should I check in now? or wait till I have tested? or wait till I do those other changes?) knowing only what outcomes are important to the team.

I personally don't care for the rules-oriented phase. Writing out exhaustive "if this happens do that" documents is not really fun work. Hearing that a flaw in the document is why something went wrong also doesn't really work for me. Yet it seems all team members (and by this I mean not just my own staff, but my clients and their staff, other vendors, and so on) need to go through this phase when adapting to a new process. Well, knowing it's going on makes it easier for me to cope with it.

Kate

Tuesday, 19 June 2007 18:03:05 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 18 June 2007

Here is a neat thing i actually learned about from people complaining about Vista performance. I haven't been having performance problems to speak of (except for that darned copying thing) but I was intrigued to hear about a background process that keeps track of how stable your system is. The Reliability and Performance Monitor is tucked away under a zillion menu options (this blog post leads you there) but I just click the marble and type reli and there it is:

The first thing you get is a performance monitor-type view, to do with as you will:

But if you click reliability monitor, you get something really quite new:

Here you see things the system feels were instabilities in my system in late May and early June.  Mind you, it has a very persnickety bar when it comes to those red Xs.

On June 1st, Visual Studio blew up on me. I bet I know what that was, too -- from time to time it blows up when I drop down a list of methods in those bars across the top of the code editor, especially if I try to scroll in the dropdown -- and not only was that recorded, but it contributed to a lower "stability index" for the day. As you can see, the system also records everything I installed (including updates through Windows Update) and everything that failed. It's a pretty neat way to remind yourself what you've been going through. You can also validate wild claims like "Project blows up at least once a week" by scrolling back and counting them. Ah, evidence :-)

Kate

Monday, 18 June 2007 13:28:42 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 17 June 2007

I was helping a mentoring client translate some sample code from VB to C# - he has written a lovely library and a customer wanted to see C# code that called it. The original samples had been written by someone who wasn't in the room, so I could have a bit of a vent. They had made heavy use of the Microsoft.VisualBasic namespace (nothing wrong with that) so as to access familiar (to a VB6 programmer) string manipulation methods. The problem was, these methods were being used to do things like finding the extension given a file name, or extracting a file name from a long path. This work should never be done with Left, Right, and Mid - and using Substring doesn't make it better. There are all kinds of methods in System.IO that manipulate paths and file names in a more robust and localized way than you can possibly do by hand. For my client's code, I ripped out a whole pile of hand written code (including a loop that looked character by character at a string testing to see if each was '\' or not) and replaced it with calls to library methods.

Phil Haack lists a bunch of these (and his commenters even more) in a very useful post. Developers who know what's in System.IO and the other meat-and-potatoes parts of the .NET Framework will write code more quickly, and that code will be better. Never assume you're the first person who wanted to parse a file path, check if a string is a good date, or any of a thousand other general tasks. Trust me, what you want is in there ... look for it.

Kate

Sunday, 17 June 2007 10:24:06 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 16 June 2007

I brought home a paper copy of MSDN magazine from Tech Ed and found this as one of the cover stories: An Inside Look At The Next Generation Of Visual C++. It's by Tarek Madkour and definitely worth a read. Were you wondering if MFC's wrapper for the new file dialog would be tweaked so you get the all-singing all-dancing new Vista common file dialog? Yes it will. Will there be a class to represent a Command Link? Yes. And a split buttton? Yes. Pretty much all the new controls and dialogs are in the new MFC. There's also resource editor support for PNG, for 32 bit images, and for large icons.

As I mentioned in my blog post about Sarita's Channel 9 Video, UAC support is also a lot easier. Then there's the marshaling library and STL/CLR. Toss in faster builds, and make developers everywhere happy. Roll on, release day.

Kate

Saturday, 16 June 2007 10:08:09 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 15 June 2007

Herb Sutter reports on the April meeting of the ISO C++ standards committee. They are now consistently referring to C++ 09 not C++ 0x (with a hope that x would not be hex, which seems to be turning out ok.) The meeting added features to the draft standard for the language itself (template aliases aka typedef templates, variadic templates, and unicode) and for the standard library (variadic templates, unicode, and rvalue references.)

The next meeting is July 15th - 20th in Toronto. I am trying to plan to be there.

Kate

Friday, 15 June 2007 09:53:54 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 14 June 2007

Have you tried writing a gadget yet? They're really simple and can have an immediate impact on your productivity. If you're a Canadian adult, you can enter your gadget into Microsoft Canada's contest and win some serious hardware.

The contest site has plenty of links to get you started and give you some inspiration. You have till July 16th, so get creating!

Kate

Thursday, 14 June 2007 09:19:43 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 13 June 2007

I like to let Hugh MacLeod's gapingvoid cartoons rattle around in my brain for a while before I decide if I like them or not. It's a fine line between pithy and banal, after all. This one is working for me:

Keeps my focus where it belongs, even when making custom software or mentoring the folks who are making the software. Forest and trees, don'tcha know.

Kate

Wednesday, 13 June 2007 07:30:01 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 12 June 2007

Have you ever heard the career advice that you should consider doing some volunteer work in your field to gain experience? Sounds like a lovely plan, but how does someone without contacts find volunteer opportunities anyway? Or maybe you have the job you want, but you want to put your time and effort to a good cause, if only you could find one. If you're in Canada, MatchIT.com is just the ticket. Sign up, fill out a form, and get matched with needs from nonprofits. There's lots of folks looking to have their websites redone, or a registration system written, or their servers looked after. It's a chance to make a real difference, so please look into it if you have some time to spare.

Kate

Tuesday, 12 June 2007 16:20:53 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 11 June 2007

Recently I had some major issues with a VPC somebody prepared for me. It came from a DVD and I just could not get it to run on Vista, though it ran great on XP. I was fairly sure that it would run OK if I could just launch VPC elevated and then open the .vmc file, but when I launched VPC (elevated or not) the only evidence of its existence was a taskbar entry (there was no window to be seen) and even that disappeared if I right-clicked on it.

I solved the first problem by granting Users access to the .vmc and .vhd files (I went with Full Control since I had them on a non-shared drive) and then the VPC ran perfectly. That was a better fix than elevating VPC every time anyway. But along the way I discovered how to fix the disappearing console. This post by Steve at EssJae.com shows what you need to do: find the options.xml file in C:\Users\%current_user%\AppData\Roaming\Microsoft\Virtual PC and open it -- make sure the console is not up and you're not running a VPC. Scroll down and find the <console> section  and you will see some very large numbers for left_position and top_position. Change them to something normal, like 10 or 100, and save the file and you'll be back in business.

Kate

 

Monday, 11 June 2007 15:59:03 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 10 June 2007

During my blogging gap, some good channel 9 videos came out. I wanted to highlight Ale Contenti: VC++ Safe Libraries and More. Ale is the new Martyn Lovell and he wants to show you the safe libraries and how to write sensible C++ code. If you like to see C++ code written live on the whiteboard (no intellisense, no compiler to find your typos) this is the video for you :-)

But wait, there's more. How about a C++ program without pointers? Well, without explicit use of pointers. Check it out.

Kate

Sunday, 10 June 2007 15:28:53 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 09 June 2007

Visual C++ is hiring a development manager. They have some reasonably high expectations on experience, proven track records, and so on. If you think you want the job by all means check it out. If you don`t think you want the job, but just want to keep on making C++ code and know there will be a product and a team there for you, read this quote from the job description (bolding by me):

The top 1,500 ISVs generate over 80% of worldwide software revenues. In addition to driving the global Windows ecosystem, these companies are directly responsible for $5B-$7B of yearly Microsoft revenue. Central to the success of these customers, as well as Microsoft's own internal development, is Visual C++. Given the strategic importance of the ISV segment, the Visual C++ team is on a mission to revolutionize our toolset in providing a much more productive and successful native developer experience.
We are looking for a strong Visual C++ Development Manager to drive adoption and satisfaction among professional C++ developers. We are in the starting phase of a major reinvigoration of the experience for C++ and native development targeting very large and complex development projects. The added demands of security and the advent of many-core processing create significant challenges and opportunities to create market leading technologies and tools.
The Visual C++ team is working hand in hand with the Windows division on enhancing the appeal of Vista and Windows 7 for ISV developers and with the CLR team to create a technology stack that allows layering of services to provide a seamless spectrum from native code over type safety and garbage collection to the full .Net stack.

Responsibilities
The Visual C++ DM position features leadership opportunities across multiple areas, including Technology and Architecture Leadership and Execution, Team Building and People Leadership.
You will lead a world class C++ compiler team and C++ IDE team embarking on a virtually top to bottom re-architecture of the tools stack. In addition, you will lead a libraries team that is re-inventing the MFC and client libraries for the next decade together with the Windows WEX and Developer Division UIFX teams. You will grow a strong cross-PU architect team and a development organization.
The Visual C++ DM plays an important role in cross-team relationships (Windows, CLR, UIFX, Office, SQL) and cross-company relationships (Intel, AMD, C++ standards work).

Wow! Looks like we`re all in for a great ride. If you really know your stuff, go help. If you just like to use it, hang on!

Kate

Saturday, 09 June 2007 15:01:12 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 08 June 2007

Microsoft Canada is putting on an all-day event Saturday June 16th at the Metro Toronto Convention Centre. Of course it's free, and you'll see plenty of Microsoft and external speakers in multiple tracks.

I'm doing session #1 in the Developer Track in the afternoon: What's New for Web Developers in ASP.NET and Visual Studio 2008. If you're thinking "Visual Studio 2008???" that's Orcas - the new name was announced at Tech Ed in the keynote. Register while there are still spots!

Kate

Friday, 08 June 2007 16:37:59 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 07 June 2007

I have spoken a LOT (too many times to link back) over the last year or more about getting your applications to work on Vista. When I ask for a show of hands to see who has tested their apps on Vista, I typically get less than a quarter of the room. When I ask why I hear things like "a copy of Ultimate is too expensive just to test with" or "I don't have a spare machine with the horsepower to run Glass" or even "I don't have a spare machine".

Fear not. How about a FREE evaluation VHD image of Vista, that you can run with the FREE copy of Virtual PC on the machine you have now? It might be slow, it might not do Glass, but you can find out for FREE if your app even runs, if it works under UAC, what happens if you put a manifest on it, and so on. Come on, what's stopping you? Jean-Luc David of Microsoft Canada has all the links for you.

Kate

Thursday, 07 June 2007 16:27:04 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 06 June 2007

I sincerely hope that this year's Tech Ed USA hasn't featured any of these "worst practices":

http://www.youtube.com/watch?v=qZOL878CwfM

I like to advise up-and-coming speakers to watch as many sessions as they can, so they can see what NOT to do as well as what to do. Watch and learn, and giggle a little.

Kate

Wednesday, 06 June 2007 16:20:47 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 05 June 2007

My Tech Ed USA talk this year was "Vista and C++/CLI - a Natural Fit". A lot of Vista goodness is hard to get to from managed code. In the precon I showed you how leveraging other people's work (specifically the Vista Bridge and the Preview Handler Framework Stephen Toub wrote for MSDN Magazine) can eliminate some of that difficulty. In my C++ talk I drilled a little further, into things like property handlers that can only be in native code (same for thumbnail providers though I didn't show one) and flukes of the IDE that (for Visual Studio 2005 anyway) make adding a UAC manifest easier for C++ developers. The slides should be on CommNet for registered attendees, and if you want the code samples you can drop me a line. The property handler sample is straight out of the SDK so I don't need to send you that.

Kate

 

Tuesday, 05 June 2007 16:11:58 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 04 June 2007

Here are the slides (5 meg) from the precon I did on Vista Programming with Tim yesterday. I've only zipped up "my" decks -- Tim should be posting his soon. If you attended and want my code, please drop me an email and ask for the demo that you want. Oh and please do your evals ... we don't have as many evals as attendees right now and trust me, evals make a difference so if you enjoyed the day, tell Microsoft so, and if there's something we could have done better please make a detailed comment - I read them!

Kate

PS to the attendee who gave us "1" on every question but said our demos were effective and the technical level was just right, did you know that 1 means the absolutely worst experience you have ever had? 9 means terrifically great.

Monday, 04 June 2007 09:41:27 (Eastern Daylight Time, UTC-04:00)  #