# Saturday, 08 July 2017

I spent much of the spring working on this course, and am delighted to see it live!

Visual Studio 2017: Essentials to the Power User is 7 hours of good stuff you need if you're a Visual Studio user. My emphasis is on keeping you happy and productive by getting the tool to help you and showing you neat features you probably didn't know about. If you open that link in a new tab, you can play the course overview (a 2 minute "trailer") and look at the table of contents. I've done versions of this course for older Visual Studios and I get comments like "It's as though I have a whole new IDE" and "I've been using Visual Studio for years and you showed me things I didn't know, and I'm glad I do now."

I think debugging in general is not taught enough, so I'm happy to have 2 whole modules on it here - not on philosophy of debugging or how to narrow down a bug, but just on how to operate the machinery of Visual Studio's debugger. There's lots of it. Plus, if you have Ultimate, there's another half a module on "Historical Debugging", IntelliTrace. I also spend quite a lot of time on how to find your way around a large codebase with the various searching, finding, navigating and exploring capabilities that have evolved over time.

Here's a quick topic summary:

I really enjoyed writing this course and hope you enjoy watching it. If you need a free trial, look over to the right on this page for the grey rectangle that says Author and click for a 10 day trial.

Kate

Saturday, 08 July 2017 10:40:45 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Wednesday, 02 October 2013

In yesterday's session, I showed a Windows 8 store app that loads an image and then draws an animated ripple over it.

If you would like to get the code, and more importantly the documentation that explains the code, it's on Codeplex. Mixing and matching a little DirectX into your Windows 8 C++/CX app is remarkably easy, so why not take a quick look?

Kate

Wednesday, 02 October 2013 02:45:36 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Tuesday, 01 October 2013

Were you at my session today?

If so, you might want this code. If not, I am not sure the code will help you much :-)

Kate

Demo1.zip (1.37 MB)
Tuesday, 01 October 2013 11:01:53 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Sunday, 27 January 2013

I write a lot in Microsoft Word. A Lot. And much of it is for my own purposes - say a list of things I need to keep track of, or a summary of my meeting notes. I use the Ctrl-F command to bring up the navigation pane, and I click the leftmost tab on that pane to show an outline view instead of the Find dialog:

Right away you can see something useful going on here. The Four section is highlighted yellowy-orange because that's where the cursor is. If I add sub-sections, the outline gets even more useful:

I guess you knew that you could click a heading in that navigation view and the cursor would scroll there. That's mostly what I use it for. But there are some documents that I have in a two column view, so that I can fit more short lines onto a page. (It's a perfect approach for lists that are slightly more complicated than a to-do list, for example.) This two column layout makes it really hard to select one section with the mouse and move it around, especially if it's a section that crosses the column break.

Or imagine a really long document where each of these sections is about 20 pages long, and you want to move "Possible Risks" before "Motivations for the Schedule". You could click at one place, page down a lot, and shift click, but it's awkward. I just learned I can drag and drop sections in the navigation pane! That's right, click on the Two in the nav pane, drag it a little and watch for the black horizontal line:

When you let go, the section has moved (and the whole section is selected):

This saves me so much time and frustration, I just had to share it. Maybe your client apps can offer some truly delightful drag and drop too?

Kate

Sunday, 27 January 2013 18:05:23 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Friday, 04 January 2013

Over the last few weeks, I've been accumulating links to appearances of mine, and it seems like a good idea to share these.

  • OReilly webcast: This is a reasonably horrible recording (sound quality and video size) of a webcast I did back in August. It shows why C++ AMP is so cool and why you might care about it. I recorded it to promote the book but I'm not very happy with how it turned out. You'll probably do better with the recording of my Tech Ed talk.
  • Pluralsight interview: This is specifically about my Using Visual Studio 2012 course. You can download the audio or read the transcript as you prefer.  My favourite quote from the conversation:
It’s not just like, oh, I saved five seconds. I can go home five seconds earlier today. It’s that you’re less likely to forget what you were doing because you don’t have to put so much time into the mechanics and you just stay in flow. And to me, that’s a ramping up of two or three times the amount of code I can produce when I use everything the tool has to offer.
  • Dot Net Rocks panel at DevIntersection: Here Scott Allen, Michele Leroux Bustamante, Woody Pewitt, and I discuss whatever we feel like, with occasional leading questions from Carl and Richard, and some Canadian whisky too.

Even though I haven't been blogging much, I have been doing a lot, and I hope these links will help you to discover some of it.

Kate

Friday, 04 January 2013 17:58:45 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Tuesday, 20 November 2012

While I was in Nashville as part of the Dot Net Rocks Roadtrip, we recorded an episode of The Tablet Show. The recording is online now and I'll have to give it a listen myself to remember what we talked about - Hilo, for sure, and C++ AMP, and just generally why C++ can be a great choice for tablet development.

Kate

Tuesday, 20 November 2012 13:30:44 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Friday, 16 November 2012

Don McCrady, who with Jim Radigan did an inspiring talk on performance at Build this year, has blogged about a proof-of-concept project that adds C++ AMP to CLANG and LLVM using OpenCL underneath instead of using DirectX the way Visual Studio does. This is super cool! As Don says:

When Microsoft announced C++ AMP back in June 2011, we told you that we would release the C++ AMP specification under the Microsoft Community Promise – essentially opening up the specification to allow any C++ compiler implementer to add C++ AMP to their compiler. Shevlin Park serves as an example of the platform portability potential intended by the Community Promise.

Do read Don's post and follow the links to learn more about Shevlin Park. The praise for C++ AMP as a programming model, and the likelihood that multiple compilers will support it, should make you feel all warm and fuzzy about learning it. You might even want to use my book to do so :-)

Kate


Friday, 16 November 2012 13:19:40 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Saturday, 03 November 2012

Day 4 was the first time I started to experience what some others had been complaining about with not being able to get into the room for a popular talk. I guess I'll just have to watch the recording.

I remembered to take some pictures of the signage that directed us around to help cope with being in two different buildings plus the tents:



And the map on the ground outside the building:




There were also people holding giant arrows to point attendees towards lunch or shuttles or whatever. It would have been extra-ordinarily difficult to get lost.

Herb's session Friday was everything it had promised to be. I just love the idea of http://isocpp.org/ and I intend to make good use of it when people ask me "getting started" questions.

Finally I had to accept it was ending. They were even tearing the tent down already:




I used the airport WiFi to download sessions to watch on the way home. Good week, Microsoft!

Kate
Saturday, 03 November 2012 12:11:03 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Friday, 02 November 2012

One of the stickers for the badge this year was to attend an 8:30 session. I achieved that by going to Alive with activity: Tiles, notifications, and background tasks which, to be honest, I chose as much to see what Kraig Brockschmidt is doing lately as to learn about tiles and toast. But I'm glad I went, because it was a very good talk.

I've come to Redmond so many times, but I never particularly noticed the colours changing. This week they've been spectacular. I had some meetings in other buildings so I was able to get out of the giant lines at least long enough to take pictures of the giant lines :-)




And yes, it rained, but they were ready for that:




I really like the vibe that came from being on campus. Speakers tended to get up from their desks, jump on a shuttle or walk over, pull on the shirt and talk to us. I really got the sense we were being welcomed into their home.

I also went to Tips for building a Windows Store app using XAML and C++: The Hilo project - how could I not, since I was on the project. Excellent summary of some hard-learned lessons and one you should totally download and watch.

Kate
Friday, 02 November 2012 12:00:10 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Wednesday, 31 October 2012
Build this year is less focused on announcing things (though the Windows phone and native C++ material is brand new) and more on drilling down into topics that we've had a year to experiment with and want some deep study on. Most of the speakers are from product teams. What's fun for me is that most of the attendees are very motivated and here to learn.

I'm also enjoying how full the rooms are for C++ sessions. Here's Tarek's Day 1 session:



BTW, that was session 3-000 demonstrating that (a) the sessions are numbered using zero-based indexing and (b) the C++ sessions were first on the list.

And here's the C++ performance talk from right after the keynote this morning:



This room was standing room only. It's possible all the C++ talks were, I don't always sit at the back where I can see whether people are standing back there or not. And you may not be able to tell from the picture but there were plenty of young developers there too.

There was also a nice session on Project Austin which is a lovely reference app showing how to use DirectX in a Windows Store app. You can get the code from Codeplex and take a look at it yourself or just use it to take beautiful notes on a tablet.

