 Monday, 12 June 2006
My first talk of this year's TechEd, DEV 309, is today. For those who haven't pulled the slides from CommNet, here's the secret: there really aren't any slides.

That's right, if you remove the "chrome" that TechEd requires, like the session title and my name, there's an agenda, 4 demos, a laundry list to remind you what was covered, and a summary. Basically it's an hour and a bit of showing what the IDE can do. I like doing this talk because I just KNOW everyone will learn something they didn't know before.
Kate
ps: attendees PLEASE do your evals, that's how they decide who comes back next year!
 Sunday, 11 June 2006
This one not from the hotel, but from TechEd as a speaker thankyou:

It's started already, and it's fun already (and I didn't even open the wine).
Kate
 Saturday, 10 June 2006
I have an HUGELY busy week planned at TechEd. It kicks off with meetings of MVPs and RDs (I have to miss the meeting of user group leaders, everyone had the same "day before TechEd starts" plan) and the keynote Sunday night. My talks are Monday (DEV309 Visual C++: IDE Features for Visual Studio 2005, 5:00 PM - 6:15 PM Room 259 AB) and Friday (DEV444 Visual C++: Debugging and Resolving Loader Lock and Side-by-Side Issues, 1:00 PM - 2:15 PM Room 160 ABC), and I won't miss the Women In Technology luncheon on Wednesday. In between I have so many meetings scheduled, it's a good thing the sessions will be on DVD afterwards because I just won't be able to attend all the ones I want to. And as for Boston tourism... well at least I'll see Fenway 
If you're going to be there, drop me a note and let's see if we can have some "face time" of our own.
Kate
 Friday, 09 June 2006
If you attended realDEVELOPMENT_06 and really liked Infocard when I showed it to you, I have news: it's got a name now. Infocard was just a code name, which is why it said "Infocard" on the slides. Marketing has now christened it Windows CardSpace (WCS).
What's more, WinFX (which will be released with Vista but available on operating systems down to XP) will be called the NET Framework 3.0. That's handy, because I was spending a fair amount of time explaining what the heck WinFX was (the FX stands for framework, it's basically the .NET framework plus extra good stuff like WCF, WPF, WF, and Infocard WCS.) I think everyone will "get" what .NET Framework 3.0 means.
Nothing changes in the technology, just the names.
Kate
 Thursday, 08 June 2006
Imagine yourself in a hotel room early in the morning. You're tired, the alarm's just gone off, you're not ready to have a lot of lights on yet, you need to get up, iron some clothes, and get out the door all perky and chirpy to go teach a course. Luckily, the room has a coffee maker and supplies, so you can pre-caffeinate yourself. Yay! Now some of you, if you're North America-based, might have trouble spotting the sugar packets, but not me, oh no, I've been to Europe before you know, world traveller me, I know which is the sugar. It's those long skinny things. Like this:

One small problem: some of those are brown sugar, but the others are instant coffee. Ah well, I needed extra caffeine anyway.
Of course, whenever you go somewhere new, it opens your eyes to what people think is obvious. Take road signs for example. What does this mean?

I figured it out eventually from signs that have some more specific rules on it: No Stopping.
Try this one:

That means "end of motorway" and appears on most exit ramps to remind you that you're leaving the highway and changing your default traffic rules. I figured that out because the same symbol, which to me looks like an inukshuk, shows up on more understandable signs:

Another mystery was this one:

Though it "clicked" for me when I saw this variant:

Now there are some signs I think are brilliant:

But all in all, I'm really glad I'm leaving the driving to professionals on this trip. And I speak the language!
Kate
 Wednesday, 07 June 2006
Sorry about that, but the number one headline here in the UK is the state of Wayne Rooney's foot. Listening to the radio in cabs and buses, or watching the television, that's all anybody cares about... they find a way to include it in the weather report, the traffic updates, the stock market report and so on. It was wild to see so many English flags (not Union Jacks, those are British flags based on the union of the individual flags) in windows and on cars.

There's a bit of controversy here about the flag thing, with people saying it's tacky, but i certainly saw hundreds of flags in just one day of travel, from Heathrow to Woking to Portsmouth, walking around Portsmouth, and then back up to Reading that evening.
Nice surprise for me when I reached the hotel... as a Hilton Gold member I'm used to a little snack waiting for me in my room. Sometimes it's a cookie and a bottle of water, or even two cookies and a bottle of water. Here's what was waiting for me in the Manor Room to which I was upgraded:

That's two bottles of water, two apples (at least one of which was very nice, I can report, having eaten it) and a bottle of red wine. The bed, for those who are following the pillow story, had three pillows on it. I'll take snack escalation over pillow escalation anytime.
Kate
 Tuesday, 06 June 2006
This time it's Boris Jabes, who we haven't heard from in ages, who reappears with a pair of handy macros, one to show all your keyboard shortcuts and one to preprocess a file you have open (written as a response to someone who wanted it added as a feature to the IDE.) He credits his blogging once more to the "you can blog from Word 2007" feature. If that's true, the feature is getting my vote as the best of this release 
Kate
 Monday, 05 June 2006
One of the prizes at realDEVELOPMENT_06 Toronto was a Microsoft mouse. You're probably thinking "big deal". Well John was using this mouse in his presentation, and at the first break so many of the questions were about the mouse (yes, about the mouse!) that he took a minute to talk about it before we started the next session. Even the emails I got afterwards reflected a lot of mouse interest, with one attendee putting it first on the list of cool things seen that day.
So obviously this is no ordinary mouse. It's called the Laser 6000 and I guess the laser-ness makes it somehow better than an optical mouse. But that's not what all the fuss is about. It has a scroll wheel (nice and smooth) and you can push the scroll wheel sideways for horizontal scroll. But the side button, just under your thumb, is the cool thing. It's a zoomer. It magnifies whatever is under it... really simply and easily. Here's a shrunken screenshot:

You can control how big the zoomed area is and how magnified it is very easily and your choices persist until you change them again. I have the Wireless Laser 6000 and it's ergonomically beautiful, even fitting the little USB dongle into a slot on the underside of the mouse -- and turning it off when you do that since you're obviously putting it away. I really love this mouse... next time you need a new mouse, think of the Laser 6000, especially if you do any speaking.
Kate
 Sunday, 04 June 2006
Barnaby Jeans took some great pictures at the Toronto event on Thursday.

Here I'm modelling the girly pink speaker shirt, while Sasha is wearing the same boring (incredibly sophisticated, sorry Sasha) black as everyone else 

We had over a thousand people, and this shot gives you some idea what that's like. Not an empty seat in the house!

Update: Wendy Markevich sent me this shot of all of us on stage: left to right this is Bruce Johnson, Matt Cassell, Mark Arteaga, Tom Moreau, me, Jerome Carron, Adam Gallant, and Scott Howlett.
Kate
 Saturday, 03 June 2006
Steve Teixeira has linked to the webcasts from a C++ day held in Paris in May. These were done in English, but if you want to download the WMVs you're going to need a tiny bit of French, or to have gone through the downloading-a-webcast-from-MSDN process often enough that you don't really need the prompts. I qualify on both counts, and since the French for video is video, it's not too terribly difficult. Well actually Herb's talk starts with a French introduction, but having heard myself introduced in French a time or two I can tell you it's OK if you can't follow that bit. (Most of the time you can't tell that Herb and I did our undergrad at the same place, but we did, and occasional sesquilingualism is a clue. The difference is that while Herb remains a little nervous about engineers, I became one.)




These are good talks with demos and they cover a lot of ground for C++ programming today and in the future. Go get them.
Kate
 Friday, 02 June 2006
What at blast I had yesterday speaking at realDEVELOPMENT 06! We had over a thousand people to hear about Atlas, Ajax, Infocard, and security for web developers. Already I am getting emails from attendees asking for the powerpoint decks. Here's the deal: the session notes are online already, and the powerpoints will be there when everyone is back home from the tour and has time to upload them -- some time after the middle of June.
Thankyou all for coming and if you have questions you didn't get to ask, you can leave a comment on this post or drop me an email.
Kate
 Thursday, 01 June 2006
This one is with Louis Lafreniere about the C++ backend compiler. What can I tell you, go there and watch it!
 Wednesday, 31 May 2006
Once upon a time, there was a highway called Highway 35. It ran north from a major east-west highway and got less and less important until it kind of trickled to a stop in the semi-wilderness near Algonquin Park. The southernmost sections of this highway were twinned with Highway 115, with a concrete median, exit and entrance ramps, and a speed limit of 90 km/hr. From what's known as the 35/115 split, it ran north, one lane each way, with gravel roads crossing it and driveways opening on to it, with only a handful of traffic lights to control traffic flow every twenty or thirty miles.
Update: here's a map of the area.

Now there was a bit of a problem with this highway. People get killed on it. The section between the 115 split and Lindsay is hilly, and it gets a lot more traffic than it used to. There are trucks delivering Important Stuff, people dragging trailers and boats up to cottage country, tractors going from one place to another, and Toronto folks in a hurry. From time to time, impatient people pass when they shouldn't, like going up hill, and there's a head on collision and people die. It's not the most dangerous stretch of road in Ontario, but it is bad and there started to be noises made that Something Should Be Done.
Well just about any idiot can see that the head on collisions are caused by dangerous passing, and the survivors can tell you that the passing happened because one vehicle was really slow and another really impatient. So an obvious solution would be passing lanes on the steeper hills. So in 1999 a study was commissioned to decide where to put the passing lanes. They discovered that in one 22 km stretch of highway, about 13 km -- over half -- of the road would be three laned, and parts of that four laned, with passing lanes coming up both sides of a hill and needing four lanes at the top. Now passing lanes do reduce head on collisions from unsafe passing, but they open up the possibilities for accidents wherever people are changing lanes, and without a median these accidents can involve traffic coming in the other direction, so you can't assume that building all these passing lanes would actually reduce the accident rate.
They decided in this 1999 study:
Implementing spot improvements on an as-needed basis represents the low cost solution but is cost-effective only if it conforms to a future plan. In the absence of a plan for the ultimate design of Highway 35, the planning and design process for extensive [passing lanes and truck climbing lanes] becomes difficult. Road improvements proposed as part of the ultimate plan may even eliminate the need for [passing lanes and truck climbing lanes].
So what does that mean? Time for another study, this one on four-laning the whole highway or at least from the split to Lindsay. This one would also deal with the possibility that highway 407 would be extended out to the 35/115 split. This study started in 2000.
Here's the first problem when you four-lane a highway that has cross-roads and gravel roads meeting it. Imagine someone coming out of a cross road or a driveway and wanting to turn left. They are going to need to cross two lanes of traffic, and they'll be turning into the fast lane of the highway. That's not good. And then imagine someone who is on the highway and wants to turn left into their own driveway, but has to stop to let oncoming traffic go by. They are going to be stopped in the fast lane. Over time these two kinds of left turners are going to cause more accidents than the inappropriate passing you were trying to solve in the first place. So you need to implement some sort of controlled access to the highway, as they did on the 115. Typically you let people turn right onto and off of the highway, and you have some overpasses and underpasses so you can go past your target then turn around and come back to make a right turn. You also have a median of some kind so that people cannot turn left or make U turns.
Well, boy oh boy did that need studying. Should the median be a wide grassy strip between the north and southbound sections? That consumes a ton of land and would wipe out dozens of houses currently located along the highway. While that might seem to solve the pesky problem of driveways, it's not really a popular approach. Perhaps it should be a concrete wall? And those exits, should there be one at every corner with a sideroad? If it's only every other corner or so, how do you decide who gets them? And you know the corners tend to have houses on them. Maybe the exits should be between the roads? Study, study, study. Measure the traffic on the road now on a variety of different days over the years. Read the official plans of municipalities in the area to see where growth is planned, and guess what traffic will be some day. Count fatal accidents, which continue to occur.
Meanwhile the rural areas the highway goes through were amalgamated into the City of Kawartha Lakes. Meanwhile the Oak Ridges Moraine was defined and protected in law, which dramatically restricted some construction options. Meanwhile plans for the 407 were batted around that involved bringing it all the way out to the 35/115 split. (Update: the folks doing the 407 study have their web site up to date now.) So they kept having to adjust their study to cope with the world changing around them.
At some point somebody noticed that a big piece of the traffic on 35 was folks who were really on 7A. 7A coming East from Toronto meets 35, goes south a very short distance along 35, and then carries on east again. All those people have to turn left across 35 and that's part of the problem. So the highway study scope expands again, to include rerouting 7A to eliminate the jog. Half the population wants them to reroute it away from the school and arena so as not to worry about traffic for the kids, and half wants to be sure they don't cut the school off so we have to drive further to reach it or the kids have to get on the bus sooner for a longer bus ride. More studying. Roughly 20 different ways you could solve that particular problem.
Along the way they produce a TON of arial photographs all marked up with pink and yellow and white and green. Each suggested approach gets more and more complicated. They hold public information centres where people come and tell them "you can't do that, it will ruin this pond" or "you can't close that, we all use that road to get to the arena" and so they make even more complicated plans.
And now what has it become? You won't believe it unless you see it (and the website isn't up to date, so you could have only seen it by going to the public meeting.) It's going to cost a fortune, several houses will actually have to be bulldozed, and many many people will be losing stripes of their land, not only to the wider highway but to the "access roads" that will be built parallel to the highway so that we locals can drive from a road that doesn't get an exit north or south to some road that does get an exit so we can get on the highway. (These access roads don't particularly connect to each other though, which is probably deliberate to reduce traffic and to let them run the roads wherever happens to be convenient.) Countless roads closed, neighbours cut off from each other, even farmers cut off from their own land and needing a three or four mile detour to go to the other side of the highway.There were some very sad faces at the public information centre all right.
My opinion? This is a good time for someone to step back from the huge pile of coloured pictures and say "what is the problem we were trying to solve again?" It has grown out of control and needs to be made simple once again. My only consolation is that it will probably be 20 years till they build it and I hope to be even further from the big city by the time all that rolls around. Yet each step and decision along the way was logical and grew from the current circumstances. This is how projects spiral into huge and unmanageable monsters that end up not helping anyone. It's as true for software as for anything else.
Kate
 Tuesday, 30 May 2006
Microsoft has a team of people who concern themselves with non-professional programmers. This includes students, hobbyists, and anyone who isn't primarily paid to write code, but finds themselves writing it anyway, typically at home and on their own nickel. (Apparently they outnumber professional developers four to one.) John Montgomery, of that team, says that non-professional programmers use HTML and Javascript the most, followed by (believe it or not) C++. While I suppose the presence of CS students who are taking C++ courses must skew the numbers, I still find it surprising. There are a lot of languages that are easier to pick up and noodle with in your free time than C++. I think it shows that people will move towards a tool that does what they need.
Kate
 Monday, 29 May 2006
It's time again for an update to the TIOBE Programming Community Index. I blogged about this a while back, and it's time to notice it again. This index measures only how often a programming language is mentioned by name - in people's resumes, in job ads, in tutorials, even in explanations of other languages or comparisons between languages. It is an interesting measure of which languages people consider relevant in conversation or in describing themselves.
C++ has moved up from 4th overall to 3rd (still behind Java and C, pulling ahead of Perl) but if you look back over the last five years, it's clear less people are bringing C++ into their conversations than they once did:

What I find most confusing is the tiny numbers for C#. Oh sure, I know this is just a graph of the top ten, and things like Ruby aren't even here, but to be neck and neck with Delphi over all this time? That's kind of strange. There are obviously large swaths of the internet where I don't normally go, where people talk about Delphi a lot.
I wonder what's the uptick of Java talk over the last year? Could it be all the "Java is over" articles? By the way the steep drop for C++ and Java in April 2004 is an artifact as a result of a Google cleanup-clearout, and since then the index includes more search engines.
Kate
 Sunday, 28 May 2006
A little bird shared with me the snack highlights for Tech Ed 2006:
1,250,000 pieces of "Mikes & Ikes" will be consumed over the course of a week at Tech Ed 2006 18,750 pounds of salad will be prepared and offered at meals 83,700 ice cream novelty/ fruit and yogurt bars have been ordered for this function 60,000 eggs will be eaten by attendees at breakfast (this is equal to 4,800 dozen cartons of eggs) It will take 4 semis to transport the 150,000 bottles of water consumed on this show The total amount of fruit ordered will fill 3/4 of full size tractor-trailer 1.6 million ounces of coffee will be poured and consumed (conservative estimate) More than 50,000 pounds of carbohydrates will be consumed at Tech*Ed (Atkins who?) 1,500 table cloths will be used and re-set on a daily basis: (7,500 for the week) A minimum of 2,000 antacid tablets are likely to be consumed at this event
Now it just so happens that after my very first Tech Ed (Dallas, 1999, as an attendee on a press pass) I got some stats on snacks that year:
183,000 Bottles of Logo Water 14,000 Gallons of Coffee 8, 000 Gallon of Iced Tea 38,000 pints of Milk 37,500 link sausages = 337,500 inches 28,125 feet, 9,375 yards or 5.32 miles. 27,000 Granola Bars 69, 000 Lemon wedges or 11,500 lemons... 275 Trees worth. 200,000 creamers for coffee 333,000 packets of Sugar 27,000 apples 36,000 bananas 3500 pounds of scrambled eggs 7700 Omelets 110,000 Soft Drinks
Anyone care to compare and contrast?
Kate
 Saturday, 27 May 2006
I'm surely not the only one who's noticed that most of the blogs by members of the Visual C++ team have one thing in common: they're not updated terribly often. Typically there's one team member (maybe someone with insomnia?) updating one while the others languish. So now it seems they've decided to make a group go of it with the Visual C++ Team Blog. It appeared yesterday and has had two entries so far. I hope it gets lots of updates!
Kate
 Friday, 26 May 2006
Our free "what is SharePoint" seminar went off without a hitch on a grey cool Peterborough afternoon. The recurring theme from attendees, as well as some contacts I invited who couldn't make it, was "is it really free? How can that be?" Windows SharePoint Services really is free with Windows Server 2003. Here's a quote from the Microsoft site:
Now shipping as part of Windows Server 2003 R2 or available for download at no additional charge, Microsoft Windows SharePoint Services technology in Windows Server 2003 is an integrated portfolio of collaboration and communication services designed to connect people, information, processes, and systems both within and beyond the organizational firewall.
It really is free. Tell your friends!
We got a few inquiries from folks who lived a little too far away to attend and they asked about a webcast or another location. Please leave a comment if you or someone you know would like to attend one of these, either real or virtual. We just spent an hour and a half putting WSS through its paces and showing what it does out of the box.
Kate
 Thursday, 25 May 2006
I came across a page full of pictures that play with perspective and scale:

The artist's page gives you thumbnails that don't always show the cool part of the picture. This fan page has a whole pile of them all one after another to get you started seeing how they work. There are more at the artist's page though, plus instructions on how you can buy prints, so even if you start at the fan page, you should end up at the artist's page. According to Wikipedia and another article I found recently, he's a Canadian who illustrates children's books and wins awards for it. That explains all the snow, moonlight, and autumn leaves, I guess .
Kate
 Wednesday, 24 May 2006
While helping a client with the mechanics of localization recently, I came across a very thoughtful blog entry. It goes beyond what properties you set on a form or what method you call to look up a resource, and instead talks about some of the project management aspects of localization. If you have any chance that you'll need alternate language support, you should read this post. He talks to timing (too soon and translators will translate buttons that later go away or have a name change, but don't wait too long because it's hard to estimate how long translating and testing will take), QA, reuse, and context. Excellent things to consider before you start building those satellite assemblies.
Kate
 Tuesday, 23 May 2006
If you don't subscribe to the Flash, you really should. It's an email notification about upcoming events, training, webcasts, case studies, and other information sources. You can personalize it so you only get information you care about, and you'll always be "in the loop" about upcoming opportunities.

Right now, they're running a pair of contests around the Flash:
-
New subscribers to MSDN Flash who sign up before June 28 2006 are entered into a draw for a $16,800 desktop prize package.
-
Existing subscribers (like me) who personalize their subscription before June 28, 2006 could win a $5,000 Microsoft Training Package.
Not bad, eh? Just the other day someone asked me "how do you find all these webcasts and things?" The Flash is how.
Kate
 Monday, 22 May 2006
My parents both originally trained as physicists (one is now a high voltage researcher and inventor of amazingly compact power supplies, the other an world expert in software QA) and so I grew up learning and knowing things most people didn't. I was often surprised that people hadn't heard of certain scientists or their work.
I knew all the experiments on this list, and they are all beautiful and simple (the mathematician still lurking in me always gives points for elegance) and if you are at least a little familiar with them, you will "get" how our world works a little better. Physicis is cool after all: I can say this despite my father's characterization of chemistry and chemical engineering (my degrees are in chemical engineering) as "Stir well" and "Pump well" respectively. Some of them go back hundreds of years (one is thousands of years ago,) and each is illustrated with a little animated gif that really does help you to understand them.
Take a look!
Kate
 Sunday, 21 May 2006
As most of my readers know, there are three kinds of managed-to-native interop available to the C++/CLI programmer using Visual Studio 2005, as there were to the Managed C++ programmer using Visual Studio 2002 or 2003. Those are COM Interop, P/Invoke, and C++ Interop (formerly and more colourfully known as It Just Works Interop.) COM Interop is slow, but if you have a COM component already written, maybe in VB 5 or something, it's just the ticket. P/Invoke is good for C-style DLLs, and popular with people who want to call into the Windows API. C++ Interop is the easiest (say it with me: include the header, link to the lib) and fastest, and it's available only from C++.
So why would a C++ dev, who can just include-the-header-link-to-the-lib, ever use P/Invoke? Because it handles marshalling and translation for you. Take a look at this (reasonably old) post by Kenny Kerr. He includes this function in the post:
[DllImport("Native.dll", PreserveSig=false, CharSet=CharSet::Unicode)] bool BrowseForComputers(IntPtr parentWindow, bool multiSelect, [MarshalAs(UnmanagedType::SafeArray, SafeArraySubType=VarEnum::VT_VARIANT)] array<String^>^% computers);
That would be pretty grody work without P/Invoke. Let the feature help you where it can.
Kate
 Saturday, 20 May 2006
I first saw this idea at http://www.flourish.org/upsidedownmap/:

You can see a whole pile of these "upside down" maps there and learn about some "sideways" ones as well. Of course there's no reason why north has to be at the top all the time (unless you want to use the map to navigate, and even then it's likely you'll rotate the map nine ways to Sunday, the issue is just in which rotation the words are right side up.)
I found a page that sells a variety of maps... I think I want a lot of these ones 
Kate
 Friday, 19 May 2006
I have a number of talks I do about C++/CLI and Visual C++ 2005. The one thing they have in common is that there's never enough time for all the demos. There's one particular demo that is technically in two different talks, but never gets done... it shows how to put a WinForms control onto an MFC dialog, and how to implement MFC message passing (and the new DELEGATE family of macros, that are like the existing command routing macros) to hook a WinForms into an MFC View, complete with menu updating and implementation.
If you are one of the people in those audiences who was a little disappointed you didn't get to see the MFC stuff, here's a new paper that might help you out a bit: Integrate Windows Forms Into Your MFC Applications Through C++ Interop. It's by Marcus Heege, a new C++ MVP. I just have to like a guy who includes a subheading "C++ Interop Is Your Friend" 
Kate
 Thursday, 18 May 2006
You know, I'm all about the interop. Why port an entire application to something new when you can port part of it and interop to the rest? Why inisist one application be ported so it can talk to another if interop could solve the problem instead? While it may be difficult, it's typically the faster and cheaper option. Plus it's just more fun than re-implementing something that already works.
Microsoft Canada is holding an interop seminar on June 8th (actually one in the morning and one in the afternoon) at their Meadowvale offices. The email I got says:
Microsoft recognizes that most customers have diverse IT environments and Microsoft is building software and technologies that allow you to leverage your existing investments in non-Microsoft-based solutions.
The interoperability seminar is focused on discussing strategies for interoperability with diverse technologies including J2EE, Mainframes, Identity, Monitoring, Messaging and Data storage systems.
In this seminar we will:
- Discuss organizational processes for architecture, development, quality assurance and deployment that may be instituted to accommodate varying technologies while maximizing reuse;
- Explain Microsoft’s interoperability strategy, showcase our commitment to interoperability and provide links to resources for more detailed information;
- Discuss real-life strategies, best practices and examples for interoperability between J2EE and .NET-based software.
I can't be there myself (I'll be out of the country) but you probably should! Register for either the morning or the afternoon session.
Kate
 Wednesday, 17 May 2006
At the end of next week, May 26th to be precise, we're going to give a free "What is SharePoint" seminar in Peterborough. We'll be focusing on what it can do "out of the box" and demonstrating how much functionality you get for free. So if you know someone who lives northeast of Toronto (or feels like a Friday afternoon headstart to the cottage) please do pass the details along. It's from 2:30 to 4:00, it doesn't cost anything but we would like you to register, and we'd love to see you (or your friend or client) there.
http://www.gregcons.com/seminar2006.htm for details.
Kate
ps: no C++, I promise 
 Tuesday, 16 May 2006
As you probably know, when you're looking at a document library in Sharepoint, each document name is a link to the document:

If you click the link, the document opens in Word. I do that a lot, or else I right-click the link and Save Target As to put a copy on my own machine. You probably also know that there's a menu hanging off that triangle, and you could edit the document using that menu:

What I didn't realize until today is that these two choices behave differently. Click the link and Word opens the document as Read Only, so that when you click the Save icon in Word or choose File, Save, you get the Save As dialog. You can save it back into the same Sharepoint directory you opened it from, but it's an extra step:

If you use the menu item, it's not read-only and if you save it just saves with no further conversation. Now normally I would NEVER drop down a menu and choose an item from it when I could click a link. But since it turns out there's a difference, I'm going with the menu from now on.
Kate
 Monday, 15 May 2006
Spotted on the Monster Jobs Blog, ten rules for being a happy employee. I think that even though these rules are designed for the benefit and enjoyment of the individual, it would make your employer happy if you followed them. These are a good way to live. My favourite? "You Will Make Mistakes -- It’s How You Handle Them That Matters" . I tell my kids (and staff) something very similar quite often. Anyone can give into temptation, screw up, forget, or make a mistake once in a while. What matters is what you do next. Lying, covering up, blaming, denying, and not learning are the bad things here. A close second: "It Takes More than Talent". The only iffy one? "Keep Business and Romance Separate". But then again, we were already married when we started this business together, so that's not the same as falling for each other at work. I like having all my eggs in one basket. That way I know where they all are 
Kate
 Sunday, 14 May 2006
While at DevTeach, a colleague was struggling with a laptop that was flaky because it was running hot. He had it on an exhibitor's table, which was cloth-covered, and the soft surface was impeding the vents, which were mostly on the bottom. I passed along this tip to him, and I just heard that it worked as well for him as it has for me, so I thought I'd share it more widely.
Take three or four pens, the same size as each other, and lay them parallel on the desk or table like this: I I I I
Then carefully put the laptop down onto the pens. If you only had one it would wobble, if you only had two it would roll around, but three or four are pretty stable. Presto, your cooling is dramatically improved and your laptop stops being quite so flaky. I've even presented like this, for one of those talks with two VPCs that really pushes your CPU hard.
Kate
 Saturday, 13 May 2006
In the June MSDN Magazine, Stan Lippman's Pure C++ column has become Netting C++. Here's the path he's laid out for himself. He's starting with a working console application written entirely in native C++. In this first column he's just going to make it run as a .NET executable with no use of .NET libraries and no exposing his classes to other .NET applications over the runtime. In the next column, he'll show how to wrap the native classes in managed wrappers so they can be called from VB or C#. Stan goes on to say:
Subsequent columns will focus on mapping the native types to types supported by the .NET Common Type System (CTS) and examining the performance characteristics of the application as it transitions. We'll also look at the type information available to the runtime, using the ildasm command to explore the Common Intermediate Language (CIL) into which all .NET-based languages are compiled.
When that's done, we'll explore multithreading, Web services, cross-language interoperability with a C# ASP.NET front, XML support, and integrating with Windows Vista™. So, we have our work cut out for us.
This will be a series to read as it appears.
Kate
 Friday, 12 May 2006
Jerome Carron from Microsoft will be coming to the East of Toronto .NET User Group May 17th to talk about mobile applications:
This session will be an introduction to developing Windows Mobile applications with Visual Studio 2005. The focus of the session will be on Devices and the Mobile platform, getting started with device development (user interfaces and controls), data management (SQL Server Mobile) and Visual Studio tools for Data Management and close out with a look at Windows Mobile 5.
This meeting will be at the Whitby Library. Please register so we're expecting you.
Kate
 Thursday, 11 May 2006
Jean Rene sure knows how to run a conference. In previous years he has bought women's-sized shirts for the women speakers, but this year he even got us a different colour scheme! Here are Julie and I modelling them:

I just love coming here!
Kate
 Wednesday, 10 May 2006
Rory blogged what I was thinking... "SEVEN PILLOWS HOTEL WHY???!!!?!"

And then his pictures prove that the bed he faced and which lit this question in his brain is in fact identical to the bed I faced last night myself. How scary is that? Rory is not at Devteach, is he?
My guess (nay, I'm pretty sure it's my fervent hope) is that he is at another Marriott somewhere else and not in my room here in Montreal taking pictures and blogging.
Kate
In my concurrency talk today I had a total brain freeze and could not remember the last name of the author of the concurrency book I wanted everyone to read. The title is Concurrent Programming in Java: Design Principles and Patterns and the author is Doug Lea. Don't let the word Java in the title fool you: this is a book that explains the concepts of concurrency no matter what language you're going to use in the end.

Kate
 Tuesday, 09 May 2006
The ISO C++ committee is working on the next standard for C++. At their April meeting, a number of items were added to the working draft, which means they will almost certainly end up in the standard -- it's just a matter of final agreement on some of the subtle details of the item, rather than whether it should be there or not. As Herb Sutter reports, the items that were added are:
- TR1, a pile of library changes (as opposed to the language itself) including various new kinds of smart pointers
- declaring variables but letting the compiler deduce their type instead of doing it yourself (auto type deduction).
- delegating constructors
- the > > vs >> subtlety that Brandon referred to in his recent Channel 9 interview. Visual C++ takes care of this already, but now it's being added to the standard.
- extern template
Now why should an ordinary programmer care about the machinations of the standards committee, and something that may or may not get approved this decade? Well for one thing, the compiler vendors don't wait for the standard before they implement the new keyword or the new functionality. And for another, it can give you a hint about what's headed your way. Let me tell you what I mean.
Here are Herb's examples of auto type deduction:
auto x = 3.1415926535; auto i = container.begin();
In this case, x has type double, and i has type map<string,unordered_map<int,tuple<float,string,const int> > >::const_iterator or whatever the right type happens to be, without having to spell it out.
Now in and of itself this is a cool feature, especially for C++ with heavy STL use. Another thing Brandon talked about in his Channel 9 spot was how foreach saves us from having to declare those iterators, set things to begin() and so on, and there's no doubt that figuring out the types is part of that pain. But go beyond that for a moment. I have seen plenty of auto-type deduction examples in C# over the last year or so, and they were all LINQ examples. Does this mean C++ will get getting LINQ too? At least one language barrier to LINQ will be going. Let's see what else happens.
Kate
 Monday, 08 May 2006
I'm guessing that when Channel 9 came by to talk to Martyn Lovell, they got Brandon to agree to be next. His interview has been posted and has some cool quotes in it:
- "I only learned C++ about 4 years ago"
- "Visual C++ is the only language that can get to every API Microsoft ships"
- "C++ is the most widely used language in the world, and it's not going anywhere"
He discusses verifiable code, his favourite new language features, and templates-vs-generics as well. Take a look!
Kate
 Sunday, 07 May 2006
The title of this post comes from a staff member at a client of mine. We were discussing a possible project and the staffer was showing me how they did a particular task. They were using a web app that was going to a lot of trouble not to look like a web app: the users all had a shorctut on their desktop to launch a browser pointed at the site, most of IEs toolbars were suppressed so you didn't think you were even in a browser, and so on.
She performed a search, but before clicking the button she copied her search terms from the textbox, opened a blank Notepad, and pasted them in. "I'll explain that in a minute", she said. Then she clicked the button, and followed the link to the first search hit of twelve or so. On that page she made a small change, or noted down something she saw, something minor anyway. Then she said "Here's the frustrating part." There was no link back to the search results and the IE toolbars were all suppressed. So she used the nav bar links to go back to the home page, from there clicked a link to the search page, pasted in the search terms she had saved, did the search again, followed the second link this time (and the designer didn't like visited and non-visited links being different colours so she had to remember which one she was on) and round and round again.
So I asked "why don't you just use the Back key?" "What Back key?" She was on the second result, and I reached over and pressed Backspace to take her back to the search results. That's when she said "You just saved me an hour a day!" She didn't hug me, but she did something just as good -- ran around the office telling everyone else what she had learned. That particular project didn't fly, but I still do lots of work for that client. And those five people all have an extra hour a day for the rest of time.
What do you know that you're not telling users? Keyboard shortcuts, context menus, alternate ways to do simple tasks... share it!
Kate
 Saturday, 06 May 2006
I have a mentoring client who is doing a fair bit of Sharepoint work. Some of it I just do for them and install on their servers, but I'm working closely with a team of developers who are building up their skills on both development and administration, and putting sites into production for real people to use to do their jobs.
This client is a pretty large firm - a Canadian household name - and so in addition to a large team of developers they have an infrastructure team, the "downstairs guys" who configure and support all their servers. As the number of Sharepoint sites grows, we're having strategy meetings with developers and infrastructure people about how to handle the growth of Sharepoint within the firm.
So at one point in this meeting the infrastructure person says to me "I need some sort of reports, some way to know how big a site is getting. I can look at the size of the SQL database but it's not very accurate. Or when we do the backups I can look at the size of the backup file. But then how can I tell what the issue is -- maybe someone has turned on versioning or something else that eats up disk space." Various people in the room start talking about the Sharepoint object model, about pointing SQL Reporting Services at a Sharepoint data source, and other developer approaches to the problem.
Now earlier in the meeting several of the developers had been telling the infrastructure person that he has to come to grips with Front Page. There are some things that are really hard to do any other way, and really easy to do with Front Page. And as a result I had Front Page open on my laptop and had opened a site (our own Gregcons internal site as a matter of fact) but hadn't done anything in it. So during this conversation about how to know the size of the site, I clicked the Reports button on the bottom Front Page toolbar that shows when you've opened a web:

And what do I see when I click that?

I grinned and spun the laptop around so that the infrastructure person (and his grandboss, who was at the meeting with us) could see it. "You're going to have to learn to love Front Page," I told him. And to the grandboss I said "aren't you glad you have a consultant?"
A lot of times I work really hard and long to bring my clients value. But there are so many times when I can do something in 30 seconds that the client would have spent days doing another way. I love those times.
Kate
 Friday, 05 May 2006
Say you have an application that uses P/Invoke (the DllImport attribute on an external method defined in a native DLL) to access some particular functionality. A lot of the use for this feature is to get to something in the Windows API that isn't exposed by the .NET Framework. But there are also folks using P/Invoke to call their own code from their own DLLs. The question then arises: where should you keep that DLL you're using (oh, please, not System32, anywhere but System32 -- years ago a buddy said "the registry is a giant and complicated database that tells you all your COM objects and DLLs are in System32") and how is it going to get deployed from your computer to wherever you install it?
If you try to add a random file to your manifest on the Publish tab of a Visual Studio 2005 Winforms project, you will discover there really isn't a way to do it. The file has to be in the project. You can add things to your manifest with MaGeUI (Manifest Generator with a User Interface, so named because MaGe is entirely command-line) which you can run from a Visual Studio command prompt, but most of us want to manage our manifests with Visual Studio. Heck, you could edit your manifest with Notepad -- it's only XML -- but that's not what I'd call the popular choice.
You could add the DLL to your project, but if it's under development, you're going to have to hand-update your copy when it changes, or your tests won't be accurate. And for a lot of folks, adding it to the project is going to mean adding it to source control, and binaries in source control does not sit well with me. Here's a better way.
Start as though you were going to add the DLL to the project. Right-click the project in solution explorer, Add, Add Existing Item, browse to where the DLL is, change the file type to All Files or Executables, click the file name - but don't click the Add button. It's a compound button, so click the little Arrow next to Add and choose Add As Link.

You should see your file added to Solution Explorer with a sort of shortcut symbol:

Click once on the DLL then bring up the properties for the file. Make sure Build Action is set to Content and Copy To Output Directory is set to Copy If Newer. (If the DLL is on the network, and you're working offline, on a plane or something, and you've built once so you have a copy already, you can flip this setting back to Do Not Copy so your builds don't fail.)
A word about "where the DLL is". If you develop alone, this can be some sort of c:\working\clientname\projectname idea, but for a team, that's not going to work. This path is going into your project file and you'll check it in to source control and the rest of the team will be using it. Unless you all have the same folder structure, you're going to want to use a UNC name. It's probably best to point it at a share where you publish the DLL after you build it.
Having added the file to the project, you can now make it part of what you publish. Click Application Files on the Publish tab and you should see it there. You might need to check the Show All Files box, but I didn't:

This isn't available in every kind of project -- I can't do it in a C++ WinForms app, for example -- and it doesn't really work for an ASP.NET app where there is no project file, just the folder. I think for those a pre- or post build step to copy the DLL from where you build it or from the share where it is published for all developers to use would be the way to go.
Kate
 Tuesday, 02 May 2006
I installed Vista build 5365 last week. This was just a short time after putting 5308 on bare metal instead of a VPC. And now instead of just "checking it out" and "looking around" I was actually using the OS to do work, specifically writing code. (I was doing Word and Powerpoint work on my other laptop which is still on XP.) There's an interesting emotional thing that happens when you get out of the VPC and onto the metal, and especially when you stop demoing and start doing.
There are some things here I am just loving, somewhat to my surprise.

How long have I been annoyed by having to retype the extension when i rename a file? A decade at least. This is a tiny thing but ooo-weee I like it.
The easiest way to tell what I love is when I try to do it on my other machine and feel a momentary irritation when I can't:

This is a Windows Explorer and the address bar is all buttony and live. So I don't have to click up three times, wait while lists of things I don't care about update, and then drill back to where I want. I keep trying to do this on XP, I have it completely internalized already.

Like Scott Hanselman, I have a LOT in my Start menu. I like this in-place effect a WHOLE lot better than the cascading-off-to-the-side-forever approach.
One thing I was hating: where is Start, Run? I can't live without Start, Run! Turns out Windows-R still works. So does right-clicking on Computer and choosing Manage to get all the MMC stuff you need to admin your box.
Speaking of adminning your box, the User Account Control takes a bit of getting used to. More than once I have had to close Visual Studio and re-open it as admin so the COM component can get registered as part of the build process. But I am developing some habits there and expect to internalize those quickly too. I have a feeling we will all be on Vista sooner rather than later.
Kate
ps: don't draw conclusions about visuals from these shots, I don't have Glass on the laptop (it's an old one) and I don't have anything for screenshots other than Shift-PrtScr then paste into Word. It's nicer in person, really.
 Monday, 01 May 2006
Martyn Lovell, who heads the libraries team, has an interview on Channel 9 that was posted Friday. Normally when you think "libraries" in the context of C++ you think ATL and MFC. But most of what Martyn is talking about here is the C RunTime library -- strcopy, printf and so on. He gives a coherent explanation of what the safer CRT work is about. I've written about this before, and have been helping mentoring clients fix their warnings for over a year, and still I learned a few things from this video about how to explain this initiative. Martyn's devotion to the language and the community is inspiring.
And yes, Martyn is hiring again. You can use the description and instructions from my previous post if you'd like to work on MFC. Over 7000 new APIs in Vista means there's lots of MFC work to be done!
Kate
 Friday, 28 April 2006
Last night we had a community get together on the last day of VSLive. Billy Hollis, Steve Lasker, and Josh Holmes were there from out of town, and the Toronto .NET Glitterati (Rob Windsor, Graham Marko, Chris Dufour, Jean Luc David, Dave Totzke, Barry Gervin, Eli Robillard, and many others) as well. It seems that no-one had a camera along, so you'll have to take my word for it .
I got a chance to talk to Jerome Carron, who like me is speaking as part of the realDEVELOPMENT_06 tour in late May and early June. We will be seeing a lot of each other since we are also both going to be at DevTeach. If you haven't registered for either of these events, you really should.
I've been quiet lately because I've been preparing my slides for DevTeach and TechEd, and working on some material for a Vista Ascend that premieres in May. I also put a new Sharepoint site into production at a client -- and if you've ever had the delight of promoting a gaggle of web parts, aspx pages, and special versions of selected magical XML files all up to a production server from a staging server, then you know why I haven't had time to blog. But it works now, and the clients are all happy. Me? It's a good thing I know how to sleep on a plane.
Kate
 Thursday, 27 April 2006
The other day, my car overheated -- pegged the temperature gauge -- after about 5 minutes of driving. I limped it home and discovered it was out of engine coolant. After I added more I could drive for a few minutes but again it violently overheated and all the coolant was gone. With visions of expensive repairs dancing in my head I took it to my neighbourhood mechanic.
It turned out to be a cheaper repair than I expected, but a more frustrating one. You see, the minivan I was driving has a separate heating system for the back seats. Their own controls, vents, everything. We actually use this perhaps once a year, it's a low-value frill. But here's how it works: they pipe the engine coolant halfway back the car so it can go through a heat exchanger and warm up the air in the back. And of course it makes cars easier to build if all the pipes and wires are underneath the car. Over the years, kicked up stones and gravel weakened this coolant pipe until it finally broke, spewing precious engine coolant all over the road. I could have easily lost the engine or been stranded hundreds of miles from home. And for what? A separate heating system in the back? Who cares?
What could they have done instead? They could have piped the hot air instead of the hot coolant, so a leak would only make the back seat cold instead of ruining the car. (I know, from my former life as a chemical engineer, how much easier and cheaper it is to move liquid than air.) They could have installed a sensor that would detect low coolant levels directly, instead of indirectly when the car overheats. They could have run the piping in some protective shroud. (Ha! This is the company that blames me when the wiper motor breaks because the car gets snow and ice on the windshield! Three times so far on this van.) They could have skipped the whole feature on the grounds it made the car way too vulnerable for the benefit it offered.
I see a moral in this story for software developers. What features are you writing that turn out to be a heating system for the back of the van?
Kate
 Friday, 21 April 2006
I've just updated the mentoring and consulting pages on our website. The mentoring offering is where I get most of my fun, so we've decided to emphasize it a little more. I even found out how to put flare on my blog. Tell your friends 
Kate
 Thursday, 20 April 2006
I just spent a TON of time fighting an XSLT stylesheet. This is a long established system that needed a tiny change -- the customer wanted the little R-in-a-circle symbol after one of their trademarks. No problem, right? Go on into the XSLT and put ® in the appropriate place. Not an entity known to XSLT. Right, I remember that. But heh heh you can't stop me: ® should do it. Test in XML Spy and there's the symbol. Generate and upload all the pages and -- yikes! -- everything says ? where it should say ®! I don't think my clients want the header on every web page to say REALTOR? -- a little certainty is wanted here. That's because XSLT is putting the actual symbol into the HTML -- if you do a View Source on the web page there's no entity, there's the actual symbol and some browsers can show it and some can't. OK, let's try &reg; or &#0174; -- they come out looking just like that on the screen. Bleah. More Googling. Suggestions to define DOCTYPES and ENTITYs that all manage to stick the symbol into the HTML but not the entity. A brief attempt at some circular definitions of reg to reg, some desparate CDATA flailing -- and then we got it:
Literal text in the middle of the XSL stylesheet:
REALTOR<xsl:text disable-output-escaping="yes">&</xsl:text>reg;
We have a winner. I get ® in the HTML and my client gets their trademark.

Kate
 Thursday, 23 March 2006
It looks like I never added an entry about speaking at Devteach. I just made my travel plans to get there. I love taking the train to Montreal -- I'll end up within walking distance of the conference hotel, save time compared to flying, and travel in comfort the whole way.
Devteach is a delightful conference with a friendly atmosphere. I count 8 RDs among the speakers list, plus a whole pile of MVPs, Julie, and some of my favourite Microsoft people... DEs mostly. There is one track in French and the rest of the talks (about a hundred) are all in English.
My talks are:
- Moving C++ applications to the CLR
- The Future is Concurrent
There's plenty for everyone: web, smart client, data, security, patterns and practices, testing, Team Systems, architecture -- if it's a development topic, someone is speaking on it. On top of that the conference hosts the Canadian User Group Leader Summit (and gives user group members a discount on attendance - contact your user group leader for a code) and the Canadian Regional Director Summit. It's a great place to meet the stars of the Canadian developer community, and a number of folks from the American northeast who love to come up to Montreal. See you there!
Kate
 Wednesday, 22 March 2006
Microsoft Canada is holding a five-city Web Development and Security tour with the theme of "real development". I'll be speaking in Toronto and Montreal along with Developer Evangelists Jerome Carron, Dan Sellers, and John Bristowe, and fellow Canadian Regional Directors Scott Howlett and Richard Campbell. To quote the blurb:
realDEVELOPMENT_06 is your opportunity to see the very latest technologies, trends, and techniques in web development. The day will be divided into two halves.
In the morning, the WEB PLATFORM SESSIONS will give you the chance to explore Web development technologies such as AJAX, RSS, Javascript and Gadgets.
In the afternoon, our SECURITY ON THE BRAIN SESSIONS will focus on how to address common security issues, and help build more secure Web applications though enhanced development techniques.
It's an all day (9-5) event:
Ottawa, May 30th
Toronto, June 1st
Montreal, June 6th
Vancouver, June 8th
Calgary, June 13th
As well, RDs and MVPs will be on hand for ask the experts / cabana / mashups -- you know, people milling around asking questions and having conversations -- often the best part of these events!
Register while you still can!

Kate
 Tuesday, 21 March 2006
Once again I am honoured to be speaking at Tech Ed USA. Details to follow -- it will be a C++ topic. See you all there!
Kate
 Wednesday, 15 March 2006
No, not for 2005 Some quotes from the announcement:
Visual Studio .NET 2003 shipped in July of 2003. This upcoming Service Pack will serve to roll up selected fixes that were issued after that release and before Whidbey. We have also included some triaged critical fixes and fixes included in VS .NET 2002 SP1. We anticipate that Customers will gain additional environment stability through the inclusion of these roll ups and the select set of critical fixes. We hope that VS 2002 customers may see this Service Pack as an additional stabilizing factor and proceed with plans migrating to the VS 2003.
...
Release Schedule: (these are estimated dates) Beta Release 3/24/2006 RTM 6/1/2006 We encourage all interested parties to sign up to participate in the Beta. You will have the opportunity to use our pre-release product and notify us of any bugs you may discover. You may apply for the Beta by going to http://connect.microsoft.com and signing up under "Available Programs".
...
Visual Studio .NET 2003 SP1 will provide the following fixes:
1. Hotfix and other critical update roll up 2. Released security patches/issues and other identified security fixes that satisfy triage criteria. 3. The top 50% Watson issues across the entire product. 4. Customer driven bugs – Bugs will come from 2 sources, Watson data analyzed by the product teams and PSS.
Don't you love that sentence from the first paragraph? "We hope that VS 2002 customers may see this Service Pack as an additional stabilizing factor and proceed with plans migrating to the VS 2003." That's no typo. Enterprise clients are really slow to move to the new bits. Just last week in a customer meeting at an enterprise client of mine, I asked if a new Windows app was to be built with VS 2003 or 2005. Without a moment's hesitation my contact replied "there's no service pack for 2005 yet, we won't even consider using it." [I didn't dare tell him there wasn't a service pack for 2003 at that time luckily we are now covered if he asks about it.]
Kate
© Copyright 2025 Kate Gregory
Theme design by Bryan Bell
newtelligence dasBlog 2.3.9074.18820  | Page rendered at Thursday, 11 September 2025 13:18:14 (Eastern Daylight Time, UTC-04:00)
|
On this page....
| Sun | Mon | Tue | Wed | Thu | Fri | Sat |
---|
31 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
Pluralsight Free Trial
Search
Navigation
Categories
Blogroll
Sign In
|