# Friday, 16 September 2016
It has been a very busy summer for me. Mostly it's been great, with family visits from all over the world and the wedding of my oldest child. But there have been some challenges, too. Without going into details, I've had to cancel plans to speak at (and even attend) CppCon. This is really sad - CppCon was the largest C++ conference ever when it started in 2014, and has grown remarkably ever since. It's a place where I learn new things, make new friends and contacts, and meet old friends for a wonderful week of laughter, in-jokes, and brain-stretching.

I am hoping that within a few months, I'll be "back in the saddle" again and planning a 2017 full of speaking and learning. In the meantime, I'll be following #CppCon on twitter, and watching the YouTube channel for new videos - the plenaries and keynotes get up really fast. If you're not there in person, be there virtually like me!

Kate

Friday, 16 September 2016 10:59:08 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 29 April 2016

I've started a C++ column in Visual Studio Magazine. I'm sure you've read plenty of C++ columns in your time - I sure have! I wanted this one to be a little different. So, here's what I've decided to do. For each column, I choose a guidelines from the C++ Core Guidelines, and then explain it. But the twist is that I'm not going through the guidelines from top to bottom - I'm picking guidelines whose explanations require a little language knowledge.

The first column just sets the stage and explains what I'm doing, and gives you a link to the Guidelines. The second, Don't Cast Away Const, explains the guideline, but also the consequences of const-correctness, a typical situation where you might find it hard to stay const-correct when you make a performance tweak to a running system, and the correct use of the mutable keyword. Not bad for explaining a four-word guideline!

I have a number of columns already written and plans to write more. Please check them out and spread the word!

Kate

Friday, 29 April 2016 17:17:26 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 24 March 2016
My latest Pluralsight course is live! It's called First Look: C++ Core Guidelines and the Guideline Support Library and it introduces the guidelines and why you might want to use them, as well as some preliminary tool support. As always, if you need a free trial, use the link in the sidebar on the right.

Pluralsight courses now have trailers. This is my first course with one and it turned out a lot better than I expected. You don't need a subscription to watch the trailer - just go to the course page, and over on the right side there are these downward pointing triangles next to time lengths. Click the one for Course Overview which is 1m 49s, and you'll see one entry under it that also says Course Overview 1m 49s.



Click that and the player will open and play the trailer. I did the voice recording, and some Pluralsight elves put together visuals (some are excerpts from demos) around it. I like it! Let me know what you think.

Kate
Thursday, 24 March 2016 13:10:15 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 29 February 2016

I’ve been hearing that the new search and browse functionality on Pluralsight isn’t working for everyone, and that the sheer volume of courses makes some hard to find. So I thought I’d make a list of my current courses in the hope of simplifying things for those who want to learn something specific.

Visual Studio 2015: Essentials to the Power-User

This is the most recent Visual Studio course and it starts at the beginning and goes well past what most people know about Visual Studio. I’m confident that even if you use Visual Studio every day, you’ll learn something in this course that will make you more productive.

What's New for C++ Developers in Visual Studio 2015 Preview

This course was based on the preview, but works well against the RTM version of Visual Studio 2015. It’s C++-focused and just shows you what’s new compared to Visual Studio 2013.

Using StackOverflow and Other StackExchange Sites

Most developers find StackOverflow results whenever they do a web search for a particular error message, or some API they’re having trouble using. Many of them tell me that when they try to sign up and actually ask and answer questions, they have an unpleasant experience. Often, it’s because their mental model of the site does not match the way it actually works. This course will show you how it works, so you can get the answers you need and not feel rejected or hurt by the way these sites work.

Learn How to Program with C++

This course is aimed at people who have never programmed before. If you’ve programmed, in any language, consider C++ Fundamentals instead. If you don’t believe anyone can learn C++ as a first language, I’m ready to argue with you. Modern C++ is a simple and useful language that a beginner can learn and use well.

C++ Advanced Topics

This course is for the material I couldn’t fit into C++ Fundamentals. It’s presented as a number of things I want you to do, or stop doing, when you write C++ today:

  • 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

C++ Fundamentals  and C++ Fundamentals - Part 2

These courses were written in 2011 but hold up well. Here is where you’ll learn the basic syntax of the language and how everything works, including templates, pointers, lambdas, and exceptions. Watch both parts to learn the whole language, then dive into C++ Advanced Topics to round out your C++ knowledge.

I have other courses – on older versions of Visual Studio, for example, but these are the “big” ones for me at the moment. I hope this list helps you to find them. And remember, if you need a free trial, use this link. Click Subscribe, then Start 10-Day Trial, and you’ll be all set.

Kate

Monday, 29 February 2016 12:19:13 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 26 February 2016

Our longest-serving employee, Joyce MacDonald, has worked her last day with us. She’s moving away to the other side of the country, where I don’t doubt another firm will soon find themselves blessed with her skills. Joyce joined us full time 16 years (and one month) ago, and had been working part time for us long before that. From the very beginning, every task that she took on she transformed and improved. We needed data entry when we were building a website for a local real estate firm; she took the procedure for adding a listing and kept streamlining it – open these three files at once, copy this once, then paste it here, here, and here – until she had cut the target time in half and then in half again. Later, she helped to develop our Quality Procedures and to bring order to chaos in our software development process as we moved to agile and changed our client mix. She helped our developers to become more organized, to report progress more thoroughly, and to test before committing or deploying. She trained our clients to think about what they really needed and to consider the consequences of what they were asking for. I have never met anyone who cared as much about the success of the firm as Joyce. We’ve employed dozens of people who’ve done good work, worked hard, and cared about our clients. The majority of them, like the majority of people everywhere, never gave much thought to whether the company was doing well, except perhaps to wonder or worry if their job was safe, or if there would be money to spend on perks. I’m not complaining; I think that’s perfectly normal. Joyce is wired differently: it’s fundamentally important to her that things are done right, that the client gets what they want, and that the company makes a profit. That’s what just has to happen, and it’s generally what she’s able to make happen.

Joyce started doing data entry and office administration but quickly moved into more complicated tasks. She’s been managing projects and client interactions for a long time. She also made sure that people did what they were supposed to do when they were supposed to do it, and kept everyone informed and contented. If you’ve ever called our office, you’ve probably talked to her. She’s probably reassured you about something and made sure it got taken care of for you. She has her PMP now, which formally recognizes how well she manages projects, gets requirements out of customers and organized in a way we can all understand, and builds appropriate processes for developers to follow. She’s taken on the challenge of managing not just seasoned, well-behaved, adult developers, but also students and our own grown children, who are not always easy to control. Let’s just say they meet their deadlines for her :-).