Speaking of reference apps, Hilo (which I've written about before) is now an official sample in the SDK and on the Dev Center. There's a Hilo session here at Build too. Within a day or two these links should have recordings and slides for you to download.

Want to know more about C++ at Build? Here's less than two minutes on just that topic. If you can, please watch Herb's talk on Friday. It promises to be exciting!

Kate

Wednesday, 31 October 2012 19:45:47 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Tuesday, 30 October 2012
I arrived in Seattle Sunday night and filled Monday with meetings, then lined up to register for Build. I'll spare you the photos of the giant lineup that everyone else seems to have taken, and show you these delicious cupcakes from the welcome reception:



For me the most exciting part of the lineup was the revised session schedule I was handed, with lots of sessions on writing Windows Phone 8 apps in native C++. I cheerfully added them to my schedule along with all the existing sessions on C++. (The sessions are recorded so check them out yourself!)

And I ended up at dinner with a lot of geeks. We were unable to resist a little side by side comparison of our phones:




It sure made me want a 920 - good thing it turns out I'm getting one :-)

Kate
Tuesday, 30 October 2012 16:47:06 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Saturday, 27 October 2012

I really enjoyed my evening in Nashville. It was fun answering the question: C++ - Why on earth? I think I even convinced a few of you.

Of course the biggest Nashville attraction for me is my friend Billy Hollis:

Look what a luxurious meeting room they have! Couches and tables and general comfort. And yes, I got to see the inside of the RV:

If I got you interested in C++, you might like some links:

Thanks for the visit, and I hope to be back!

Kate

Saturday, 27 October 2012 17:31:18 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Friday, 19 October 2012

Microsoft and Stack Overflow are joining forces on a fun Windows 8 development contest. And since one of the strengths of StackOverlflow is how the community reviews all the content, it only makes sense that there's a serious review component to this contest! And it's not US-only (for once!) so as long as you're over 18 and don't live in Cuba, Iran, North Korea, Sudan or Syria you're good to go. Well, you need a StackOverflow account, but you needed one of those anyway, right?

Top prize is $5,000 and there are shiny achievements and everything - so get going!

Kate

Friday, 19 October 2012 18:13:41 (Eastern Daylight Time, UTC-04:00)  #    Comments [1]
# Thursday, 18 October 2012
I love the fact that big-name speakers are willing to come and speak at the East of Toronto .NET User Group. You don't have to live in a big city (or struggle through big-city traffic on a visit) to keep up to date with the latest technology and meet fellow developers. The latest example:



As the website says:

Beth Massi is a Senior Program Manager on the Visual Studio team at Microsoft. Beth is a community champion for business application developers and has over 15 years of industry experience building business apps. She is a frequent speaker at various software development events and you can find her on a variety of developer sites including MSDN Developer Centers, Channel 9, and her blog http://www.bethmassi.com. Follow her on twitter @BethMassi

And what will she be talking about?

Visual Studio LightSwitch is the easiest way to create modern line of business applications for the enterprise. In this session you will learn how LightSwitch helps you focus your time on what makes your application unique, allowing you to easily implement common business application scenarios—such as integrating multiple data sources, data validation, authentication, and access control. See how LightSwitch in Visual Studio 2012 has embraced OData making it easy to consume as well as create interoperable data services. Then see how LightSwitch makes it easy to deploy these services to the Azure cloud and consume them from other client applications and platforms. You will also see how the LightSwitch team is enabling mobile scenarios making it easy to create HTML5/JavaScript companion clients for modern mobile devices.

When and where?

Event Agenda

TimeTitle
6:30 - 7:00Socialize and refreshments
7:00 - 8:30Presentation

Pickering Central Library Auditorium (2nd floor)

One the Esplanade
Pickering, ON L1V 6K7

Register now - it's a good way to spend a Wednesday night.

Kate
Thursday, 18 October 2012 17:43:53 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Wednesday, 17 October 2012

Here's an amazing grand finale to the Dot Net Rocks Roadtrip this year -a full on developer conference in Las Vegas, Dec 9th - 12th.

I love this answer to "What is DevIntersection?"

This three-day conference marks the final stop on the USA leg of the .NET Rocks! Visual Studio 2012 Launch Road Trip! DevIntersection is a developer conference PLUS the recording venue for the last stop of the three-month road trip hosted by Richard Campbell and Carl Franklin. We're bringing together some of the best speakers (and our personal friends) for a conference that is relaxed and educational, plus forward looking as you and your company start to figure out what to do with Windows 8 and Visual Studio for the next few years. Our attendees tend to be .NET software developers plus other members of their teams. DevIntersection is an educational onsite conference for anyone who is attached to a .NET development programming project who is looking to use Visual Studio to develop apps for desktop, web and mobile platfoms.

I have two breakout sessions - one on C++ AMP and one on developing for the Windows Store in C++. No .NET in either one of them; this is a conference for expanding your horizons, after all.

For $1595 you get three full days of sessions. And if you register in October (hurry!) you will also get a new tablet. Build sold out in hours, so this is your chance to get access to deep and current information for developers across the Microsoft ecosystem. See you there!

Kate

Wednesday, 17 October 2012 13:52:31 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 15 October 2012

Hilo is a reference project written in C++/CX for Windows 8 by the Patterns and Practices team. I was delighted to be part of this project and think it turned out very well. I use the Hilo codebase to remind myself how to do certain things when writing a Windows Store app in C++ (something I'm in the middle of doing for another project.) The accompanying document is rich in best practices for Windows 8 development, async work, modern C++, unit testing, and more. Now the latest version has been released, updated for Windows 8 RTM.

Hilo itself is a photo viewer. Before you roll your eyes, bear with me. I actually think it's better than the one that ships with Windows 8. It shows you some of your pictures as a sort of overview:

Click on one to interact with it. You can right-click to bring up both the app bar at the bottom and a nice strip-navigation control at the top:

If you want to see something cool, use Cartoon Effect. This leverages C++ AMP to cartoonize the picture. I've shopped this image a little to reduce the width (pulled the appbar in from the edges) but the cartoon work was done by Hilo - and super quickly.

If you have any thoughts of writing Windows Store apps, and C++ is a possibility for you, get over to Codeplex, download the Hilo code and the .chm file, and get reading!

Kate

Monday, 15 October 2012 13:17:12 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Friday, 28 September 2012
I’ve been writing a book, though I swore I wouldn’t write any more books, and it’s finally done! You can buy a Kindle version from Amazon or an e-book directly from O’Reilly today. The paper copies will be ready in about a week and you can order them from O’Reilly or Amazon. The book is published by Microsoft Press, but O’Reilly handles the actual production of the books.


 I’ve got a page dedicated to the book with links for you to buy it, get the code, submit errata, and whatever else you might want. (If you think something’s missing, comment here and I’ll try to take care of it.)

Kate
Friday, 28 September 2012 14:50:54 (Eastern Daylight Time, UTC-04:00)  #    Comments [1]
# Wednesday, 26 September 2012

I love writing courses for Pluralsight. I have quite a few and am working on more right now. They like to interview their authors about each course. Here's one about my latest for them. If you’ve done the whole course you won’t learn anything new from the interview, but if you’re curious about writing what we’re now calling Windows Store applications for Windows 8 using C++ and Visual Studio, perhaps this interview will help you decide whether it’s something you want to learn. There’s a transcript as well as an audio link.

Kate

Wednesday, 26 September 2012 14:13:20 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Tuesday, 25 September 2012

We now have a Windows Phone application in the marketplace. We wrote it for ourselves, to learn the framework and to give us a way to track how we spend our time. The minute we started designing it, we discovered everyone in the company wanted a different way to track. People who do pretty much the same thing all the time (coding, for example) wanted to track project-by-project. People who work on only one project at a time wanted to differentiate between types of work, like meetings or email or writing documents. We decided to make it as simple and flexible as we could. I was inspired by a story of a time tracking technique involving physical objects. You get 5-10 paper cups and write things on the cups like Email, Meetings, and so on. Then you get 32 poker chips, all the same colour. As each 15-minute piece of time goes by, you toss a chip into the cup. It is supposed to help you understand that you very literally “spend” your time. And at the end of the day you can look in the cups and see where your day went.


If you’d like to track your time like this – hit the + button to toss a “15 minute” square into a particular “bucket” or just hit the falling drops button to accumulate time in one bucket until you change tasks – please try our app and let me know how it works for you.

Kate


Tuesday, 25 September 2012 14:11:21 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Tuesday, 26 June 2012
As I am soon to discover first-hand, Australia is a very long way from North America. So when Adam Cogan makes the trip, he often extends his stay to see more people or places. Last September when we all gathered for //build/, Adam tacked a mini Canada tour onto his North American stay and we got together for a quick chat near my home. Part of it was filmed and (after a long delay to cope with the sound issues) is now available on the SSW TV site.

We talk about C++ and why it has advantages over managed code in some cases, about C++ AMP, and about tablets, leading to this moment:



It's just a 7 minute video, so give it a listen!

Kate
Tuesday, 26 June 2012 02:18:02 (Eastern Daylight Time, UTC-04:00)  #    Comments [2]
# Tuesday, 29 May 2012

I've been putting my schedule together for the talks I want to attend at Tech Ed North America and Tech Ed Europe this year. While I wasn't looking, a bunch more C++ content was added.

In Orlando:

Plus some language agnostic sessions that chose to put C++ in their session descriptions, which is a new thing these days.

Now as it happens, Tech Ed North America is sold out, so if you're not registered yet, you have three choices: join the waiting list, watch these sessions online, or get your boss to agree to a slightly larger T&E budget and head to Tech Ed Europe in Amsterdam just two weeks later. There we will have:

  • PRC08, my all day Monday precon: C++ in Visual Studio 11: Modern, Readable, Safe, Fast
  • DEV316, Tuesday at 4:30 pm: Application Lifecycle Management Tools for C++ in Visual Studio 11 by Rong Lu
  • DEV368, Wednesday at 2:45 pm: Visual C++ and the Native Renaissance by Steve Teixeira
  • DEV322, Thursday at 8:30 am: Building Windows 8 Metro style Apps with Visual C++ 11 by Rong Lu
  • DEV367, Thursday at 4:30: Building Windows 8 Metro Style Apps With C++ by Steve Teixeira
  • DEV334, Friday at 1:00 pm: C++ Accelerated Massive Parallelism in Visual C++ 11 by me

(Europe doesn't have direct links to the sessions, but they do allow links to the search for C++.) I'll have to miss Steve's talk because Rong and I are going to Belgium, so that one I'll be watching online. 

One way or another, please attend or watch these sessions. There's a lot of new stuff happening!

Kate

Tuesday, 29 May 2012 17:31:56 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 28 May 2012
I am having a very lucky year. I've been nominated and accepted as a judge at the Worldwide finals of the Imagine Cup. I love being around students, and everything I've heard about Imagine Cup tells me that the energy, excitement, and creativity is marvelous to be part of. While I'm there, I decided to stay an extra day (July 11th) so I can offer my one-day C++ training to those who can't make it to Tech Ed in Orlando or Amsterdam. Here's what I'll cover:
  • Modern C++ with the Standard Library
  • Application Lifecycle Management for Visual C++ 11
  • Leveraging Lambdas for the PPL and C++ AMP
  • Best practices for C++ developers today

This is not a free session, but the price is even lower than the Tech Ed precons since I don't have travel expenses to get down there and see you all. If you live in Australia, please register and take advantage of this chance to come and learn what's been going on with C++ while you weren't looking! And if you don't, I'd appreciate it if you could spread the word to those who do.

Kate

Monday, 28 May 2012 21:04:29 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Sunday, 27 May 2012
Some people really go above and beyond for community. They have an idea, and then they make it happen. Take Marc Gregoire, for example. Our names are similar, and we both care about community, C++, and related topics, but we've never met. That didn't stop him from emailing me to see if I would do a user group talk while I was nearby for Tech Ed Europe. Of course I would! And then he arranged for Rong Lu from the C++ team to come and do one as well. Marc has done all the work of getting the room, the travel arrangements, you name it. All I have to do is take a short scenic train ride, and talk about a topic I'm excited about. That part is easy. The organizing part is hard.

It's going to be a very fun evening. I'm going to talk about C++ AMP, and Rong will cover what's new in VC++ 11. I've seen her speak before, and I know you're going to enjoy it. Be there, Wednesday June 27th at the Microsoft offices in Brussels. (I was kinda hoping for Tuesday, so I could make a joke, but Wednesday will be fine.) You need to register, so please do!

Kate


Sunday, 27 May 2012 20:49:12 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Thursday, 10 May 2012
So much C++ news going on lately. Time to clear my queue:

It's hard to keep up with it all! Especially when I'm on a book deadline :-)

Kate

Thursday, 10 May 2012 22:06:29 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Friday, 23 March 2012

My C++ precon, an all-day session about modern C++, has had a slight title change and is now called PRC08, C++ in Visual Studio 11: Modern, Readable, Safe, Fast. The content is still the same. My high level outline is:

  • Modern C++ with the Standard Library (demo of strings, shared pointers)
  • Application Lifecycle Management for Visual C++ 11
  • Leveraging Lambdas for the PPL and C++ AMP
  • Best practices for C++ developers today
This is all day the Sunday before Tech Ed Orlando starts, June 10th. You don't have to be registered for Tech Ed to attend a pre-con. It's a great way to get caught back up on what's been happening with C++ over the last decade or so. It's really not the language you remember. I plan to show you what's fun and amazing about it. Forget all that pointer-to-pointer-to-pointer and manual memory management stuff you may remember, and get ready to see how C++ can be simple, fast, and genuinely useful in some surprising ways.

Kate


Friday, 23 March 2012 11:12:51 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Saturday, 10 March 2012

I've been working on another C++ course for Pluralsight to complement the C++ WinRT/Windows 8/Metro course I did as well as the two-part C++ Fundamentals course (part 1, part 2). It's finished and live!

The topics I cover are:

  • Avoid Manual Memory Management
  • Use Lambdas
  • Use Standard Containers
  • Use Standard Algorithms
  • Embrace Move Semantics
  • Follow Style Rules
  • Consider the PImpl Idiom
  • Stop Writing C With Classes

I had a real blast writing this - while I was editing it I could hear my own enjoyment of parts of it. I hope you enjoy it too. A Pluralsight subscription is such a bargain - buy one for the topics you simply MUST learn for work, then use it on your own time to learn all those other things that you think you might benefit from. (I recommend Annual Plus - $500 gets you the sample code and offline viewing, all you can learn for a year.) Whether C++ is "must learn for work" or "I hear it's different know, wonder if it could help me" for you, I hope you find it helpful. Please let me know!

Kate

Saturday, 10 March 2012 14:36:17 (Eastern Standard Time, UTC-05:00)  #    Comments [1]
# Wednesday, 08 February 2012
I've been excited about C++ AMP since it was first announced back in June. What's C++ AMP? It stands for Accelerated Massive Parallelism and it's about harnessing thousands of cores on accelerators like GPUs. You can speed up some applications by a factor of 10 or more. Not 10%, 10x. And you don't have to learn some C-like language, you get to work in C++. It's done almost entirely with libraries, which means you can use C++ AMP from a variety of applications, including Metro apps for Windows 8.

If you check my Concurrency category you'll see I've been writing code (and words) for months now. I just haven't been putting those words here on my blog. Instead, they're going into a book, for Microsoft Press! Soon, I will have some chapter drafts available for review. If you're interested, I've set up a page with some details, and some links for those who want to learn more.

There's increasing media coverage, including Peter Bright at ars technica and Darryl Taft at eWeek, and last week the spec was released to the public under the Microsoft Community Promise license. This means other compiler vendors can implement C++ AMP in their own compilers, allowing even more developers access to heterogeneous hardware and massive speedups for data parallel calculations. Herb Sutter mentioned it in the Day 2 keynote at GoingNative, the Visual C++ Blog included a link, and Soma blogged about it too.

Dive in! There's a lot to learn. And plenty of samples to play with. I'll post updates here as I go.

Kate

Wednesday, 08 February 2012 20:48:48 (Eastern Standard Time, UTC-05:00)  #    Comments [1]
# Tuesday, 07 February 2012

The minute this was announced, I knew I had to go.

Two days of "C++ today and tomorrow" with the bright lights of C++ today? Just try and keep me away! I'm so glad I was there - it was AMAZING and FANTASTIC and just generally wonderful. For me, personally, seeing so many old friends was a big part of it. The C++ team, other C++ MVPs, people I went to university with, and so on. It was also wonderful to see so many young people - including speakers, but also attendees, who were clearly in their 20s (and a few who were obviously in their teens.) After Chandler's talk I told someone "we can retire now: the future of C++ is in good hands." The speakers were not "the usual suspects" at a Microsoft event either. At a panel at the end of the second day, someone asked about C++ and the cloud and one of the answers was to indicate three speakers sitting next to each other: "Microsoft guy, Facebook guy, Google guy. Where isn't C++ in the cloud?" While that was a great cloud answer, I think it also highlights how inclusive this was - it was a C++ conference held at Microsoft, not a Microsoft conference.

Some fun quotes I happened to write down:

  • “if it’s that ugly, it must be good” - Bjarne, on why some newbies imitate horrible code written long ago by their heroes
  • “write C-style code, expect C-style errors” - Bjarne again
  • “we know where bugs hide” – Bjarne (they hide in large tracts of complicated code)
  • "dot dot dot is where the fun begins" - Andrei
  • "real code is not supposed to fit on slides" - Andrei
  • "this is legal" - Andrei (we needed to be reassured since it rarely looked legal)
  • "if you're using new or delete, you're doing it wrong" - Herb (it's true!)

And Chandler's talk was very much a 2012 talk, with lolcat-like interjections and Simpsons references and even a how-agile-is-this update with a picture of Oscar Wilde in reference to Andrei's earlier off-the-cuff description of some template error messages (aka template barf) as being "a small novel by Oscar Wilde." The humour level was very high, much of it self-deprecating - no-one, not even the coiners of the terms, thinks RAII or SFINAE are great names, but what the heck, they're the names we use.

Even the little things here were so well done. Herb opened the conference by dedicating it to Dennis Ritchie, which I found extraordinarily touching and appropriate. He opened day 2 by celebrating the 20 year anniversary of Microsoft C7 which was C++ 1 for them, with Visual C++ appearing in the next release. There on the podium was the two foot long, 44 pound box, with multicoloured plusses all over it, in which it shipped.

And what was inside? A lot of books, and a lot of 3.5" floppies (I took this picture earlier, before the box headed to campus):

There are 5 or 6 floppies in each bag and apparently each bag had a part number of its own.

This conference was far more than a trip down memory lane, of course. It was a two-day Valentine from Microsoft to the C++ community, a demonstration of the "new growth" in modern C++ and the power and capability that is there for those who are prepared to start using the new features, and a chance for all of us to accelerate the learning we have to do. I so hope you were able to be there, or to catch the energy by watching it live and following tweets from those of us who had to share the bon mots and the fun. But if not, the on-demand videos are almost all there now. Here are the links:

Bjarne Stroustrup: C++11 Style

Hans Boehm: Threads and Shared Variables in C++11

Stephan T. Lavavej: STL11 – Magic && Secrets

Andrei Alexandrescu: Variadic Templates are Funadic

Panel: The Importance of Being Native (Bjarne, Andrei, Herb, Hans) 

Herb Sutter: C++11, VC++11 and Beyond

Chandler Carruth: Clang - Defending C++ from Murphy's Million Monkeys

Andrei Alexandrescu: Static If I Had a Hammer

Bjarne Stroustrup and Andrew Sutton: A Concept Design for C++

Panel: Ask Us Anything! (all speakers)

Fair warning: both of Andrei's talks, and the Concepts talk, are hard. This is cool new stuff that we are all learning about. There is no shame in pausing, rewinding, and giving something a second listen. Look, Chandler was running through pitfalls and problems that Clang catches, and showed some code with a problem I couldn't spot. A few minutes later in the Q&A, Bjarne asked him to clarify just what the problem was. Made me feel better!

Chances are you won't be able to watch any of these on fast forward, or skip any of them. So I'm asking you to invest 12 hours of your life to watch all of them. Do it! You won't regret it!

Kate

PS: They gave us shirts (it's all about the shirts for developers) with real code on the back and this on the front:



Highly appropriate. Of course, it's not a comeback for those of us who never left. But still...
Tuesday, 07 February 2012 12:19:41 (Eastern Standard Time, UTC-05:00)  #    Comments [1]
# Saturday, 17 September 2011

Oh my goodness. What a week that was!

Here's how I thought I would do my first summary. Links to videos, discussions of sessions I either went to or tried to go to (more on that in a moment) along with my tweets from the ground, as it were.

My first real tweet Tuesday morning (8:37 California time) was announcing that my PluralSight C++ Fundamentals course had gone live. Then the keynote started. Here are my tweets and retweets along with the time into the keynote I said them:

  • 6 minutes: #bldwin totally dominating my stream SS doing a good intro to lean back computing
  • 37 minutes: RT @dseven WinRT API'S are natively built into Windows and built to reflect in different languages - C/C++ and .NET. #bldwin
  • 42 minutes: Starting at 8PM today, Seattle time, you can download all of the code that attendees at BUILD received. t.co/nuTuwga
  • 43 minutes: RT @wkrwk Did anyone notice the UI during the VSE 11 demo is the classic Windows UI? #bldwin
  • 48 minutes: #bldwin VS vNext demo is breaking twitter = no hope of following it all
  • 50 minutes: RT @andrewbrust Expression Blend is still Grey on Black. It could use a little "fast and fluid," frankly. #bldwin
  • 51 minutes: Store menu in VS?? #bldwin #wholenewworld
  • 58 minutes: RT @rhundhausen Desktop (#x86) apps can be listed in the #windows8 store as well #bldwin
  • 61 minutes: RT @ayus :))) RT @timheuer The Red Shirt is dominant even when not present. #bldwin @scottgu
  • 79 minutes, @EdgarSanchez retweeted @rickasaurus asking "I'm interested in hearing more about this new GPU offloading API. Any links? #bldwin" and I answered "Check my blog as the week goes on for GPU stuff"
  • 80 minutes: RT @marypcbuk Sinofsky: that gaming PC looks like ice. Angiulo: more like lava, it converts 700w of power to 4.7 teraflops like 3,500 Cray XMPs #bldwinPlatform for Metro style apps
  • 87 minutes: RT @Pete_Brown Dude just cracked open a laptop on stage and showed the electronics. Can't beat that #bldwin #geek
  • 100 minutes: RT @andrewbrust When will we admit Sinofsky's doing a great job? He's working hard, not just presiding. #bldwin
  • 120 minutes: RT @ronnipedersen If you have an iPad, don't watch the build keynote… It'll make you feel like you have bought a C64 #bldwin
  • 127 minutes: RT @jonbrasted It is a great day to be a Windows developer. #bldwin #trbbuild

The download surprised me, I didn't think it would be ready for people to try on any old hardware. And the hardware demo was very very good. And sure, I was on instant messenger back to the office saying "it's official" when the rumour was finally confirmed that we were getting tablets. But mostly, I really liked what I saw and wanted to know more, which is what keynotes are all about.

After eating something completely unmemorable, I found my way to the overflow room, always a little more casual and a good place to find "the cool kids". I had already met a number of old friends in the huge keynote session and before it, but here were more. I'll just give you the links to the Big Picture sessions. They are all very good.

  • 8 traits of great Metro style apps - a truly excellent session by a presenter who cares deeply about the topic. I tweeted a lot less during this one because it required more active listening.
  • Platform for Metro style apps - another very good session during which I just retweeted some other people's "Hey, this stuff is C++" reactions and a link to the session planner app for the phone, which I used heavily.
By this time people were starting to "get it" (including me) and the excitement level was rising. Here's just what I retweeted:
  • @coridrew #bldWin is really, really, really making me want to //BUILD/ Windows apps #BestConferenceNameEver #WhoKnew
  • @briannoyes Add ref from js project to C++ library - really empasizes this is running native #bldwin
  • +@fignewtron iPad limited in many ways to consumption - Windows 8 is production and consumption on many devices. Sales numbers decide winner. #bldwin
  • @mcakins Wow, the silence from Apple's camp is deafening! Windows rocks once more! Its 1995 all over again! #bldwin

One more session: Tools for building Metro style apps - I was getting tired at this point. It was a lot to take in. People were lined up the length of the convention centre for tablets. I knew there were enough for all of us, so I went back to my room to edit my pointers module for the PluralSight course so it could "tack on" to the end of the published course. While videos rendered, I had a little back and forth on Twitter with people who had noticed how much fun I was having, and others who were playing with their tablets already. I slipped out to pickup the tablet about 7:30 but didn't open it till the module was done. Then:

  • 10:48 pm: got major piece of work done ... yielding to temptation ... tablet here i come #bldwin
  • 10:57 pm: How's that for fast setup? Everything's installed.... Trying visual studio next
  • 11:11 pm: Just wrote a Win8 C++ app on the tablet with touch keyboard. Built and ran first time. #winning
That's right, I didn't even set up the bluetooth keyboard. People cite Visual Studio as an app you couldn't possibly use with touch. I wouldn't want to do it all day, but I did it! Then I played a bit more.

Day 2 started with another whole keynote. C++ was front and centre here. Some tweets:
  • 17 minutes: RT @seesharp 3D graphics debugging at the pixel level in DirectX. Unreal. #bldwin
  • 33 minutes: RT @bgervin killer strategy for MS to help developers make HTML apps for iOS and Android #bldwin
  • 34 minutes: RT @tpdorsey RT @EisenbergEffect […] in C++, you can write your own WinRT library, which when built, can be used by C++, C#, VB and JS.
  • 34 minutes: RT @jmorrill This new COM and C++ version is not _anything_ like what you think it is. From what I can tell so far...effing amazing!!!!
  • 49 minutes: Loved it RT @MichaelDesmond Zander shows off the new image editor in VS11 as he works on a C++ DirectX game.
  • 54 minutes: RT @shycohen Moving a VHD while the machine is running is cool. Moving a live VHD is even cooler! :) Will enable amazing things in the future. #bldwin
  • 82 minutes: most tattoos ever in an MS keynote
  • 95 minutes: RT @seesharp WOAH. Did not expect Steve Ballmer today. Everyone was starting to leave already. Woah! #bldwin
  • 97 minutes: RT @carafone 500,000 downloads of #win8 already! #bldwin
  • 98 minutes: RT @LACanuck And #Win8 was downloaded 500K times in 12 hrs RT @mashable: RIM Has Sold Just 490,000 PlayBooks - on.mash.to/nEu0dU #bldwin
  • 102 minutes: That's what these keynotes were missing! Turns out it's a great time to be a developer. I was worrying, no-one had told me yet #bldwin
  • 105 minutes: I've been paid to program since 1979. Keynotes tell me at least once a year it's a great time to be a developer. And they're right. #bldwin
Then it was time for simultaneous breakouts, and that meant choices. You can search the sessions list as well as I can. The C++ ones are not to be missed. These are happy people who are delighted to tell us what's been going on, and they're proud of it, too. At 3:13 I tweeted "Went quiet because i am massively engaged with C++ content in packed rooms. Small break between sessions to say "wow!" #bldwin #happycamper". The remainder of the afternoon was super confusing. People were jumping to conclusions, correcting each other, having opinions about the death of this that and the other. Because C++/Cx (the language extension you use to call WinRT) looks a lot like C++/CLI, people thought it was managed, but it's not, it's all native code and C++ Metro apps get a perf boost from that. The understanding that something amazing and powerful still has COM at the core began to grow. People were reporting trying to use Windows 8 gestures on their iPads and on nontouch screens, showing that the team has made some very intuitive choices. One tweet of mine I want to repeat: "Big props to Aleš Holeček for joining in the Q&A in the last C++ talk of the day when the questions got really Windows-y. Impressed. #bldwin". Even if you're not a C++ developer, download that session and watch the Q & A.

Day 3 started with being turned away from a C++ session, and so going to a different C++ session that was on at the same time. Several people from the C++ team made the trip with me, giving me a chance to tell them how impressive all this was. Meanwhile on mailing lists, people who weren't onsite and were 12 - 24 hours behind as they waited for session videos to go live were echoing the confusion and dismay of yesterday. It was hard to be patient with them. It's going to make sense, I wanted to tell them. Just hang in there! I took a small break from sessions to watch (and help with) the C++ part of Channel 9 Live (I am still waiting for links to the recording, because I couldn't hear everything they said and I want to) and then to Herb's second talk - again the room jammed full and dozens turned away, Don Box (who had earlier reminded us COM is still love) blurting out his admiration for Herb as a speaker and the great content, and the terrific line, "We protect against Murphy, not Machiavelli". What a time to be a C++ developer!

Day 4 kicked off with kind words from Daniel and a chance to hand out paper copies of the whitepaper I recently blogged. I got some quiet time with various smart people who told me their thoughts on all this. I'm still synthesizing it all. I also was downloading videos like a mad thing. I came home with 22 hours of video to watch and since then have grabbed another 15 or so. Some people began to realize they had over-reacted. Some excellent blogs began to appear - Doug Seven, for example, had several sensible things to say.

And then it was time to go. Glenn Ferrie tweeted "Writing C++ in the airport #bldwin #WinRT" and that summed up the week for me. I have a lot of watching, coding, thinking, reading and talking to do so I can establish what all this means. But hey, why not join me? It's a great time to be a developer!

Kate
Saturday, 17 September 2011 16:42:01 (Eastern Daylight Time, UTC-04:00)  #    Comments [1]
# Tuesday, 23 August 2011
C++ is a great language for writing applications that will run on a number of platforms. There are compilers for many different platforms, and some powerful libraries you can use. Still, in the end your code needs to talk to the operating system, and that means that most cross platform applications have at least a few little corners where platform-specific code lives. The challenge is how to ensure that your Windows code runs on Windows, your Linux code runs on Linux, etc, without maintaining a number of different branches or hand-merging and splitting every time you deploy.

Being C++, an unspoken requirement in solving this problem is "be as fast as possible". Putting everything through a library and paying for extra indirection, looking up something that cannot change once the program has started executing, is not as fast as possible. You also want developer convenience and productivity. If you support five platforms, and something is the same on four and different on one, copying that code around for the four that are the same is not a productive way to behave. You would like a default behaviour, and then special code for special cases.

Michael Tedder has an intriguing approach using templates. As he says:

Instead of declaring a base interface class with virtual functions then deriving each platform with a different implementation, we declare a class with one template parameter — a platform ID — then specialize it to provide a different implementation for each platform.  The template class is then typedef‘d to expose the specialization for the platform ID being compiled to the application, allowing the implementation to be used without any virtual functions and also allow for inlining of functions as well.

He has some pretty convincing armwaving about using this not for just Windows/Linux/Android but for any hardware differences even on the same operating system - like what kind of graphics architecture you have or anything else that can't change at runtime. It's a good example of how the power of templates makes things possible that would always incur a runtime cost in any other language, or a significant burden on a developer to move code around building custom versions of an application. Worth a read!

Kate

Tuesday, 23 August 2011 14:55:55 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Sunday, 21 August 2011
Here's an interesting project I came across:




The game is Mastermind, which many people already know. What caught my attention is that it's done in C++ and XAML. To quote Tyler Whitney's blog post,

The Mastermind code sample demonstrates how to create a simple Silverlight storyboard in Expression Blend 3, and then provide the code for the state transitions in Microsoft Visual Studio 2008. You can also see how to create brushes programmatically and how to add a title bar to a Silverlight-based app.

The code is on the Microsoft Code Gallery (only Microsoft Employees can publish there) and Tyler has been updating the article over the summer. Nice way to see how to combine two technologies some people would never thought have combining.

Kate
Sunday, 21 August 2011 14:41:42 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Thursday, 11 August 2011
I'm pleased to see that Kenny Kerr is writing his C++ column for MSDN again. He's also blogging again and in a recent entry, he provides some really plain-spoken advice to people looking for guidance:

  • "You can of course still use MFC but I do not recommend it as modern C++ can do a better job of supporting the Windows developer."
  • "You should never again use auto_ptr for anything."
So there! I agree with these, especially the auto_ptr one. It was an attempt at a smart pointer that just wasn't smart enough. We have shared_ptr and unique_ptr now and they work in collections and are truly smart pointers. Use them and stop typing delete in your code entirely.

As for MFC, it does fill a need and I certainly wouldn't scrap a working MFC app just because the library is getting old (the facelift a few releases ago helped) but if I was starting a brand new application from File, New Project I would need a good reason to use MFC as my UI framework.

Kate

Thursday, 11 August 2011 13:29:29 (Eastern Daylight Time, UTC-04:00)  #    Comments [3]
# Friday, 29 July 2011

Since Tech Ed came and went during my blogging hiatus, I didn't get around to providing links to some of the sessions you might want to see. It's time to correct that omission:

There were other sessions I attended, including a great interactive session that was not recorded called "C++ Renaissance at Microsoft: How the C++ Developers Can Get Involved" with plenty of conversation between Microsoft people and native developers. You might want to do a little searching on the main Tech Ed Video site to see what interests you.

Kate

Friday, 29 July 2011 17:51:36 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Wednesday, 27 July 2011

Today saw the release of the first episode (naturally, Episode 0) of GoingNative on Channel 9. As the introduction says:

GoingNative is a new, monthly show on C9 dedicated to native development and native developers, with an emphasis on modern C++.

You know there's been a lot of talk about the C++ Renaissance. I'm happy to see that phrase get picked up, and I've got another one for you: Modern C++. Or as some folks like to say "not your father's C++". If you think C++ means manual memory management, strings as arrays of characters and a strange cast of global functions, and longing for a library or framework that might rival what .NET has to offer, then you haven't been keeping up with C++. The good news is that it won't take you long to catch up - shared_ptr and unique_ptr, the Standard Library, lambdas and other Modern C++ goodies are easy for both managed developers and longtime native developers to learn.

In Episode 0, Charles Torre (longtime C++ friend) and Diego Dagum (C++ Community lead, blogger, and Tweeter) lay some groundwork and, of course, show code. It's always about the code, right? Then, they ask you to get involved. Whether you're someone who wants to learn about C++, or someone who wants to make sure something about C++ gets taught to others, speak up! And yes, that includes topics on non-Microsoft platforms. Email C9GoingNative - they're using hotmail - or on twitter, follow or talk to @C9GoingNative. (There's a Facebook group, too - whatever way you like to interact is welcome.)

But wait, did that sound like a whole episode? Nope, they grab the camera and head over to see Ale Contenti - one of my favourite team members and one I've done interviews and sessions with before. His talk gets technical fast, which is one of the things I like about him! I too have a soft spot for 6502 assembler :-) and find template meta-programming a bit of a write-only technique. I, too, like "the power the language gives you to make the language bigger with libraries" and think that's part of the appeal of C++ for me. Well, that and the power and performance and control, of course. Are there downsides? Well, there's what Joni Mitchell called "the crazy you get from too much choice" - C++ gives you many ways to do everything, according to your circumstances, and having to decide how to do it, or having to connect two components that made different choices about something as simple as how to represent a string, can be frustating. As well, it's great to be in control, but that does mean that nobody is looking after you. If you're inexperienced (and sometimes, even when you're not) you can make dangerous choices and, as we like to say, shoot your foot off. Security holes and vulnerabilities are important and C++ will let you write bad code, so you need to be aware of best practices. Both Ale and Diego address these points, and you can expect to see more of that in time to come - especially if you ask for it!

