# Saturday, 27 September 2008

Tim Stall wrote an interesting post about test harness code that exposes your possible multithreading bugs, and the performance costs of preventing those bugs with the C# lock keyword. And he linked to quite an old article by Mike Stall (don't ask me if there's a connection between the two, I've never met either of them) that I really liked. It buckets threading bugs according to how difficult they are to reproduce, understand, and fix. My favourite entry in the list is the last one:

10) Stuff that's provably unsolvable, but for which customers demand a solution anyways.

Been there, done that, alas no Tshirt.


Saturday, 27 September 2008 09:21:37 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Friday, 26 September 2008

The PDC site is full of announcements (and there will be more in the days to come, based on some emails I've received) so there are even more reasons to attend than before. The number one reason to come to PDC is to LEARN. Well some topics just don't fit into 75 minutes, and attending 3 different 75 minutes sessions by 3 different speakers who may or may not have co-ordinated their coverage is a strategy that might work if you're lucky, but might not work either. Enter the PDC Symposia - co-ordinated coverage of the two MUST LEARN topics this year - concurrency and cloud computing. Don't worry, you don't pay any extra or anything, just choose to attend these sessions on the last day.

The second reason to go to the PDC is to GET THE BITS. PDC has always been the place to get the fresh-out-of-source-control latest build of something that won't see beta for a long time yet. It's already been announced that those bits will include Windows 7 and will come on an external drive, not a big stack of DVDs. Cool!

The third reason to go to the PDC is to MEET PEOPLE. An utterly astonishing array of executives and wonder-brains are giving the keynotes. As well, the speakers are essentially all internal Microsoft people who've been working to create the technologies they're showing you. And the attendees are a cross section of developers and architects who really care about staying ahead of the curve and learning what's coming before it comes. A single lunch with any of these folks could change your life, or at least your job.

Register while you can! And if you see me there, say hi!


Friday, 26 September 2008 09:13:49 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Thursday, 25 September 2008

Steve, a former C++ guy and current PCP guy, tells stories very well... just three of the reasons I like him. He blogs very infrequently, but when he has an update it's worth reading. This one is funny and informative. Plus, it features links to videos of presentations about the Parallel Computing Initiative. I've linked in the past to videos in English that are hosted on a page in French, so I know you can all handle it. Consider it Canadian Content even though the videos are from Paris. Go, read, watch, you'll enjoy it.


Thursday, 25 September 2008 08:47:15 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Wednesday, 24 September 2008

Billy is one of my heroes. He knows how to solve problem with software and he knows how to speak his mind. Here he is talking about WPF and Silverlight - shiny new ways of making applications, that work best in the hands of someone who's been making applications a long time and knows a thing or two about users and user interfaces. If you missed him on DNR TV, here's that episode. This one lets you see what he's talking about - highly recommended.


Wednesday, 24 September 2008 12:54:45 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Tuesday, 23 September 2008

I love reading Internet histories. Some say it's because I was around for most of it :-) but not so! The Internet was 20 years old when I started using it almost 20 years ago. Here's a nice summary that starts with the idea of packet switching and goes through iTunes, PayPal, MySpace and YouTube. It's a good read.


Tuesday, 23 September 2008 12:11:50 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 22 September 2008

FreeRice is a strange little game that asks you what words mean. Does rejuvenate mean bewilder, pierce, evade, or restore? As you play, it assigns you a score, the higher the better, and also tracks the number of grains of rice that will be donated to the United Nations' World Food Program.

If you get a question right, you are asked harder and harder questions. The first time I tried this, I got the first 25 words in a row correct and then missed flagitious. I noodled around for a while and my score was around 49. They say over 48 is rare. Months later, with some time to kill online, I tried it again and my score topped out around 53. Wow.

They say "FreeRice has generated enough rice to feed more than two million people since it started in October 2007" although I guess that means two million people one meal each, it's still pretty impressive. And they've added subjects like Math and Chemical Symbols, though I haven't tried those. Give it a whirl, it's fun!


Monday, 22 September 2008 09:24:02 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Sunday, 21 September 2008

One of the most mind-clearing features of C++, C#, VB, and their ilk are exceptions. Rather than constantly checking a cascading series of return values, looking for false, -1, null, and whatever other error-signalling values you made up on the day you were writing the code, you can write relatively clean and neat code knowing that catastrophic errors (we have no more memory, the file you just chose from a list no longer exists, apparently I'm not allowed to write to the hard drive at all) will be handled. In C++, the "unwinding the stack" aspect of exceptions, with the memory cleanup and destructor-calling done for you, is a big part of writing clean code that is also memory-leak-free.

But have you ever thought about what happens to half-constructed things when an exception goes off? That is, when the constructor throws an exception before its work is done? I have had people tell me "oh simple, never throw an exception in a constructor." Wrong! A major motivation for the existence of exceptions is the existence of methods (like constructors) that don't have a return value to check. The rule you're half-remembering is "never throw an exception in a destructor" and the reason for that is to prevent weirdness when an exception triggers an unwinding and some destructors and then one of them throws another exception.

So what does happen to a half constructed object when an exception is thrown in the constructor? Who better to ask than Herb Sutter? He shows how C++, C#, and Java all answer this question... and his commenters toss in some other languages too.


Sunday, 21 September 2008 08:17:44 (Eastern Daylight Time, UTC-04:00)  #    Comments [2]
# Saturday, 20 September 2008

Others have noticed this (Alexey Govorin, for example) but I tend to forget about it until just before I'm going into a meeting and feel that an export of work items would be helpful. I have some queries set up in VSTS that include the bug description. Here's how they look in Visual Studio.

Description is quite a long field, and when I open the query in Excel (didn't know you could do that? Right click the query in the Team Explorer pane) I see this:

Some, but not all, of the Descriptions are coming up all ####. Now this is what Excel does when something is too long for the column width. So it makes sense to look at things like widening the column, turning on Wrap Text, and the like. But the quickest thing that works for me is this: select the column. On the ribbon, drop down the formatting choice and choose Number. Not Text, which is what I would expect, but Number. Presto - I see all my Description entries.

Why does this work? I have no idea. But I hope this helps someone else.


Saturday, 20 September 2008 08:02:17 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]