# 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]
# Thursday, 17 February 2011
One of the marks of true expertise and skill is making something very difficult look easy and effortless. It can take a long time and a lot of work to give the impression that something is natural and everyday for you. It takes even more work and practice to make something look spontaneous and unrehearsed. This is as true of giving a technical presentation as it is of playing a sport or a musical instrument, dancing, singing, or cooking. Oddly, some people seem to think that presenters are all "just naturals" who don't practice, rehearse, or plan.

There are two problems with thinking that. The first (and the smaller one) is that it doesn't give enough credit to the hours of work that goes into producing that "off the cuff" presentation you so enjoyed. The second (and by far the bigger one) is that it leads you to think that you couldn't be a presenter. And that would be a loss. Presenting, even in the smallest of contexts, makes you better at whatever you're presenting about. If you do a presentation on Windows Phone development or Visual Studio Extensibility or the like, you will know that subject better when the presentation is over. It also generally helps your career, gives you a chance to meet people and help them, and if you're lucky will also get you a chance to travel to marvelous places and meet even more people.

One of the terrific people I've been able to meet thanks to the speaking I've done is Guy Smith-Ferrier. He's really good. He's always been generous with slides and downloads on his website, and he really knows his stuff. And now he's made a series of videos to show anyone - really, anyone! - just what it takes to be a presenter. He covers a number of things I've never seen in talks of this kind, like choosing your topic wisely. They total a little over 2 hours and are well worth your time if you're thinking of trying presenting or (more likely) you wish you could and think you can't. You can watch them on the UGSS site or download them if you prefer (search for speaker.)

Once you've watched these, you will understand what it seems the great speakers just "happen" to be doing. And you can do those things too. You can be a presenter if you want - it's no harder than learning to code. Guy's straightforward way of laying down the truths behind great presentations will take you where you want to go.

Kate


Thursday, 17 February 2011 02:14:42 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Tuesday, 15 February 2011
Did you watch the whole "Introduction to STL" series on Channel 9? As I said when part 10 appeared, there is no universe in which this series is really introductory. So when I tell you that Stephan has now started an advanced series, you need to take it seriously. Here's how Charles entices and warns us:

This series, Advanced STL, will cover the gory details of the STL's implementation -> you will therefore need to be versed in the basics of STL, competent in C++ (of course), and able to pay attention! Stephan is a great teacher and we are so happy to have him on Channel 9, and C9 is the only place you'll find this level of technical detail regarding the internals of the STL. There are no books. There are no websites. This is Stephan taking us into what is uncharted territory for most of us, even those with a more advanced STL skill set.

Me, I'm enticed. And I'm watching. You should be too. (But watch the first ten first, or the minute you start to feel lost.)

Kate

Tuesday, 15 February 2011 20:52:02 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Sunday, 13 February 2011

I've written about "banned APIs" before - let's start with this link and if you read it, it has a link to a previous post, and go on and follow that link and it has a link to a previous post and so on and so on. To summarize, there are three ways to ensure you are not using banned APIs in your C++ app:

  • You can use the extension I blogged about. It highlights places in code you're editing or typing that calls a potentially unsafe function. That's great if you're typing fresh code,not so great if you just inherited a million lines of C++ and aren't sure if it's vulnerable to buffer overflow attacks.
  • You can compile with /W4, and deal with all the C4996 warnings (and use code analysis or code review or generally find the places that someone has suppressed that warning.)
  • You can include banned.h, which controls whether these unsafe functions are marked deprecated or not
None of that has changed. What I wanted to point out was a recent blog entry from the SDL team alerting us that banned.h has been updated, and I also spotted a video on TechNet (why a developer-focused thing is there I don't know) that shows it in action. If you write C++ code, you should be using one or more of these techniques.

Kate
Sunday, 13 February 2011 20:44:32 (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]
# Monday, 07 February 2011
The architectural tools in Visual Studio Ultimate are fantastic. Often, people think they're just for for managed code, though. Not so! Here's a page on MSDN that shows how you can use Layer Validation to validate your architecture. You'll need the Modelling and Feature Pack and parts are a little fiddly, but it can be done!




No reason to assume the architecture tools are not for C++ developers, too.

Kate
Monday, 07 February 2011 11:08:49 (Eastern Standard Time, UTC-05:00)  #    Comments [0]
# Saturday, 05 February 2011
Adding concurrency to an existing application can be remarkably simple. I have a demo where I change a for loop to a parallel for and -poof!- the app gets faster. The hard part of that demo is knowing that a given loop is ok to parallelize, that it doesn't matter what order things are done in as long as they all get done once. And, of course, knowing that the loop in question is responsible for your execution time. Making the right decision is the hard part - typing the code is easy.

With that in mind, you need advice about choosing your structures and algorithms. Here are some handy things that may help you. On the native parallel programming blog they will help you choose your parallel sort. And on the VC++ blog, it's all about the parallel containers. If you're going to write parallel code (and let's face it, eventually you will) you need to read this sort of thing.

Kate

Saturday, 05 February 2011 10:42:30 (Eastern Standard Time, UTC-05:00)  #    Comments [0]