Looking forward to next month's show already,

Kate

Wednesday, 27 July 2011 19:55:44 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 25 July 2011
So, how cool is this? Guy Smith-Ferrier is going to speak at the East of Toronto .NET User Group meeting in August. Why? Because he's the kind of community-oriented person who takes time out of a transatlantic family vacation to speak at a user group, that's why. And his topic sounds like science fiction, but it's real:

Mind Control Your Computer In C#

No really. This isn’t some clever session title. I’m really talking about controlling your computer with your mind. I’m not making this stuff up. This is real. Today. You put on a headset, you use a C# SDK and you control your computer with your thoughts. Yes, you are reading this right – you mind control your computer. It is a reality and it is possible today. Once you’ve gotten over your disbelief consider the applications. Applications for the physically impaired alone are a whole revolution. Not to mention the possibilities for gaming. Want to be shocked and amazed ? Come and see this session.

The meeting is set for August 24th at the Whitby main library. There's something awry with the website at the moment, and everyone who's talented enough to do anything about it is on vacation, leaving only me, but trust me, we're having a meeting and it's going to be a doozy. Guy is a great speaker - he even wrote and recorded a series of videos on how to be a great presenter. He speaks at TechEd and runs events in the UK. And it's our tremendous luck that he'll be in our neighbourhood this summer so make sure you join us to see this session!

Kate

Monday, 25 July 2011 17:38:38 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Saturday, 23 July 2011
So, you're a C++ programmer? You've written a Windows app or two in your time? Let me propose a little challenge to you. Write one. Only start with File, New and don't let Visual Studio generate any code for you. Write each line of it. Then explain it. No MFC, No ATL. That's what was asked of me a while back, and the result is a six-paper series that has finally arrived on MSDN.

I have to say I really enjoyed the simplicity of the smallest Windows program possible. I also enjoyed making it better, which included making it more of a C++ program and less of a C one. I also covered a little Direct2D, a little COM, and a little "here's some other stuff you're going to want to read." If it's been ages since you wrote a Windows program in C++, or wrote one that wasn't all covered in barnacles from frameworks and libraries you might not want to rely on for simple things, I really suggest you give this series a read - it won't take long and you can use Visual C++ Express if you like - the first chapter includes links and instructions for getting all the tools you need. Better still, if you've never written a Windows in C++, why not give it a try and let me know what you think?

Kate

ps: Never blog that you're not blogging. Never blog about why you're not blogging, no-one cares. Just blog. Right?

Saturday, 23 July 2011 00:39:47 (Eastern Daylight Time, UTC-04:00)  #    Comments [4]
# Sunday, 27 March 2011
The screencasts for restart and recovery in native and managed code went live before the associated recipe was published. Now the recipe is on Code Gallery ready for you to use. As it says there:

This recipe provides guidance and an easy way to start using these great features in your application, removing any complication of how and where to store your application data.

What’s in the box?

This Restart and Recovery recipe includes:

  • Complete source code of the recipe and its samples
  • Managed .NET assembly
  • C++ header and class files to be included in your C++ application.
  • C#, and C++ test applications
  • Documentation
Give it a try, please!

Kate

Sunday, 27 March 2011 07:21:53 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Thursday, 17 March 2011

Here's another pair of screencasts to simplify your Windows 7 development. Both cover Restart and Recovery - one is for native developers and the other for managed. As the screencast intros say:

Application Recovery and Restart (ARR) technologies enable developers to customize an application's behavior when Windows Error Reporting(WER) terminates the application due to an unrecoverable error. For example, it enables an application to perform data recovery and cleanup operations such as capturing application state and releasing resources before termination. It also allows developers to specify that WER should automatically restart an application that it has terminated.

I hope they help you do the right thing when your application blows up or the machine reboots.

Kate

Thursday, 17 March 2011 19:38:55 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Tuesday, 15 March 2011

You know I blog here a lot about Windows 7 goodies including taskbar integration. One of the questions I get pretty often is how to use tasks to communicate with the running app, such as changing your status, sending a new email, that sort of thing. I mentioned in an aside on another post that this requires launching some other application that communicates with the first instance.

If you'd like to do that, it just got a little easier with the release of a "recipe" from Microsoft that packages up this concept and lets you use it with very little extra code. As it says on the Code Gallery page for the recipe:

This Taskbar Single Instance Recipe allows developers to easily develop applications that use "Messenger Like" tasks that change the state of the currently running instance, allowing it to react to incoming state-change notifications and act accordingly.

This Recipe includes:

  • Native (C++) and managed (.NET) Source code for the Single Instance library
  • Well documented native (C++) and managed (.NET) samples
  • Documentation

To compile and run the recipe and samples the following items are required:

  • Microsoft Visual Studio 2010
  • Windows 7 – Note that only the samples require Windows 7. 

Yes, this recipe is actually two recipes - one native and one managed, and comes with whitepapers explaining how it's done. I mentioned this in my Tech Ed Europe talk on Advanced Windows 7 development and it's finally released for you to use! Enjoy!

Kate

Tuesday, 15 March 2011 19:18:48 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Sunday, 13 March 2011

Whenever new stuff appears in the Microsoft universe, native C++ developers can get to it first. That's because they can easily call Windows APIs or COM interfaces or however it's implemented. Managed developers need to wait until the new stuff gets added to the .NET Framework or to a particular managed technology, like WPF. Take taskbar integration, for example: adding tasks and destinations, getting a progress bar or icon overlay on your taskbar icon, and so on. From the very beginning you could interact with the taskbar from native code by making Windows API calls. The Code Pack is a popular managed wrapper from Microsoft that enables those interactions from managed code such as Windows Forms applications. In the early days of Windows 7, WPF developers also used the Code Pack - but now those capabilities are in WPF itself.

Does that mean that native developers get nothing new? On release day they gain the ability to call those APIs and that's that? Of course not. Native developers use frameworks and libraries to build their applications, and those frameworks and libraries in many cases are wrappers for Windows functionality. One of those is MFC and you should know that MFC has support for Windows 7 functionality.

If that's news to you, then watch my screencast on Channel 9 in which I cover jumplists and overlays with lots of demos. It's just one or two lines of code for each of these. Users expect their apps to behave like this. MFC makes it simple.

Kate

Sunday, 13 March 2011 18:58:23 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Friday, 11 March 2011

Writing samples and demos is tough. You want them to do more than say "Hello World" or draw a red square, but you want them to be simple enough that people can see the "new stuff" you're demoing (WPF, or Windows 7 taskbar integration) or multi-touch) in amongst the real business logic. It would be neat if they did something actually useful, because then you might keep it around on your machine and use it, but most things that are useful are too big to be demos.

Well here's a sample that lands in the sweet spot: Tasks.Show. You put in your tasks, things from your ToDo list, along with time estimates, and it keeps track of them and shows them to you. I like this view:

It uses touch to let you flick tasks into categories, and has taskbar integration to let you open a specific category, add a task, and so on. All the source code is available so you can see how it's done - it is a demo, after all. You can get more details and screen shots on the Windows Team Blog. Check it out!

Kate

Friday, 11 March 2011 10:31:40 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Sunday, 27 February 2011
Here's an interesting blog post. Say you use MFC and are wondering whether anything was added to it in a particular release. What tool would you use for that? How about CppDepend? If you've never used it, seeing how it provides the illustrations for this post should show you the appeal of it. Either way, you're going to learn something.

Kate

Sunday, 27 February 2011 22:11:52 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Friday, 25 February 2011
Pete Brown is a WPF guy and I've learned a lot from him. Now I get to watch him learn. Recently he wanted to write an add-in for IE and he decided to do it in C++. You can see how he struggled through it and get some tips of your own in the detailed post he wrote about the experience. I agree with the commenter who said you should only run Visual Studio as admin when you know you're going to do a step (like registration) that requires elevation, and you should run non-elevated the rest of the time, and the one who tweaked the string code to take advantage of being in C++. If you have some tweaks of your own, stop by and add a comment.

Kate

Friday, 25 February 2011 18:20:58 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Saturday, 19 February 2011

Imagine an app that you have running under Windows 7 as a desktop app. Now as much as you are enjoying the Windows 7 features it uses, you know there is some functionality there you could offer to people another way. Do you have to just start over to make it into a phone app? What if you want it in a browser? If you write the desktop part in WPF, will that be something you can use when you create the Silverlight code for the browser or phone apps? Well, check this mission statement:

Our goal was to enable seamless and easy sharing of decks among users across different computers. The idea was simple, upload the deck to the cloud, and let the user send a message to whomever the user wants to share the deck with. That message will include a link for the receiving party to click on to launch a web browser and run a Silverlight application that can “play” the shared deck. The Silverlight application dynamically downloads the shared deck and displays that single deck just as it would be displayed on the WPF application. At this point the user can launch any of the 3 games: Learning, Matching, or Memory, with the same user experience as the WPF application.

Sounds like just what you might like to do in some of your apps, doesn't it? Oh yeah, and would you like the code? And a blog post explaining the code? And a video on Channel 9?

Happy to help!

Kate

Saturday, 19 February 2011 17:53:09 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Friday, 11 February 2011
If you're a Canadian and you've been thinking of playing around with the Windows Phone Developer Tools, now would be a great time to get started. Microsoft Canada is running something they call the Great Canadian Apportunity, and the grand prize is $10,000. There are plenty of other prizes, too - Xboxen, Kinects, passes to Mesh and more. Joey has some of the details on his blog, and you can check out the main site to get started!




It's on till April 30th. You must be a resident of Canada and over 18 (younger developers need parental permission), not work for Microsoft etc.

Kate
Friday, 11 February 2011 11:57:00 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Wednesday, 09 February 2011
At the end of January, the busy bees at All-in-One (OK, they're not bees, they're Microsoft engineers) released even more samples including Azure, setting a hotkey that Windows will route to your app even if it doesn't have focus, detecting if the machine has been locked (with Windows+L) or unlocked, downloading multiple files with ftp, and many more. As always these are in VB, C#, and almost all of them are also in native C++.

In fact, there are just so darn many samples right now that it's getting harder to find the one you want. What a great problem to have! So they've released a sample browser to help you search and browse and generally get your hands on the code that will solve your problem and move you on to the next part of your day.

What are you waiting for? Go get it!

Kate

Wednesday, 09 February 2011 11:41:05 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Tuesday, 01 February 2011

Like a lot of folks, I have a Windows Phone and I enjoy it a lot. I've filled it up with (free) games and they pass the time quickly when I have to wait in line or otherwise have an empty minute or two. C++ MVP Marius Bancila had the same experience, but unlike me he responded by writing a version of the game in MFC so he could play it on his own PC as well as on a phone.

You can get the source from his blog post, and another post and its comments (mostly in Romanian - Bing Translate is your friend there) have a nice discussion of performance issues. After all, whenever two or more C++ programmers gather together, someone is going to have an opinion about performance. Take a look for yourself!

Kate

Tuesday, 01 February 2011 18:45:11 (Eastern Standard Time, UTC-05:00)  #    Comments [2]
# Sunday, 30 January 2011
There are some really amazing WPF applications out there, and many of them are extraordinarily beautiful. I am not very good at making beautiful applications, though the WPF themes help avoid the "grey boxes on a grey background" look I usually achieve. Now if you want to develop an application that presents a whole new paradigm, there should be someone on your team who really "gets" user experience and how colours work together and so on. But what if you just want to make the same sort of apps you've always made, using the latest technology instead of something a little older? You want to think the way you thought when you were doing Windows Forms, for example, and use the same tools, but end up with a WPF application or a Silverlight application.

Well, Pete Brown has an interesting blog post speaking directly to this kind of developer. He makes the case that for these kinds of applications, you don't need to add a designer to the team. Plenty of screenshots to support his theory - see what you think. I think I agree, myself. Because the post was last year, there's lots of interesting conversation happening in the comments, too, so be sure to read those while you're there.

Kate

Sunday, 30 January 2011 18:48:22 (Eastern Standard Time, UTC-05:00)  #    Comments [2]
# Monday, 24 January 2011

