PPL and TPL sessions on channel9

Fri, September 24, 2010, 12:21 AM under ParallelComputing

Back in June there was an internal conference in Redmond ("Engineering Forum") aimed at Microsoft engineers, and delivered by Microsoft engineers. I was asked to put together a track on Multi-Core development, so I picked 6 parallelism experts and we created 6 awesome sessions (we won the top spot in the Top 10 :-)). Two of the speakers kept the content fairly external-friendly, so we received permission to publish their recordings publicly.

Enjoy (best to download the High Quality WMV):

  1. Don McCrady - Parallelism in C++ Using the Concurrency Runtime
  2. Stephen Toub - Implementing Parallel Patterns using .NET 4

To get notified on future videos on parallelism (or to browse the archive) stay tuned on this channel9 parallel computing feed.

Technical Computing Launch

Mon, September 20, 2010, 08:22 AM under Links

I've mentioned before our Technical Computing group and today it takes the next step with the launch of Windows HPC Server 2008 R2.

Get the official word and read all about it at Soma's blog post, the Microsoft blog, and on the Microsoft news center. To watch the keynote plus more don't forget to visit the dedicated HPC launch site.

Heading to GTC 2010

Sat, September 18, 2010, 02:34 PM under Events

Next week the GPU Technology Conference (GTC) 2010 takes place in San Jose, CA and I am lucky enough to be attending the entire week.

It has been an extremely long time (in fact, I can't remember the last time) where I am registered as an attendee at a conference (full pass/access) without being a speaker *and* without having any booth duty! Having said that, we (our team at Microsoft) will be running GPU debugging UX studies throughout the entire week (similar to what I had previously advertised). If you are attending GTC 2010 and you are interested, look for the related flyer in your conference bag.

The conference is an excellent opportunity to connect in-person with various individuals that I have only met virtually. From an educational perspective there is a very long and interesting session list, with multiple concurrent slots, making it very hard to choose between them, but I have managed to create my (packed) schedule. I am most looking forward to sessions on the programming languages and tools, both from Microsoft and MS partners.

For full conference details, visit the GTC 2010 official page.

Windows Phone 7 developer resources

Thu, September 16, 2010, 11:36 AM under MobileAndEmbedded

Developers of Windows Mobile 6.x (and indeed Windows CE) applications still use the rich .NET Compact Framework 3.5 with Visual Studio 2008 for development. That is still a great platform and the Mobile Development Handbook is still a useful resource (if I may say so myself :-).

The release of Windows Phone 7, changes the programming paradigm. The programming model has NETCF in its guts, but the developer uses the Silverlight or XNA APIs (and they can call from one into the other). I thought I'd gather here (for your reference and mine) the top 10 resources for getting started.

  1. Windows Phone Developer Home - get the official word and latest announcements.
  2. Windows Phone Developer Tools RTW - download the free developer tools (on my machine the installation took 30 minutes, over my existing vanilla Visual Studio 2010 install).
  3. Windows Phone 7 Jump Start video training - watch the 12 sessions by Wigley/Miles.
  4. Windows Phone 7 Developer Training Kit - work through the labs.
  5. Windows Phone RSS tag - channel9 has tons more WP7 videos, stay tuned.
  6. Windows Phone 7 in 7 Minutes - watch 20 7-minute videos.
  7. Programming Windows Phone 7 - read 11 free chapters from Petzold's eBook.
  8. The Windows Phone Developer Blog - subscribe to the official blog.
  9. Getting Started with Windows Phone Development - explore all links from the MSDN Library root page.           
  10. Silverlight for Windows Phone – another root MSDN library page.

If after all that you get your hands dirty and still can't find the answer ask questions at the WP7 development MSDN Forum.


On a personal note, I was pleased to see that the Parallel Stacks debugger window works fine with the WP7 project ;-)

Parallel Stacks and WP7

IE9 Beta

Wed, September 15, 2010, 10:59 PM under Random

I've been using Internet Explorer 8 since the early pre-release bits, but I never tried IE9 until today – the day the Beta is available. I downloaded it from here: http://www.beautyoftheweb.com/

The download took longer than what I expected, but I was doing other stuff, so no bother. After coming down, it asked me to reboot my computer. Really hate when apps do that, but I did it anyway.

The first time I launched it, it prompted me with a list of add-ons I should disable including the start-up time that I could save fore each one. It even let me configure the prompt so, for example, it won't prompt me again unless an add-on contributes to more than 1 second of the startup time. Cool.

First thing I noticed is that the search bar had gone and, as you'd expect, you have to search from the address box. I totally despise this feature. The first thing I've been doing with all versions of IE is to turn off the automatic searching from the address bar and now I have no way of searching if I do that. Ridiculous.

