# Thursday, 22 March 2012
A mentoring client of mine needs someone to take on a specific project that should be about 500 hours of work. That fits nicely into a summer, and the work would be suitable for a student or a junior programmer. Here's the job description we wrote up (the mentor is me by the way):

Must have:
  • Familiarity with one or more programming languages and IDEs
  • Careful attention to detail, especially for visual design (form layouts and alignments, fonts etc)
  • Willingness to learn a large and complex project
  • Time management skills including estimating and reporting effort and time for tasks and projects

Nice to have:

  • .NET programming experience and familiarity with Visual Studio
  • Experience developing a Windows Forms application
  • Background in software testing or user support

The job offers:

  • Work onsite in Peterborough
  • 40 hours a week as soon as the student’s schedule will allow
  • Important work improving a product that is mission-critical to real customers
  • Specific project to be tackled and completed; more will likely follow if this one goes well
  • Training on the tools to be used and the tasks to be done
  • Regular access to a world expert mentor in relevant areas
  • Pleasant working environment with nice coworkers, relaxed dress code, and an open office

It's worth mentioning that there is no C++ involved in this at all. So don't hold back if you don't have it, and don't rush to apply thinking it's a C++ job, because it's not. If you're interested, email me directly (please don't just comment here or tweet me or the like) and I will pass along your resume and contact details. I may have another client looking for someone soon as well, with similar requirements, so let me know if I can hang on to your info and pass it along twice.

Kate

Thursday, 22 March 2012 10:50:17 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 14 March 2012
People keep on releasing interviews with me. If you're willing to listen to them, I'm more than willing to keep on talking. There's remarkably little overlap in all of these.

On The Tablet Show, Richard and Carl (yes, that Richard and Carl) asked me about C++ in this wacky new world of Windows 8. We had the usual freewheeling conversation and covered a lot of ground in 49 minutes.

For PluralSight, Fritz asked me questions about my latest course, and the industry in general. This one's just ten minutes, and there's a transcript if you'd rather read than listen.

Kate

Wednesday, 14 March 2012 14:56:58 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 13 March 2012

In recent years the speed at which Tech Ed session recordings have appeared has increased dramatically. I can now sometimes watch a missed session while I am still at the conference, in time to seek out the speaker and ask questions if I want to. But one thing that hasn't changed is that the precons, the all-day sessions held the day before the conference starts, are not recorded. Whether you attend one or not, you can't watch afterwards.

This has two consequences. First, if you want to see what's been happening to C++ lately and why people who've ignored it for the last ten years are suddenly interested again, you have to register (Orlando, June 10th or Amsterdam, June 25th) and you have to come and listen to me live. Second, if you do that, you want to take plenty of notes because you won't be able to just watch the video again later if there was a part where you got caught up in something on Twitter and just weren't listening.

Here's what I'm going to do to reduce the note-taking burden for my attendees. (I can't speak for other precon presenters, but you're welcome to ask them.) I will put a number of useful bits and pieces for you to download, using credentials I'll give out on the day. These will include:

  • The PPT decks I will use to present, with some notes added to some slides
  • Written demo scripts for all demos with exact step-by-step instructions (occasionally, it might just say “show the for loop and explain what it is doing”, but if there is code to be added or edited, it is in the script, if there is an option to be set the exact menu choices are in the script, etc.)
  • Zip files of starting points for all the demos and ending points too

During the precon itself, I will collect Live IDs from attendees who would like to be added as a user to a subsite on  my “hosted TFS” preview page, which I am using as a sandbox. This makes it possible to play around with the new ALM features without having to get a site all set up. I am not sure what will happen to this preview site by Tech Ed time, but I’m presuming it will continue to exist all through 2012. That’s the site I intend to use during the ALM (module 2) section of the precon.

I also intend to record each demo in advance – I typically record all my talks when I’m practicing for length and I have a pretty good mike that I use for my PluralSight courses. It's not much effort to edit them so that you can use them for a reference. I would have put this in the bulleted list but I don't want to 100% promise that I'll get them all nicely edited in time. I hope to provide them.

Specifically for module 4, Best Practices, I am planning to write a short paper that makes the same points in prose – sentences, code snippets etc – and if it's ready in time, I'll bring printouts of that paper to the session (leave me a comment if you think that would be useful.) It will be on my web site eventually, but I am trying to push myself to get it written before Tech Ed so it can be at the precon.

Anything else you think would help to reduce the note-taking burden? It's a full day, and a lot of us are out of practice receiving information in pieces of that size. Let me know!

Kate