Recently the East of Toronto .NET User Group had a Windows Phone 7 presentation (by Atley Hunter) that was very well done, and well attended. (He's blogged about it and included some helpful links, so you should be sure to read his post too.) You would never have known it was his first presentation - he was calm and confident and knew what he was talking about.

At the meeting I met Ashish Kaila, who is working on a toolkit for WPF developers and a Windows Phone 7 library. He showed me the docking panes and some other fun functionality.

To me this is a huge benefit of user group meetings: in addition to the presentations, usually as good as any you would see at a paying conference, you also can meet fellow attendees. I hadn't heard of these tools before, and they could save you a lot of time and effort. The next best thing to coming to meetings, I suppose, is reading blog posts about meetings. Here's where you can learn more about Ashish and his products:

If you're not going to your local user group meetings, why on earth not? We don't bite, honestly, and you have so much to learn and gain from being there. See you next time!

Kate

Monday, 24 January 2011 18:17:48 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Saturday, 08 January 2011
The voting is open at the Tech Ed site for you to express your preferences on possible sessions. My experience indicates that submissions not shown here can still end up being sessions, and certainly not all submissions shown here will be accepted, but obviously a strong interest from the public in a session will increase its chances of acceptance. With that in mind I thought I'd show you the results of a few searches.

First, C++:

These have orange plusses on them because I've added them to my preferences. You'll see a grey square you can click to add them to yours.

Next, Windows 7 development. Let's try Code Pack:

And finally the intersection of WPF and Windows 7 searches (I had to crop the shot by hand, there's no handy search that returns just these):


If you want to be sure that Tech Ed USA offers sessions you'd like to attend, the power is in your hands. (Disclaimer: some - but not all - of the submissions I am showing you here are my own.) Make your feelings known. And see you in Atlanta (I hope) in May!

Kate
Saturday, 08 January 2011 10:14:11 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Thursday, 06 January 2011
Here's a super neat tip from Mike Ormond - he shows how to track reviews for a Windows Phone 7 app. My guess is you would mostly want to track your own apps, or possibly the competition. You use a free app that tracks reviews, of course. Written by Sergei Golubev, a former Microsoft employee, it fills an important niche and if you wrote an app and put it in the marketplace, you want this app. And it will apparently only be free for a limited time, so don't dawdle!

Kate

Thursday, 06 January 2011 20:52:58 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Sunday, 02 January 2011
The sessions have been selected for DevTeach and I was pleased to see one of mine accepted. I'll do my "Advanced Windows 7 Programming" session:

Windows 7 development in managed code can be very simple, especially for those using the Windows API Code Pack. But there's more! Your integration with Windows 7 doesn't have to be limited to simple interactions with the new API. This session goes beyond the simple and into aspects of Windows 7 development that have in the past been left for you to explore on your own. See how to create a jumplist with a task that delivers a command to your application, as Messenger and Outlook do. Explore a simple and powerful recipe for connecting to Restart and Recovery with minimal effort. Discover how Trigger Started Services can reduce your power footprint while giving your users better responsiveness. Explore all that Libraries has to offer beyond "File Open" and why using a library is a better approach than having a user setting for "save directory."

This is all managed code, C# and VB. The conference is after Tech Ed US this year, (Tech Ed is May 16-19, DevTeach is May 30 - June 3) so rather than you seeing a Tech Ed talk before the Tech Ed attendees do (my usual DevTeach offer) you can see a Tech Ed talk after it's been refined a bit by giving it to a Tech Ed audience. Even better!

Montreal in the early summer is a beautiful place and there's a great crop of speakers coming! Many are friends, all are top-notch.
Sign up now for only $899 Canadian for the full 3 days! That's less than half the price of Tech Ed, and you travel only to Montreal. If you're a developer, give this conference serious attention. Of course, if you can do both Tech Ed and DevTeach, you will gain maximum benefit and a chance to learn all that is current in our field. That's my May 2011 plan.

Kate

Sunday, 02 January 2011 11:00:29 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Saturday, 25 December 2010

A while back, I blogged about an empty jumplist for Windows Explorer and how I fixed it. I've come across another no-jumplist issue, this time in a blog post by Rick Strahl. This app never gets a jumplist, and can't be pinned to the taskbar or start menu either. Believe it or not, the reason is the executable name. I've seen all sorts of people running into issues with UAC elevation being triggered by certain executable names, but this is the first I've heard of the jumplist being taken away because of it.

Rick looked into it, found the documentation, even found the Registry key and the list of "magic" words in your executable name (Documentation;Help;Install;More Info;Readme;Read me;Read First;Setup;Support;What's New;Remove) that cause the problem. Nice work! Your options, if you find yourself here, are to rename your exe, or (if, like Rick, you have a lot of stuff depending on that name thanks to COM etc) to change the Registry key so that whatever string you're using isn't the problem.

Kate

Saturday, 25 December 2010 19:40:06 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Friday, 17 December 2010
It's over 200 pages long, and over four years old, but I just heard about it recently. A long, dense discussion of whether certain C++ features (templates, namespaces, RTTI, etc) have a performance cost, and how to write code that incurs as little performance cost as possible. Its official name: ISO/IEC TR 18015:2006(E)  Technical Report on C++ Performance. In addition to runtime performance, it also touches on compile slowness, the "brittle base class" problem, and the different performance characteristics of various STL collections and algorithms. If you care about the speed of your C++ code, you should read this, even if some of it is already familiar to you.

I'd like to give some kind of "Restrained Understatement" award to this sentence:

Template meta-programming  and  expression  templates  are  not  techniques  for novice programmers, but an advanced practitioner can use them to good effect.
To be clear about where these authors are placing the "advanced" bar, I don't use meta-programming, I consider it too advanced for me. And I have 20+ years of C++!

The whole report is platform independent (though embedded systems are discussed separately) and compiler independent, too. I wish it were updated for C++0x, but I guess that will have to wait until C++0x is settled :-). There's a 14 page bibliography, and you would do well to read many of them, though my source for the link winkily pointed out another possible paper. That one is old enough to get a driver's license, but I think you might enjoy reading it anyway. As the introduction begins:

It is important to understand how your programming language is implemented. Such knowledge dispels the fear and wonder of “What on earth is the compiler doing here?”; imparts confidence to use the new features; and provides insight when debugging and learning other language features. It also gives a feel for the relative costs of different coding choices that is necessary to write the most efficient code day to day.
It's only 23 pages long, and concludes:
... we have considered many of the significant C++ run-time implementation issues. We see that some wonderful language features are almost free, and others can incur significant overhead. These implementation mechanisms are applied quietly for you, behind the curtains, so to speak, and it is often hard to tell what a piece of code costs when looking at it in isolation. The frugal coder is well advised to study the generated native code from time to time and question whether use of this or that particularly cool language feature is worth its overhead.
Good advice, in 1994 or 2010.

Kate

Friday, 17 December 2010 11:34:31 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Wednesday, 15 December 2010
Those hardworking elves at the All in One Code Framework keep releasing more samples. They've added some ASP.NET samples (including a very interesting "get location from IP address" one) and some Windows 7 shell extensions, specifically a preview handler. Ah, the good old .recipe file type - an old friend of mine. But as always the samples are going to save you hours and hours of time.

Here's an index to all the samples for you to explore. You might be a little astonished if you haven't checked it out before, they have:
Slowly but surely the samples are accumulating to live up to the name. This should be the first place you look when you want to take on a new task. Generally speaking, everything is available in native C++, C#, and VB (the exceptions are things you can't do in native C++, like ASP.NET) with the language included in the sample name (look at CppWin7TriggerStartService, CSWin7TriggerStartService, and VBWin7TriggerStartService for example.) And remember, if you don't see what you want - you can ask for it!

Kate

Wednesday, 15 December 2010 10:57:52 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Monday, 13 December 2010
At the moment these are announced in the USA only. A full day of client development training for Windows 7, including IE9 and SL OOB. They say:

We will look at application compatibility and transitioning your applications to Windows 7, integrating with the Windows taskbar, developing for IE9, utilizing the cool functionality in the Sensors and Location Platform so that your application better responds to its current environment, leveraging the multitouch capabilities (especially in kiosk scenarios), and creating Silverlight 4 out of browser applications. This event is a unique opportunity, partnering classroom learning with hands-on-labs and leveraging experts to advise you so we can help you “win” with Windows 7.

You bring your own laptop with VS 2010, the Code Pack, the Windows 7 Training Kit, IE9, and Silverlight 4 installed (there are links on the bootcamp page) and do the labs as you go. The training is all free and you'll get hands on experience right while you're there. (It doesn't say so, but my guess is this is all managed code and that the labs are in both C# and VB.)

And if there isn't one near you, you can help arrange one! It's all packaged as an event-in-a-box so all you need is a trainer who'll agree to deliver it and a room to hold it in. But check the dates and locations first -- there are over a dozen sessions scheduled already, so perhaps there's one near you.

Kate

Monday, 13 December 2010 10:40:52 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Tuesday, 07 December 2010
Windows 7 developers have tons of cool stuff at their (our) fingertips. There's taskbar integration, the new sensors and location platform, access to devices, and more. Silverlight developers, on the other hand, have so far not been able to get to all of that. Well, now you can! The Native Extensions for Microsoft Silverlight leverages the ability of Silverlight to do COM integration, and puts COM Automation around a collection of Windows 7 functionality so that Silverlight developers can use it. How cool is that?

Because it's on the Code Gallery, you know it's from Microsoft. The first release, Dec 2nd, covers:
  • Windows Sensor API - Integrate sensors:  Accelerometers, Light sensors, compasses, gyroscopes etc. 
  • Microsoft Speech API - Text to Speech (Speech Synthesis) and Speech to Text (Speech Recognition) 
  • Windows Portable Devices API - Enumerate and access content from connected portable devices (cameras, phones, music players, scanners etc.) 
  • Windows 7 Taskbar Integration - Jump lists, overlay icons, overlay progress display, Thumbnail toolbars etc. 
  • Webcam Local Encoding and Window Capture - Encode webcam capture into mp4 (H.264/AAC-LC) media - Capture user interface interaction as video 
  • Window Message Interception - Intercept and act on Window messages sent to the Silverlight OOB host window

This certainly gives Silverlight developers some interesting options! There are some samples that come with the library to show you what you can do, too. You might also be interested in Maor David's blog entry about the library.

Tuesday, 07 December 2010 12:33:24 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Sunday, 05 December 2010
I finally caught up some of my PDC-watching and really enjoyed this Herb Sutter talk on C++0x lambdas. I'm well known to be a huge lambda fan. Herb made this talk enjoyable for me by bringing his personality to the table. He showed aspects of C++ that are not exactly elegant, and how using lambdas can make some much neater code possible. Sure, lambdas are "just" syntactic sugar, but they add up to a new way of thinking about writing applications in C++. Well worth watching.

One warning though - I generally download videos and watch them at 1.5 or double speed. I highly doubt you want to do that with this talk - it's dense!

Kate

Sunday, 05 December 2010 11:59:12 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Friday, 03 December 2010
Kenny Kerr is back in Canada and back writing about C++. Like a lot of us these days, he's looking at a stripped-down, more modern way to write Windows applications in C++ - no MFC, no ATL, no WTL. Plenty of STL and new C++0x features. I like it! Here's the first installment - stay tuned for the rest of them!

Kate

Friday, 03 December 2010 11:53:59 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Monday, 29 November 2010
People love Apple hardware. They pay dearly for it because they love it so much. And apparently, the paying continues after the hardware is bought. This report says that Windows Phone 7 Apps cost, on average, half what iPhone apps do. You could argue that the higher price means that the platform is more popular, or the apps are better - but old-school Windows Mobile was higher than iPhone, so any explanation needs to be a little more complex than a quick fanboi reaction would be.

So far I haven't installed any paid apps on my Windows Phone. I've got a motley collection of free games, Twitter, a not-very-good Messenger client that I can get by with, and of course a flashlight and a level :-). I love the way it syncs with my Outlook mail and calendar, and I'm getting used to the Zune software for syncing videos and pictures. I've had a number of pleasant surprises and no unpleasant ones, which is itself a surprise, because I am real a control freak when it comes to syncing. Getting on Wi-Fi is dreamily easy - I actually have no SIM in this phone, and use it on Wi-Fi only, and that's turning out to be quite workable, believe it or not.

Kate

Monday, 29 November 2010 14:28:38 (Eastern Standard Time, UTC-05:00)  #    Comments [2]
# Tuesday, 23 November 2010
Windows 7 introduced a lot of new ways for an application to give information to users. There's a thumbnail which is usually a miniaturized version of the whole application, and possible overlays of icons onto your taskbar icon (like how Outlook shows you have new messages, or Twitter shows there are new tweets) and progress bars under your taskbar icon. There are also cool ways for the user to give direction to or about the application. For example, you can right-click the taskbar to bring up a jumplist and launch another copy of the application, or another application.

Right from the beginning, some applications pushed that architecture a bit to use the jumplist to communicate with the application itself. (This requires launching some other application that communicates with the first instance.) For example, Outlook has this jumplist:



But this isn't the only way to send a command to an application from the taskbar, and it's not always the right one. Tasks are the right choice if you're willing to take on the extra work to code them up, and furthermore if they make sense even when the app isn't running yet. So in this example, Outlook, if I want to send a new message then I want to send a new message, even if that means needing to launch Outlook to do so. But what about Messenger? Here's how it used to look:



Does that make sense when Messenger isn't even running? To me, it doesn't. Here's how Messenger handles that now. There's a much smaller jumplist:



How do you set your status? With thumbnail toolbar buttons:



Sweet! Much easier to code, easy for the users to understand, and they don't clutter up the place when the app is not running. Nice decision. And keep this in mind for your own Windows 7 applications.

Kate
Tuesday, 23 November 2010 15:38:40 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Sunday, 21 November 2010

Opinions seem to vary a little on the birthday of Windows. Charles Petzold says the files are dated November 15th, 1985. Ray Ozzie says it's the 20th. ComputerWorld says the 20th also.

Whatever you think the date should be, you really need to read the article by Charles. He did a keynote "selling" Windows 1.0 (a product almost none of us used) as a solution to the problems of the day:

Will it spoil the gentle humour throughout the piece, written 5 years ago, if I show you the output of his demo? I think not:



He concludes:

And that is Windows, and I don’t know about you, but after this event is over, I’m going home and writing me some Windows apps.

I'm with you, man.

Kate
Sunday, 21 November 2010 16:57:18 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Friday, 19 November 2010
One of my track chairs at Tech Ed Europe was Christian Binder. Christian always makes sure there is C++ content at Tech Ed Europe and this year he sat down with Ale Contenti to talk about Microsoft's commitment to C++, which is stronger than ever right now. You might be a little surprised to hear C++ called "the innovation language" but c'mon - if a new API is added to Windows, you can just use it right away from C++, but from some other languages you might have to wait for something to be released that will help you, right?

Christian blogged about the interview in German, but the interview itself is in English. Worth a listen!

Kate

Friday, 19 November 2010 16:48:05 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Wednesday, 17 November 2010
I like to say "If you have a Windows application, it should be a Windows 7 application." By that I mean that you should take advantage of some of the features Windows 7 offers to your apps, and you should give the user the experiences they are coming to expect on Windows 7. You should have a sensible and usable jumplist. If you have a progress bar, you should add ONE WHOLE LINE OF CODE to your app so that progress bar is also overlayed on the taskbar. You should toss your intrusive message boxes and toasts and system tray balloons and use taskbar icon overlays on Windows 7, because that's how users expect to be notified about non emergencies. You should take advantage of restart and recovery, and of being notified about events like going on battery or AC power, or coming online or offline, instead of expensively polling for them. I've written a lot of blog posts and given a lot of presentations on how to do some of those things.

Now, someone is offering you a reward for putting those capabilities into your Windows applications. You can be featured on CNET Downloads if you just submit an application that uses at least one of the 13 features they identify. If your app is ready to go, submit it today! If not, why not?

Kate

Wednesday, 17 November 2010 16:43:15 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Monday, 15 November 2010

Wondering what's next in Silverlight? Want to become a Silverlight developer? Want to become a better Silverlight developer? Then you should watch the Silverlight Firestarter on Dec 2nd.

Now there are three ways you can watch this event:

  • In person, in Redmond. Register.
  • Online, wherever you like. Register.
  • Online, with the company of fellow programmers to discuss what you're seeing. I think this is better than online by yourself, so I'm excited that the East of Toronto .NET Users Group is hosting a local Firestarter. Register.

What are they covering? Just about everything:

  • The future of Silverlight
  • Data Binding Strategies with Silverlight and WP7
  • Building Compelling Apps with WCF using REST and LINQ
  • Building Feature Rich Business Apps Today with RIA Services
  • MVVM: Why and How? Tips and Patterns using MVVM and Service Patterns with Silverlight and WP7
  • Tips and Tricks for a Great Installation Experience
  • Tune Your Application: Profiling and Performance Tips 
  • Performance Tips for Silverlight Windows Phone 7

It's running 11:30am - 7:30 pm in Ajax on Thursday Dec 2nd, so you'll need to arrange time off work. Considering all you'll learn about Silverlight, it's well worth the time. Be there!

Kate

Monday, 15 November 2010 12:11:28 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Sunday, 07 November 2010
Let's say you've written a great client (that is, not web) application. Perhaps you've added some specific features to make it great on Windows 7. Certainly you've made sure it runs on Windows 7. Or perhaps on Windows Server 2008 R2. Or maybe your app runs on Windows Azure, or Windows Phone 7. Good work! You put time and effort into confirming that your app fits your chosen platform. Now, would you like to be able to prove it with a suite of automated tests and a logo that shows you passed them? Of course you would.

So head on over to Microsoft Platform Ready and take a look around. You'll find training resources to help you build applications that target Windows 7, Windows Server 2008 R2, and Windows Azure. You can test your app and get logos like Powered by Windows Azure and Works with Windows Server 2008 R2.You can even showcase your application in a marketplace, and take advantage of special offers like extended trials of developer tools from various partners.

This is an obvious step for anyone building a client application, on any part of the Microsoft platform. Investigate, join, reap the rewards :-).

Kate

Sunday, 07 November 2010 07:57:05 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Friday, 05 November 2010

You may have noticed that the fall tour I'm doing features morning talks that go till about 11:30, and evening talks that start at 6pm. I've decided that between those two, I'll spend the afternoon in a coffee shop and host an "on the road coffee and code". As I explain on the Coffee and Code page I keep for this purpose, this is really informal. Just stop by, say hi, we can talk about whatever you like. If you were at the morning session, you might want to just walk with me from the venue to the coffee shop and continue the conversation. Or if you're coming to the evening session, you might want to try to find me during the afternoon to ask something specific, then head to the venue together. Or maybe you have a topic to discuss that has nothing to do with Building Awesome Windows 7 Applications in managed code: a C++ question, or an extending Visual Studio 2010 question, or whatever. That's great, and the Coffee and Code format is just the place for us to have that chat.

Levitating coffee cup from microsoft.ca/office  Ancient laptop from microsoft.ca/office

If you live or work near the venues for the fall tour, I'd appreciate your suggestions (by email or twitter) for where to hold these. Obviously we need wifi, power, and a table we can hog for most of the day. My default choice is Starbucks, but if you know a better one that I can easily walk to, please tell me about it. Once I've chosen the location I can finalize the times.

Looking forward to meeting everyone,

Kate

Friday, 05 November 2010 11:10:46 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Wednesday, 03 November 2010

Right after Tech Ed I will embark on a mini-tour of three Canadian cities, while Richard Campbell does two others, to be called the "Building Awesome Apps for Windows 7 Community Tour". The details are on the Canadian Developers blog. First, the dates, times, and register links:

Date City Time  
Thursday, Nov 18 Montréal 9 AM to 11:30 AM Register
Thursday, Nov 18 Montréal 6 PM to 8:30 PM Register
Wednesday, Nov 24 Mississauga 9 AM to 11:30 AM Register
Wednesday, Nov 24 Mississauga 6 PM to 8:30 PM Register
Thursday, Dec 2 Ottawa 9 AM to 11:30 AM Register
Thursday, Dec 2 Ottawa 6 PM to 8:30 PM Register
Thursday, Dec 2 Calgary 6 PM to 8:30 PM Register
Friday, Dec 3 Calgary 9 AM to 11:30 AM Register
Tuesday, Dec 7 Vancouver 9 AM to 11:30 AM Register
Tuesday, Dec 7 Vancouver 6 PM to 8:30 PM Register

Next, descriptions - what are we going to do? We're going to make you better Windows 7 developers, that's what. We'll do some Code Pack coverage (sure, jumplists, taskbar stuff, but beyond that - some of the material from my Advanced Windows 7 Development at Tech Ed Europe will get its Canadian debut) and then dive into touch development. There are abstracts in John's blog post.

If you can't get to one of those cities on the appropriate day, never fear - there will be a webcast, too. Please spread the word about the webcast throughout North America, everyone's welcome! 

I'm looking forward to this tremendously!

Kate

Wednesday, 03 November 2010 12:10:21 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Monday, 01 November 2010

Here's something that happens to me a lot. I'm working on a project that is mostly Technology A, but I need a little Technology B. I want a sample or two to show me what it can do. I search the web, but often find mostly things written by people who don't know what they're doing and are posting their (possibly flawed) code into question-and-answer forums. I search MSDN, but often the newest technologies don't have their samples yet. I also remember to check if the All-in-One Framework people (I blogged about their coding standards document earlier) have anything. And if I still get nowhere I start asking people I know if they have one.

Well, now those helpful folks at All-in-One are kicking it up a notch. And remember, they cover all technologies and languages related to Microsoft tools. (Want to know more about them? Here's a fun video.)

And this goes back to one of my earliest blog posts - what you want may be what I need to give. Imagine it's your job to decide what samples to write. How are you ever going to find out what developers out in the big wide world want samples of? You could come up with a great idea and then find out people already had all the samples they needed for that. So that person wants ideas for samples. And here you are needing a sample. See how that works?

Just visit the wiki page and follow their instructions. It's a tad more complex than "shoot me an email and tell me what you need" and for good reason. Give it a whirl if there's something you need!

Kate

Monday, 01 November 2010 10:40:23 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Saturday, 30 October 2010
Think you can write a TFS client for Windows Phone 7? Think you can do it by the end of November? Would you like a free MSDN subscription with Visual Studio Ultimate worth about $15,000 Canadian? Then you need to read Barry Gervin's post where he offers you not just that, but several (probably more valuable) introductions and blog mentions.

Now, you don't need to write all of Team Explorer. Barry suggests build status, dashboards, work item editing, and of course connecting to what the phone knows about People on the team. And he wants to hear from those who are trying, so he can help make it happen.

Interested? Plan your code, email Barry, write your code, and in the end email him the code and maybe a video demo by November 30th. Easy, right?

Kate

Saturday, 30 October 2010 11:13:14 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Sunday, 24 October 2010
Hilo, the reference application project from the C++ team that doesn't use MFC or the .NET Framework, is back with another sample. You've seen nice graphics in the way photos are treated, a ribbon UI, and now you can see social media integration with Flickr uploads, touch support, and Windows 7 jumplist support. And remember, all the code is available for you to explore and learn from.



Take a look and see what you think. If you want to know how to build a modern UI and a modern set of functionalities (like web services) then this is the reference application for you.

Kate
Sunday, 24 October 2010 14:23:59 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 18 October 2010

Jeff Blankenburg has produced a great quantity of blog posts about developing for Windows Phone 7. Now he's supplementing that with an all-in-one resource page that links out to a ton of great material in addition to his own. Oh I know, you might not need to see the TV ads to learn how to develop for the thing, but I appreciate the link anyway. If you're doing phone work, or thinking about it, this list is for you.

Kate

Monday, 18 October 2010 15:58:45 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Saturday, 16 October 2010
Jennifer Marsman has built a very nice list of Windows 7 developer resources. Of course, she had me at Code Pack (the very first item she lists as a matter of fact), but she carries on, drilling into both native and managed scenarios, covering libraries, SDKs, training materials, UX guidelines, samples, blogs - even Twitter handles!

There is a LOT of material out there and it's a little bit fragmented. This is a great post to help you find your way around. Remember, if you have a Windows app, it should be a Windows 7 app!

Kate

Saturday, 16 October 2010 13:07:42 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Tuesday, 12 October 2010

I'm teaching OO design and UML again this term, and one of the things I emphasize to the class is the dangers of coupling. (Get your mind out of the gutter, I mean classes with dependencies on each other.) It's not about calling methods of each other necessarily; it's more about if-I-change-this-one, I'll-have-to-change-this-one-too. Changes that ripple through a system are expensive and dangerous.

When I am helping clients with interop, they are often surprised to learn how entire applications and libraries can depend on each other without ever calling each other's code. For example, App A writes a record to a database table. Service B checks the table regularly for new records (or records with a 0 in the Handled column, or whatever) and calls a web service (or whatever.) Those applications are now coupled - if a change in one necessitates a change in the format of that table (or its name, etc) then the other must be changed too. Thinking ahead and doing all you can to reduce this kind of coupling is part of the challenge of doing good application integration, even if there are no interop calls in the solution.

And then there's performance. So often left until last, it provides another consideration that you should ideally have in mind all the way along. And as Rico Mariani points out, it also couples applications and libraries you may have thought were independent:

Two subsystems that both (loosely) use 2/3 of the L2 cache are going to use 4/3 of a cache... that’s not good. There may be no lines between them in the architecture diagram but they are going to destroy each others ability to work.

Sound advice as always. Please read the post, and keep one more "don't forget" floating around as you design and architect your systems and solutions.

Kate

Tuesday, 12 October 2010 10:58:52 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Wednesday, 06 October 2010

The Tech Ed Europe Session Catalog has been updated with my third talk. In the order they're happening, I have:

WCL322 - The Windows API Code Pack: Add Windows 7 Features to Your Application

DEV311 - Modern Programming with C++0x in Microsoft Visual C++ 2010

WCL329 - Advanced Programming Patterns for Windows 7

The first two I blogged earlier, but the third is new. Here's the abstract:

Windows 7 development in managed code can be very simple, especially for those using the Windows API Code Pack. But your integration with Windows 7 doesn't have to be limited to simple interactions with the new API. This session goes beyond the simple into aspects of Windows 7 development that have, in the past, been left for you to explore on your own. See how to create a jump list with a task that delivers a command to your application, as Messenger and Outlook do. Explore a simple and powerful recipe for connecting to Restart and Recovery, with minimal effort. Discover how Trigger Started Services can reduce your power footprint, while giving your users better responsiveness. Explore all that Libraries has to offer beyond "File Open", and learn why using a library is a better approach than having a user setting for "save directory."

It's going to be a great week!

Kate

PS: About the fourth item you might see under my name ... stay tuned! :-)

Wednesday, 06 October 2010 17:38:21 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 04 October 2010

I started paying attention to "app compat" around the time Vista was in beta. It stands for Application Compatibility and refers to all the various techniques for ensuring that an application continues to work when it's moved to a new environment, such as from XP to Vista or to Windows 7. Some of these techniques involve changing the source code of the application and rebuilding it, but others don't. And paradoxically, in order to be good at those no-writing-code techniques it helps if you're really a good developer. It really helps if you have strong skills in areas that the .NET Framework generally hides away or abstracts from you.

There are folks whose job it is to solve app compat problems. It's the kind of job that really appeals to me, where you aren't exactly sure how things are going to go each day when you get up, and you think on your feet and react to what you find. And now there's an opening to be such a person if that interests you. Aaron Margosis writes:

The job is basically to figure out why applications that are important to the customer and that work on earlier versions of Windows (typically running as admin) no longer work on Windows 7, and then to get the apps to work correctly without reducing security posture and (typically) without seeing or touching source code. Don’t worry – we will teach you the tricks.If you enjoy problem solving on the Windows platform, you will love this job.

Interested? Have some experience writing Windows apps in native C++ or C? Know a little about how Windows works? Think that being handed unknown problems and asked to fix them is more fun than a regular job? Then read the blog post and apply!

Kate

Monday, 04 October 2010 17:29:10 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Saturday, 02 October 2010
As a Canadian RD, MVP, speaker, and general involved-in-the-developer-community-person, I interact a lot with the nice folks at Microsoft Canada. It's not unusual for Canadians to be transferred to Redmond to work at "the mother ship" and I tend to keep an eye on them in their new roles and watch what they're up to. That's even more likely when they go to an area that interests me, as Mark Relph did in the summer of 2009.

He appeared recently on Dot Net Rocks to talk about developing for Windows and I really enjoyed listening to the episode. I'm not the only one keeping an eye out, obviously, since John Bristowe blogged a nice summary of the episode with helpful links. Be sure to read that, then listen to the episode, then come on back for the links.

Kate

Saturday, 02 October 2010 17:20:01 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Thursday, 30 September 2010
By now I'm quite addicted to jumplists. When I want to open a PowerPoint deck or a Word document, and I have another one of those open, I just right-click that instance, spot my document among the recent documents, and click it to open what I want. It frees me from remembering exactly where documents are, or opening folders just to open documents they contain, and I like it a lot. I also like the tasks lists that more and more applications are adding, like these:

But older apps have so much less to offer:

What if you could add tasks to the jumplist of any application, without needing access to the source code? That's what Jumplist Extender does. There's a nice review on How To Geek that demonstrates adding tasks to the calculator that comes with Windows.

Neat, isn't it? Get your own copy and have some fun.

Kate

Thursday, 30 September 2010 16:13:56 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Tuesday, 28 September 2010

I love this image:

I know this is true because in my role as friends-and-family help desk, I get people to read the error messages and then I repeat whatever they just told me and then they are like "oh, I get it! Thanks! I'm glad I know someone who understands these darn computers!" This works over the phone when I can't even see the message.

Now why am I mentioning this, besides the fact I love this dialog? Because it comes from a lovely blog entry by Chris Jackson on why app compat problems can't be fixed by talking to the user about them. You slave over a lovely dialog with a button which might as well say CLICK HERE TO GET A VERSION THAT DOESN'T HAVE THIS PROBLEM or a checkbox that might as well say CHECK THIS IF YOU DON'T THINK ITS A PROBLEM AND ARE SICK OF BEING REMINDED but instead the user clicks JUST THIS ONCE I WANT TO USE THE OLD ONE BUT BE SURE TO TELL ME ALL THIS AGAIN NEXT TIME. 

Is there a solution? I don't know. But you need to know people are like this.

Kate

Tuesday, 28 September 2010 14:36:19 (Eastern Daylight Time, UTC-04:00)  #    Comments [1]
# Sunday, 26 September 2010
The high levels of the Pluralsight On-Demand! subscriptions let you download the courses to your mobile device - perfect for learning while you're on a commuter train or bus, or other places away from your laptop. Check this video of a prototype of the experience on a Windows 7 phone. Looks great!

Kate

Sunday, 26 September 2010 16:32:01 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 20 September 2010
This release actually slipped out at the end of August with little fanfare. But you really should check in to it. First, if you're already a Code Pack user, you'll want the update for the bugfixes and related tweaks. If you're one of the people who looks at the source code to this useful library, for example for an interop reference, you're going to find it much improved. One really obvious thing is that all the samples are now happy to convert to VS 2010 which had been an issue for me with 1.0.1.

As well there are three new capabilities: Shell Object Watcher, Preview Handlers, and Thumbnail Handlers. Shell extensions used to be offlimits from managed code because they run in process with either the shell or whatever process launched them (which could be anybody's app that uses the Common File Dialogs) and you were forbidden (but not prevented) from using managed code in that situation. The issue was that if the launching process was already managed code and it had a different CLR loaded, then weird things would happen when your managed code wanted your own CLR. But now that restriction is lifted, so you can write preview handlers (which are out of process, so you were allowed to write them before) and thumbnail handlers (which are in process and therefore were native code only before) for your own file types. The Code Pack makes that pretty simple, all things considered.

Download it, install it, and if you have issues someone is reading and responding on the discussions tab, so please join the conversation.

Kate

Monday, 20 September 2010 13:59:31 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Thursday, 16 September 2010

It took a while for the session catalog to update online, but it's official now:

DEV311 - Modern Programming with C++0x in Microsoft Visual C++ 2010

Session Type: Breakout Session
Track: Developer Tools, Languages & Frameworks
Speaker(s): Kate Gregory
Why wait for the C++ committee to finish the specification when you can enjoy much of the power of C++0x today! C++0x, the next C++ standard, is almost upon us and it contains the most important updates to the language since the mid-90s. It even accepts the existence of multiple threads for the first time in the history of the language. Needless to say, these new features bring more expressiveness and power to the native C++ developer. Visual Studio 2010 has added support for some of these key features in order to enable these modern programming techniques. This session clarifies what features are in Visual C++ 2010 and what is yet to come. It illustrates how new constructs such as lambda expressions enable better use of existing libraries and how your code can be simpler, safer and faster all at the same time. If you are itching to show off how C++ is one of the coolest languages on the planet, this talk is for you!

WCL322 - The Windows API Code Pack: Add Windows 7 Features to Your Application

Session Type: Breakout Session
Track: Windows Client
Speaker(s):Kate Gregory
Accessing new Windows 7 features is a challenge from managed (.NET) code. The level of interoperability required is out of reach for many developers. The Windows API Code Pack for the Microsoft .NET Framework is a sample library you can use in your own projects today that provides access to new user interface features (taskbar jumplists, libraries, sensor platform and more) as well as "behind the scenes" features that make your applications more aware and responsive (restart and recovery, power management and more.) Discover a shortcut to Windows 7 development for Microsoft Visual Basic and Visual C# programmers and get started today.

I've done talks with these titles and abstracts before, but I'm not repeating those this time. I'm rejigging the demos pretty substantially and generally rewriting the talks. Register now, and I hope to see you there!

Kate

Thursday, 16 September 2010 11:19:56 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Tuesday, 14 September 2010

I love speaking at DevTeach. It's a must-do conference for a lot of A-list speakers and it's always fun and informative. I've blogged about it a lot already. Now Jean Rene has released the session videos online. So if you didn't get out to see us, you can still watch - how cool is that?

Scroll down the page till you see this:

Click on the title to watch the video, and on the Material link to get the powerpoints. (I recommend you watch these in the reverse order than they are shown - first Lighting Up, then Code Pack. Enjoy!

Kate

Tuesday, 14 September 2010 07:25:50 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Sunday, 15 August 2010
I'm collecting link on Windows Phone 7 topics and now is as good a time as any to blog some of them:
Plenty of material no matter how you prefer to learn. Why not get started?

Kate

Sunday, 15 August 2010 10:01:48 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Friday, 13 August 2010
I'm curious about Windows Phone 7, and I've been playing around a bit with the development tools. So when I read that Joey deVilla was holding another of his semi-regular Coffee and Code sessions in downtown Toronto, and bringing his phone, I made the last minute decision to pop down there and join them. I'm really glad I did.

A steady stream of people stopped by, mostly just to look at the phone, but a few to deploy their code onto it and see it in live action. There were technical conversations, and some less technical, and a general good time. Joey's blogged about it (with pictures) and is looking for folks who think these would be fun where they live. Let him know if you would participate.

Kate

Friday, 13 August 2010 09:45:11 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 26 July 2010

The latest refresh of the Windows Phone 7 Tools is now available! Combined with Visual Studio 2010 (any edition, you don't need Express any more, though if that's what you have it will work) you can create apps in no time flat and run them on the emulator. I couldn't resist:

If you've ever done a WPF or Silverlight app, you can do Hello World in a matter of minutes. I put the picture in there just so I could say I had edited the XAML beyond putting my own name in an attribute. If you'd like to do some serious work, there are all kinds of training resource links on Yochay's blog. Don Burnett has some interesting thoughts on why Blend gives you power and productivity for Windows Phone 7 development and how there's just nothing like it for iPhone development.

I have some fun ideas I want to try that will take a little more than 5 minutes, so I'll report back on that front soon. I'm going to put my phone posts in my Client Development category, since after all, client development includes devices like phones just as much as it includes pure Windows apps.

Kate

Monday, 26 July 2010 15:16:30 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Tuesday, 20 July 2010

I mentioned I've been recording videos. That's because I'm doing another Pluralsight course. This one is on Customizing and Extending Visual Studio. About half of it is live already:

  • Overview of Visual Studio 2010 Extensibility
  • Why write extensions for Visual Studio?
  • Visual Studio Macros
  • Visual Studio Snippets
  • Getting and installing extensions for Visual Studio
  • The Visual Studio 2010 SDK
  • Visual Studio Start Page
  • The VSIX Format

There's more to come, of course - I'm about half done. I'm really enjoying this material. You can get your work done a lot faster if you tweak Visual Studio to meet your needs. It doesn't have to cost you money and it doesn't have to cost you much time. Take a look!

Kate

Tuesday, 20 July 2010 10:41:26 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Sunday, 18 July 2010
Pluralsight On-Demand! now has a second Windows 7 development course. I'm happy to see this - Eric and I co-ordinated while I was doing my course. In the first modules that are online now, he tackles topics that I did not - Restart and Recovery, Task Dialog, and Search. Feel free to use both courses to make yourself a better Windows developer!

Kate

Sunday, 18 July 2010 15:31:09 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Friday, 16 July 2010

I've had a chance to watch a number of the videos from the Windows Summit - an online event to help you with Windows development of all kinds. You can learn more about it and register at the main summit site, or check the lists of sessions for developers. The only trick is that once you've registered, you need to go to a different site to actually watch the sessions. Once you know that (and there is a link on the main site) you're all set.

I've been getting "Windows 7 for Developers" training since before the first public beta, so I had seen a lot of this before. But several sessions were noticeable improvements from the way that material had been covered in the past, and none of them were poorly done, so I recommend this as a way to learn the concepts that are important to anyone writing for Windows 7, and to learn the advantages that Windows 7 can offer to you as a developer and to your users.

I saw three different approaches to code in the sessions I watched:

  • Full on demos with Visual Studio involved
  • Code on the PowerPoint slides, and links to resources that include code demos
  • Mention the name of the API but don't show how to use it
I also saw a mix of native and managed code, with some sessions going all the way to the native side of the spectrum and some all the way to the managed side. Most of the sessions mentioned the Code Pack, of course, and call out a link to it in their resources.

Even if you know all about the taskbar, maybe you could learn about power management, or background services, using sensors, or writing location aware applications? It's really worth taking a look around.

Kate

Friday, 16 July 2010 13:46:01 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Wednesday, 14 July 2010

Here is something I've been asked more than once, and seen asked on various forums as well. I'll paraphrase rather than quote one specific asker:

We have an application written 15 years ago that's been working flawlessly. But when we run it on Windows 7, the users can't find the files it writes. Worse, there are no error messages, so they think they've saved the files, but when they go to C:\Program Files\MyGreatSoftware\UserExports - the files aren't there! 

Often, the question trails off into a rant about how sneaky and mean Windows 7 is to somehow prevent access to Program Files but not give error messages. The rant might also include a paean to how amazing the lost files were and how many workyears of productivity have been lost now that these files cannot be found, and why this means you can't trust Windows to do something as simple as write a file to the hard drive. Sometimes, the asker has established that this is related to UAC and they are recommending everyone turn it off to avoid this disaster. I thought I would make some less drastic suggestions.

First, your files are not lost. A few people know this, but they then claim the files are almost impossible to find and no end user will ever find them. Let's tackle this one first because if you know this trick you may be able to get by without changing anything else about your application. Tell the user to go to the place they expect to find the files, say C:\Program Files\MyGreatSoftware\UserExports. Then have them look in the toolbar for a button that says Compatibility Files. Click it. Ta-da!

Ok, now the next thing is, why the heck are your files being written there? Because you are trying to write to a protected area and you don't have a manifest. You have several things you can do about this, and they boil down to two main things:

One, don't write to a protected area. You can get this by installing somewhere other than Program Files (not a good idea) or by changing the application to write to a better place. Two, get permission to write to the protected area. This means running as administrator. Train the users to right-click Run As Administrator when they run the app, or train them to set the Compatibility Settings for the app (neither very likely) or ship the application with a manifest that includes requireAdministrator. Now matter how you arrange this second thing, your users are not going to like agreeing to the UAC prompt every darn time. So really, that brings you back to number one, don't write to a protected area. Use AppData instead - there's a simple function call to get that path on any machine (including older XP machines) and you'll be in fine shape. If you think your users can't find that, and the files are for the users and not just some internal settings, then use a folder under Documents - again, there's a simple function call that will get you the path.

If virtualization makes you nuts - that your code thinks it's writing to C:\Program Files\whatever but really it's writing somewhere else, and the OS is cheerfully lying to it and saying all the writes succeeded - then put a manifest on your app. Doesn't matter whether it's requireAdministrator or asInvoker. Doesn't matter whether it's embedded (VS will embed them for you from 2008 on easily, and there are tools that do just manifest adding) or just a file of XML in the same folder as the exe. Once the app has a manifest, virtualization stops. Of course this may mean the users get all kinds of Access Denied errors that they don't like. Now you see why virtualization was invented.

Should you rely on it? No. For one thing, it may go away in some future version of Windows. And it goes away when you add a manifest, which for many people happened when they migrated to a new version of Visual Studio. What you should do is understand it, including how to find the virtual store, so it doesn't make you quite so crazy.

Now go turn UAC back on,

Kate

Wednesday, 14 July 2010 09:25:20 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 12 July 2010

There are two services I use not just every day, but many many times a day. One is email and the other is Twitter. Facebook and StackOverflow also get their share of attention, but one thing that sets Twitter apart from Facebook and StackOverflow is the proliferation of clients you can use to access it. You can go to the web page, and do it all in a browser, or you can get any of the many clients available to give you a richer experience. The same is true for email - I can use Outlook or I can use OWA and do it all in a browser.

Recently I found myself facing a full week away from home and the office and with no way to get a VPN although I had great internet access. I could listen to CBC radio and watch Canadian TV but I could not bring my email in Outlook. The first day was ok, but not great. I found myself wanting to email people, and I had to open Outlook to poke around and get their email addresses, then paste them into the OWA new message. It was so different from the usual fast-as-thought process of typing the first letter or two of their names and pressing tab. I also had to delete my own spam, because I don't like server-based spam filters and have been really happy with my client-side spam settings in Outlook. The little preview windows weren't as informative as I wanted, my old appointments weren't showing up, there was no to-do bar, and deleting messages or waiting for the new window when I replied to messages just took too darn long. By day 3 I was about insane. Finally my favourite sysadmin (who I was smart enough to marry almost 30 years ago) got Outlook-over-http working for me and I could go back to normal.

I was utterly astonished at the effect on my mood that not having my client application had on me, and the effect of getting it back. It was very distinct and unmissable. The browser solution just wasn't good enough for me - and OWA is an amazing feat of engineering, with a way richer UI (delete key works, F keys work, etc) than most browser-based solutions. It got me thinking, once my cheerful mood had let me catch up on some outstanding work, about client apps in general. Why do I only use Twitter in a browser? I've tried a whole number of clients but I always end up back in the browser. I think it's because clients have to be well-designed to work well. If they hog resources, jump in your face too much with focus stealing or balloon tips, or insist on being sized a certain way then they don't get a chance to show you their good side. Twitter is pretty young and I don't think we've really had time to winnow the good client features the way we have with email. With that in mind, and believing a good client really will be a better experience, I've decided to try MetroTwit. I've heard really good things about it and I honestly believe that client apps make more sense for these sorts of information feeds. So far, I like it. I get toast for new tweets, a new tweet counter as a taskbar overlay icon, and such a delicate consumption of my CPU and disk activity that I can't tell if it's running or not.

You might also be interested to hear why the developers chose WPF, and what that led to for the team:

over just a couple of months, what we’ve achieved with MetroTwit was simply not possible without WPF considering the few precious midnight hours we put into it on most days. According to the rest of the team (the real developers), apparently I owe much to data-binding which I’ve been told is nothing short of a miracle.

If you have a choice of using a browser or using a client app, which do you choose? Is it always the same or does it vary with the business purpose you use it for? While we don't represent our users exactly, we can still learn from our own personal choices and our emotional reactions to software.

Kate

Monday, 12 July 2010 11:47:25 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Saturday, 10 July 2010

I'm not sure when this started, but DevX has a whole area for Visual Studio 2010 articles. They've got handy links to download a trial and a training kit, walkthroughs of creating extensions (a simple blogging one, and adding your own language to the IDE), and lots more. It's a combination of articles, webcasts, and downloads that cover not just Visual Studio but some of the things you can create with it and what's new in related tools. Of course I've seen some of the material before, but that just shows that it's comprehensive. Take a look around!

Kate

Saturday, 10 July 2010 08:31:40 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Friday, 02 July 2010
I love demoing restart and recovery. This is the feature that will bring many users to Windows 7 - getting your work back even after the application blows up. Sure, Word saves your document every 20 minutes - but why does it seem I always lose 19 minutes of work? In my simple demo apps, there's a form with one or two controls on it, and one is some text, and when the application blows up I write all the text out, and then on restart I reload it from wherever I wrote it to. It's simple and for most applications it's exactly what you want. But for some applications that approach won't work as well. For example, what if you have an MDI application and the user has 20 or 30 documents open, each with unsaved changes, when the application is terminated? There may not be time to save all those unsaved documents. And then on restart, perhaps the user doesn't want them all restored, or at least not with their real names... it can get complicated.

You are going to need to know your own application and make an intelligent decision about how to handle restart and recovery for your application. But it might help you to know how a certain MDI application near and dear to all our hearts does it ... Visual Studio. Visual Studio does a Word-like autosave every 5 minutes. When the application blows up, it doesn't do anything in particular on the way down. But when it's restarted, it takes a look at the files it has auto recover versions of and asks if you want any of them. You might, you might not, and as the user it's up to you. Zain Naboulsihas a tip-style blog post that explains how it works and how you can control it. Read that for its own sake, since you're probably a Visual Studio user and should be using it as effectively as you can. But also take the opportunity to think about a good design for restart and recovery in your application, which is probably a little more complicated than one text box and one other control.

Kate

Friday, 02 July 2010 20:37:43 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Wednesday, 30 June 2010

I'm recording some videos again (I'll announce when the project is live) and I'm doing it, as I really like to these days, in a bootable VHD. I've got the environment set up just the way I like it, without messing with my day-to-day setup, and as an extra bonus I avoid the distractions that Outlook, Instant Messenger, Skype, and the Favorites menu in my browser have to offer. When I went to record the first video I realized I had forgotten to install Camtasia in the VHD so I quickly downloaded a trial from www.techsmith.com. I got to work recording my video, editing it, and so on. Then I rendered the video. This can take a few minutes, but I don't complain because I know it's doing a lot of work. But I got a great surprise ... this latest version uses the taskbar progress bar overlay, so that I can put the rendering into the background and work on something else full screen while it renders. I can still see at a glance how it's doing, but I don't have to keep the little progress window on top. It's a really nice touch.

Then as serendipity would have it I spotted this video on Channel 9 that calls out this and other Windows 7 features in TechSmith products. It's only 9 minutes long, so go and watch it. And if you haven't added Windows 7 features to your client apps yet, why not? It really makes a difference.

Kate

Wednesday, 30 June 2010 19:22:20 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Sunday, 20 June 2010
The Windows API Code Pack is a wonderful library. It wraps many Windows 7 and Vista features so that you can use them from managed code without learning any interop techniques. I've made extensive use of it in demos, presentations, and training materials. I've also blogged about it extensively, primarily in my Client Development category and Windows 7 category.

Folks who've seen the Code Pack in action tell me they are going to use it in their Windows 7 applications immediately, and they're right to do so. Well now I'd like to do a bit of a headcount. If you have a real application (not a demo written to show how Windows 7 features work or how the Code Pack works) please drop me an email (you can see my domain, right? well my address before the @ is just my first name) and tell me who you are, where you work if you made the app for work, what the app does, and whether it's for sale or for internal use. Plus anything else you want to tell me like the Code Pack saved you weeks of work or got you promoted or helped you win the lottery :-). Unless you specify in the email that you're only telling me this, I will be passing it along to some other people, so keep that in mind. I really want to hear what you're using it for, so please let me know!

Kate

Sunday, 20 June 2010 13:26:23 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Friday, 18 June 2010

I was visiting a mentoring client today and we wanted to look at the config file for an application that is deployed with ClickOnce. So I needed to know where it was installed. I know that you can get to installation locations pretty quickly from the start menu:

So I took a look at the ClickOnce app in the start menu:

That's a problem - no Open File Location. I tried a little web searching but wasn't happy with what I found. Then I remembered.

Start the app - simple enough, since it's on your start menu. Then bring up task manager. If you right click the app on the Applications tab, there's no joy:

But ... if you choose Go To Process (or just switch to the process tab and look for the right EXE name) then we're in business:

The very first choice, Open File Location.

And when we get there, sure enough, there's a config file (among other things):

Completely obscure path, but who cares, I can confirm the config settings for the running app and that's all I needed.

Kate

Friday, 18 June 2010 12:17:23 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Tuesday, 08 June 2010

Are you interested in developing for Windows 7? I bet you are. I know I am. So perhaps you would like (OK, I'm quite sure you would like) the Windows Summit. It's a virtual event hosted at http://www.microsoft.com/windows/windows-summit/ and it claims of itself:

Windows Summit 2010 is designed for people who engineer and test Windows 7 PCs, devices, and software. Three technical tracks are offered to show how to best use Windows 7 and Internet Explorer, helping you build great solutions and gain a competitive edge.

It's free (you just have to register) and features about a dozen talks in each of three tracks. The Software track will release June 16th, so you can mark your calendars for then and amuse yourself in the meantime with the Device and System tracks. The Software talks will cover multi touch, ribbon, IE9, Windows Error Reporting, sensors and location, power awareness, background activities (that's services and scheduled tasks) and performance. All good stuff.

I'll report back in mid June when I can actually play the sessions and look at the downloads, but it seems to me it's going to be a very good resource.

Kate

Tuesday, 08 June 2010 09:45:15 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Friday, 21 May 2010

The C++ team gave me a heads up about a neat new initiative called Hilo. Here's a quick description:

“Hilo” is a series of articles and sample applications that show how you can leverage the power of Windows 7, Visual Studio 2010, and Visual C++ to build high performance, responsive rich client applications. Hilo provides both source code and the written guidance that will help you design and develop compelling, touch-enabled Windows applications of your own.

The articles are on MSDN - the first is there now - and the code is on Code Gallery.

I like this section from the article:

The rich user experience of Windows 7 is best accessed through a powerful, flexible language, and that means C++: by using C++ you can access the raw power of the APIs for Windows 7. To build the Hilo sample applications, all you need is Visual C++ Express and the Windows SDK for Windows 7, both of which are available as free downloads.

Hilo applications show how to design and develop an application for Windows 7. But while the code showcases the APIs for Windows 7, it is not wedded to any particular application framework. Instead, Hilo implement a lightweight common application layer that directly uses and highlights the APIs rather than obscuring them. This common application layer is used to support all of the Hilo applications. It illustrates the best practices for developing Windows applications, and while it is not complete—it was designed simply to provide the features needed by the Hilo applications—it does show the best practices used in designing re-usable frameworks and can be extended to provide additional features.

Looking forward to reading more!

Kate


Friday, 21 May 2010 22:52:48 (Eastern Daylight Time, UTC-04:00)  #    Comments [1]
# Wednesday, 19 May 2010

A colleague of mine who is not near Toronto has a client in Toronto who needs .NET developers. They would like to start out with a contract position and it could become permanent if it's a good fit for everyone. Here's the job description:

Position: Senior Programmer / Analyst

Pay: $7,500 per month contract (negotiable)

Applicant must be an expert or proficient in:

  • MFC
  • ATL
  • COM
  • .NET Framework  /  C#
  • .NET Services
  • Microsoft SQL Programming

Experience in the following areas would be helpful but not required:

  • WCF
  • WPF/SilverLight
  • ASP.NET
  • Visual SourceSafe
  • Mechanical engineering experience

Responsibilities:

The primary responsibility is to modernize a legacy C++ distributed application. This may include a redesign and possible rearchitect of the application. The final application should be an n-tiered application. The tiers would ideally be:

  • WPF/Silverlight  as the presentation layer
  • A business layer with business components (C#) exposed via WCF
  • A data layer

Where necessary, COM components can be preserved.

Other responsibilities include:

  • Move image files from file database to SQL database
  • Document the application
  • Handle ongoing change requests.

Someone who moved from C++ to C# but didn't forget their C++ would be perfect. They are looking for more than one person so it sounds like a fairly meaty project. This is strictly onsite work, no remote work, which is why I mentioned where they are (east of the DVP; west of Pickering.)

Anything you email to me about this I will forward to my colleague who will in turn forward it to the Toronto folks. Good luck!

Kate

Wednesday, 19 May 2010 16:19:23 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Friday, 07 May 2010

Jani Jarvinen (a Finnish C# MVP) wrote a nice article about using sensors with Windows 7. He mixes and matches .NET 4.0 and Code Pack capabilities, and has links to plenty more information. I like the screenshots and the step by step approach. Windows 7 really does make this so much easier than it used to be. He gets you started with both an ambient light detector and some simple location code.

A little more exotic approach comes from "gleat" who has a Code Project article using a Wiimote as the accelerometer. He starts out simple - here's how to download and install the driver - and then goes into writing a client in C#, leveraging Code Pack of course. But then he says hey, were you wondering how to write a driver? and wham! you're hip deep in C++. It's all well explained, though, so if you want to learn more about this, what a terrific way to start.

If all of this is making you wish you had Windows 7 somewhere to play with, but you don't want to buy it, don't have an MSDN subscription, don't qualify for BizSpark etc, then what you need is a free 90 day evaluation of Windows 7, right? I found that link on this handy Doug Turnure blog post from earlier this year that includes some video links I hadn't seen before. Have fun!

Kate

Friday, 07 May 2010 12:14:02 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Wednesday, 05 May 2010

I was just looking up the session codes for my Tech Ed talks next month (my flight to New Orleans leaves a month today, at about this time actually) and spotted something unexpected:

DEV316 | Modern Programming with C++0x in Microsoft Visual C++ 2010
Session Type: Breakout Session

Track: Developer Tools, Languages & Frameworks
Speaker(s): Kate Gregory
Level: 300 - Advanced
Why wait for the C++ committee to finish the specification when you can enjoy much of the power of C++0x today! C++0x, the next C++ standard, is almost upon us and it contains the most important updates to the language since the mid-90s. It even accepts the existence of multiple threads for the first time in the history of the language. Needless to say, these new features bring more expressiveness and power to the native C++ developer. Visual Studio 2010 has added support for some of these key features in order to enable these modern programming techniques. This session clarifies what features are in Visual C++ 2010 and what is yet to come. It illustrates how new constructs such as lambda expressions enable better use of existing libraries and how your code can be simpler, safer, and faster all at the same time. If you are itching to show off how C++ is one of the coolest languages on the planet, this talk is for you!

WCL316 | The Windows API Code Pack: Add Windows 7 Features to Your Application
Session Type: Breakout Session
Track: Windows Client
Speaker(s): Kate Gregory
Level: 300 - Advanced
Accessing new Windows 7 features is a challenge from managed (.NET) code. The level of interoperability required is out of reach for many developers. The Windows API Code Pack for the Microsoft .NET Framework is a sample library you can use in your own projects today that provides access to new user interface features (taskbar jumplists, libraries, sensor platform, and more) as well as "behind the scenes" features that make your applications more aware and responsive (restart and recovery, power management, and more.) Discover a shortcut to Windows 7 development for Microsoft Visual Basic and Visual C# programmers and get started today.

The first digit carries meaning, but the last two don't. So I don't really know how they both got to be 316. Since I often have trouble remembering my session codes, this should halve the effort for me :-).

Kate

PS: I checked whether the Brian rule still applies. You can too, by just dropping down the "Speaker" box on the session catalog page. I'm happy to report there are 9 Brians and I reached 9 obviously female names (ignoring Alex, Chris etc) while I was still in the C's. Good news, in my opinion!

Wednesday, 05 May 2010 13:54:51 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 03 May 2010

The Windows API Code Pack is one of my favourite libraries. For Windows 7 features that are not yet in the .NET Framework, it simplifies access from managed code, saving you from learning how to do interop. And it comes with a nice suite of samples that help you to understand how the feature works and how to use it. I've been incorporating Code Pack into a lot of the modules in my Pluralsight Windows 7 tutorial, and using the samples for demos when they're appropriate. In just a little over 5 months, almost 70,000 copies have been downloaded directly:

The thing is, Code Pack is not a product. You can't call for support on it (though there are discussion and issues section on the Code Gallery page, and people really do read them.) There's no guarantee that there will be more versions in the future. But there are plans for at least one more version, and Yochay is looking for your thoughts on it.

If you ever wanted to add a feature to the Code Pack, were looking for some specific Win32 API to be wrapped, or just wanted to pass us some feedback, this is your opportunity. Please send us your feedback or file a bug using the Discussions or Issue Tracker for the Windows API Code Pack.

He also mentions that about the same number of folks have downloaded other vehicles (eg the Windows 7 Training Kit) that deliver a copy of Code Pack. Those are some nice numbers! Anyway, if you haven't tried it yet, please do, and if you have and there's something you want, please chime in!

Kate


Monday, 03 May 2010 14:46:48 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Thursday, 29 April 2010

Would you like to learn more about developing for Windows 7 in C# or VB? My Pluralsight On-Demand! tutorial has just gone live. 9 of the 11 modules are there now and the last two will be shortly.

As the abstract says:

This tutorial is aimed at Windows developers (Windows Forms or WPF) who want to add Windows 7 capabilities to their application. The emphasis is on providing a helpful and efficient user experience by hooking into what Windows 7 has to offer. You do not need to know how to interop to native code or how the Windows 7 features work internally.

The table of contents looks like this:

  • Light Up on Windows 7
  • Windows 7 Jumplists
  • Taskbar Overlays on Windows 7
  • Taskbar Thumbnails on Windows 7
  • Network Awareness on Windows 7
  • Power Awareness on Windows 7
  • Windows 7 Libraries
  • Windows 7 UAC and Manifests
  • Partitioning Administrative Tasks for Windows 7
  • Known Folders for Windows 7 (under development)
  • Scheduled Tasks on Windows 7 (under development)

The course has been a lot of fun to put together. I used the Code Pack to keep the amount of code you write to a minimum. Some of the demos use samples that come with the Code Pack; others use my own code, and you can spot those by the Demos download link.

The content is all subscribers-only, but you can get a Guest Pass to check it out. Also, RDs and MVPs get a free subscription, so if you qualify, this would be a great time to use that. Let me know if there are more topics you'd like to see me cover (after I get this one finished, of course!)

Kate

Thursday, 29 April 2010 08:26:26 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Tuesday, 27 April 2010

MFC had some Windows 7 support starting with the release in between Visual Studio 2008 and Visual Studio 2010. There was a ribbon, for example, though there was no designer. In Visual Studio 2010 there is a ribbon designer, very nice, and tons of UI fun as well. In this post I'd like to focus on some MFC support for taskbar interactions. Any idea what these two lines of code do?

HICON i = LoadIcon(NULL,IDI_WARNING);
SetTaskbarOverlayIcon(i,L"Warning");

Here's the visual evidence:

Yep, you load an icon and then you set it as an overlay icon on your taskbar. Nice and simple.

How about this:

m_jumplist.InitializeList();
m_jumplist.AddTask(L"http://images.bing.com",L"",L"Bing",L"",0);
m_jumplist.CommitList();

You need to know that m_jumplist is a member variable of type CJumpList - a new type in MFC. Here's what that code causes:

This is remarkably little code to be all up to date and modern, isn't it?

If you want more info on C++ and Visual Studio 2010, here's a nice article by Sumit Kumar and a Channel 9 talk with Pat Brenner. Enjoy!

Kate

Tuesday, 27 April 2010 11:28:09 (Eastern Daylight Time, UTC-04:00)  #    Comments [2]
# Saturday, 17 April 2010

When I show off Windows 7 features and talk about how you can add them to your apps, I usually show a "sad trombone" moment featuring Visual Studio 2008, like this:

(I really like jumplists in the start menu, so I thought I would show that in my screenshot instead of the classic right-click-on-the-taskbar jumplist. They're the same.) But this jumplist isn't useful. It isn't all the .sln files I've opened before, or the projects, or anything really except some random bits of XML, icons, schemas, and code files that I dragged in to Visual Studio over the past few months while I had some real solution open.

Now this isn't poor Visual Studio's fault. It was released before Windows 7, before anyone knew that the MRU list kept by the OS itself would be important. As I've explained in presentations before, there's a reason this happens. You see, when you double-click a .docx file, Windows looks up who handles those, launches Word to open the file, and accumulates that file name on the MRU list for Word. Cool. Ditto for .txt and Notepad, etc. But Visual Studio is different, and it's different so that you can have Visual Studio 2005 and 2008 side by side on your machine, and use .sln for the solution file names in both products. You double-click a .sln file and what actually runs is a little launcher that looks inside the .sln file to see if it's a 2005 or 2008 solution and then runs the right Visual Studio and passes the solution to it. Cool. But as a result Windows isn't accumulating what you opened with Visual Studio 2008, it's accumulating what you opened with the little launcher. The jumplist for Visual Studio 2008 therefore contains only things you opened directly with it, and that's not a very useful list.

OK, so I know why. And it's nice to know, btw, that Visual Studio 2010 gets it right. And in my presentations, I usually leave it at that, encouraging you to add the one whole line of code to your app (if you're using Code Pack) so you "don't be that guy".

But wait! What if you want a good jumplist for Visual Studio 2008? Especially if you don't have Visual Studio 2005 installed any more, so you don't care about the whole pick-what-version-to-launch feature? Well, you could try this suggestion from Josh Einstein. I like that he doesn't explain it much and says "If you need more instructions then the hack probably isn’t for you." His instructions, terse as they are, are for 64 bit Windows 7. A commenter supplies the 32 bit version.

I actually haven't tried this yet. Don't want to set my computer on fire or anything :-). But if you feel like living on the edge, give it a whirl!

Kate

Saturday, 17 April 2010 08:22:25 (Eastern Daylight Time, UTC-04:00)  #    Comments [1]
# Tuesday, 13 April 2010

Is it a good omen when mornings start out beautiful? I think it might be:

Normally, when I go to a conference, the first day is a little slow. I might go to the keynote, or I might not. If I do, I wander in to the back row 5 minutes before it starts (hey, I'm leaving plenty of seats for the paying attendees) with my coffee in my hand. So reaching the keynote room at 7am, full of pep and vigour, was fun!

I really liked the story the keynote demos told. If you haven't seen it yet, it's available online. The demos start with simple productivity boosts like multi-monitor support, Intellisense for Javascript, and so on, then move to some amazing C++ updates including Windows 7 support (yes, the demo went boom, but if you watch closely you'll see it was just that the app was still running, preventing a successful rebuild.) Then you see "SharePoint F5", a huge pain-saver for anyone, like me, who does SharePoint development. Over a dozen manual steps done for you when you press F5, and you can run SharePoint right on your laptop. But they're not done yet -- here comes an Azure demo with the Windows Phone 7 emulator and a real phone, and then Team Foundation Server and a ton of exciting new Application Lifecycle Management features in Visual Studio including (no kidding) time travel. Wow! I hope you all enjoyed it as much from the seats as I did from backstage.

No sooner was the keynote over than I was headed for the Channel 9 stage to record half an hour of Q&A with Twitter people.

That's available online too. And if you want more, some of the sessions are appearing on Channel 9, too. Not filmed on site, but the content matches. Get your Visual Studio 2010 from MSDN downloads, or if you're not a subscriber you can take the Professional Edition for a test drive.

Kate

Tuesday, 13 April 2010 11:38:04 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Friday, 26 March 2010
One of the things I did during my break from blogging was to start creating content for Pluralsight. Is there anyone who hasn't heard of Pluralsight? An amazing group of people who want to help everyone learn how to develop on Microsoft platforms. They offer in-classroom training and also a rapidly growing online collection of videos and tutorials called Pluralsight On-Demand! that lets you learn what you want on the spot. Rather than just "here's a one hour video on topic X" it's all set up with searches and indexes to take you straight to the piece you want when you're in a searchy mood. It's really nicely done.

Pluralsight is a very MVP-positive group (and RD-positive too, though we're rarer) and has more than a few MVPs on the technical and management team. During the MVP Summit they announced that all MVPs and RDs get a free standard subscription to the entire Pluralsight On-Demand! training library. That's a heck of a deal and if you're eligible, you should sign up now.

I have one how-to reference video published at the moment, on taskbar overlays (icons and progress bars) in Windows 7 with Code Pack. There will be more :-)

Kate

Friday, 26 March 2010 09:10:51 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Tuesday, 24 November 2009

Pete Brown has a terrific two part series on sensor programming in Windows 7. Part 1 has a link for where to get the board, and fills you in on the new architecture. Lots of helpful links and screenshots here, including one to Pietro Bambrati that includes some changes to the racing game sample to make the accelerometer work and one to his video showing you how to install and test it.

Part 2 starts with this nice summary of your options as a developer:

There are three different ways you can use the accelerometer API. You can, of course, go directly against the COM API and generate your own wrappers and pinvokes. You can use the managed wrappers provided in the SDK, or you can use the Windows API Code Pack which includes support for the sensor API and a number of other Windows 7-specific enhancements. In this case, I decided to use the code pack in concert with WPF 4.

Hard to argue with that! Pete has written an AccelerometerJoystick you can use in any "controller" situation - and be sure to think beyond just games!

Definitely read and watch, and let Pete and Pietro save you some time!

Kate

Tuesday, 24 November 2009 20:12:13 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Sunday, 22 November 2009

I saw this on Scott Hanselman's blog:

It's three little meters - memory, CPU, and Disk IO. Each has a jump list with the obvious tasks - starting Task Manager, for example. It's really simple to do (read the code yourself) thanks to Code Pack.

What will you do over a weekend with it?

Kate

Sunday, 22 November 2009 19:46:36 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Friday, 20 November 2009

It's time for another release of the Windows® API Code Pack for Microsoft® .NET Framework. Yay! This is a pretty small release (which is why the version just went from 1.0 to 1.0.1) with some bug fixes, performance improvements, and more documentation and samples. It's getting a little attention :-)

  • Yochay gives the excellent advice to "consider this library as if you wrote it yourself, as if it is your own code" and reminds you that while it's "the closest thing to an “official” managed API for Windows", it is not a supported product you can call somebody for help with.
  • Mahmoud, who's actually running a Code Pack blog (though I think both Yochay and I have more Code Pack posts).
  • Sasha, like me a friend of the Code Pack, also has a summary of Yochay's PDC talk - you should download and watch it.
  • Kevin Griffin wrote a nice Code Pack article a day before the new version was announced, but all his praise is still valid :-)

If you're already a Code Pack fan, just go get the latest version. If you're not, you should be - it means just a line or two of code to make your application look and behave like a real Windows 7 app.

And are you wondering what's next for Code Pack?

See why I said to download and watch Yochay's talk?

Kate

Friday, 20 November 2009 15:11:58 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Monday, 16 November 2009

Nice blog post from Scott Guthrie while I was getting ready for Tech Ed Europe. It has a whole laundry list of good stuff in WPF 4, but what jumped out for me was the Windows 7 light up content.

What can you expect? Jumplists (items and tasks), icon overlays and progress bar, thumbnail buttons, thumbnail clipping, all of it. Nice.

Kate


Monday, 16 November 2009 14:36:16 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Saturday, 31 October 2009

Have you ever heard someone make a definitive statement about a particular feature of Visual Studio or the .NET Framework that you knew just wasn't true? Did you ever wish for a Snopes equivalent you could send them to? Well, your wish has been granted.

Give it a whirl and see the official position on some popular (but unfounded) beliefs.

Kate

Saturday, 31 October 2009 02:32:26 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Tuesday, 27 October 2009

I mentioned a long time ago that I have tweaked Windows 7 to my own preferences - the taskbar is 2 or 3 rows high, but I don't combine and I never hide labels. And until recently, I always used small icons. But while preparing both my Tech Ed Europe talk and my launch party demo, it annoyed me that I didn't get the icon overlays. These are incredibly helpful - better than icons in the system tray, balloon tips, focus stealing popups, toast, or other notification techniques. I mentioned to someone that I got them maybe once when I first installed, but never again since. Then just as I said that, I had a thought. A quick search confirmed it - you don't get overlays if you have small icons. And overlays are so useful, I've switched to large icons so I can have them. Not just while demoing, but for my regular life.

In the top row I don't have any new mail and I'm available on Messenger. In the middle row, new mail has come in so the Outlook 2010 icon has an overlay. In the bottom row, I'm away on Messenger. It's a very compact way to present notifications. So from now on, large icons for me!

Kate

Tuesday, 27 October 2009 11:32:01 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Saturday, 17 October 2009
As C++ developers, we have a lot of options about how to link to libraries we use. We read sometimes that if we link statically, we will have more work to do if there's ever a security hole in the library, since we'll have to redeploy our app rather than just relying on the users to get the new library and use it dynamically. There's a great example of that in the ATL story that is now just wrapping up. A problem was discovered in July, and emergency updates were promptly released - just a day before the guys who discovered the problem spoke about it publicly. An article that same day pointed out that the error was almost a typo - an extra & in an expression - and warned that the patches "do not automatically fix software that was developed using the buggy ATL. Instead, vendors -- Microsoft as well as third-party firms -- must use the patched Visual Studio to recompile their code, then distribute the new, secure software to users." Well finally, Microsoft has finished their part of it with updates for the parts of Office that were using the old ATL. Have you done all of yours?

Kate

ps: love the "related twitters" at the bottom of the article - people may not tweet about the Active Template Library very often, but they sure do mention a certain airport / city that uses the same abbreviation :-)