Losing Joyce to the west coast hasn’t been a total surprise for us. When we came back from the epic Pacific trip, she got the opportunity to move and though she delayed it, we rather knew it was inevitable. Over the past 6 months or so we’ve adjusted the balance of work we take on so that our remaining clients will be those I can handle client support for, and whose projects I can manage. (Brian will continue to be an architect, developer, and star debugger who doesn’t have to talk to the clients.) For our clients, nothing much will change. For us, there will be a hole in our lives – personally and professionally – that will take a while to settle down. When she joined us, Joyce was a neighbor (I believe we first met in the summer of 92), and for a long time she walked or rode her bike to work in the office attached to our house. Our kids have grown up together. When stuff happens, Joyce is the one we talk it through with – business and not-business. We were able to go to the other side of the world for five weeks, often with no internet, knowing the company would tick along fine without us. It’s going to be an adjustment not having her with us every day, not having her to count on. Still, we know why she’s moving, and we wish her all the best in this new phase of her life.

Kate

PS: If you’ve found this entry as part of due diligence in a hiring process, let me be clear: Hire Her. You won’t regret it.

Friday, 26 February 2016 15:53:18 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 07 December 2015

The first keynote at CppCon this year was Bjarne Stroustrup (who invented the C++ language) announcing the C++ Core Guidelines. They are on Github and once he announced them, as Herb Sutter reported in the second keynote the very next day, they quickly became a trending topic across all languages. Here is a description of the guidelines from there:

The C++ Core Guidelines are a collaborative effort led by Bjarne Stroustrup, much like the C++ language itself. They are the result of many person-years of discussion and design across a number of organizations. Their design encourages general applicability and broad adoption but they can be freely copied and modified to meet your organization's needs.

The aim of the guidelines is to help people to use modern C++ effectively. By "modern C++" we mean C++11 and C++14 (and soon C++17). In other words, what would you like your code to look like in 5 years' time, given that you can start now? In 10 years' time?

The guidelines are focused on relatively higher-level issues, such as interfaces, resource management, memory management, and concurrency. Such rules affect application architecture and library design. Following the rules will lead to code that is statically type safe, has no resource leaks, and catches many more programming logic errors than is common in code today. And it will run fast - you can afford to do things right.

To me, these guidelines are the key to getting across my fundamental message that C++ does not have to be hard, scary, complicated, or dangerous. The language may still say “it’s your foot!” but the guidelines, and the tools they can drive, are quite the opposite.

You probably know that Visual Studio has a static analyser built in. (You should, anyway, I’ve blogged about it.) It will catch things like this:

    int* p = nullptr;
    *p = 10;   

But it doesn’t mind things like this:

    int arr[10];        
    int* p2 = arr;

Two lines, two violations of the guidelines – I’m not initializing any of the elements of arr, and then I am using its address as a regular old pointer. Now, there’s nothing wrong with regular old pointers – some people have got quite a hate on for them with the rise of genuinely smart pointers, but pointers are fine. Using pointers to control lifetime isn’t fine, because it’s impossibly difficult. But pointers themselves are fine. What’s not fine here is the “decay” of an array into a pointer – folks from other languages don’t expect that at all, and some marvelous bugs have hidden behind this simple bit of helpfulness from the compiler. So there’s a guideline that says don’t do that. Specifically:

(I’m giving you a picture of code because if you want to copy and paste you should go to the live, always updated, guidelines on github.)

This guideline is part of a “profile” – a particular set of rules that are designed to be enforced and that are supported by tools. Well, when I say tools I might be overstating the case a little. There’s just one tool at the moment, but that could be enough!

This tool, C++ Core Checker, is on the NuGet Gallery. You don’t have to get it from there though. You get it, and use it, from inside Visual Studio 2015. Any version will do. If you don’t use Visual Studio normally, just get and install the Community Edition, which is free and is ok to use for commercial purposes, from https://www.visualstudio.com/ . (Need the fine print? if you’re using it as a person, you can do whatever you like. If you work for a company with less than 250 PCs and less than a million dollars US in revenue, again you and up to 4 of your coworkers can use it for whatever you like. If you work for an “enterprise” company then any and all of the employees can still use it for learning purposes or to work on open source.) Note that Visual C++ isn’t part of the Typical install, so you’ll need to choose Custom and select Visual C++:

So once you have Community Edition or some edition of Visual Studio, make a console application and put in the two bad lines of code. Build it and then also run static analysis on it (On the Analyze menu, choose Run Code Analysis, On Solution.) You won’t get any warnings or errors. That’s your pre-guidelines life. You’re doing something inappropriate and nobody is telling you.

Now, add the checker to your solution. This is solution-by-solution, not a change to how Visual Studio does static analysis. On the Tools menu, choose NuGet Package Manager, Package Manager Console. In the console window that appears, type Install-Package Microsoft.CppCoreCheck and press enter. You will see output like this:

Attempting to gather dependencies information for package 'Microsoft.CppCoreCheck.14.0.23107.2' with respect to project 'ConsoleApplication1', targeting 'native,Version=v0.0'
Attempting to resolve dependencies for package 'Microsoft.CppCoreCheck.14.0.23107.2' with DependencyBehavior 'Lowest'
Resolving actions to install package 'Microsoft.CppCoreCheck.14.0.23107.2'
Resolved actions to install package 'Microsoft.CppCoreCheck.14.0.23107.2'
Adding package 'Microsoft.Gsl.0.0.1' to folder 'c:\users\kate\documents\visual studio 2015\Projects\ConsoleApplication1\packages'
Added package 'Microsoft.Gsl.0.0.1' to folder 'c:\users\kate\documents\visual studio 2015\Projects\ConsoleApplication1\packages'
Added package 'Microsoft.Gsl.0.0.1' to 'packages.config'
Successfully installed 'Microsoft.Gsl 0.0.1' to ConsoleApplication1
Adding package 'Microsoft.CppCoreCheck.14.0.23107.2' to folder 'c:\users\kate\documents\visual studio 2015\Projects\ConsoleApplication1\packages'
Added package 'Microsoft.CppCoreCheck.14.0.23107.2' to folder 'c:\users\kate\documents\visual studio 2015\Projects\ConsoleApplication1\packages'
Added package 'Microsoft.CppCoreCheck.14.0.23107.2' to 'packages.config'
Successfully installed 'Microsoft.CppCoreCheck 14.0.23107.2' to ConsoleApplication1
PM>

