# 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)  #