Saturday, 17 October 2009 12:13:47 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 21 September 2009

It's not a very well known fact that the Zune plays games. Because of the large screen, it's actually quite a pleasant experience. The selection is not exactly vast, though.

The story is going to get more interesting now that the HD is released. Business Week has an article suggesting the Zune could be "a gaming titan", believe it or not. And then I read a report about an iPhone app being ported to the Zune in just 12 hours. Wow! Of course, just because they've ported it to the Zune doesn't mean you can have it - the marketplace story is Microsoft only at the moment. But I think we're in interesting times...

Kate

Monday, 21 September 2009 18:28:15 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Saturday, 19 September 2009

Jeff Barnes has published a wonderful array of material to his Sky Drive:

You can read his description and get the link on his blog. If you have the Windows 7 training kit, you may recognize a lot of this, but if you're just starting to think about developing for Windows 7, this is one way to get started. For others, try my Client Development category.

Kate

Saturday, 19 September 2009 18:14:47 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Thursday, 17 September 2009
Recently, I read an inspiring document. It included these quotes:
  • “Everything is best for something and worst for something else. The trick is knowing for what, when, for whom, and why.” —Bill Buxton
  • “Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.” —Antoine de Saint-Exupery
  • “The ability to simplify means to eliminate the unnecessary so that the necessary may speak.” —Hans Hofmann
  • “Simple things should be simple. Complex things should be possible.”—Alan Kay
  • “Everything should be made as simple as possible, but not simpler.”—Albert Einstein
  • “I have only made this letter longer because I have not the time to make it shorter.”—Blaise Pascal