This changes your project settings so that analysis runs this Core Checker for you. Repeat the analysis step and this time the new tool will run and you will get output like this:
------ Rebuild All started: Project: ConsoleApplication1, Configuration: Debug Win32 ------
  stdafx.cpp
  ConsoleApplication1.cpp
  ConsoleApplication1.vcxproj -> c:\users\kate\documents\visual studio 2015\Projects\ConsoleApplication1\Debug\ConsoleApplication1.exe
c:\users\kate\documents\visual studio 2015\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(9): warning C26494: Variable 'arr' is uninitialized. Always initialize an object. (type.5: http://go.microsoft.com/fwlink/p/?LinkID=620421)
c:\users\kate\documents\visual studio 2015\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(10): warning C26485: Expression 'arr': No array to pointer decay. (bounds.3: http://go.microsoft.com/fwlink/p/?LinkID=620415)
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

Where it says "type.5" and there's a link, that's to the specific rule in the "type" profile that this code breaks. And where it says "bounds.3", the same - I showed a picture of bounds.3 up above.

Isn’t that great? Come on, it’s great! The tool will add more rules as we move through 2016. I’m going to have a lot more to say about the Guidelines as well. But this is a great place to start.Why not point it at some of your own code and see what happens?

Kate

Monday, 07 December 2015 13:54:57 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 26 November 2015

If you have an MSDN subscription, you know that it provides a number of benefits besides software licenses - you get Azure hours, you can use Visual Studio Online, and so on. Those are well worth the price of the subscription. But it also gives you access to a number of Pluralsight courses, completely free. If you have a Professional Subscription, you get access to 30 courses, and if you have an Enterprise subscription, you get access to 45 courses.  (You want one of the over 4500 other courses? You'll need a full subscription, but you can buy that at 30% off, which helps.)

And yes, my latest course, Visual Studio 2015: Essentials to the Power-User is one of the ones you'll get access to. So go, check it out!

Kate

Thursday, 26 November 2015 13:29:22 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 09 November 2015

I have a new Pluralsight course on Visual Studio called Visual Studio 2015: Essentials to the Power-User. It starts at the beginning, so if you're new to Visual Studio it will help you get started, but carries on "to 11" as it were, covering things many everyday users of Visual Studio don't know. Here are the modules, each with their length:

  1. Getting Started (42:08)
  2. Projects and Solutions (13:23)
  3. Namespaces, Folders, and Files(27:03)
  4. Understanding and Personalizing Visual Studio UI Components (26:57)
  5. Exploring Relationships in Your Code(36:41)
  6. Using Search and Find Effectively(28:15)
  7. Letting Visual Studio Help You (46:28)
  8. Basic Debugging Features (24:04)
  9. Additional Debugging Features (44:30)
  10. Working with Designers (39:37)
  11. Useful Extensions (39:54)
  12. IntelliTrace and Code Map (25:57)

If you don't have a Pluralsight subscription, click the Author link over on the right hand side of this blog - click Subscribe, then Start 10-Day trial. That should give you a good idea of how valuable the subscriptions can be. (My company buys subscriptions for my staff, and I use my free author one all the time. It's a great way to learn a new technology.)

My main goal in this course was to have Visual Studio make sense to the learner. There are so many ways to do any action that sometimes when you learn something it seems pointless, and you quickly get tired of learning an endless parade of similar features. I worked hard to put these into an order that would lead naturally through the capabilities of the tool, and put things in context. If you watch all 12 modules, you'll know more Visual Studio than most developers - and you'll have a productivity boost to show for it that should be pretty impressive! Please do give it a try.

Kate

Monday, 09 November 2015 12:18:54 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 08 October 2015

On the Pluralsight platform, subscribers can access a discussion area for each course. The traffic in mine is light enough that I have set up an alert to send me an email for each new comment. I just got one for my StackExchange course that brought a huge smile to my face:

I have actually tried not to use Stack Exchange and stick to other sites.  I had several bad experiences and have not gained any reputation at all on any questions that I asked.  I have even deleted questions due to downvotes or other negative activity.  Well after watching this, I understand the problems that I have had in the past.  I really enjoyed hearing this and knowing the mechanics of how this works [...] I now know more about it to help me find the answers that I need when I am head scratching my way through coding.

When I first started reading I was thinking "here's a comment about how StackExchange is horrible and why have a course on it" - something I hear from some of my friends. But then it took a sharp right turn to the exact reason why I wrote the course. I mean this is exactly the persona I had in mind - someone who needs answers, but because of not knowing the way the sites work, not only isn't getting them, but is having an unpleasant experience and ends up avoiding the sites.

When I decide to write a course I let myself imagine some possible outcomes. This comment is just the sort of outcome I was hoping for. It keeps me motivated to create more :-)

Kate

Thursday, 08 October 2015 17:43:35 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 26 September 2015
Back when I first started going to conferences, the schedules typically ran 9 or 9:30 to 4 or 4:30. I used to bring a book to read in the evenings in case I didn’t like what was on TV. Then I started getting invited to dinners and parties and planning meetings and conference days got a lot longer for me. But what I’ve noticed recently is that conference days are getting a lot longer for everyone. People have come all this way and are willing to pack a lot into each day. I’m writing this on the last day of CppCon where there is content starting at 8am and running until 10pm. There's even content over the two hour lunch break! That’s a long day, and a bunch of them in a row makes for a long long week. So here are some tips for how to handle that kind of week. I’m going to be specific to CppCon, because I think a lot of my readers should attend it, but other conferences will have equivalents to everything I’m mentioning here; I’ll let you do the mapping yourself.

First, have a schedule. Weeks before the conference, mark out what talks you want to attend. Have a goal of selecting two talks in most time slots. Then if your first choice is not as good as you expected, or the room is full and you don’t want to stand, you know exactly where to go for your second choice. Have that schedule in your pocket – on your phone, or on a piece of paper – so you have no lost time figuring out where to go. (CppCon uses Sched, which mails you each day's schedule in the morning, making it easy to have with you.) Don’t be the person who shows up at 9 only to learn there were sessions at 8. Check the schedule at least once a day during the conference in case things are being added. Tip: things are being added, you can count on it.

Second, plan ahead to take care of the physical body that is carrying your brain from session to session. It’s really a simple matter to have a few granola bars and a bottle of water in your bag. If you miss a snack, you can still have something to eat or drink. Bring a light sweater in case you are in the cold room. Bring some painkillers if you might get a headache from sitting somewhere loud. Bring whatever little comforts you need to keep yourself from getting whiny and leaving early to go to your peaceful hotel room and watch TV. (That said, there’s always one day in a one-week conference where I go back to my room for an afternoon nap. It’s the only way I can stay functional during long and intellectually-intense days. Just make sure you’re doing it for a brain recharge and not for something you could have avoided by bringing a small item with you to the conference centre.)

Third, think about how you’re going to take notes. A paper notebook? Bring a spare pen, too. Your phone? Your laptop? Or are you just going to immerse yourself in the experience and use the videos if you want to check something later? Whatever your plan is, bring what you need to be able to use it. Power is always a challenge at conferences – I like to bring an external battery for my phone so it can charge in my bag. Think about what your bag is going to weigh and consider leaving the laptop at the hotel and getting by with a phone and some paper for notes. It’s really liberating not to be lugging a heavy bag, in fact surprisingly so.

Fourth, before you arrive (at the latest, on the plane to the conference) write up your goals for the conference. Do you want to meet people? Specific people, or some number of people, or people from a particular industry? Do you want to learn something specific? (Perhaps this is the year to understand SFINAE, or be able to follow along in a talk that includes template meta programming, or “get” those Haskell jokes people are always telling.)  Maybe you want to tell people about something? Tweet some number of times? Blog some number of times?  Have a plan. Have goals. Check yourself against these goals each morning, and adjust your plan for the day if you need to, so that you move towards those goals each day.

When you arrive at the conference, scout out the amenities. Where are the bathrooms? Are there tables and chairs? Are there tables and chairs with power? On Day 1, pay close attention to the food and drink pattern. Is coffee always available, or only at certain times? Where does the food appear? Knowing this will take away any worry you may be carrying around that you may miss something and not get another chance at it. It will also save you from taking extras of things and lugging them around all day when you don’t really need them. I also like to work out patterns related to what rooms I’ll be in – that I’ll be on the same floor all afternoon, for example. It just makes me feel a little more settled and centred.

Looking after your body doesn’t stop with what you planned and what you brought. I start each day with 5 minutes of stretching which makes a big difference to how I feel all day. I also try to use the stairs instead of the escalators – less lining up and it makes me feel better too. I go ahead and eat the snacks, many of which are not part of my normal day (brownies in the afternoon? bag of chips at lunch?) but not to excess. CppCon has fruit and other options that are not all about fat, sugar, and caffeine, and it’s often a smart choice to go with those rather than the straight-up treats. Try not to get too far from normal. If you normally have 5 cups of coffee a day, then you can do that during the conference, but if you’re a one-cup-a-day person, perhaps don’t go beyond 2 or 3 a day while you’re here. Same advice for alcohol – if you dramatically increase your consumption over the course of the week, you’re likely to feel uncomfortable by the time Thursday or Friday rolls around. The one thing you should be sure to take in more of than usual is water – whether you’re eating more sugar than usual, drinking more caffeine and alcohol than usual, or just walking a lot more than usual from room to room in a conference centre, extra water is what you need to compensate. If you grab a bottle of water at a snack break, hang on to it when it’s empty – typically most conference rooms have a watercooler or bubbler by the door where you can refill that bottle whenever you want. Can’t stand water? Bring something to flavour it with – pick up some powders or drops at home and try them out to see which one you like. It’s way more efficient than hanging around hoping that this is the break they have juice at, or leaving the conference centre on a half hour walk for a convenience store.

As the conference goes on, be aware of how you are spending your time. For example, if you check your email during a session, but then take a peek at Twitter, and then at your personal Facebook – are you even really in the session anymore? Don’t be afraid to leave if this is not the session for you. You can go to another one, or talk to other attendees out in the hall, or go back to the hotel for a one hour nap. Almost anything is better than ignoring a speaker and killing time on your laptop or phone. And if you’re not prepared to leave, then perhaps you just need to start paying more attention to the session – assuming it’s material you actually are interested in. Take a look at those goals you wrote. Have you tweeted recently? Blogged? Learned that thing? Met enough people? Will staying in this session and listening meet your goals, or should you go out to the hall and work on a goal? Are you just chatting with your own coworkers, or someone you’ve known for years? Building and strengthening relationships is great, of course. That doesn’t mean that discussing the football game with your cubicle-mate is a good use of your time at a place you flew 5 hours to attend. Maybe you can walk around and find a way to join a conversation with a speaker or someone else you wouldn’t normally meet. Just standing there listening can be very enlightening even if you don’t end up saying much.

If you’re not normally a tweeter, blogger, or talker-to-strangers, a conference is a great place to start. There are immediate benefits. Perhaps your question will be answered, or your point will be repeated and quoted, or you’ll make a new friend or business connection. This will give you reinforcement for doing that, of course. As you meet your goals, make a record of that, so you can easily answer questions about what you learned or accomplished during the conference. Consider writing a summary when you’re done – for yourself, or for whoever funded the trip. A chronological structure is natural – Monday morning I went to a talk called X and learned Y or met Z, at lunch Monday I talked to A and B who encouraged me to look into C, Monday afternoon I went to a talk on C – but be sure to have an executive summary that reads a little less like a diary. Start writing it during the conference and polish it on the trip home. Once you get back to the office, writing that summary is going to get harder and harder, so don’t put it off.

Attending conferences is a great way to boost your career – when you do it well you learn a lot in a short time, meet luminaries of your industry and people just like you, raise your profile and your confidence, and have a wonderful time. When you do it poorly, you get tired, hungover, lonely, overwhelmed, and bored. Put in the effort to plan and prepare, and you will be in a great position to reap the rewards.

Saturday, 26 September 2015 11:39:17 (Eastern Daylight Time, UTC-04:00)  #    
# Thursday, 11 June 2015

One of the CppCon sponsors, Bloomberg, is running a contest for students in university or college and giving away trips to attend CppCon2015 in September in Bellevue, Washington:

The series of seven weekly challenges will kick off on June 22, 2015, and each week contestants will be provided a different set of problems to solve via Bloomberg’s cloud-based CodeCon platform. Each week’s winner will earn a trip to CppCon in September. The list of seven winners will be announced and notified via email on August 5.

Interested? You should be. CppCon is a great experience for students and one you won't soon forget.

Kate

Thursday, 11 June 2015 15:38:34 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 13 January 2015

ACCU has announced the schedule for their 2015 conference in Bristol, so I can announce that it includes me!

James and I are adding quite a lot of material, so if you saw this talk at CppCon, you should probably come and see it again at ACCU. Alternatively, you could come to the conferences and watch one of the conflicting talks and take excellent notes, because I really wish I could be at those as well!

I first went to ACCU two years ago, spending my own money for travel and the registration fee. I enjoyed it immensely and learned a lot, so it's a real thrill to be speaking there this year. I can't wait!

Early bird rates last till the end of February. Register as soon as you can, and I'll see you there.

Kate

Tuesday, 13 January 2015 12:48:48 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 12 January 2015

My friend (and fellow Pluralsight author) Kathleen Dollard is coming to town, and will speak at the East of Toronto .NET User Group on "What's New in C# 6.0".

The next release of Visual Studio includes some major language enhancements that every developer should be aware of. Get up to speed on forthcoming enhancements quickly with this user group meeting from Microsoft MVP and language guru Kathleen Dollard.

Join us at 6pm at the Pickering Central Library! Please register at the Meetup page. See you there!

Kate


Monday, 12 January 2015 18:10:01 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 24 December 2014

In my Pluralsight course, Using StackOverflow and Other StackExchange Sites, I cover all the things you really need to know to use the sites effectively and get answers to your questions, or a chance to show your skills. In the last module I explain how to help run the sites yourself, and I suppose you don't actually need to know that to use them - but knowing how they're run can help you understand what happens and why, so I included that material. I didn't include things that are really just for fun.

Right now, Winter Bash is on and it's just for fun. I made a quick video to show what it's about - take a look and let me know what you think. I hope to keep adding more "almost-great" items throughout next year.

Kate

Wednesday, 24 December 2014 10:43:41 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 07 December 2014

This fall has just flown by. One of the things I've been waiting for is my latest Pluralsight course, Using StackOverflow and Other StackExchange Sites, to go live. Here are the teaser images that I tweeted while I was writing it:

My motivation while I was writing the course was simple: help people really "get" the StackExchange model and the cultural norms of the people who help others on those sites. Some people get very frustrated if their questions are closed or downvoted, and often misinterpret the actions other site members take on posts. I wanted to explain the motivations behind some of the things that happen when you use StackOverflow or any other StackExchange site in a way that contradicts its cultural norms, and to show you how to get the absolute most out of the site. This includes specific tips like

  • Choosing a title that will get the most attention for your question
  • Wording your question in a way that will prompt people to answer it
  • Managing your question or answer after you post, and reacting to the reception it receives

I also cover badges, reputation, the privileges system, even the meta sites that are used to make decisions about the way the network of sites operates. I really hope this course leads you to a more productive use of the number one programmer resource on the planet - and perhaps one or two other sites in the network that cover an interest of yours, like travel, gardening, or gaming.

If you don't have a Pluralsight subscription, you can sign up for a free trial and use that to watch the course.This is quite a change from my other Pluralsight courses, I know. StackOverflow has made such a difference in the way people solve programming problems that I really thought it needed a course. Let me know what you think!

Kate

Sunday, 07 December 2014 11:35:44 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 26 September 2014
One of the things I have to do a lot is send people a biography. Sometimes it's for a conference session, other times an interview, or for the "our team" section of a proposal I'm joining, and so on. You have to keep these things up to date, dropping old stuff and adding new, and nobody actually enjoys spending that time.

I've had a written bio to use for these purposes for decades, and over that time, the reasons for using a bio have changed. In the past it would typically be used in written material, and often for business purposes with large, conservative, staid organizations - governments, enterprises, that sort of thing. So even though I keep it up to date with what I'm doing, it has a really formal tone that's a bit old fashioned:
Kate Gregory is a C++ expert who has been using C++ since before Microsoft had a C++ compiler, an early adopter of many software technologies and tools, and a well-connected member of the software development community. She has over three decades of software development experience in a variety of programming languages including Fortran, PL/I, C++, Java, Visual Basic, and C#.  Her recent programming work is almost exclusively in native C++ and C#, on a variety of projects, for both Enterprise and ISV clients. Since January 2002 she has been Microsoft Regional Director for Toronto and since January 2004 she has been awarded the Microsoft Most Valuable Professional designation for Visual C++. In June 2005 she won the Regional Director of the year award, and she was one of the C++ MVPs of the year for 2010. She maintains strong relationships with the C++, Visual Studio, and Windows teams in Redmond.
Kate is the author of over a dozen books, mostly on C++ programming: the latest, on massively parallel programming with C++ AMP, was published in fall 2012 by Microsoft Press. She teaches .NET, Visual Studio, and C++ (including online courses for Pluralsight) and is in demand as an expert speaker, with numerous cross-Canada tours for Microsoft Canada, and sessions at DevDays, DevTeach, TechEd (USA, Europe, Africa) and DevIntersection, among others. In 2014 she was Open Content Chair for CppCon, the largest C++ conference ever held, where she also delivered sessions. Kate is the founder of the East of Toronto .NET Users group and a member of adjunct faculty at Trent University in Peterborough. Her firm, Gregory Consulting Limited, is based in rural Ontario and helps clients adopt new technologies and adjust to the changing business environment. Current work makes heavy use of .NET and Visual C++ for both web and client development, especially for Windows 7 and 8. Managing, mentoring, technical writing, and technical speaking occupy much of her time, but she still writes code every week.
I've been meaning to do something about that for ages and I finally have! I've written a shorter, more informal introduction that focuses on what I think is important about who I am, instead of trying to get you to figure it out from a bunch of facts about me:
Kate Gregory has been using C++ since before Microsoft had a C++ compiler, and has been paid to program since 1979. She loves C++ and believes that software should make our lives easier. That includes making the lives of developers easier! She'll stay up late arguing about deterministic destruction or how C++ 11 is not the C++ you remember.
Kate runs a small consulting firm in rural Ontario and provides mentoring and management consultant services, as well as writing code every week. She has spoken all over the world, written over a dozen books, and helped thousands of developers to be better at what they do. Kate is a Microsoft Regional Director, and a Visual C++ MVP, an Imagine Cup judge and mentor, and an active contributor to StackOverflow and other StackExchange sites. She develops courses for Pluralsight, primarily on C++ and Visual Studio. In 2014 she was Open Content Chair for CppCon, the largest C++ conference ever held, where she also delivered sessions.
What do you think? Better?

Kate

Friday, 26 September 2014 09:06:36 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 12 August 2014

Earlier this year I flew to Utah for the Pluralsight Author Summit. Spending time with such a great collection of my friends and colleagues, and learning more about how to make a great course, was the real reason for the trip, but I got up early one morning to record a Play by Play video with Geoffrey Grosenbach. He has a genuine skill of getting you to demonstrate your own thought processes aloud and I've enjoyed watching other people's Play by Play sessions a lot.

Geoffrey had arranged for some ancient C++ code for me to poke around in. Mike Woodring came through with the sample code from his 1997 book with Aaron Cohen, WIN32 Multithreaded Programming. Seventeen-year old code it may have been, but it turned out not to be quite as ugly as I would have liked. Still, we put it through its paces a little and talked about how I approach this sort of task.

It came out to about 90 minutes overall so if you have a chance to watch it, let me know what you thought!

Kate

Tuesday, 12 August 2014 13:34:43 (Eastern Daylight Time, UTC-04:00)  #    
# Sunday, 03 August 2014

How fun is this going to be? (A lot!)

I'm going to speak at this next February! One of my big deciding factors was the other speakers. Erik Meijer, Greg Young, Michael Feathers, me, and one speaker still to be named. It's a small gathering to talk about software engineering. I'm still working on precisely what my two talks will cover, but expect it to include C++, legacy code, best practices, being "modern" in your C++, and related topics. Two days of intensive geekery wrapped around two days visiting the Bahamas! Space is still available so why not consider it? Brought to you by the Code on the Beach people, so you know they know how to do this.

Kate

Sunday, 03 August 2014 10:04:10 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 02 August 2014

It's just around the corner - the largest C++ conference EVER with over one hundred talks!

And two of those talks I'll be doing with James McNellis. We had such a good time presenting together for Microsoft Virtual Academy that we decided to do it again. How do these sound?

Modernizing Legacy C++ Code

C++ is a programming language with a long, storied history spanning over three decades--four if one includes its C ancestry. The C++ language has undergone many changes during that time, compiler technology has advanced substantially, and computers today are very different from the computers of decades past. But despite all of these advances, there's an awful lot of C++ code in use today that looks like it was written in the 1980s. In some cases, the code was written in the 1980s and it's still in use; in other cases, it's recently-written code that just doesn't use modern style.

In this talk, we'll discuss some of the problems with legacy code, and review some practical techniques for applying principles of modern C++ to gradually improve the quality of legacy code and improve maintainability and debuggability. We'll show how some very small changes to code can yield huge benefits.

Making C++ Code Beautiful

Ask a non-C++ developer what they think of C++ and they'll give the language plenty of compliments: powerful, fast, flexible, and "the language for smart people". But along with that you are likely to hear ugly, complicated, hard to read, and "the language for smart people". Is it possible to write beautiful C++? Not arcanely elegant or wickedly compact, but readable, clear, expressive - beautiful! We say it is, and we want to show you how.

In this session, you'll see how to turn pages of "comic book characters swearing" into code you'll be proud to call your own. By making your code express your intent, using the power of new language and library functionality, and leaving hard-to-read constructs out of your vocabulary, you can give your code a makeover that will stand the test of time.

If you're not registered yet, there's still time! All five days cost $995 and there are one and two day passes available for less. You're going to want to meet and learn from the stars of C++ - check the full session list to read all about it.

Kate

Saturday, 02 August 2014 14:37:09 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 14 June 2014

My latest Pluralsight course, Introduction to Visual Studio 2013 - Part 2 is live and ready for action. The modules are:

  • Basic Debugging
  • Additional Debugging Features
  • IntelliTrace
  • Working With Designers
  • Extensions

If you haven't watched Part 1, you really should.

What's my next course? I'm trying to decide that at the moment and will let you know when it's underway.

Kate

Saturday, 14 June 2014 16:21:12 (Eastern Daylight Time, UTC-04:00)  #    
# Friday, 23 May 2014

I've completed my development of my latest Pluralsight course and I'm just waiting for it to go live. Here are the "teaser" images  I posted to Twitter and my public Facebook page as I was developing it:

This was fun to put together and it's nice to get into things so many people don't know. I hope you take a look at it once it's live and learn from it!

Kate

Friday, 23 May 2014 09:38:00 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 30 April 2014

Do you think Agile and Enterprise can go together? Are you a senior .NET developer who is looking to lead? If so, a client of mine is looking for you. Their job description includes:

We’ll look to you as a team leader who embraces a solid leadership capacity that has truly valuable impact on our team. In this senior role, you will participate in all aspects of the software development lifecycle including planning, technical design and architecture, construction, documentation, testing and deployment. Additionally, you’ll have a big picture view and the opportunity to play a role in the design.

and they're expecting:

  • Proven and deep experience with different versions of .NET Framework and C#/ASP.NET development
  • Demonstrable experience working on N-tier architectures
  • Solid understanding of the full development life-cycle
  • Knowledge and experience with Agile development methodologies (e.g. XP, Scrum)
  • Champion of agile engineering practices (e.g. TDD, continuous integration, refactoring etc)
  • Good understanding of design patterns and their application
  • Experienced unit testing frameworks
  • Computer Science (or related) degree
  • Knowledge of/experience with Sitecore is an asset
  • Knowledge of/experience with Ektron is an asset
  • Knowledge of/experience with Sharepoint is an asset

Sounds like you? Then get in touch with me and I'll make an introduction.

Kate

Wednesday, 30 April 2014 12:58:02 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 17 March 2014

Office Lens went live in the Windows Phone Store today. I happened to have a list of things to do on a whiteboard in my office, so I gave it a try. I had already taken a picture of the whiteboard to transcribe but I went back to the board with the app installed to see if I could save some time.

Here's the picture Office Lens took (resized to 400 pixels wide)

Here's how that looked when Office Lens cleaned it up and put it in a OneNote document for me (I copied the picture out of OneNote, cropped it and resized it):

Much nicer - the glare spots are gone and the background is cleaner. The skew that resulted from taking the picture on an angle (a defensive action to keep the glare out of the important parts of the image) is also gone. As is, this can go into an email. If my handwriting was neater, One Note could have tried to extract the text from it. But this is a lovely improvement and Office Lens is free, so why not give it a try?

Kate

Monday, 17 March 2014 11:19:16 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 07 March 2014
Over the years I've used a lot of tools to get screenshots. My old standby is Paint Shop Pro (copyright 1991-1997 it says on the splash screen, and I recall I deliberately didn't stick with an upgrade that introduced complicated stuff I didn't want, like layers.) I like it because I can set up a time delay for a shot which lets me get tooltips and the like ready when the capture happens.

Alas, on this Windows 8 machine with a second screen, something confuses Paint Shop and it doesn't capture the whole screen. I experimented a bit with the Snipping Tool that comes with Windows, but it doesn't have a time delay or a keystroke, so I can't get tooltips, context menus, or anything else that requires me to interact with the app before the shot.

I got desparate and started using the PrtScrn button on my keyboard. Your keyboard probably has one. I often type Shirt-PrtScrn but I just checked and the Shift is unnecessary. This captures the whole screen (or both if you have two) and puts it in the clipboard buffer. From there I can paste into whatever I edit images with (usually Paint Shop to be honest) and then crop to the part I want.

So far this is boring. I mean really, this is what you could have done TWENTY YEARS ago. And it's been fine for me except that cropping part. But yesterday I learned about Alt PrtScrn. It gets you just the current window! And if you let go of Alt before Prt Scrn, the alt is not passed along to the underlying app either. This is going to save me some seriously annoying cropping.

Kate

Friday, 07 March 2014 13:00:36 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 28 February 2014

I have updated my Visual Studio Pluralsight course for Visual Studio 2013 and Part 1 is now live. It covers features that were newly added in the 2013 release as well as older material (so you don't need to take the 2012 courses before you take this one.) It focuses on how to work Visual Studio rather than on the mechanics of a particular programming language or framework. The demos are all in C# but almost all of it applies to other languages equally well. (As C++ developers know, some things we don't get, but we're used to that.)

A number of people who've been using Visual Studio for years have reported to me that they decided to watch the course just to see what features I felt were worth covering - and then accidentally learned something! Chances are you will, too, so why not watch on double speed and see if something comes up you didn't know before?

Kate

Friday, 28 February 2014 12:49:26 (Eastern Standard Time, UTC-05:00)  #    
# Sunday, 23 February 2014

I was invited to speak to some Imagine Cup contestants in Calgary and delighted to accept. I spoke to the teams informally for quite a while about judging and judges and general team tips. I was really happy to see some teams from previous years so I could hear what happened after they entered. If you're a student (undergrad or grad) and would like to enter, there is theoretically still time, but realistically it would have been better to start several months ago since you do have to build working software. Why not take a look at the contest (there are over a million dollars in prizes, and you can get a cool trip somewhere and meet some industry high flyers) and start pulling together a team for next year? There's a pretty good introduction for Canadians on the Microsoft Canada blog.

For those of you who were at the sessions, here are the slides I used in the afternoon. I talked about the new C++ features and why they matter, and demoed C++ AMP as a great motivator for using C++. (I wanted to upload the pptx files, but they're too big for the blog, so I've exported PDFs.)

Kate

GregoryCppAMP.pdf (1.65 MB)

Cpp11and14.pdf (556.51 KB)

Sunday, 23 February 2014 13:17:11 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 01 January 2014

I'm a January 1st MVP, which means that while dealing with email that has piled up over the holiday break, I'm usually surprised to find my MVP renewal amongst the hundreds of other messages coming in. This year is no exception.

According to the MVP blog, there are 1011 of us awarded today. I'm happy to be included once again!

Kate

Wednesday, 01 January 2014 13:13:38 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 28 November 2013

In a word, it was exhausting. But it was also cool from a technical point of view. Here's a still of us I grabbed from the video recording:


The screens in front of us are touch screens. I forgot how much fun it is to demo Hilo on a touch screen. Here's how it looked from my side (sorry about the lunch mess):

And a better view of all three cameras:

You can see that part of my job was to imagine people who wanted to learn C++ on the other side of those cameras. And finally, here's James hard at work getting something onto the demo machine:

I believe this picture immortalizes the moment he tweets about here:



Great day and good fun. Hope everyone learned a lot!

Kate
Thursday, 28 November 2013 18:41:15 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 27 November 2013

Channel 9 has all 7 pieces of the MVA Day I did with James McNellis available online now!

We went very fast through this one day introduction. If you'd like a slightly saner pace, please check out my Pluralsight courses, C++ Fundamentals and C++ Fundamentals - Part 2. If you're not a programmer, and you'd like to "begin at the beginning" with C++, try Learn How to Program with C++. There is a free trial for the Pluralsight courses to get you started.

Kate

Wednesday, 27 November 2013 14:44:23 (Eastern Standard Time, UTC-05:00)  #    
# Saturday, 23 November 2013
The C++ Jumpstart full day event on Tuesday was a blast! James and I really enjoyed ourselves and from the looks of the chat room, so did the attendees. We had literally thousands of people registered for the event and in a few weeks the recording should be available (check http://www.microsoftvirtualacademy.com/Live-Training-Events for a recording link - scroll past Live Events to Recorded Events) for even more people to view.

Kate

Saturday, 23 November 2013 13:44:50 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 22 November 2013
I've been busy this fall with the release of Visual Studio 2013. One of the things I've been working on is live now: a new Pluralsight course. I focused on new things that matter to C++ developers, whether that's compiler support for language changes (hello, variadic templates!) or IDE changes that were implemented for C++ as well as "the other languages". Here's the description:

The C++ Language and the Standard Library both changed dramatically with the release of C++ 11. Some of these features were not implemented until Visual Studio 2013, and those are presented in this course. You'll learn about variadic templates, improvements in constructing and initializing variables, and rawnstring literals. In addition a number of productivity boosting enhancements in debugging, editing, and using libraries are in this version and you will learn how to take advantage of them.

If you don't have a Pluralsight subscription already, there's a free trial available, so please check it out!

Kate

Friday, 22 November 2013 13:36:27 (Eastern Standard Time, UTC-05:00)  #    
# Monday, 18 November 2013
Are you joining us tomorrow for a one-day introduction to C++ at Microsoft Virtual Academy? (No? There's still time to register.) Then you might want the sample code we'll be using. We're probably going to go too fast for you to actually follow along in your copy of Visual Studio, but you can try. I've attached a zip of the code to this post.

Kate

Demos.zip (164.55 KB)
Monday, 18 November 2013 14:22:01 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 12 November 2013
A lot of people (a lot) have asked whether the November 19th session (a whirlwind tour of C++ for those who don't know it) will be recorded. I'm happy to confirm that it will be. On the Live Events Page for Microsoft Virtual Academy you will see both future and past events. Here you can register for our session, and about two weeks afterward a link will appear on this page to let you watch the recording.

Please help spread the word to people you know who want to learn C++!

Kate

Tuesday, 12 November 2013 19:53:21 (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, 06 November 2013

If you know someone who wants to get started using C++, and has done at least a tiny speck of programming in other languages (so I don't have to explain what a loop is) then you might want to point them at this free online event:

C++: A General Purpose Language and Library
Attention developers: here’s a painless way to learn the basics of C++ from the ground up, whether you’re updating legacy code or writing brand new, efficient, and high-performance code for new platforms like phones and want to take advantage of C++. You’ll learn the fundamentals of the C++ language, how to use the language and its Standard Library effectively, and how to use the Visual Studio environment for developing C++, including debugging, exploring code, and understanding error messages. This is your starting point for building software in C++.

James McNellis (of the Visual C++ team) and I will spend the day walking through the fundamentals of the language and the Standard Library. We're going to have a great time. Please send us some beginners to keep us company!

Kate

Wednesday, 06 November 2013 17:07:07 (Eastern Standard Time, UTC-05:00)  #    
# 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)  #    
# 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)  #    

I am months behind. I will post some of the stuff I've been meaning to post, but later. Right now I need to make new entries so people can get current information. Remember, never blog about why you're not blogging. Just blog.

Tuesday, 01 October 2013 10:32:44 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 03 April 2013

As it says on the Bristol GGD website:

Our April dinner is being held on Thursday 11th in conjunction with the ACCU 2013 conference.

The event starts at 7pm for 7.30pm, at the Bristol Marriott Hotel City Centre. A few female IT professionals will talk briefly about themselves and their jobs. There will then be time for discussion and networking.

Read more and register http://girlgeeksataccu2013.eventbrite.co.uk/

I can't wait! I'm delighted to be one of the speakers and I'm looking forward to meeting lots of new people.


All are welcome, whether attending ACCU or not. Men are welcome at all GGD but are asked to come in the company of a woman so that women can experience being the majority.

Kate

Wednesday, 03 April 2013 17:54:11 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 28 March 2013
The week of April 8th, I'll be in Bristol, UK, attending ACCU. I'm looking forward to it tremendously - there is a great lineup of sessions and I only wish I could have spared the time to stay on for the C++ committee meetings that will follow it. I am, however, making the most of my time in that delightful city. Having enjoyed Guy Smith-Ferrier's presentations in several different locations, including my own East Of Toronto .NET User Group, I can now turn the tables and present at his.

Of course I want to do a C++ talk. But it's not a C++ group. So to be fair, I've decided to do two talks:

First, Use All of Visual Studio to Become a Better Developer

Most developers know how to use Visual Studio to do the basics of being a developer. You can create a solution, add projects to it, edit code, and run it. Easy, right? In this session, I want to show you how to be a better developer by using parts of Visual Studio you might not know about. Save hours of debugging time, move around your code more smoothly and don't lose your place, see what you want to see and find what you need to find. Demos will be in C# with Visual Studio 2012.

Second, C++ in 2013 – Why on earth?

There are so many languages a developer could use today. Yet some developers still use C++. Some developers are learning C++ when they already know C# and other younger languages. This session will show you why that is happening, and why you might want to learn the new C++ yourself. It's nothing like the C++ you remember, and it can be a very useful language for you to know.
 Please do register for these, and I hope to see you there!

Kate

Thursday, 28 March 2013 11:55:53 (Eastern Standard Time, UTC-05:00)  #    
# 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)  #    
# 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)  #    
# 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)  #    
# 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)  #    
# 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)  #    
# 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)  #    
# 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)  #    
# 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)  #    
# 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)  #    
# Saturday, 20 October 2012

Is the C++ Renaissance real? Well I'll tell you one thing: conference organizers are way more receptive to all-day C++ sessions than they used to be :-). I'll be doing yet another one this year. This time it's in Las Vegas Dec 9th, as part of DevIntersection. Here's the abstract:

PRECON04: C++ in 2012: Modern, Readable, Safe, Fast (9:00 AM - 4:00 PM)
C++ is gaining momentum as a development language, so whether you've never used C++ or stopped using it a decade ago, it may be time to brush up on your skills. With a new standard release providing new keywords and capabilities, C++ is a featured language for many of the new Microsoft technologies and enables some amazing speed-ups of your application using libraries like PPL and C++ AMP. What's more, Visual Studio offers tools to native developers that have only been available for managed developers in earlier versions. This all-day workshop will show you what all the fuss is about and give you the skills you need to understand the advantages of C++ today and how to start applying those benefits to your application.

If you're an experienced and current C++ developer, you may not need to come to this session. But if you were thinking you needed a refresher, here's a great way to get one, and at the same time look at some of the cool new stuff that is available to you once you know C++. If you've never written a line of C++ code in your life, but you're solid in C# or Java so you know the basic syntax (if, while, etc) you should be able to follow this session, though it won't teach you all the fiddly bits of C++ syntax and make you a C++ developer from scratch. It should, however, give you the inspiration you might need to go and learn all that fiddly syntax, and understand why we have it.

The workshop costs an extra $399 for conference attendees and will cover a lot of ground: new language and library goodies in C++11, ALM Support for C++ developers in Visual Studio 2012, a quick taste of some PPL and C++ AMP power, and plenty of advice on best practices and modern C++ style.

I hope to see you there! Don't forget, if you register for the conference before Nov 1st, you'll get a tablet!

Kate

Saturday, 20 October 2012 20:01:13 (Eastern Daylight Time, UTC-04:00)  #    
# 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)  #