# Friday, 28 June 2019

I just published a small course on Pluralsight called Advanced Debugging with Visual Studio 2019. It covers IntelliTrace and Code Map, two features that are only in the Enterprise Edition of Visual Studio. Many people don't know about them, so I put together a quick introduction.

Here are some of my other current courses:

  • Visual Studio 2019 Getting Started - what you need as a new user of Visual Studio to start using it. There are a variety of other Visual Studio courses, and pretty much all of the material from my 2017 one is still applicable, so don't take just this one or you'll be missing some really powerful techniques.
  • Beautiful C++: Updating Legacy Code - I really enjoyed writing this course and if you maintain old C++ code, I think it will make your life a lot easier. It discusses both specific patterns to update (and why) and overall strategic approaches (not mechanically replacing every incidence of one pattern with a newer pattern.)
  • C++ Fundamentals Including C++ 17 - this is the go-to course for developers who want to learn C++ today. Whether you never did any, or did some a decade or two ago, this course will cover the syntax, library, and best practices you need. If you've never programmed in any language, try Learn How to Program with C++ instead.
  • Using Stack Overflow and Other Stack Exchange Sites - we all go to Stack Overflow when we're stuck. But a lot of us are bad at it, because it doesn't work like other sites. Take a little time to improve this skill and you'll get better and faster answers. You might even become one of those high-rep users who others admire!
  • Beautiful C++: STL Algorithms - Stop writing raw loops and you will get more readable code with less effort. The library has so much waiting for you and this course will help you make sense of it all.
There are more, but if you take all of these, you'll be in a strong place as a C++ developer. (BTW, only the Visual Studio courses require Visual Studio. All the others work with any development environment you prefer.)

Kate

Friday, 28 June 2019 09:39:32 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 06 May 2019

In early April I was lucky enough to go to Bristol in the UK for the annual ACCU conference. This has been an aspirational conference for me, one I attended before speaking at and am always delighted to attend. This year I was invited to keynote, and it turned out to be the closing keynote, which meant I was not done with all my talks until the conference was over! Nevertheless I enjoyed the week tremendously.

I flew to England overnight Saturday night. People often ask me how, given the fatigue issues I have left over from the whole surviving incurable cancer thing, I am able to travel. One reason is that when I travel, I only travel on travel days. I don’t try to work at the airport, on the plane, etc. I read a book or listen to music or just relax. On overnight flights, I sleep. I also schedule a few days to adjust to the time zone without having to think hard or meet important deadlines, like finishing my talk. On this trip, I spent two days visiting Cardiff, which is actually where I was born, with my sister who is planning to move there. It was marvelous fun watching a family explore and discover their new home town, and going to places I have seen on TV or in pictures.

Tuesday I did a private corporate talk about #include<C++> and diversity issues. It was very well received and I might offer it to other companies as a result. I always buy a train pass when I go to the UK and it got a good workout on this occasion. Back in Bristol I was able to relax and know I was ready for the conference.

After a lovely opening address by Russel, we had an illuminating keynote from Angela Sasse.  Security can’t be left until the end or handled by a separate group who fight the developers. Afterwards I took some time to meet up with more friends and spend some time at the #include table. After lunch, a very good talk from Jonathan Boccara on reading unfamiliar code.  I loved the map analogy and the way he showed using a call stack to increase your mapped area. Then a workshop from Gail Ollis on Helping Developers to Help Each Other which really brought home to me once again how important tactile artifacts – things you can pick up, put down, wave around, put next to each other and so on – can be to encourage open and complete communication.  The recording stops when the hands on part starts – just one of those things you can only get by attending in person. The talks wrapped up with Lightning Talks and I did one – my first time doing so at ACCU. I was not able to stay up for the evening reception beyond a quick “hey! Great to see you!” to a handful of people. There were plenty of talks I couldn’t get to – recordings for me to watch later!

Day 2 started with a Herb Sutter keynote.   I’ve read the paper but was really happy to hear it as a talk, and to hear the motivations behind enabling more people to use the whole language.  Then I needed some down time before my talk right after lunch. I gave an updated version of “Nothing” and as always at ACCU got some great questions that will go into the next version of the talk – or some other one.  Then I kept to tradition by doing the Pub Quiz, entertaining as always for the don’t-write-this-at-work code and marveling at how some folks know a lot of dark corners! Another round of lightning talks and an early night, meaning I couldn’t attend the Bristol Girl Geeks dinner as I had planned.