I especially like the Einstein one, which I've used in works of my own. But what's surprising about these quotes is the document where I found them. It's 828 pages long and most of those 828 pages is more like this:
  • To achieve coolness, start not by thinking about what the technology can do, but by focusing on what your target users really need. Before adding that “cool” feature, make sure there are clear user scenarios that support it.
  • When asking a question, use labels that match the question. For example, provide Yes and No responses to a yes or no question.
  • Don’t give error messages when users aren’t likely to perform an action or change their behavior as the result of the message. If there is no action users can take, or if the problem isn’t significant, suppress the error message.
Can you guess? It's user interface guidelines. Specifically, the Windows User Experience Interaction Guidelines, brought to my attention by Qixing Zheng, a User Experience Advisor with Microsoft Canada, and available on MSDN as a tree of web pages or for download as a single PDF. And man, are they good! The philosophy behind them really resonates with me.  The document starts out very generally, then drills in a bit, then drills in a bit more, then explodes into hundreds of pages of incredible detail about just the right way to use a button or a link or radio boxes or whatever. Here are the headings in a 19-item list that I just love:
  1. Nail the basics
  2. Design experiences, not features
  3. Be great at something
  4. Don’t be all things to all people
  5. Make the hard decisions
  6. Make the experience like a friendly conversation
  7. Do the right thing by default
  8. Make it just work
  9. Ask questions carefully
  10. Make it a pleasure to use
  11. Make it a pleasure to see
  12. Make it responsive
  13. Keep it simple
  14. Avoid bad experiences
  15. Design for common problems
  16. Don’t be annoying
  17. Reduce effort, knowledge, and thought
  18. Follow the guidelines
  19. Test your UI

