# Thursday, 15 February 2007

I read a few interesting posts (Barry Leiba, Raymond Chen) about email subject lines. I get about one email a minute, and even after you strip out the offers that aren't really that personalized (I already get those from Canada, thanks, and I don't even have one of those, and as for that, are you serious?) I get dozens and dozens of real and important emails every day. And at a quick guess at least half have a terrible subject line. If you've heard me speak, you've heard me try to teach the art of a good subject line. Let me try some more here:

  • Never use the name of a project or client, and only the name of the project or client, as your subject line. My "City of Kawartha Lakes" outlook folder contains roughly 50% emails that break this rule. Most of my staff were on the project at one time or another and were typically on other projects too. So when they emailed me a question or a status report, they put "City of Kawartha Lakes" or "CKL" or "City web site" as the entire subject. The problem with that is it's so ephemeral. This morning it distinguishes your mail from the others in my Inbox you sent me about a different project. 6 months from now, when I'm trolling the client folder trying to establish when something was decided, it's really of no value to me at all. The City staff were no better: they used to write with subjects like "our website project". It was during that project I started to train my staff on subject lines.
  • Really try to imagine someone using your email a year from now. Then you'll naturally change "weekly status report" to "status report, week of Jan 2". That's doubly true if it's not date related -- at least I can sort my emails by date.
  • Never use a subject line that will make little or no sense if it's forwarded, or could offend. "Need a ruling on bug 234" is ok, but just "bug 234" will not make sense when it lands in the client's inbox, and "Can you please get these morons to make up their minds?" is also bad. If I have to change your subject line in order to forward the message, then when you're cc'ed the subject line change will confuse you.
  • Barry points out the problem with "meeting with Barry" or anything else that has some sort of directionality in it. Even "today's results" becomes mislabelled tomorrow.
  • Probably the second worst subject line in the world is "question". The worst: "couple of questions". I prefer separate emails for separate questions, so I can reply to them one at a time, forward them to those who can truly answer them, and so on.
  • If you don't get any spam at all, and have a way better spam filter than me, or are luckier than me, take a look at what is getting dropped once in a while, and don't use those subject lines. "question" is real popular in my junk box, as are "Good day", "Approved", "Document", "Request" and so on. Plenty of folks (and spam filters) drop those unread.
  • If I am not likely to recognize your name, take extra care with your subject.  Email from a known correspondent with a confusing subject line will at least be read. It may not be very file-able, but I'll read it. The same subject line from a stranger might go straight to the trash. At events I recommend mentioning the event in the subject.
  • When replying, feel free to fix subject lines. Most importantly, remove [ACTION REQUIRED] and similar flags if you are not actually requiring action in your reply. I don't object to folks using these tags but it gets tiring when my folders are full of ACTION REQUIRED messages that say "ok you will have it by end of day".

Finally, as a Raymond-commenter points out, make your first line or two really count. It may be all I read. If you want me to review something, start the email "can you review this document by Friday?". Then you can provide the backstory after that. I file a lot of things unread, because I get cc'ed on things. This is good. It's better still if the part I can see in my two line preview says "yes, we can do this for your by Friday" or "go ahead, I have approved the budget" so I don't even have to open the message.

Kate

Thursday, 15 February 2007 14:41:41 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 14 February 2007

I came across the most astonishing story. Here's a tiny excerpt:

You know the logics setup. You got a logic in your house. It looks like a vision receiver used to, only it's got keys instead of dials and you punch the keys for what you wanna get. It's hooked in to the tank, which has the Carson Circuit all fixed up with relays. Say you punch "Station SNAFU" on your logic. Relays in the tank take over an' whatever vision-program SNAFU is telecastin' comes on your logic's screen. Or you punch "Sally Hancock's Phone" an' the screen blinks an' sputters an' you're hooked up with the logic in her house an' if somebody answers you got a vision-phone connection. But besides that, if you punch for the weather forecast or who won today's race at Hialeah or who was mistress of the White House durin' Garfield's administration or what is PDQ and R sellin' for today, that comes on the screen too. The relays in the tank do it. The tank is a big buildin' full of all the facts in creation an' all the recorded telecasts that ever was made—an' it's hooked in with all the other tanks all over the country—an' everything you wanna know or see or hear, you punch for it an' you get it. Very convenient. Also it does math for you, an' keeps books, an' acts as consultin' chemist, physicist, astronomer, an' tea-leaf reader, with a "Advice to the Lovelorn" thrown in. The only thing it won't do is tell you exactly what your wife meant when she said, "Oh, you think so, do you?" in that peculiar kinda voice. Logics don't work good on women. Only on things that make sense.

He's right, isn't he? Well, not about women, but about "you got a logic in your house" and the description of what your logic does. And sure, tons of science fiction stories (plus Marshall McLuhan) predicted this. But this story was published  - I kid you not - in 1946. Sixty one years ago.

Wow. Check out the author bio and then read a whole pile of his stories online. All the standard tropes of science fiction stories are here ... just a lot longer ago than I would have thought. And his gender attitudes, in other stories, reveal themselves to be a little different than this quote would imply.

Kate

Wednesday, 14 February 2007 11:50:28 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 13 February 2007

Here's another C++ video on Channel 9. And this one is about strategy and vision:

How will VC++ evolve? How has the advent of managed code affected the evolutionary trajectory of VC++? What's the VC++ team up to these days, anyway? How much time are they spending innovating C++, the native language?