The Day 3 keynote was low on code and high on insight as Paul Grenyer talked about growing a community while dealing with the ups and downs of life in general.  Then to a fascinating talk by Dom Davis about communicating, with significant meta content that I really enjoyed.  I spent the lunch break at the #include table, and then dove into a variety of little talks – 15 and 20 minute ones. I was starting to tire and didn’t pay as much attention as I should have, but let me recommend Alex Chan’s reminder that the tech we build can hurt people when it’s being used as designed.  I took a break to be ready for the Conference Dinner where I was able to catch up with old friends and meet a few new ones.

Finally Day 4. I started with Kevlin Henney and a talk with a similar title to my “Nothing” but very different content.  Another break, another lunch at the #include table, and then some down time before my closing keynote. I updated the beginning of this talk since the C++ on Sea keynote, and I think this improves it. More great questions after and I think more material to work in there somehow. Then the close of the conference, a certain amount of hanging around not wanting it to end, and up to my room for another early night and to get ready to go.

Sunday all I did was take the train to the airport, fly home (sleeping a little on the plane) and drive home. A lot to process, as always after ACCU. And when I got home, a lot to catch up on, which is why this has taken a few weeks to write up!

Kate

Monday, 06 May 2019 06:57:37 (Eastern Daylight Time, UTC-04:00)  #    
# Tuesday, 02 April 2019

Usually, I start writing product-specific courses during the beta of a product, then record them after release. But this time around I am happy to announce my Visual Studio 2019 course is live on Pluralsight already, on launch day!

If you need a trial code, click over there where it says Click Start a FREE 10-Day trial (I didn't make the image so I'm not responsible for the missing "to" in the text.)

It's just over 2 hours long - less if you play it higher speed. I cover the basics to get you using it properly. Yes, a long and super detailed course is in the works, but you could probably take the Visual Studio 2017 Essentials and Beyond course and most of it will apply to 2019. Things that are new in 2019 I covered in the Getting Started course.


Kate

Tuesday, 02 April 2019 12:56:34 (Eastern Standard Time, UTC-05:00)  #    
# Friday, 22 February 2019

I get a lot of requests to speak at conference now. More than I can possibly accept! This is a marvelous problem to have, and I'm delighted that there are so many relevant conferences and that a lot of them want me to be there. Sometimes if I decline a conference, it's just because I am doing something else in that time frame - I try not to do two conferences in the same month, for example - or the travel would be too far. But there are other reasons, so I wrote a little list of requirements and preferences. If you're running a conference, please check this list before you ask me to speak. If you're a speaker, consider putting your own list together. We can make conferences better!

And yes, I am working on a much longer list of what makes conferences great. It's over 4 densely packed pages right now and likely only to get longer. I will advise any conference-runner who asks me and genuinely wants to improve. Want my opinion of your badge, website, code of conduct, or the like? I'm happy to help.

Kate