In the real document, there's a paragraph or so for each of these that flesh it out just a little. But as you read the whole hundreds and hundreds of pages you will see how these 19 concepts are really informing all of it. And I love the courage to stop at 19, a prime number, instead of trying to come up with another one to get a round 20.

I'm only quoting the philosophy stuff here but man, there are plenty of technical details like how far apart to space controls, how to design a good ribbon, choosing your button text, working with pen, touch, keyboard shortcuts, and the mouse, when to use menus and toolbars, when your application should take focus, how long tips should hang around before fading away again, and on and on and on.

Read it, live it, pass it around. See if you can't use some of the philosphy and design guidance in your web apps too.

Kate

Thursday, 17 September 2009 16:02:34 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Tuesday, 15 September 2009
WPF applications are beautiful. Using WPF themes and controls helps to make that possible. So control vendors make apps that show off their controls - it's a smart thing to do. And here's one that you can use every day - that I will be using every day - and it's free. Take a look:



This is a snapshot of the Task Board view for a real project I have underway at the moment. Green are requirements, yellow are tasks, and red are bugs. (Why is Create Project Plan still Active on a project that is well underway? Because it's a living document and I check in changes to it against that work item through the life of the project. We're not talking about a .mpp file here.) The views are wildly customizable, of course, but this is a nice one. There are plenty of others. I especially like the Search box at the top. I think we all have fake queries we use for searching, but this is so much neater.

It's a client application (so's Visual Studio, of course) that runs on your machine and connects to your TFS server. You can add/edit and generally play with work items here (including dragging and dropping them from the Active side of a view to the Resolved one to resolve them) and interact with the repository. It's prettier than Visual Studio, faster than Visual Studio, and probably a whole lot more acceptable to the managers, project managers, and QA reviewing types in your life than Visual Studio. The one I showed it to sure liked it.

Download your copy today!

Kate
Tuesday, 15 September 2009 15:28:16 (Eastern Daylight Time, UTC-04:00)  #    Comments [3]
# Friday, 11 September 2009

There's still time to plan a trip to Boston for the BizSpark incubation week, October 5th to 9th.

As Sanjay blogs, you don't need to be in BizSpark to come - it's an event to help startups learn about Windows 7, how it can make your product better, and how to be a successful entrepreneur. You need to be at least interested in building an app that will include touch, sensor and location, the new taskbar or the new ribbon. That covers a lot of ground!

It's a free five day event, though you have to get yourself to Boston and find a place to stay. Up to three people from your firm can attend. Nomination details are on Sanjay's blog, but if you have a BizSpark sponsor you should ask your sponsor to send your nomination to Sanjay.

My firm is a BizSpark network partner. Generally speaking, we sponsor our clients - folks we're mentoring - and not people who are contacting us only to get into BizSpark. If you think completely legal free developer software (Visual Studio Team System, SQL, Windows etc) is just the ticket to get your startup started up, you should definitely look into BizSpark. It's a tremendous opportunity.

Kate


Friday, 11 September 2009 16:55:40 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Wednesday, 09 September 2009
Sasha Goldshtein (not the same as Sasha my MVP lead or for that matter Sasha my nephew - seems some names just follow me around) has another great Windows 7 post and this one features native C++ code for extra fun. It tackles a problem you're likely to run into if you're doing Windows 7 development - what should you use as a toolbar preview if your app has a number of tabbed views? As you probably know IE 8 shows you multiple previews, one for each tab (within reason - I have dozens of tabs open some times and it doesn't show all of them) so you might want the same effect for your application.

The idea is that the app looks like this:



And the thumbnails look like this:




One for each tab. Sasha has provided a pair of blog posts explaining this, and you can download the code from his SkyDrive. Very nice!

Kate

PS: Want to do it in managed code? Well go get the Code Pack then. Tabbed Thumbnails are handled nicely there.
Wednesday, 09 September 2009 16:31:34 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 07 September 2009

Keyvan Nayyeri knows Visual Studio Extensibility all right. He even wrote a book:

Now he's written a multi-part blog series about extending Visual Studio.

  • Part 1 clarifies the difference between an add-in and a package, and acknowledges that there are also other ways of extending Visual Studio (it's actually incredibly extensible in a lot of different ways). It's a nice history review to show us how we got to where we are.
  • Part 2 is about the IDTExtensibility2 and IDTCommandTarget interfaces. All add-ins implement the first, and those that are on the Tools menu implement the second.
  • Part 3 turns to packages, which inherit from the abstract class Package (and therefore have plenty of work to do implementing various interfaces.) Keyvan recommends C++ for package development, interestingly enough.
  • Part 4 can now talk about the differences between them in some detail. Add-ins are easier, can be written in more languages, but just can't get the same level of integration that a package can. It depends on the functionality you plan to offer your users.

Looks like there are more parts to  come ... stay tuned!

Kate

Monday, 07 September 2009 16:21:05 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Thursday, 03 September 2009
Scott Hanselman has done quite a few posts on Windows 7 topics already. But now he's done a lollapalooza! He covers:
  • The Code7 contest - How to get a trip to PDC and $17,777. Not bad eh? Also covered by Yochay.
  • XP2Win7 (aka PhotoView) - I've covered it before and I won't repeat the links from that post. Scott includes a gratuitous underwear shot you're going to love.
  • Code Pack - you know it almost deserves its own category here on my blog. Like Scott says, a gold mine of samples in both C# and VB.
  • 16 bonus links and the "lightweight" parameter for MSDN.



Speaking of the PDC, they've released a bunch more sessions... it's looking very good. I have to pull the trigger soon on a decision about going straight to the PDC from Tech Ed Europe. It's calling me...

What are you waiting for? You need to read Scott's post.

Kate
Thursday, 03 September 2009 10:01:35 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 24 August 2009

I am pleased to learn that at least one of the sessions I submitted for Tech Ed Europe in Berlin has been accepted:

The Windows API Code Pack: How Managed Code Developers Can Easily Access Exciting New Vista and Windows 7 Features

Accessing new Windows 7 or Vista features is a challenge from managed (.NET) code. The level of interoperability required is out of reach for many developers. The Windows API Code Pack for the Microsoft .NET Framework is a sample library you can use in your own projects today that provides access to new user interface features (taskbar jumplists, libraries, sensor platform and more) as well as "behind the scenes" features that make your applications more aware and responsive (restart and recovery, power management, and more.) Discover a shortcut to Windows 7 and Vista development for Microsoft Visual Basic and Visual C# programmers and how you can get involved.

Now comes the logistics fluffle of getting everything booked, telling "my" teams I'm going, and possibly picking up some other talks or panels or whatnot while I'm there. I'm looking forward to it already! I love Tech Ed Europe - it's such a well run show and the other speakers are a delight to spend time with and learn from. The energy is always good and on top of that the destination is fabulous. I adored Barcelona, so now it is time for Berlin to show me what she's got. What a week we've picked to be there!

 

You can still register at a discount. See you there!

Kate

Monday, 24 August 2009 12:01:56 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Sunday, 16 August 2009
I've mentioned the sensor improvements in Windows 7 a little bit, but they really deserve a good long blog post of their own. Luckily for me, my fellow RD Sondre Bjellås has written it :-).


This is a handy demo board that does light as well as position (think Wii) with some buttons you can push. Sondre covers where to get the board, where to get the drivers, and a really simple sample app to get you started. Then you're going to want the Windows 7 Training Kit - the Hands On Labs have some fun demos. Check it out!

Kate
Sunday, 16 August 2009 19:04:13 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Saturday, 08 August 2009

Code Pack, or Windows® API Code Pack for Microsoft® .NET Framework to use the official name, has hit 1.0 with the RTM of Windows 7 and is now available for your downloading and coding delight. Yes, two registered trademarks in the name, but still technically not a product. It's the most useful not-a-product I know. The mission statement, if you will, of Code Pack is:

The Windows® API Code Pack for Microsoft® .NET Framework provides a source code library that can be used to access some new Windows 7 features (and some existing features of older versions of Windows operating system) from managed code. These Windows features are not available to developers today in the .NET Framework.

The parenthetical in that description is referring to Vista features like Restart and Recovery and Network Awareness, among others. If you've been playing along throughout the beta period of Windows 7 you probably have three questions:

What's in 1.0 that wasn't in 0.9?

  • Shell Search API support.
  • Drag and Drop functionality for Shell objects.
  • Support for Direct3D and Direct2D interoperability.
  • Support for Typography and Font enumeration DirectWrite APIs.
Will my 0.9 stuff work with RTM or should I get 1.0?
  • You should get 1.0 because it has some bugfixes in it.
Can I use 1.0 on a machine running the RC?
  • Probably, but no guarantees.
To me the biggest thing in this 1.0 release is this:
  • The Code Pack also contains sample applications built using this library. Each sample has a C# version and a VB.NET version and has its own solution file.
That's right. VB samples in 1.0 of something. Thanks for noticing :-).

I am such a huge Code Pack fan (and have had a small hand in its birth) so this is just a wonderful summit to have reached. We've had over 24,000 downloads of Vista Bridge and the pre-release versions of Code Pack, so I am confident a lot of people are able to access Windows 7 features from managed code a lot more easily than they expected to.

Kate
Saturday, 08 August 2009 11:10:52 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Thursday, 06 August 2009
If you like to learn how to do things from material that is longer than blog posts, and videos don't work for you, then you probably still buy books. Here's one you might be interested in:



Authors, in case you can't quite read it there, are Yochay Kiriaty, Laurence Moroney, and Sasha Goldshtein. I am often tempted to link to every post Yochay makes - they are detailed, and useful, and crammed with more links. If you're developing for Windows you should be reading his blog and that's that. I read Sasha's blog regularly, too, and he is constantly coming across things I would never have thought of. I may not need that information that day, but reading it makes me a better developer. Both of them give attention to both managed and native code for extra points from me. Laurence is more a Silverlight guy, but I'm going to read his blog for the next little while anyway.

I haven't seen a preview of the book yet, but it's due Sept 30th, and you know the content will be good. A pound and a half of developer good stuff :)

Kate
Thursday, 06 August 2009 08:49:51 (Eastern Daylight Time, UTC-04:00)  #    Comments [1]
# Saturday, 25 July 2009
A client asked me to help recently with a small mystery. They had a database provided by a customer and they'd been asked to import the contents into the tables used by their own product. One of the tables had a BLOB column and from context they were quite sure it was used to hold scans of documents. There was even a "filename" column and a "filetype" column that suggested very strongly the scans were stored as TIFFs.

It had taken a while to find code to read the blobs, and when they ran it, the resulting file was rejected as not being a valid TIFF. They weren't sure if they were handling the blobs wrongly, if the data was encrypted, or if it was some other image format (they had tried PDF and GIF already.) In a highly enjoyable two hours, here's what I did:
  • Found short (ten lines including initialization and cleanup) code to read one blob in VB6 and save it to disk.
  • Found the TIFF format details, looked in the resulting file with notepad and confirmed it didn't start either II or MM and so wasn't a TIFF.
  • Looked at a few other file formats but wasn't really gaining any knowledge, just ruling things out that you could rule out by renaming and double clicking, then having the file rejected by the app that tried to open it.
  • Discovered Marco Pontello's absolutely cool File Identifier, TrID, and downloaded it
  • Removed the extension from what had been test.tif, pointed TrID at it, and was told 100% it was a zip file. Duh, the file started PK, I might have guessed that one.
  • Renamed it to test.zip, unzipped it by hand -- ooh, it IS a zip! -- and was rewarded with file.txt for my trouble
  • Looked at file.txt in notepad and noticed that it was full of binary-looking gibberish, but it DID start with II
  • Hand renamed file.txt to file.tif and double-clicked it
  • Presto! A scan of a document!
I left my client to write the code that did all the blobs, including unzipping them and renaming (every single blog contained a zip which  contained a TIFF renamed to file.txt and no, I don't know why) from within a quickly written importer application. The big mystery was solved. Thanks, Marco!

Kate

Saturday, 25 July 2009 12:13:01 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Tuesday, 21 July 2009

Want to go to PDC but not sure you can afford it? How would this work for you: a trip to PDC including flights, hotel, and conference admission?

That's the grand prize in the INETA Component Code Challenge. Write an app (web, client, whatever) that uses at least two different components (a grid and a chart? a PDF creator and a calendar? a report and a spreadsheet? You decide.) from the sponsors.

Try it! And maybe see you in LA!

Kate

Tuesday, 21 July 2009 19:40:35 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Sunday, 19 July 2009

Here's another tip from Habib on debugging. If you have a particular screen you want to bring up, and it takes a lot of clicking and selecting to bring it up, why not just set a breakpoint and then bring it up by constructing and calling it with the immediate window?

Habib's video features a WPF application, and the constructor takes no parameters, but you could use this for Windows Forms and you could pass through whatever parameters you needed to. A very handy tip - any language, any kind of client application.

Sunday, 19 July 2009 19:35:20 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Wednesday, 15 July 2009
Finally, XP2Win7 is released! I've been watching this one for a long time. It's designed to show off both Windows 7 features and development good practices. The same binaries behave differently on XP and on 7 - on 7 it lights up and shows 7 features like the taskbar or libraries support, as well as Vista features that never got the attention they deserve like Restart and Recovery.

The application itself is a photo viewer and that makes it a natural fit for hooking into libraries, search and organize, and the preview system. It has an intuitive jump list on the taskbar:

It also uses the new Sensor support, Aero glass effects, trigger-started services for backing up images when a USB key is inserted, MMC and Powershell integration, the new Event Tracing for Windows (ETW) and so much more. This will be your roadmap to Windows 7 development. Of course all the code is available, as well as a simple MSI if you'd just like to play with the application a bit and understand what Windows 7 has to offer.

Get your copy and start learning and exploring!

Kate

Wednesday, 15 July 2009 09:32:56 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Saturday, 27 June 2009

I sure do love using the Windows 7 taskbar. (I might have blogged a few times about it already.) I have completely internalized the habit of right-clicking on a running app (or a pinned icon for a non-running one) to open a recent document - whether that app is Word, Notepad, PowerPoint, or whatever. I right-click any Messenger conversation to change my status, and I close instances right from the taskbar preview window. I wish Outlook would give me 5 or 6 jumplist items, like New Message and New Appointment, and I really wish Visual Studio would give me some options too. I am looking forward to new releases that will harness this intuitive way of getting users closer to the files they want to open or the things they want to do.

If you want to put taskbar support into your application, and you're not really a video kind of person, perhaps an MSDN Magazine article will do the trick? Yochay and Sasha should be familiar to my readers - you know these guys know their stuff. The article covers both native and managed development, and concludes with this summary:

In this article, we have explored some features of the Windows 7 taskbar, such as application IDs, thumbnail toolbars, overlay icons, progress bars and jump lists. The Windows 7 taskbar provides a clean, sleek launch surface that strongly benefits users. Integrating into this surface will be a primary goal for any application developer for Windows 7.
Using the native Win32 APIs or the managed Windows API Code Pack provides you with a differentiating opportunity to light up your applications on Windows 7. Bear in mind that the taskbar is the first thing users see after logging on to Windows, and you'll want your application to be pinned to their taskbar.

I completely agree. Give it a read.

Kate

Saturday, 27 June 2009 08:05:20 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Thursday, 25 June 2009

The Build a Better App site is all about applications. They've gathered tutorials, videos, and useful libraries for folks who are building client applications. You'll see some old friends of mine on the main page - Code Pack, Tim Huckaby's recent guidance paper, and so on - along with plenty of things I haven't linked to from this blog. But there's more, like profiles of some of the people whose work is on the site (love the fish, Tim) or videos showing the Windows Forms to WPF converter in action, Code Pack demos, and so on. Speaking of videos, Build a Better App has their own channel on YouTube, as well. Jono Wells is twittering on behalf of the site, and blogging too.

If you were at Tech Ed USA, you probably saw the Build a Better App team - they had a colourful presence and fun stickers and clings. There's a slideshow of some of the "better app requests" from attendees and while I doubt anyone will be coding a cloak of invisibility any time soon, there were some pretty cool requests in there.

Take a look around, and if you want to submit some content for the site, let me know and I'll connect you to the right people.

Kate

Thursday, 25 June 2009 07:54:21 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Tuesday, 23 June 2009

WPF uses XAML. Silverlight uses XAML. WPF is mostly for writing client (Windows) apps, but XBAPs run in a browser. Silverlight is for the web, but an offline story is planned. It's easy to get confused. Worse, people often feel there is a "vs" aspect to it - Silverlight vs WPF. Mike Taulty puts it like this:

Of course, it's not a fist fight. Mike goes on to elaborate on the continuum of technologies and the way you can share skills between them. He also points to a post by Karl Shifflet that demonstrates how code can be reused between WPF and Silverlight applications.

A vital reference for anyone who is moving around on this continuum is a whitepaper (with companion code) that highlights the similarities and differences between WPF and Silverlight. It's available on Codeplex now. It's full of detailed summaries like this:

Check it out!

Kate

Tuesday, 23 June 2009 17:43:59 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 15 June 2009

Version 0.9 of the Windows API Code Pack for the Microsoft .NET Framework was released June 11th. This version works with the RC, adds a number of exciting new Windows 7 features, and also incorporates many of the Vista Bridge features as well. (I posted earlier about the different versions of Vista Bridge and Code Pack.) Not only that, but it features VB samples as well as C# ones! You can also see some videos of the functionality in action.

 

You just won't believe how easy Windows 7 development is from managed code using the Code Pack until you give it a try. Expect to see more releases as the year goes on, and keep talking to the team on Code Gallery.

Kate

Monday, 15 June 2009 21:28:09 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Saturday, 13 June 2009

Early this spring I delivered several sessions of training for Microsoft. It was for ISVs who wanted to get rolling on Windows 7 as quickly as possible. It's good material that covers a mix of managed and native development to take full advantage of new APIs, new features, and new power in Windows 7. It relies on the Windows API Code Pack and some custom-written wrappers for Windows 7 functionality that isn't in Code Pack at the moment. And now it's available to anyone who wants it.

If you couldn't come to one of the courses I taught, consider this the next-best thing.

Kate

Saturday, 13 June 2009 21:18:13 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Thursday, 11 June 2009

Seems like a can't-lose offer, doesn't it? Free developer licenses of WPF controls (Calendar, Carousel, Chart, ColorPicker, DatePicker, Expander, Gauge, GridView, MaskedTextBox, NumericUpDown, PanelBar, ProgressBar, Scheduler, Slider, TabControl, TimePicker, TreeView) from Telerik. And don't be scared off by "developer license": they say "The Developer License is perpetual and has no deployment limitations – it allows the use of the controls for an unlimited number of applications spanning various servers and domains. The applications you develop with the Telerik WPF controls can be distributed royalty free." That sounds pretty no-strings and truly free to me.

What are you waiting for? Go get your controls!

Kate

Thursday, 11 June 2009 21:12:18 (Eastern Daylight Time, UTC-04:00)  #    Comments [1]
# Wednesday, 03 June 2009

Further to that video of Brian Noyes and client technologies, Tim Huckaby has written a terrific paper on the topic. His personal history and experience position him perfectly to understand the real technical reasons (as well as the make-your-boss-happy or the go-home-on-time ones) why you should use a "smart client", "rich client", "Windows client" application for certain kinds of applications. He also knows when you shouldn't. Definitely recommended reading and if you want to tell him your thoughts, he's set up a blog post for comments.

Kate

Wednesday, 03 June 2009 18:34:38 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Thursday, 14 May 2009

Choosing a UI technology is often very difficult. I've spoken to a great many developers who want to use one particular technology, but then second guess themselves. For example, they may want to build a client app, but have pressure from management to build a web or browser-based app, often with no clear technical reason. Or perhaps they want to update a Windows Forms app, and are wondering if they need to port it to WPF - and wondering how to do that.

In this interview (filmed at Tech Ed last year), Brian Noyes discusses all of this. He has some good rules of thumb and some advice grounded in his real world experience. Definitely a show to watch. On his blog, Brian summarizes some of his points. Worth a read also.

Kate

Thursday, 14 May 2009 13:45:58 (Eastern Daylight Time, UTC-04:00)  #    Comments [1]
# Tuesday, 12 May 2009

Daniel Kornev took a look at Code Pack and went back to the future, recreating some Longhorn WinFS demos from five years ago using Windows 7 technology. What old demos and prototypes can you find and make a modern-day reality?

Kate

Tuesday, 12 May 2009 11:35:41 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Sunday, 10 May 2009

I haven't put the RC on my laptop yet - too close to Tech Ed for me to mess with important stuff - but I liked this summary from Tim Sneath of what an RC means, and what you should be looking at as a developer. Make sure your application runs properly on Windows 7 to start with (and if it runs on Vista, it will almost certainly run on Windows 7), then look at adding goodies to it that take advantage of what the OS has to offer. He even includes a link to Code Pack. Check it out.

Kate

Sunday, 10 May 2009 20:23:38 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Friday, 08 May 2009

Some people have asked me about the purpose of Vista Bridge now that Code Pack (ok, Windows® API Code Pack for Microsoft® .NET Framework) exists. If you want to use a Vista feature (such as the power management API) you won't find them in Code Pack yet. Vista Bridge is not under active development right now, but you can download and use the wrappers to save time and effort whether you are targeting Windows 7 or Vista. If you run into issues using it on Windows 7, please let the team know using the Discussion tab.

The second question I am getting is about versions. Code Pack 0.8 (no longer available for download) was for build 7000. Code Pack 0.85 (the current version) is for the RC of Windows 7. If you have moved to the RC and something isn't working for you, go and get the latest version because there were a few breaking changes.

Will there be a new version for RTM? Let me just quote from the home page:

Please note that this library is currently a work-in-progress and this release is version 0.85 of this library. The final version of this library will be available around the time of the Windows 7 RTM release. Various features in the library could change between now and final release.

That's pretty transparent, I would say.

Update: 0.8 can still be downloaded. Go to the downloads page and there's a link over to the right.

Friday, 08 May 2009 20:05:40 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Wednesday, 06 May 2009

I've made another appearance on DotNetRocks with Carl and Richard. Some links from the show:

And of course, the show itself. I dare you to listen at 1.4 or double speed.

Kate

Wednesday, 06 May 2009 19:57:02 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 04 May 2009

Sometimes little things make a big difference. Say you're reading through some code in Visual Studio and you come across a class or function you don't immediately recognize. It's interfering with your reading of the code, right? So you copy the name into your clipboard buffer, flip out to a browser, probably with Alt-Tab, then click for a new tab, type a URL like www.live.com or www.codeproject.com, wait while the page loads, paste your buffer into the search box, click search ... wow there are a lot of opportunities to be distracted in that process.

The CodeProject has a simple add-in for Visual Studio that lets you do your searches without going anywhere. It does one thing, and does it well.

Give it a try!

Kate

Monday, 04 May 2009 19:48:16 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Saturday, 02 May 2009

If you're starting to get interested in WPF, why not check out some of the videos over at WindowsClient.net? You can learn how to make a splash screen, use a datagrid, add validation to your application, deploy using ClickOnce, and much much more. Each video is only 10 or 15 minutes, but there are about a hundred of them. You're sure to learn something!

Kate

Saturday, 02 May 2009 19:42:01 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Thursday, 30 April 2009

Inspired by the side by side approach of the "eye candy" article I linked to, here are two apps to compare:

Yes, they're the same app. The difference is a theme - one of the ones I posted about a while ago. I had to make four changes to this application to get this theme applied. I started by copying the appropriate XAML and DLL files (in this case, ShinyBlue.xaml and System.Windows.Controls.Theming.ShinyBlue.dll) into the project folder. Then I added the XAML into the project, and added references to the dll and also to WpfToolkit:

This lets me use dynamic resources from the theme. This particular theme doesn't have a default background brush, so I edited the XAML for my window to use the background brush in the theme:

For everything except the background (the colour of the button, the checkbox, the foreground text colour for the label and so on), it's just a matter of adding the ResourceDictionary in App1.XAML:

The various controls look good together - that's the work of the theme. This is a pretty simple way to make a dramatic difference in your application. If you didn't look at WPF themes yet, you really should.

Kate

Thursday, 30 April 2009 19:37:36 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Tuesday, 14 April 2009

Do you have a Windows application? Are you curious if it will run well on Windows 7? Would you like to try something a little more technical than "install on Windows 7 and see if it runs?" Then you need the Application Compatibility Toolkit. The latest version, 5.5, is now available. There is documentation for it on TechNet to help you get started.

Kate

 

Tuesday, 14 April 2009 18:28:45 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Friday, 27 March 2009

The WPF team has a home on CodePlex where they release the WPF Toolkit and other goodies. To quote their project description,

The WPF Toolkit is a collection of WPF features and components that are being made available outside of the normal .NET Framework ship cycle. The WPF Toolkit not only allows users to get new functionality more quickly, but allows an efficient means for giving feedback to the product team. Many of the features will be released with full source code as well.

One of the nice things they have added is a set of nine lovely WPF themes you can use in your applications today. Use the link to download them and to see the instructions for theming your app.

The appearance changes dramatically - with no coding on your part once you've hooked in the theme!

Kate

Friday, 27 March 2009 18:27:43 (Eastern Standard Time, UTC-05:00)  #    Comments [2]
# Sunday, 15 March 2009

Whenever a new OS or major application is released, there's a gap between when people want to start interacting with the functionality and when the .NET Framework supports that interaction. That's only natural - the framework release cycles aren't synced to the OS release cycles. This happened before with Vista, and is happening now with Windows 7. For Vista developers, the Vista Bridge provides easy access from managed code to the fun stuff like Restart and Recovery, Task Dialog, Power Awareness and so on. Stay tuned for announcements about a similar library for Windows 7. In the meantime some slightly more granular wrappers are available for you to use now, covering Taskbar, Libraries, Sensors, and Multi-Touch. Alon's blog has the details and the links.

Kate

Sunday, 15 March 2009 17:20:56 (Eastern Standard Time, UTC-05:00)  #    Comments [2]
# Saturday, 07 March 2009

A lot of applications like to know what version of the operating system they are running on. Sometimes (especially older applications) it's so they can flat-out refuse to run if you're still on, say Windows 98. This is now frowned on, by the way, and if you want a Windows 7 logo you must not refuse to run based on a version check. Other times (and this is bad too) it's as part of some arcane roll-your-own strategy. For example someone I know planned to work out the default hard code paths for user documents (C:\Documents and Settings\ ... vs C:\users\... ) based on OS versions. This is insane! There's already a function you can call that will get you that path, and it works even if the user has changed it from the default.

But there are still legitimate reasons for version checking. If you're using Vista or Windows7 light-up features like the Task Dialog, Restart and Recovery, or Taskbar Jump Lists, you'd better make sure you're on an OS that supports those features. It's pretty easy from managed code: just call System.Environment.OSVersion.Version.Major and System.Environment.OSVersion.Version.Minor. From native code, GetVersionEx() does the same job. Then you have to do some comparing. That's where things can get weird.

For example, a huge incompatibility bucket for Vista was applications whose code checked that the version was exactly 5.1. If not, it would pop up a message box saying it only ran on XP SP2 or better. I've seen these apps in the wild and I just can't keep from laughing. The error message itself says "or better", and that was presumably the intent, but the code is checking for equality. The magic of >= fixes this "incompatibility" bug in the code, and often these applications don't need any other fixes to make them work on newer OS versions. (That's why the logo people frown on refusing to run. How can you know you won't work on a later OS that doesn't exist yet?)

Even if you grasp the magic of >=, comparing major and minor versions can bite you. Larry Osterman shows us this code:

// Example in C#.
 
internal bool SupportsTaskProgress() {
    if (System.Environment.OSVersion.Version.Major >= 6) {
        if (System.Environment.OSVersion.Version.Minor >= 1) {
            return true;
        }
    }
    return false;
}

He rightly points out it will return false if the version is 7.0, or 8.0, or any other .0 that's larger than 6. (Yes, Windows 7 returns 6.1 for the version #, that's a long story and well covered elsewhere.)