Tune in and learn first hand from two people who know the answers to the above questions (and much more); Steve Teixeira, Group Program Manager, and Bill Dunlap, Program Manager.

If you want to know where Visual C++ is heading, then you definitely want to watch this interview. If you are a C++ developer, the message should be very loud and clear: Microsoft has not forgotten about you!

These guys know you don't want to throw your old code out and it isn't broken. You want to keep working with it. You want to extend it to pick up new shiny good stuff, but you don't want "step 1: port the whole thing to C#." They also know you love the language and you want Microsoft to love it and love you. And they realize that C++ doesn't need to be all things to all people, because most folks who have mastered C++ can pick up the C# or VB they need when necessary. So if you accept those two premises - that native code is super important, and that not every single UI wizard needs to support C++ - where do you think that leads? Watch and find out.

Kate

Tuesday, 13 February 2007 11:39:05 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 12 February 2007

Aaron Stebner has a blog post and an update on installing the C++ redistributables (msvcr80.dll, atl80.dll and the rest.) You can choose

  • the user doesn't need to do anything, but there's a progress dialog and it has a cancel button
  • the user doens't need to do anything, there's a cancel dialog, but no cancel button
  • there's no ui at all and nobody knows what's happening

Turns out the command line you use varies a tiny bit for redistributable packages you installed with Visual Studio or those you get from the web, so read both posts.

Kate

Monday, 12 February 2007 11:24:12 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 11 February 2007

You know what they say: if I knew, I couldn't tell you. But Mary Jo Foley doesn't mind a little speculation, and Scott Guthrie seems pretty clear on timelines in the blog and presentation she quotes. So it's either "late 2007 or early 2008" or "later this year". But don't say I said so :-)

Kate

Sunday, 11 February 2007 11:12:54 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 10 February 2007

Visual Studio 2005 SP1 included new versions of some C++ libraries. Your application's manifest specifies what versions of the DLLs it wants -- so if you build with SP1, the application is going to look for SP1 versions at runtime. That has consequences for your deployment strategy, since non developers are unlike to have SP1 versions of those DLLs yet.

Nikola Dudar has gathered some questions and answers on this topic. I'll give you the questions, read his blog for the answers:

  • It looks like with VS2005 SP1 if a new version of VC++ libraries is installed, all apps start using it. Is this new policy for VS2005 SP1?
  • When my application is rebuilt with VS2005 SP1 it runs only when SP1 versions of VC++ are installed. Why does not it run when RTM versions of libraries are installed? Is this new policy for VS2005 SP1?
  • This behavior of VC++ libraries in VS2005 SP1 is it only specific to SP or is it going to be same in future releases of SP and hotfixes?
  • Wasn't the whole point of manifests to allow applications to specify the versions of VC++ libraries they want to load?
  • My application is using a DLL that is built with VS RTM. The application links against import library of that DLL and call exports of that DLL at runtime. Is this going to work with VS2005 SP1 and other SPs?
  • My final product is a set of DLLs. If I release a version of my DLLs built with VS2005 SP1, can my users who use VS2005 RTM to use these libraries?
  • My application is linking to static library party is built with VS RTM. Is this going to work with VS2005 SP1 and other SPs?
  • I see VS2005 SP1 has installed SP1 version of VCRedist*.EXE. Should I send it to my customers and ask them to install it?
  • I am using MSMs to redistribute RTM versions of VC++ libraries. Should I sent SP1 version of VCRedist.EXE to my customers and ask them to install it?

If these questions matter to you, then you have a blog post to read, don't you?

Kate

Saturday, 10 February 2007 11:07:33 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 09 February 2007

Bruno van Dooren, C++ MVP and general nice guy, blogged recently on "Is C++ still a viable language?" He makes lots of good points about interop, templates, and control. He points out that some UIs are a lot easier to build with C#. Then, out of the blue, he says mean things about VB. I know he's only joking, but I just felt I had to defend VB's honour.

Here's the thing. C#, it's mostly just VB with semicolons, you know? And that's not an insult, you shouldn't gasp when you read it. VB's a good and useful language. [Of course I mean VB.NET, come on, we're coming up to our fourth release, the default VB is VB.NET now.] It's no secret I do far more work in VB than in C#. Once in a blue moon I want to do something in VB that would be easier in C# (last week I wanted to delay hooking up button handlers until some initialization was in place, something the Handles keyword isn't going to do for me) and if I did more C# I would probably find the occasional thing that would be easier in VB. Big deal! I can always find a way to do those things anyway. What matters is the framework, and that's the same in VB, C#, or C++/CLI. I like the synactic sugar of Dispose=destructor more than the synactic sugar of "using" or "Using" but the underlying mechanism is the same in all three cases.

Kate

Friday, 09 February 2007 11:00:29 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 08 February 2007

Herb updates us on the next C++ standard:

I'm happy to report that work on "C++0x", the much-anticipated Version 2.0 of the ISO C++ standard, has dramatically picked up steam over the past few months. The ISO C++ committee has now published the first partial draft of C++0x and plans to publish a complete public draft before the end of 2007.

As part of the push to get this done, the committee is having extra meetings, including one in Toronto in July. Hmmmm.....

You need to read Herb's blog post yourself for the details on what's in C++ 0x (Concepts, Garbage Collection, Memory Model for Concurrency, Concurrency Libraries) and what's not (Modules, Dynamic Libraries) with helpful links to even more details. This is our future -- and you can be sure, C++ has a future.  

Kate

Thursday, 08 February 2007 10:46:46 (Eastern Standard Time, UTC-05:00)  #