Friday, 22 February 2019 10:41:55 (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, 20 November 2018

My latest Pluralsight course is live!

I start by talking about strategy - what parts to update, what general approach to take, and so on. Then I present a number of specific tactics, like using the preprocessor less and the compiler more, actually using C++ instead of just C, and using C++ features that were added in C++ 11, C++ 14, and C++ 17. I show you code examples for the changes I am suggesting, and explain why specific changes produce code that is more readable, understandable, and maintainable.

As always, if you don't already have a Pluralsight subscription, feel free to click the large white box in the margin and start a free trial. I hope you like the course, and tell your friends about it too!

Kate

Tuesday, 20 November 2018 11:39:33 (Eastern Standard Time, UTC-05:00)  #    
# Thursday, 18 October 2018

We need to talk about the word “guys” and whether or not it means people. Well, to be accurate, whether or not it means people to all the people who hear it. Here’s the thing: it doesn’t. Not to all of them. Maybe it does to you. I used to think it did to me. But now I’m not so sure it ever did. And for sure, there exist some people to whom it doesn’t. Take a look at this really non-scientific poll in which only “hey guys” was actually considered gender neutral: . There’s a whole section of the #include<C++> resources about the word “guys”. 

But let’s rewind for a minute. If you’re a man, you may not have noticed, but in North American and English-speaking European cultures, two things are true, to the vast majority of people:

  • Men means people
  • People means men

As a woman, this is something I have come to learn. Men are people. Women are a special case. People often doesn’t include women. If you think that’s ridiculous, please react to this sentence:

On average, people have slightly less than one ovary
This is an adaptation of a sentence I heard to explain why average is not always a useful measure of a data set. I first heard it as “slightly less than one testicle.” When I told it to someone else, I substituted a feminine anatomical feature, and to my surprise, the man I told it to reacted very angrily. Since then, I’ve tried both versions of the sentence on various people, men and women (I haven’t tried it on the few nonbinary people I’ve met.) When you say testicle, everyone laughs. When you say ovary, women pause for a moment and then laugh. Some men laugh but most get angry. Why? Because people in general don’t have ovaries. Only women have ovaries, and when most people say people, they really mean men, who generally speaking are ovary-free. So this sentence includes a reminder that “the word people includes women and there are as many of us as there are of you.” Which upsets many men. And while they can’t explain their anger, it’s real. It’s actually a little scary.

Yeah but, come on, I can’t possibly mean that, right? I mean it’s 2018. How can “people” possibly mean men? Take a look at these quotes from reputable medical sites:

The American Heart Association says “People at high risk of heart attack should take a daily low-dose of aspirin (if told to by their healthcare provider)” and that “heart attack survivors regularly take low-dose aspirin.”
The Mayo Clinic says, to a nongendered “you”, “If you've had a heart attack or stroke, your doctor will likely recommend you take a daily aspirin unless you have a serious allergy or history of bleeding. If you have a high risk of having a first heart attack, your doctor will likely recommend aspirin after weighing the risks and benefits.”

But it turns out, as WebMD says, “when it came to preventing a first heart attack, different trials got different results. Why? Studies that looked predominantly at men found that aspirin helped. Trials that looked predominantly at women found no effect.” Yet the general-purpose medical web sites are still advocating that “people” should do something that in fact is only helpful for men, rather than for people.

You can see the same thing in almost any store: razors and women’s razors, lego and girl’s lego, hammers and women’s hammers, even laxatives and women’s laxatives. The default person is a man. Women are a special case and are not always included in the general “people.”

Or take a look at these headline examples from a blog entry I recommend reading in its entirety:

  • ...there are so few able-bodied young adults around. They have all gone off to work or look for work, leaving behind the old, the disabled, the women and the children.   [so women are not able bodied young adults?]
  • A 45-year old man has been charged with assaulting his next-door neighbour’s wife   [doesn't she live next-door too?]

So, if people means men, then even if guys also means people, it still means men. So we can argue whether “guys” is or isn’t gender neutral, but for an awful lot of both men and women, “people” isn’t even gender neutral. I think it’s fair to say, though, that guys is even less gender neutral than people.

The key is this: you might mean to include women when you say guys. And most of the room might hear it as including women, too. But some of them will not. And you can’t tell who feels that way. So eliminating “guys” from your vocabulary will improve the experience of listening to you for some people.

How can you do it? What can you say instead? Well in a lot of cases, you can just drop it. For sentences like “What do you guys think?” “What I’m here to show you guys today is” and the like, you can just use “you.” Sometimes you might want “all of you”. “Some guys think” can become “some people think” or get more specific – “some developers think”, “some managers think”, “some customers think” – you’re not only eliminating an irritant from your talk, but you’re being more precise and conveying more information. And you’re avoiding “people” which, as I’ve shown above, isn’t actually gender neutral to most of those who hear it.

If you’re talking in the singular, this becomes even more important. “Some guy asked for this feature so it got added” or “you know somewhere the guy who wrote this is thinking” or “I need a guy from your group to take the lead on this” is just always wrong. Yet the more you say “guys” to mean “bunch of people of whatever gender, I don’t care about gender”, the more you will say “guy” to mean just one person, and those who hear you will hear gender. Instead, you can’t go wrong with “someone”, or again being more specific – the developer who wrote this, for example.

The hard part isn’t figuring out how to reword the sentence to avoid the word guy or guys. The hard part is breaking the habit. I’m working on it, because I think it’s worthwhile. I encourage you to work on it too. Chances are, no-one will ever notice. That’s the thing about politeness and taking the time to be sure you’re not bumping someone with your elbow. No-one ever got off a plane and tweeted how great it was that the person next to them kept their elbows to themselves, or smelled ok, or was quiet. But it’s still worth taking the effort to be the great seatmate, and in the same spirit it’s worth taking the time to change your speech patterns a tiny bit so that some of your listeners don’t feel excluded.

Kate

Thursday, 18 October 2018 22:29:46 (Eastern Daylight Time, UTC-04:00)  #    
# Saturday, 15 September 2018
Oh my, I am doing a LOT at CppCon. Here's a list:
  • On Sunday, I am doing a preconference workshop (I believe it's sold out now) with Scott Meyers and Andrei Alexandrescu
  • After the precon I will relax at the TShirt dinner. Pack a Tshirt that says C++ (or bring your badge, or a piece of paper on which you wrote C++ yourself) and choose a restaurant from the list on that page. When you arrive, ask where the other C++ Tshirt people are, and make some new friends! I'll be tweeting my plans just before I head out.
  • Then it's back to the Meydenbauer for the Registration Reception. Even if you're on East Coast time like me, make an appearance, see some friends or some of your heroes, there will probably be cake, and you'll be all set for the morning. Knowing the venue a bit is going to make you sleep better, and having your badge already will let you sleep longer.
  • Monday I will be attending talks and working a shift at the exhibitor table for #include<C++>, an organization working to make the C++ community more welcoming and inclusive. Come by and get a sticker! Buy a shirt!
  • If I manage to stay awake, I'll go to Grill the Committee after dinner.
  • Tuesday I have a session called What Do We Mean When We Say Nothing At All? and it's at 9 sharp - but you'll have been in the building for Open Content at 8, won't you? Grab a coffee and come find out how nothing can say a lot.
  • Tuesday night is the #include<C++> dinner and panel! Buy your ticket now, everyone is welcome. You do not need to be a CppCon attendee.
  • Then it's back to the Meydenbauer after dinner for Lightning Talks. Everyone loves the Lightning Talks, they're always fantastic.
  • Wednesday I'll arrive early because there are 3 sessions I want to watch at 9 (thankfully all the talks are recorded)
  • My keynote is at 10. I'm a bit nervous, but I'm mostly looking forward to it.
  • Right after that, I have a panel about interop with managed code.
  • Then I'm going to relax and listen to talks for the rest of the day, and go to the Planners Dinner. And more Lightning Talks afterwards.
  • Thursday I have no talks to give, shifts to work, or panels to be on. I'll be a free attendee ... until the Speaker's Dinner. And there's a planning meeting after that.
  • Friday is JAMMED with talks. And if you live locally, come on down and attend some because it's the open day. I have marked 11 talks in three time slots as ones I want to attend. Not sure that's going to work, exactly.
See why I call CppCon an intense conference? 12 or 13 hours a day, every day. But oh my goodness the things I will learn, the people I will meet, and the fun I will have. See you there!

Kate

Saturday, 15 September 2018 12:26:26 (Eastern Daylight Time, UTC-04:00)  #    
# Monday, 03 September 2018

Next year, I'll be keynoting a new C++ conference, C++ on Sea. I'm really looking forward to it. A little while ago, they ran a "tweet why you want to go" contest for a free ticket, and said that if the winner already had a ticket, the conference would help the winner give away the ticket.

Can you guess where this is going? I won the ticket. I already have one, so you can win mine. Here's what you need to do:

  • Choose a way to "give back" to your community before, during and after attending. This might be blogging, tweeting, hosting a local meetup where you talk about what you saw and recommend specific talks for others to watch later, or even activities at the conference like giving a lightning talk.
  • Gather supporting links - to your blog, your repo, your YouTube Channel, the meetup site, and so on
  • If your plan won't fit in a tweet, put it somewhere that it will fit. Include lots of links - I want people to find your blog, channel, meetup etc even if you don't win
  • Tweet me (@gregcons) with your plan or a link to it. I will retweet. Focus on what you will give if you are able to attend the conference.(It's not that I don't care whether you are deserving or can't afford to go or whatever, I do, but I am going to focus on how you will share your good fortune with others.)
  • If you're not on Twitter, post on my public Facebook page. You can't just email me because the idea is to promote those links to blogs, channels, meetups, and suchlike.

That's it! I'll choose someone, probably by filtering to everyone who is offering to do something generous and then randomly choosing one, but I reserve the right to choose the single person who comes up with the most amazing plan. I'll tell the conference that you get my ticket.

Fine print: this is just admission to the conference. Not travel or hotel. Not paid time off work. You'll need to cover that yourself. I suggest that telling your boss you won the ticket because of your community involvement might be quite helpful as far as that is concerned :-). And while I can't force you to keep your promise, I will remember if you do, and that will probably be a good thing for you over and above the rewards of doing those good things for the community.

Good Luck!

Kate

Monday, 03 September 2018 12:32:39 (Eastern Daylight Time, UTC-04:00)  #