Version checking is hard. If you can, use a library that does it for you. Vista Bridge, for example, not only wraps up cool new OS features for easy access from managed code, it also does some checking to see if the feature is there for you or not. Don't reinvent wheels. Also, check for the feature rather than the OS if you can. Larry discusses this in his post for Taskbar features. Any feature you plan to use, you should know how to check for. I hope to post some more links and examples on this soon.

Kate

 

Saturday, 07 March 2009 10:45:31 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Friday, 27 February 2009

Ronan Geraghty has an interesting blog, full of topics that interest me, with lots of BizSpark, WPF, Windows 7 and client development content. In a recent entry he explains that getting the Windows Logo on your software product is going to be a lot easier for Windows 7. Instead of submitting your application to a third party for testing, you can test it yourself and get certification without paying someone else.

Why would you want to certify your product and get the Windows Logo? I can think of at least three reasons:

  • The certification process may raise your quality bar by imposing some constraints on you that you were planning to skip.
    (Have a clean, reversible installation; Install to the correct folders by default; Support Multi-user sessions; etc.) That may feel like a drawback to some, but for those who wanted to put these features in, the logo program may be a good reason to have them.
  • There may be some customers somewhere who are more likely to buy something with the logo on it. There certainly are none who are LESS likely to buy because you took the time to get certified.
  • Having a logo'd product gets you a competency in the Partner Program and makes you a Certified Partner, which comes with a suite of benefits you're sure to want.

So making it easier to get the logo is nothing but good news. Follow Ronan's links for more details.

Kate

Friday, 27 February 2009 14:35:14 (Eastern Standard Time, UTC-05:00)  #    Comments [2]
# Thursday, 19 February 2009

Another Dan Griffin sample you might want to look at is the EC2 Console. I think his description from the first post in that category sums up his approach very nicely:

The purpose of the EC2 Console, like the other ones, is to demonstrate an attractive (WPF-based), novel, and useful application on Windows. In this case, we chose as our vehicle a helpful control panel for Windows developers who are new to cloud computing and would like to experiment with Windows Server, ASP.NET, and MS SQL on Amazon’s EC2 platform.

As it happens, Amazon already has an EC2 console (currently in Beta). But we’re going to differentiate ourselves from that in two ways. First, our EC2 Console will be specific to developers targetting Windows, and we can automate many administration tasks given that assumption. Second, our console (again, a WPF client app) will exhibit the kind of superior usability that is very difficult to achieve via the browser.

Client applications have many more advantages than just offline availability. Here's an application that's only useful when you're online, but is going to be a client application anyway. Follow along and see why.

Kate

Thursday, 19 February 2009 09:44:22 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Wednesday, 18 February 2009

Dan Griffin is working on some samples for client development and blogging his progress as he writes them. His SPOS sample combines workflow with access to local hardware (in this case, a fingerprint reader) to create an application where you could approve, say, purchase orders with a fingerprint swipe. It's a good example of the kind of application that is better as a local client application than something web-based and browser hosted.

He's created a Codeplex site where interim releases are appearing, and a blog category where you can follow his progress, read his musings on what fingerprint reader to buy, and so on. This is a sample designed for you to use in your own work, so follow along and see if it can help you.

Kate

Wednesday, 18 February 2009 09:38:47 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Monday, 02 February 2009

The WPF team have released an interesting document called the WPF Application Quality Guide. You can download it as a .doc file from that page, or just read it on line. It's an intruiging combination of handy links (Getting Started with WPF), overview diagrams, philosophy and advice around testing and development that would apply to non WPF projects as well, and very WPF-specific practices (should I derive from Control or UserControl?) aimed at testers and developers alike. The Word version runs to almost 80 pages but not all the sections will apply to every reader. You should take a look at it, for sure.

Kaet

Monday, 02 February 2009 09:44:02 (Eastern Standard Time, UTC-05:00)  #    Comments [1]
# Sunday, 01 February 2009

While I was in Redmond I met Alon Fliess, who like me is a C++ MVP and is exploring Windows 7 (and Vista before it) from a native point of view as well as a managed one. About two months ago he mused about the "rebirth" of C++ in these times, not just because some of those operating system APIs are easier to get to from native code, but also because of new native capabilities (the continued MFC updates, the native Web Services library, the concurrency services) that just keep being added to the arsenal available to C++ programmers. (He has some helpful links in the blog post - you could also search through here if you like.)

I think it's a good point. If you know C++, now's a good time to use it. If you don't, then hang around (at least virtually) with those who do - we can point out some cool things. And thanks to the magic of interop, wrappers, and C++/CLI, perhaps we can make some of those cool things a little easier to get to from managed code.

Kate

Sunday, 01 February 2009 09:12:13 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Friday, 23 January 2009

I was working on a service recently (pretty cool actually, it is a Windows Service that hosts a WCF Web Service) and I was fiddling with it and installing and uninstalling it, and I was getting frustrated. I couldn’t install the new version because it already existed. I couldn’t uninstall it because it was “marked for deletion” whatever that means. I found a knowledge base article which suggested rebooting my machine. Sure, that’s no trouble at all. Grr. Then I found Avner Kashtan’s blog entry. I can’t believe the simple fix he provides. And it WORKS! Go on, read it there. You’ll thank me.

Kate

Friday, 23 January 2009 22:16:36 (Eastern Standard Time, UTC-05:00)  #    Comments [2]
# Monday, 24 November 2008

Rudi Grobler has released a pack of WPF themes for you to use to make your applications convey the atmosphere you want to convey. Applying them is as simple as one line of code in your application as a whole, or window-by-window, or you can do it in XAML.  Rudi's blog tells how. It really makes a difference to the mood of your application and lets you stand out from the crowd.

 

I shrank the images because people object when the chrome on the right gets messed up by big images. You can see the originals on Rudi's blog - I just want you to see how very different the same application looks when you change themes. BTW, these themes were originally released for Silverlight and Rudi converted them for WPF. Pretty slick!

Kate

Monday, 24 November 2008 14:54:09 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Sunday, 23 November 2008

Because Visual C++ is a great tool for making Windows applications (and has been for well over a decade) a lot of the Visual C++ users I meet are Koolaid drinkers like myself. We use Microsoft tools to write software for a Microsoft platform, and a fair number of us use Word and Outlook and Powerpoint and rarely touch an application that didn't come from Redmond. But one of the cool things about C++ as a language (contrasted to VB and C# for sure) is that it is also used by people who don't use any Microsoft tools, or who use Visual Studio but nothing else, and people who are not developing for Windows. These people are not drinking the Koolaid and their opinions can be very helpful. They keep track, for example, of which standards features have been implemented in which compilers.

I came across this article on the future of C++, and the article itself didn't have much extra information for me (though the insight into the "bias" of StackOverflow was interesting.) But the comments! Wowza. I'll be reading Andy's blog from now on, and I recommend you read at least this post. It's a good one.

Kate

Sunday, 23 November 2008 09:14:21 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Sunday, 16 November 2008

Also on Code Gallery, in addition to the Vista Bridge, you can find an interesting bit of guidance for those developing Windows 7 applications. This is 43 pages of "what is special about Windows 7" written for developers. Curious about touch and multi touch? Ink? The new taskbar, ribbon, jump lists? Libraries? How to handle previews and thumbnails for your file type? Wondering what Windows Web Services are and how they differ from WCF? (quick answer - WCF is managed, Windows Web Services is native C++ - expect more on that from me when life calms down a little.) It's all in here, with plenty of screenshots. From here you will know where you want to drill more deeply, and you will know the names of features, which is usually key to figuring out how to use them.

http://code.msdn.microsoft.com/Win7DeveloperGuide is a good starting point, and you can join discussions and so on. The Downloads tab will get you the document in Word or XPS format.

Kate

Sunday, 16 November 2008 07:51:18 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Thursday, 13 November 2008

Just in time for my Tech Ed Day 4 talk, we have the long awaited arrival of the Vista Bridge Samples Library, version 1.3, on the MSDN Code Gallery:

Here you can download the latest version, join discussions, and report issues including native APIs you wish were wrapped. Remember, this is a sample library, not a product, so don't expect the kind of support, internationalization, or full coverage a product would have. Do expect useful code for reading (if you care about how to do interop well) or just using (if you want to light up your application with Vista features without knowing about interop.)

Enjoy! I've been waiting a really long time for this!

Kate

Thursday, 13 November 2008 07:24:47 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Saturday, 08 November 2008

I think I have this finally all sorted out now. This map is a little inaccurate because it depicts driving, but it gets the point across:

Monday December 8th I will fly to Fort Smith (via Atlanta). Tuesday December 9th I will drive to the Northwest Arkansas meeting. Wednesday Dec 10th I will fly from there to Baton Rouge (via Atlanta) and then Thursday Dec 11th I will fly home (once again, via Atlanta.) The talk will be the same at all three, so there's no need to follow me around :-)

The Windows Vista Bridge: How Managed Code Developers Can Easily Access Exciting New Vista Features

Accessing new Windows Vista features is a challenge from managed (.NET) code. The level of interoperability required is out of reach for many developers. The Vista Bridge is a sample library you can use in your own projects today that provides access to new user interface features as well as “behind the scenes” power features. Discover a shortcut to Windows Vista for Microsoft Visual Basic and Visual C# programmers and how you can get involved.

This talk is freshly updated for Tech Ed Europe where I will deliver it Nov 13th. See you there!

Kate

Saturday, 08 November 2008 10:32:26 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Monday, 03 November 2008

More PDC goodness.

Steven Sinofsky is the senior vice president for the Windows and Windows Live Engineering Group at Microsoft. He was awesome in the Day 2 keynote. Then he walked down to The Big Room and did a half hour Open Spaces talk with attendees. I recognized fellow RDs Tim Huckaby and David Yack among them. The sound quality varies but the recording is well worth watching to see how comitted he is to the Engineering 7 blog and to communicating with developers.

Then there's Joey deVilla. I've been reading his personal blog for ages and his technical blog once in a while - he was an open source guy so it wasn't always relevant to me. I love his sense of humour and spirit of community. I was delighted to learn that he would replace the departing Jean Luc David (our loss is Redmond's gain.) While at PDC, he interviewed Don Box, Miguel de Icaza, John Lam, Phil Haack and some of the .NET Micro Framework team. Great ways of learning some of what happened at PDC and getting to know Joey a little better.

But he wasn't the only one! John Bristowe was also busy with the camera. He interviewed Joel Semeniuk (another RD) and some people from Windows Home Server. This is a product I am hearing a lot of praise for that I really should install on a spare machine.

I love these videos because they start to capture some of the non-session parts of the conference. If you're wondering why on earth you would go to a conference and not go to sessions, look at these conversations. Also look in the background at the other conversations and interactions. Face time is why we all come to the same place. Sessions are a bonus.

Kate

Monday, 03 November 2008 12:14:32 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Tuesday, 28 October 2008

An astonishing thing happened to me on the afternoon of Day 1. I went to the room for the "Parallel Programming for C++ Developers in the Next Version of Microsoft Visual Studio" talk, and the redshirt guarding the entrance said "the room is full you have to go to the overflow room." I tried logic with her "It's a C++ talk! It's can't possibly be full!" but she chose to believe her own eyes. So I walked the hundred miles or so to the overflow room, which itself became full. The audience really enjoyed seeing how simple it can be to take advantage of multicores using templated functions. Lines and lines of boilerplate goo disappear into a library instead of your code, which means people might actually do this. Nice stuff.

Having learned my lesson, I lined up immediately for "Microsoft Visual C++: 10 Is the New 6." The room filled up just as fast:

I don't think I had heard Boris Jabes present before. He was very good indeed. The slide you see in this picture lays out the mission statement for "Dev10", the next version of Visual Studio, as far as the C++ team is concerned: Make VC10 the most productive IDE for native development. Then he proved it to us. Since it was the last talk of the day, people stayed with questions for a long time afterwards. I really enjoyed listening in on those.

Tuesday started with a keynote that really impressed me. Azure is amazing but the gritty details are not there yet. But Windows 7 - it's on the hard drive! It's real! So they showed it to us. Then they started talking about client development. Ray pointed out a number of advantages of writing a Windows application instead of (or as part of a suite that also has) a web app.

I loved the Windows 7 demo. Lots of features there I really want right now. I love Vista, but this is even nicer. And I hear the stability is great already so you could really use it. Julie plugged the Engineering 7 blog I've plugged myself.

Scott Guthrie said C++ five times. I don't think I've ever heard him say it once before.

 

Don't worry, he talked about managed code too. You may think of ScottGu as "the web guy" but he gave client development in general, whether C++ or WPF, some serious love in this talk. Great announcements too - grid control for one!

Want one more inside joke explained? (I just love the RD alias for this sort of stuff!)

David Treadwell's shirt had 0x007FFF embroidered on it. Think of it as 00 7F FF. RGB. Go try it in some HTML. Then think back to Day 1.

Update: better picture of the shirt by Angus Logan. Subtle-as-a-brick demo of the colour by Steve Clayton.

Missed the keynote? Based on the URL to day 1, try http://channel9.msdn.com/pdc2008/KYN02/

Kate

Tuesday, 28 October 2008 13:41:07 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Saturday, 25 October 2008

My Tech Ed Europe sessions are confirmed (have been for a while actually) so I had better tell you about them:

See you there!

Kate

Saturday, 25 October 2008 13:18:39 (Eastern Daylight Time, UTC-04:00)  #    Comments [1]
# Tuesday, 21 October 2008

As you know if you attended the talks at Tech Ed USA and Tech Ed Europe, or listened to me on DotNetRocks, MFC now supports a Ribbon user interface. You can take some MFC application you haven't touched for a decade or more, add a few lines of code, leave all your command handlers and such untouched and -tada!- you can have a user interface from this century.

But it's one thing for me to demo for you what a tiny amount of code it takes to add a ribbon, and another for you to design a sensible ribbon that will lead your users effortlessly through your UI. Some guidance has now been released. For example, they are very clear that this is a bad ribbon:

There are tons of images and annotations to help you devise something your users will enjoy using. Please read it before doing any Ribbon work, whether in MFC or not.

Kate

Tuesday, 21 October 2008 17:09:44 (Eastern Daylight Time, UTC-04:00)  #    Comments [0]
# Monday, 20 October 2008

WPF lets you build truly beautiful user interfaces and user experiences. To do a good job, you need to think differently than a typical "grey boxes on a grey background" form based UI. Once you do that some ideas may come to you - wouldn't it be nice if you didn't have to write a lot of code to achieve the things you think up? Using effects is one way to jazz things up without doing it all yourself. Jaime Rodriguez blogged about the release of a library of effects on Codeplex. His blog includes still pictures, but really you need to see these on video. There's also a Channel 9 interview. Take a look and start to think about how users process information from your applications.

Kate

Monday, 20 October 2008 15:11:36 (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.

Kate

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