Tuesday, 13 March 2012 17:18:55 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 12 March 2012
It's been a week-and-a-bit that the beta of Visual Studio 11 has been out. I'm using it more than Visual Studio 2010 at the moment - in both Windows 7 and Windows 8, and for C++ projects exclusively at the moment. (Say what you will about the C++ Renaissance, but the fraction of my consulting, writing, and coding that is C++ has taken a major uptick in the last  6 or so months.) I'm getting used to the look, and I'm certainly motivated to use more keyboard shortcuts :-)

Herb has a nice blog post that summarizes the C++ features in this release. You can read the details there, I'll just summarize briefly:
  • Complete Standard Library for C++ 11. Especially the async and threads stuff. Standard!
  • Some more language C++ 11 features. Range for is the big one here.
  • C++ AMP. You know I care about this one!
  • The continuation (.then) syntax of PPL, which makes WinRT asynchronicity much more readable.
  • Windows 8 - both C++/CX and WinRL

And there will be more coming, sooner than "Visual Studio 12" whenever that might be. There will be out of band releases with more goodies as they get finished. If you care what gets done (and released) in what order, you can tell the team. I took the survey myself - I care about uniform initialization, defaulted constructors, and then some other bits and pieces at lower priority. Since they aren't just going to gather them all up and release them a few years from now, order matters. Share your opinion, and you're more likely to get what you want.

Monday, 12 March 2012 11:09:18 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 11 March 2012

Recently the Tech Ed people interviewed me for a profile that is now live. You can read it on their blog. We are all starting to work our way towards being ready for June. The content catalogs are partially public for both Tech Ed North America and Tech Ed Europe. If you search on C++, you'll find more than just my precon, by the way.

North America:

Europe:

Who is giving those talks? Well I am doing the precons in both places - that's official. And I wrote the abstracts for the other two talks, so I'm pretty sure I'm giving those too. I would love to see you there. And if you have colleagues who are coming to Tech Ed who really don't "get" why C++ is different these days, please encourage them to join me for the all-day precon that answers precisely that question.

Kate

Sunday, 11 March 2012 13:48:45 (Eastern Standard Time, UTC-05:00)  #    
# 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)  #    
# Sunday, 19 February 2012

Do you know how to get a command prompt and have its "current directory" be a specific directory in which you want to do some work? Sure you do. In fact, I bet you know at least three ways.

First, the how-hard-can-I-make-this way: Click Start, and mouse around until you see Command Prompt. Click that. Change drives if need be (by typing D: or E: or whatever) and then change directories with the CD command a lot.

Did you know that pressing Tab will autocomplete file and folder names? It even puts the quotes in there for you, since spaces are interpreted as "this is the end of the file and here are some other parameters". But as I said, that's the slow way.

A lot of times, I have a Windows Explorer open to the very folder where I would like the command prompt. I've looked at the files and I know I want to install a service or register a DLL or run an exe or something. Here are some ways to get to that command prompt more quickly in those cases.

First, get yourself a command prompt, and get on the right drive (eg D:). Then, type "cd " in the command prompt, and click on the Windows Explorer address bar so it becomes plain text. Copy the text with Ctrl+C, and then in the command prompt, bring up the system menu, choose Edit, and then Paste:

This is really the long way though. First, you can do a cool drag and drop trick. In the command prompt, get on the right drive and type "cd " , but then in the Windows Explorer click the folder image next to the path, and drag that into the command prompt window:

Not bad, but try this. Close that command prompt, and shift-right-click in the background of the Windows Explorer folder:

That's quicker, right? Sure it is. But two issues - first, a shift right click followed by mousing down and clicking does take a little dexterity. And second, what if I wanted a certain kind of command prompt - say a Visual Studio Command Prompt? Well, that's where we take a turn into stuff I didn't know until just a few days ago.

Go back to that Windows Explorer, click as though you were going to overtype the address in the address bar (you did know you could do that, right?) and type cmd, then press enter:

It even changes drives (to D:) if you need to. Wow! Now, what else can you type there? Well, I've tried notepad foo.txt, for example, and it creates a file in that folder for me and opens in it notepad. Do you know how many times I've done right-click, New, Text File, type the new name, enter to accept that, enter to edit it? This is way quicker. (It doesn't seem to worker for newfangled apps like WinWord, unfortunately.) Or, how about this:

You need the pairs of double quotes at beginning and end - you might have this string in a handy text file on your desktop, or you might move that batch file to somewhere with a shorter path. Because that particular string gives you a "Visual Studio Command Prompt" in the folder - perfect for installing services and whatnot.

Just goes to show you, there's always something new to learn. I use the cmd trick almost every day. And my thanks to whoever coded that, whether it was 20 years ago or more recently.

Kate

Sunday, 19 February 2012 10:21:25 (Eastern Standard Time, UTC-05:00)  #    
# 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)  #