The second thing I notice is that the tabs are next to the address bar and cannot be moved to go below it. One word for that decision: appalling (and, no, I didn't accidentally drop an 'e' and added an 'l' in the previous word).

The third thing I notice to the right is the favorites button (star icon) and when I click on it, it brings up the favorites explorer under it on the right; then I pin the explorer and it jumps to the left(!). Why move the entry point to this feature to the right instead of leaving it on the left is beyond me (other than wanting to retrain me on what I've been used to for all this time), but the fact that pinning it makes it jump sides is… an "astonishing" design decision.

As I browse I notice a little annoying pop up in the bottom left every time I hover over a link; there is no status bar. I correctly guessed to right click at the top and turn on the status bar (which also got rid of the popup thereafter) and while I am at it, I bring back my favorites bar which was hidden by default (and am pleased to see that all my favorites are still there).

The next thing I notice, I like: IE9 is fast. No joke, I visit sites and they seem to be loading visibly much faster – try it!

Beyond the speed, I am interested to find out what else is new. I searched and found a few good links:

If you are a developer, check out IE's msdn home for many articles, e.g. this section on Canvas and SVG.

Either way: wherever you are, get IE9 Beta now and judge for yourself. If you don't like it, you can always uninstall (which auto-restores the previous version).

X technology is dead

Wed, September 15, 2010, 03:10 AM under Silverlight

Every so often, technology pundits (i.e. people not involved in the game, but who like commenting about it) throw out big controversial statements (typically to increase their readership), with a common one being that "Technology/platform X is dead".

My former colleague (who I guess is now my distant colleague) uses the same trick with his blog post: "iPhone 4 is dead". But, his motivation is to set the record straight (and I believe him) by sharing his opinion on recent commentary around Silverlight, WPF etc. I enjoyed his post and the comments, so I hope you do too :-)

Processing Email in Outlook

Mon, September 6, 2010, 11:59 PM under Communication

A. Why

imageGoal 1 = Help others: Have at most a 24-hour response turnaround to internal (from colleague) emails, typically achieving same day response.

Goal 2 = Help projects: Not to implicitly pass/miss an opportunity to have impact on electronic discussions around any project on the radar.

Not achieving goals 1 & 2 = Colleagues stop relying on you, drop you off conversations, don't see you as a contributing resource or someone that cares, you are perceived as someone with no peripheral vision. Note this is perfect if all you are doing is cruising at your job, trying to fly under the radar, with no ambitions of having impact beyond your absolute minimum 'day job'.

B. DON'T: Leave unread email lurking around

  1. Don't: Receive or process all incoming emails in a single folder ('inbox' or 'unread mail').
    • This is actually possible if you receive a small number of emails (e.g. new to the job, not working at a company like Microsoft). Even so, with (your future) success at any level (company, community) comes large incoming email, so learn to deal with it.
    • With large volumes, it is best to let the system help you by doing some categorization and filtering on your behalf (instead of trying to do that in your head as you process the single folder). See later section on how to achieve this.
  2. Don't: Leave emails as 'unread' (or worse: read them, then mark them as unread).
    • Often done by individuals who think they possess super powers ("I can mentally cache and distinguish between the emails I chose not to read, the ones that are actually new, and the ones I decided to revisit in the future; the fact that they all show up the same (bold = unread) does not confuse me"). Interactions with this super-powered individuals typically end up with them saying stuff like "I must have missed that email you are talking about (from 2 weeks ago)" or "I am a bit behind, so I haven't read your email, can you remind me".
    • TIP: The only place where you are "allowed" unread email is in your Deleted Items folder.
  3. Don't: Interpret a read email as an email that has been processed.
    • Doing that, means you will always end up with fake unread email (that you have actually read, but haven't dealt with completely so you then marked it as unread) lurking between actual unread email.
    • Another side effect is reading the email and making a 'mental' note to action it, then leaving the email as read, so the only thing left to remind you to carry out the action is… you. You are not super human, you will forget.
    • This is a key distinction.
      • Reading (or even scanning) a new email, means you now know what needs to be done with it, in order for it to be truly considered processed. Truly processing an email is to, for example, write an email of your own (e.g. to reply or forward), or take a non-email related action (e.g. create calendar entry, do something on some website), or read it carefully to gain some knowledge (e.g. it had a spec as an attachment), or keep it around as reference etc. 'Reading' means that you know what to do, not that you have done it. An email that is read is an email that is triaged, not an email that is resolved.
      • Sometimes the thing that needs to be done based on receiving the email, you can (and want) to do immediately after reading the email. That is fine, you read the email and you processed it (typically when it takes no longer than X minutes, where X is your personal tolerance – mine is roughly 2 minutes). Other times, you decide that you don't want to spend X minutes at that moment, so after reading the email you need a quick system for "marking" the email as to be processed later (and you still leave it as 'read' in outlook). See later section for how.

C. DO: Use Outlook rules and have multiple folders where incoming email is automatically moved to

Outlook email rules are very powerful and easy to configure.


Use them to automatically file email into folders. Here are mine (note that if a rule catches an email message then no further rules get processed):

  1. "personal"
    • Email is either personal or business related. Almost all personal email goes to my gmail account. The personal emails that end up on my work email account, go to a dedicated folder – that is achieved via a rule that looks at the email's 'From' field. For those that slip through, I use the new Outlook 2010  quick step of "Conversation To Folder" feature to let the slippage only occur once per conversation, and then update my rules.
  2. "External" and "ViaBlog"
    • The remaining external emails either come from my blog (rule on the subject line) or are unsolicited (rule on the domain name not being microsoft) and they are filed accordingly.
  3. "invites"
    • I may do a separate blog post on calendar management, but suffice to say it should be kept up to date. All invite requests end up in this folder, so that even if mail gets out of control, the calendar can stay under control (only 1 folder to check). I.e. so I can let the organizer know why I won't be attending their meeting (or that I will be). Note: This folder is the only one that shows the total number of items in it, instead of the total unread.
  4. "Inbox"
    • The only email that ends up here is email sent TO me and me only. Note that this is also the only email that shows up above the systray icon in the notification toast – all other emails cannot interrupt.
  5. "ToMe++"
    • Email where I am on the TO line, but there are other recipients as well (on the TO or CC line).
  6. "CC"
    • Email where I am on the CC line. I need to read these, but nobody is expecting a response or action from me so they are not as urgent (and if they are and follow up with me, they'll receive a link to this).
  7. "@ XYZ"
    • Emails to aliases that are about projects that I directly work on (and I wasn't on the TO or CC line, of course). Test: these projects are in my commitments that I get measured on at the end of the year.
  8. "Z Mass" and subfolders under it per distribution list (DL)
    • Emails to aliases that are about topics that I am interested in, but not that I formally own/contribute to. Test: if I unsubscribed from these aliases, nobody could rightfully complain.
  9. "Admin" folder, which resides under "Z Mass" folder
    • Emails to aliases that I was added typically by an admin, e.g. broad emails to the floor/group/org/building/division/company that I am a member of.
  10. "BCC" folder, which resides under "Z Mass"
    • Emails where I was not on the TO or the CC line explicitly and the alias it was sent to is not one I explicitly subscribed to (or I have been added to the BCC line, which I briefly touched on in another post).

When there are only a few quick minutes to catch up on email, read as much as possible from these folders, in this order: Invites, Inbox, ToMe++. Only when these folders are all read (remember that doesn't mean that each email in them has been fully dealt with), we can move on to the @XYZ and then the CC folders. Only when those are read we can go on to the remaining folders.

Note that the typical flow in the "Z Mass" subfolders is to scan subject lines and use the new Ctrl+Delete Outlook 2010 feature to ignore conversations.

D. DO: Use Outlook Search folders in combination with categories

As you process each folder, when you open a new email (i.e. click on it and read it in the preview pane) the email becomes read and stays read and you have to decide whether:

  • It can take 2 minutes to deal with for good, right now, or
  • It will take longer than 2 minutes, so it needs to be postponed with a clear next step, which is one of
    1. ToReply – there may be intermediate action steps, but ultimately someone else needs to receive email about this
    2. Action – no email is required, but I need to do something
    3. ReadLater – no email is required from the quick scan, but this is too long to fully read now, so it needs to be read it later
    4. WaitingFor – the email is informing of an intermediate status and 'promising' a future email update. Need to track.
    5. SomedayMaybe – interesting but not important, non-urgent, non-time-bound information. I may want to spend part of one of my weekends reading it.

For all these 'next steps' use Outlook categories (right click on the email and assign category, or use shortcut key). Note that I also use category 'WaitingFor' for email that I send where I am expecting a response and need to track it.

Create a new search folder for each category (I dragged the search folders into my favorites at the top left of Outlook, above my inboxes). So after the activity of reading/triaging email in the normal folders (where the email arrived) is done, the result is a bunch of emails appearing in the search folders (configure them to show the total items, not the total unread items).

To actually process email (that takes more than 2 minutes to deal with) process the search folders, starting with ToReply and Action.

E. DO: Get into a Routine

Now you have a system in place, get into a routine of using it. Here is how I personally use mine, but this part I keep tweaking:

  1. Spend short bursts of time (between meetings, during boring but mandatory meetings and, in general, 2-4 times a day) aiming to have no unread emails (and in the process deal with some emails that take less than 2 minutes).
  2. Spend around 30 minutes at the end of each day processing most urgent items in search folders.
  3. Spend as long as it takes each Friday (or even the weekend) ensuring there is no unnecessary email baggage carried forward to the following week.

F. Other resources