<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" version="2.0">
  <channel>
    <title>Kate Gregory's Blog - Mentoring</title>
    <link>http://www.gregcons.com/KateBlog/</link>
    <description>Really Good Donut</description>
    <language>en-us</language>
    <copyright>Kate Gregory</copyright>
    <lastBuildDate>Tue, 18 May 2021 00:19:53 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>kate@gregcons.com</managingEditor>
    <webMaster>kate@gregcons.com</webMaster>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=6aed9051-6a18-4243-9e56-ccbf203ff09f</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=6aed9051-6a18-4243-9e56-ccbf203ff09f</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In April, I did my Naming is Hard talk at ACCU 2021. I'm getting better at doing talks
online and handling interactions, at least I think I am :-). The <a href="https://youtu.be/ZDluHz-ybPE">recording </a>is
now online, so if you weren't at the conference, you can watch the talk. Being there
is still better, even when it's digital - being able to chat to other attendees and
the presenter is always going to be better than just watching a recording. 
<br /></p>
        <p>
I added the talk to my youtube<a href="https://www.youtube.com/playlist?list=PLsAtvvJ8KXBT-Tx67H5P3TgkiW6llnoBE"> playlist
of conference talks</a>, so if you like that one and want some more, take a look!
</p>
        <p>
Kate<br /></p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=6aed9051-6a18-4243-9e56-ccbf203ff09f" />
      </body>
      <title>My ACCU talk recording</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=6aed9051-6a18-4243-9e56-ccbf203ff09f</guid>
      <link>http://www.gregcons.com/KateBlog/MyACCUTalkRecording.aspx</link>
      <pubDate>Tue, 18 May 2021 00:19:53 GMT</pubDate>
      <description>&lt;p&gt;
In April, I did my Naming is Hard talk at ACCU 2021. I'm getting better at doing talks
online and handling interactions, at least I think I am :-). The &lt;a href="https://youtu.be/ZDluHz-ybPE"&gt;recording &lt;/a&gt;is
now online, so if you weren't at the conference, you can watch the talk. Being there
is still better, even when it's digital - being able to chat to other attendees and
the presenter is always going to be better than just watching a recording. 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
I added the talk to my youtube&lt;a href="https://www.youtube.com/playlist?list=PLsAtvvJ8KXBT-Tx67H5P3TgkiW6llnoBE"&gt; playlist
of conference talks&lt;/a&gt;, so if you like that one and want some more, take a look!
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=6aed9051-6a18-4243-9e56-ccbf203ff09f" /&gt;</description>
      <category>C++</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Speaking</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=4077a8c4-22f0-4250-aefb-2d2fed4f7250</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=4077a8c4-22f0-4250-aefb-2d2fed4f7250</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ve been thinking lately about a lesson I saw taught in a martial arts class over
a decade ago. A young student was misbehaving. I knew this kid from field trips and
other school activities, and he was doing typical things for him – not paying attention,
calling out funny responses from the back row, making faces and showing off, that
sort of thing. He was always a little difficult to manage but this particular day
he was worse than usual. One of the instructors stopped the class and took the boy
aside from the group. He picked up a lightweight rattan sword. They use these for
practice – they’re very light, and they are made of several light sticks bundled together.
They make a loud clattery noise when they hit, and use up most of the energy doing
that, so they don’t hurt. They weigh very little. 
</p>
        <p>
The instructor got the student to sit or kneel, and hold his hands out straight in
front of him at shoulder height. Then he held out the sword and asked the student
to take it with both hands, holding the sword and his arms all parallel to the floor.
Simple. You could do the same thing yourself right now with a ruler or a pencil or
anything else rigid and lightweight. It’s trivial to hold your arms extended, elbows
locked, hands a fixed distance apart (because they’re holding something that doesn’t
bend or stretch.) Easy, right? By now everyone was watching to see what the actual
punishment was going to be. Would the instructor now hit the student, or demand they
do something difficult? (It was common in that class to assign pushups for misbehaviour,
and I adopted the habit myself, giving my kids pushups in the grocery store if they
were driving me crazy.) But no, the instructor just stepped back and said “just hold
that as long as you can.” The kid grinned. Everyone else looked puzzled. It was trivially
easy to do. 
</p>
        <p>
But if you try this yourself, you’ll soon discover that very quickly it gets harder.
It starts to really hurt after just a few minutes. If you’re stubborn and you grit
your teeth, you can keep going. This student was very stubborn. After a while though,
his arms would occasionally droop down. “Either put it down or keep it up! Shoulder
height! Arms straight!” the instructor would call and the student would try again
and manage to get back into position. Eventually he was clearly in distress. The instructor
told him “you can put it down whenever you want” but it was quite a while before he
did. His muscles were clearly very sore. 
</p>
        <p>
On that day, the instructor didn’t explicitly close the loop. He seemed content to
have found a way to get through to this student that classes were not his to disrupt
and there were things the instructors could do that the student didn’t like. But years
later, I saw a larger lesson in the choice of that particular exercise. Lifting that
light sword (or the pencil or ruler you tried this with) is nothing. It’s really nothing
at all. No effort. Anyone can do it. And at first, holding it is nothing also. If
you had never lifted a pencil before, and you met someone who was struggling after
holding one for many minutes, and you tried lifting a pencil yourself, you would be
really puzzled. “Why are you complaining? This is super easy. There’s nothing to it!
Anyone can do it!” The student’s misbehaviour was like this. Each little thing – the
funny comment, the silly face, doing the move backwards – was in itself nothing. Easy
to deal with or ignore. Not a problem. But enough of them add up. Just like the time
holding the light weight. It becomes hard. It becomes painful. It becomes unbearable. 
</p>
        <p>
I really urge you to try this. How long can you hold the pencil or ruler out before
you start to feel an effort? Before it hurts? Before you physically cannot do it any
longer? Try predicting these times and then doing it. 
</p>
        <p>
The world is full of things that are trivial and nothing if you only experience them
once, or once a decade, for a few minutes. It can be nearly impossible to imagine
that these trivial things could ever add up to something painful. In 1970 (yes! 50
years ago!) a university professor coined the term <a href="https://en.wikipedia.org/wiki/Microaggression">microaggression </a>for
tiny moments of “you don’t belong” aimed at racial minorities, disabled people, women
in male-dominated industries, gay people, and so on. People who haven’t experienced
a steady diet of “you don’t belong”, however mild, often literally cannot imagine
how it could add up to something painful. Sure, maybe you wince for a moment when
someone assumes a group of developers are all male, or all straight, but it’s no big
deal, right, and I’m sure the women know that when we say “men” we mean everyone,
and the gay people know that when we say “wife” we mean wife, husband, partner, whatever.
On its own, one tiny moment of “the only people I have to consider are X” is a little
needle for people who aren’t X, but it’s such a tiny needle, who would complain, who
would object, there was no nasty intent. Think about holding your arms out for 10
or 15 minutes and then think again about exclusionary language, policies that assume
only married people have children, asking people “where are you from”, telling someone
“you don’t look like a software developer”, making jokes about people’s weight or
appearance, and all those tiny tiny little things that are nothing once, but that
truly genuinely add up over time to real pain. 
<br /></p>
        <p>
And then ask yourself: if it really doesn’t matter whether you say “men” or “people”,
then why is it so important you keep saying “men”? That sounds like it actually does
matter after all. If it’s no big deal and of course we all know that there are people
who differ from you in some way, why are you not prepared to do the work of talking
as though such people exist, instead asking them to do all the work of translating
your literal words into what you probably meant, or would have meant if you had thought
about it? How can you lessen some of the pain and effort other people have to put
in all day, every day, day after day? It will be no big deal to you, right? 
<br /></p>
        <p>
Kate<br /></p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=4077a8c4-22f0-4250-aefb-2d2fed4f7250" />
      </body>
      <title>How Long Could You Really Do That For?</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=4077a8c4-22f0-4250-aefb-2d2fed4f7250</guid>
      <link>http://www.gregcons.com/KateBlog/HowLongCouldYouReallyDoThatFor.aspx</link>
      <pubDate>Mon, 08 Mar 2021 17:44:25 GMT</pubDate>
      <description>&lt;p&gt;
I’ve been thinking lately about a lesson I saw taught in a martial arts class over
a decade ago. A young student was misbehaving. I knew this kid from field trips and
other school activities, and he was doing typical things for him – not paying attention,
calling out funny responses from the back row, making faces and showing off, that
sort of thing. He was always a little difficult to manage but this particular day
he was worse than usual. One of the instructors stopped the class and took the boy
aside from the group. He picked up a lightweight rattan sword. They use these for
practice – they’re very light, and they are made of several light sticks bundled together.
They make a loud clattery noise when they hit, and use up most of the energy doing
that, so they don’t hurt. They weigh very little. 
&lt;/p&gt;
&lt;p&gt;
The instructor got the student to sit or kneel, and hold his hands out straight in
front of him at shoulder height. Then he held out the sword and asked the student
to take it with both hands, holding the sword and his arms all parallel to the floor.
Simple. You could do the same thing yourself right now with a ruler or a pencil or
anything else rigid and lightweight. It’s trivial to hold your arms extended, elbows
locked, hands a fixed distance apart (because they’re holding something that doesn’t
bend or stretch.) Easy, right? By now everyone was watching to see what the actual
punishment was going to be. Would the instructor now hit the student, or demand they
do something difficult? (It was common in that class to assign pushups for misbehaviour,
and I adopted the habit myself, giving my kids pushups in the grocery store if they
were driving me crazy.) But no, the instructor just stepped back and said “just hold
that as long as you can.” The kid grinned. Everyone else looked puzzled. It was trivially
easy to do. 
&lt;/p&gt;
&lt;p&gt;
But if you try this yourself, you’ll soon discover that very quickly it gets harder.
It starts to really hurt after just a few minutes. If you’re stubborn and you grit
your teeth, you can keep going. This student was very stubborn. After a while though,
his arms would occasionally droop down. “Either put it down or keep it up! Shoulder
height! Arms straight!” the instructor would call and the student would try again
and manage to get back into position. Eventually he was clearly in distress. The instructor
told him “you can put it down whenever you want” but it was quite a while before he
did. His muscles were clearly very sore. 
&lt;/p&gt;
&lt;p&gt;
On that day, the instructor didn’t explicitly close the loop. He seemed content to
have found a way to get through to this student that classes were not his to disrupt
and there were things the instructors could do that the student didn’t like. But years
later, I saw a larger lesson in the choice of that particular exercise. Lifting that
light sword (or the pencil or ruler you tried this with) is nothing. It’s really nothing
at all. No effort. Anyone can do it. And at first, holding it is nothing also. If
you had never lifted a pencil before, and you met someone who was struggling after
holding one for many minutes, and you tried lifting a pencil yourself, you would be
really puzzled. “Why are you complaining? This is super easy. There’s nothing to it!
Anyone can do it!” The student’s misbehaviour was like this. Each little thing – the
funny comment, the silly face, doing the move backwards – was in itself nothing. Easy
to deal with or ignore. Not a problem. But enough of them add up. Just like the time
holding the light weight. It becomes hard. It becomes painful. It becomes unbearable. 
&lt;/p&gt;
&lt;p&gt;
I really urge you to try this. How long can you hold the pencil or ruler out before
you start to feel an effort? Before it hurts? Before you physically cannot do it any
longer? Try predicting these times and then doing it. 
&lt;/p&gt;
&lt;p&gt;
The world is full of things that are trivial and nothing if you only experience them
once, or once a decade, for a few minutes. It can be nearly impossible to imagine
that these trivial things could ever add up to something painful. In 1970 (yes! 50
years ago!) a university professor coined the term &lt;a href="https://en.wikipedia.org/wiki/Microaggression"&gt;microaggression &lt;/a&gt;for
tiny moments of “you don’t belong” aimed at racial minorities, disabled people, women
in male-dominated industries, gay people, and so on. People who haven’t experienced
a steady diet of “you don’t belong”, however mild, often literally cannot imagine
how it could add up to something painful. Sure, maybe you wince for a moment when
someone assumes a group of developers are all male, or all straight, but it’s no big
deal, right, and I’m sure the women know that when we say “men” we mean everyone,
and the gay people know that when we say “wife” we mean wife, husband, partner, whatever.
On its own, one tiny moment of “the only people I have to consider are X” is a little
needle for people who aren’t X, but it’s such a tiny needle, who would complain, who
would object, there was no nasty intent. Think about holding your arms out for 10
or 15 minutes and then think again about exclusionary language, policies that assume
only married people have children, asking people “where are you from”, telling someone
“you don’t look like a software developer”, making jokes about people’s weight or
appearance, and all those tiny tiny little things that are nothing once, but that
truly genuinely add up over time to real pain. 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
And then ask yourself: if it really doesn’t matter whether you say “men” or “people”,
then why is it so important you keep saying “men”? That sounds like it actually does
matter after all. If it’s no big deal and of course we all know that there are people
who differ from you in some way, why are you not prepared to do the work of talking
as though such people exist, instead asking them to do all the work of translating
your literal words into what you probably meant, or would have meant if you had thought
about it? How can you lessen some of the pain and effort other people have to put
in all day, every day, day after day? It will be no big deal to you, right? 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=4077a8c4-22f0-4250-aefb-2d2fed4f7250" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=9bf21940-cf06-4e9e-afb8-e1d73371212f</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=9bf21940-cf06-4e9e-afb8-e1d73371212f</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Lately a lot of people have been asking me for help as they write C++ code. I’m usually
happy and able to help. There are times, though, when I either cannot help, or choose
not to help. I thought it might be helpful to explain some of these a little. It’s
quite likely that other members of the community have a similar set of guidelines
in their heads for when they do and don’t help people with code.
</p>
        <p>
Warning: this is long. I think it's worth reading it all. You want a <strong>TL;DR</strong>?
It’s this: <strong>if you want free mentoring and consulting from successful people,
you can have it!</strong> All you need to do is ask. But if you expect your helpers
to do most of the work in helping you, and to take instruction and direction from
you, you’re going to get a lot less help than if you know how to be helped effectively.
</p>
        <p>
The first choice is where and how you ask. People often email me, message me on LinkedIn,
DM me on Twitter, DM me on the <a href="https://www.includecpp.org/">#include &lt;C++&gt;</a> Discord,
and so on hoping to get personalized, instant, one-on-one help from me. That’s not
a good use of my time. I prefer to help in places where others will see the question
and the answer. That helps more people. It also enables more people to help – so it
produces better advice as well as helping those people learn and grow. Often, I learn
from the times when other people chime in. So I encourage you to post on StackOverflow
(if you have the sort of just-one-question, just-one-right-answer problem that fits
there), or on the <a href="https://www.includecpp.org/discord/">#include &lt;C++&gt;
Discord</a>, or some other public place where a number of people can see the question
and the answer over time.
</p>
        <p>
The rest of the issues have to do with how much work the person expects me to do,
or how much they save me. Think about how you ask the very first thing you ask. Compare
“here is a zip of all the files in my project can you tell me what’s wrong with it?”
to “here is a link to an online compiler (Godbolt, wandbox, etc) showing a compiler
error on line 43 that I don’t understand. Can you tell me how to fix that error?”
Expecting someone to install things, trawl through multiple files, guess your question,
and then solve your problem and explain it all to you is really too much. At least
tell people what your problem is! Often people ask for help saying something like
“it’s not working” or “what’s wrong with this?” and I don’t even know if it’s a compiler
error or a runtime error or running fine but calculating the wrong answer. So before
you post on the discord, for example, try to have a single crisp question, not just
“help, it’s not working.” 
</p>
        <ul>
          <li>
Show us your code, and your errors. And not as screenshots! You can copy the code
into an online compiler like Godbolt or Wandbox, or if it’s less than 20 lines or
so, paste it into the chat window – but please learn how to <a href="https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline-">format
it as code</a> when you do that. Copy and paste the errors as text. That makes them
much easier to read, and lets us copy and paste parts of them while explaining things
to you. If you can’t show your real code because of how big it is or because it’s
work-related, create a tiny example that shows the same problem and show us that. <a href="https://stackoverflow.com/help/minimal-reproducible-example">Stack
Overflow has some tips</a> on how to do that.  Whatever you do, do not free-type
some code into the chat window that you think is the same as your problem, and then
whenever people point out missing semi colons or undeclared variables, reply “oh yeah,
that’s not really my code it’s just something I typed to give you the general idea.”
Compilers (and runtimes) are picky and asking for help with something that’s vaguely
like your real code (but not really) is pointless.</li>
        </ul>
        <p>
Now let’s assume you manage to get a conversation going with someone who is trying
to help you. They solved that compiler error, for example, but now you have another
one. As part of this process, I often make suggestions to people that they reject.
I think they believe the suggestions are to make things easier for themselves in the
long run, because they say things like “I can do that once it’s working.” I then have
to spend a lot of effort explaining that I want them to do these things so that I
can help them get it working. These suggestions include:
</p>
        <ul>
          <li>
Write good variable (and function) names. If your variables are all called i, n, c,
r, s, and so on – I don’t know what they represent. If I ask you to change those to
words like next, rate, total, and so on, or to words you think of yourself, that’s
because I can’t understand your code (I don’t know the problem you’re trying to solve)
without some help. Good names aren’t a someday thing that you paint over working code
once it’s all good. They are how you make code other people can read. And you’re asking
me to read this code. Make it readable.</li>
          <li>
Use a debugger. When I ask “have you looked in the debugger to see the value of a
before the loop?” an answer of “I don’t know how to use the debugger and I don’t have
time to learn that today” is a great way to end our conversation. Real programmers
use the debugger. We don’t have some magical compiler-simulator in our heads that
can read code and tell you if it compiles or not, and we don’t have a magical runtime-simulator
either. Sure, maybe I can tell at a glance that a is 0 before the loop and that’s
why it’s not working, but in that case I would tell you so. It’s more likely that
I want you to quickly check and see if it’s 0 or not. When you refuse to debug, you’re
making it so much harder to help you. You need to learn to use whatever debugger is
available to you, and you will probably save enough time today to make up for the
time it takes to learn it.</li>
          <li>
Add some tests. You don’t have to go learn a whole unit testing framework. But if
you’re writing a function to do whatever, work out by hand what it does for simple
values, and write a test harness that passes it those simple values. Then you can
debug the test harness and see what the function returns and confirm whether or not
it works for simple values. Whether you’re reversing a string in place, calculating
the Fibonacci sequence, calculating sums of things, whatever, you should be able to
think up simple test cases and test your code with them. And eventually, you should
be writing tests as you write your code. It’s a good habit you can build now.</li>
          <li>
Break up big things. You don’t have to embrace full OO or write functional programs,
but don’t give me 1000 lines of code and ask me to load it into my head. Write some
functions. Heck, throw in some comments and some blank lines. Show the structure of
your code so it’s not a wall of text.</li>
        </ul>
Some other good behaviours that will take you a long way:<p></p><ul><li>
Try the substitutions people tell you to try. A lot of times, people who are having
a hard time don’t want to learn a new thing. I run into that situation all the time
myself. I’m already frustrated and I’ve spent longer than I meant to and I can’t understand
any of it, I don’t want you to tell me to go learn yet another thing right now. I
have gained some wisdom over the years though, and it includes this: sometimes jettisoning
all that half-understood not-really-working mess and doing something simpler is the
best way forward. If someone tells you that vector would be better here, and offers
you a few lines of code to use, just digging in your heels and refusing to try it
isn’t going to lead you into learning. If you’ve got a problem because you’re trying
to manage memory yourself by hand but you forgot about copying and so on, then using
a smart pointer, or dropping the pointers altogether and using an object on the stack,
is going to make a whole pile of work just fall away. The person advising you to try
this knows how much effort it will save. You don’t, that’s why you came for help.
It’s really frustrating to see a beginner insist on doing something the hard way (for
no benefit), do it wrong, and refuse to accept any help other than “here is the precise
and exact code to do that thing the hard way.” I don’t want to do things the hard
way any more: why would I type out all the code for you?</li><li>
Try things that don’t matter to you, if the person who is helping you tells you that
your code is harder to read the way you have it. Things like initializing member variables
in a constructor with the : syntax, not between the braces, or adding some using statements
– these may not matter to you, but making things too hard for a busy helper may mean
that helper is too busy to help today. Or ever. I don’t want to teach you bad habits,
I don’t want to teach you to “pretty things up” only once it’s working, and I don’t
want to exhaust myself reading difficult code to spare you the trouble of doing the
right thing. Also, when a person asks for advice but never takes any of it because
they’re sure it’s not actually relevant to their problem, eventually the advice-giver
will stop giving it. It’s pointless.</li><li>
Write your own code. If I tell you “the problem is that you’re not initializing x”
don’t ask me to edit your code for you or paste in the new version of the function
or whatever. You need to understand what you’re doing and that comes from writing
the code yourself. If you don’t understand how to fix a problem that someone has told
you about, ask them “how do I fix that?” If you can’t understand their answer, say
“I don’t know what [whatever] is, can you explain it or show me?” Don’t just ask “what
would that line of code look like?” That feels like you’re asking me to even do the
typing for you.</li><li>
Work with whoever is talking to you. Maybe when you first ask, one person has a couple
of thoughts, and those are good, but while you’re changing your code to see if that
works, someone else chimes in. That’s great. It’s a group chat. Don’t tell them that
you’re working with the first person or anything like that to reject their help. Consider
all the suggestions you get. If you’re talking to someone and then they stop, that’s
cool too. Many people pop into chat for 5 or 10 minutes waiting for a conference call
to start, or while they’re eating lunch, and don’t stay long. People get called away
from their keyboards. Don’t start pinging the person trying to bring them back or
ask if they have any more thoughts or saying you’re still stuck. You can tell the
room or channel as a whole that you’re still stuck. Maybe someone else will have some
ideas. Your problem may end up solved over an hour or so with three different people.
That’s a win! 
</li></ul><p>
I know, that’s a lot of advice. Thing is, you can get a lot of help from strangers
on the internet, if you ask the right way. If you ask the wrong way, most people will
just shrug and say “looks like you have a problem” and move along. They won’t even
tell you why they’re not helping you! To get the marvelous free help, and to truly
join the community, you have to put in a little effort. Trust me, it’s worth it!
</p><p>
Kate<br /></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=9bf21940-cf06-4e9e-afb8-e1d73371212f" /></body>
      <title>How to ask for C++ coding help</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=9bf21940-cf06-4e9e-afb8-e1d73371212f</guid>
      <link>http://www.gregcons.com/KateBlog/HowToAskForCCodingHelp.aspx</link>
      <pubDate>Thu, 28 May 2020 20:26:40 GMT</pubDate>
      <description>&lt;p&gt;
Lately a lot of people have been asking me for help as they write C++ code. I’m usually
happy and able to help. There are times, though, when I either cannot help, or choose
not to help. I thought it might be helpful to explain some of these a little. It’s
quite likely that other members of the community have a similar set of guidelines
in their heads for when they do and don’t help people with code.
&lt;/p&gt;
&lt;p&gt;
Warning: this is long. I think it's worth reading it all. You want a &lt;strong&gt;TL;DR&lt;/strong&gt;?
It’s this: &lt;strong&gt;if you want free mentoring and consulting from successful people,
you can have it!&lt;/strong&gt; All you need to do is ask. But if you expect your helpers
to do most of the work in helping you, and to take instruction and direction from
you, you’re going to get a lot less help than if you know how to be helped effectively.
&lt;/p&gt;
&lt;p&gt;
The first choice is where and how you ask. People often email me, message me on LinkedIn,
DM me on Twitter, DM me on the &lt;a href="https://www.includecpp.org/"&gt;#include &amp;lt;C++&amp;gt;&lt;/a&gt; Discord,
and so on hoping to get personalized, instant, one-on-one help from me. That’s not
a good use of my time. I prefer to help in places where others will see the question
and the answer. That helps more people. It also enables more people to help – so it
produces better advice as well as helping those people learn and grow. Often, I learn
from the times when other people chime in. So I encourage you to post on StackOverflow
(if you have the sort of just-one-question, just-one-right-answer problem that fits
there), or on the &lt;a href="https://www.includecpp.org/discord/"&gt;#include &amp;lt;C++&amp;gt;
Discord&lt;/a&gt;, or some other public place where a number of people can see the question
and the answer over time.
&lt;/p&gt;
&lt;p&gt;
The rest of the issues have to do with how much work the person expects me to do,
or how much they save me. Think about how you ask the very first thing you ask. Compare
“here is a zip of all the files in my project can you tell me what’s wrong with it?”
to “here is a link to an online compiler (Godbolt, wandbox, etc) showing a compiler
error on line 43 that I don’t understand. Can you tell me how to fix that error?”
Expecting someone to install things, trawl through multiple files, guess your question,
and then solve your problem and explain it all to you is really too much. At least
tell people what your problem is! Often people ask for help saying something like
“it’s not working” or “what’s wrong with this?” and I don’t even know if it’s a compiler
error or a runtime error or running fine but calculating the wrong answer. So before
you post on the discord, for example, try to have a single crisp question, not just
“help, it’s not working.” 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Show us your code, and your errors. And not as screenshots! You can copy the code
into an online compiler like Godbolt or Wandbox, or if it’s less than 20 lines or
so, paste it into the chat window – but please learn how to &lt;a href="https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline-"&gt;format
it as code&lt;/a&gt; when you do that. Copy and paste the errors as text. That makes them
much easier to read, and lets us copy and paste parts of them while explaining things
to you. If you can’t show your real code because of how big it is or because it’s
work-related, create a tiny example that shows the same problem and show us that. &lt;a href="https://stackoverflow.com/help/minimal-reproducible-example"&gt;Stack
Overflow has some tips&lt;/a&gt; on how to do that.&amp;nbsp; Whatever you do, do not free-type
some code into the chat window that you think is the same as your problem, and then
whenever people point out missing semi colons or undeclared variables, reply “oh yeah,
that’s not really my code it’s just something I typed to give you the general idea.”
Compilers (and runtimes) are picky and asking for help with something that’s vaguely
like your real code (but not really) is pointless.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Now let’s assume you manage to get a conversation going with someone who is trying
to help you. They solved that compiler error, for example, but now you have another
one. As part of this process, I often make suggestions to people that they reject.
I think they believe the suggestions are to make things easier for themselves in the
long run, because they say things like “I can do that once it’s working.” I then have
to spend a lot of effort explaining that I want them to do these things so that I
can help them get it working. These suggestions include:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Write good variable (and function) names. If your variables are all called i, n, c,
r, s, and so on – I don’t know what they represent. If I ask you to change those to
words like next, rate, total, and so on, or to words you think of yourself, that’s
because I can’t understand your code (I don’t know the problem you’re trying to solve)
without some help. Good names aren’t a someday thing that you paint over working code
once it’s all good. They are how you make code other people can read. And you’re asking
me to read this code. Make it readable.&lt;/li&gt;
&lt;li&gt;
Use a debugger. When I ask “have you looked in the debugger to see the value of a
before the loop?” an answer of “I don’t know how to use the debugger and I don’t have
time to learn that today” is a great way to end our conversation. Real programmers
use the debugger. We don’t have some magical compiler-simulator in our heads that
can read code and tell you if it compiles or not, and we don’t have a magical runtime-simulator
either. Sure, maybe I can tell at a glance that a is 0 before the loop and that’s
why it’s not working, but in that case I would tell you so. It’s more likely that
I want you to quickly check and see if it’s 0 or not. When you refuse to debug, you’re
making it so much harder to help you. You need to learn to use whatever debugger is
available to you, and you will probably save enough time today to make up for the
time it takes to learn it.&lt;/li&gt;
&lt;li&gt;
Add some tests. You don’t have to go learn a whole unit testing framework. But if
you’re writing a function to do whatever, work out by hand what it does for simple
values, and write a test harness that passes it those simple values. Then you can
debug the test harness and see what the function returns and confirm whether or not
it works for simple values. Whether you’re reversing a string in place, calculating
the Fibonacci sequence, calculating sums of things, whatever, you should be able to
think up simple test cases and test your code with them. And eventually, you should
be writing tests as you write your code. It’s a good habit you can build now.&lt;/li&gt;
&lt;li&gt;
Break up big things. You don’t have to embrace full OO or write functional programs,
but don’t give me 1000 lines of code and ask me to load it into my head. Write some
functions. Heck, throw in some comments and some blank lines. Show the structure of
your code so it’s not a wall of text.&lt;/li&gt;
&lt;/ul&gt;
Some other good behaviours that will take you a long way:&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Try the substitutions people tell you to try. A lot of times, people who are having
a hard time don’t want to learn a new thing. I run into that situation all the time
myself. I’m already frustrated and I’ve spent longer than I meant to and I can’t understand
any of it, I don’t want you to tell me to go learn yet another thing right now. I
have gained some wisdom over the years though, and it includes this: sometimes jettisoning
all that half-understood not-really-working mess and doing something simpler is the
best way forward. If someone tells you that vector would be better here, and offers
you a few lines of code to use, just digging in your heels and refusing to try it
isn’t going to lead you into learning. If you’ve got a problem because you’re trying
to manage memory yourself by hand but you forgot about copying and so on, then using
a smart pointer, or dropping the pointers altogether and using an object on the stack,
is going to make a whole pile of work just fall away. The person advising you to try
this knows how much effort it will save. You don’t, that’s why you came for help.
It’s really frustrating to see a beginner insist on doing something the hard way (for
no benefit), do it wrong, and refuse to accept any help other than “here is the precise
and exact code to do that thing the hard way.” I don’t want to do things the hard
way any more: why would I type out all the code for you?&lt;/li&gt;
&lt;li&gt;
Try things that don’t matter to you, if the person who is helping you tells you that
your code is harder to read the way you have it. Things like initializing member variables
in a constructor with the : syntax, not between the braces, or adding some using statements
– these may not matter to you, but making things too hard for a busy helper may mean
that helper is too busy to help today. Or ever. I don’t want to teach you bad habits,
I don’t want to teach you to “pretty things up” only once it’s working, and I don’t
want to exhaust myself reading difficult code to spare you the trouble of doing the
right thing. Also, when a person asks for advice but never takes any of it because
they’re sure it’s not actually relevant to their problem, eventually the advice-giver
will stop giving it. It’s pointless.&lt;/li&gt;
&lt;li&gt;
Write your own code. If I tell you “the problem is that you’re not initializing x”
don’t ask me to edit your code for you or paste in the new version of the function
or whatever. You need to understand what you’re doing and that comes from writing
the code yourself. If you don’t understand how to fix a problem that someone has told
you about, ask them “how do I fix that?” If you can’t understand their answer, say
“I don’t know what [whatever] is, can you explain it or show me?” Don’t just ask “what
would that line of code look like?” That feels like you’re asking me to even do the
typing for you.&lt;/li&gt;
&lt;li&gt;
Work with whoever is talking to you. Maybe when you first ask, one person has a couple
of thoughts, and those are good, but while you’re changing your code to see if that
works, someone else chimes in. That’s great. It’s a group chat. Don’t tell them that
you’re working with the first person or anything like that to reject their help. Consider
all the suggestions you get. If you’re talking to someone and then they stop, that’s
cool too. Many people pop into chat for 5 or 10 minutes waiting for a conference call
to start, or while they’re eating lunch, and don’t stay long. People get called away
from their keyboards. Don’t start pinging the person trying to bring them back or
ask if they have any more thoughts or saying you’re still stuck. You can tell the
room or channel as a whole that you’re still stuck. Maybe someone else will have some
ideas. Your problem may end up solved over an hour or so with three different people.
That’s a win! 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I know, that’s a lot of advice. Thing is, you can get a lot of help from strangers
on the internet, if you ask the right way. If you ask the wrong way, most people will
just shrug and say “looks like you have a problem” and move along. They won’t even
tell you why they’re not helping you! To get the marvelous free help, and to truly
join the community, you have to put in a little effort. Trust me, it’s worth it!
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=9bf21940-cf06-4e9e-afb8-e1d73371212f" /&gt;</description>
      <category>C++</category>
      <category>Consulting Life</category>
      <category>Mentoring</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=1022b4a7-8ad2-4f3f-9218-1d2deff5e617</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=1022b4a7-8ad2-4f3f-9218-1d2deff5e617</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I spent much of the spring working on this course, and am delighted to see it live!
</p>
        <p>
          <a href="https://www.pluralsight.com/courses/visual-studio-2017-essentials-beyond">Visual
Studio 2017: Essentials to the Power User</a> is 7 hours of good stuff you need if
you're a Visual Studio user. My emphasis is on keeping you happy and productive by
getting the tool to help you and showing you neat features you probably didn't know
about. If you open that link in a new tab, you can play the course overview (a 2 minute
"trailer") and look at the table of contents. I've done versions of this course for
older Visual Studios and I get comments like "It's as though I have a whole new IDE"
and "I've been using Visual Studio for years and you showed me things I didn't know,
and I'm glad I do now." 
<br /></p>
        <p>
I think debugging in general is not taught enough, so I'm happy to have 2 whole modules
on it here - not on philosophy of debugging or how to narrow down a bug, but just
on how to operate the machinery of Visual Studio's debugger. There's lots of it. Plus,
if you have Ultimate, there's another half a module on "Historical Debugging", IntelliTrace.
I also spend quite a lot of time on how to find your way around a large codebase with
the various searching, finding, navigating and exploring capabilities that have evolved
over time.
</p>
        <p>
Here's a quick topic summary:
</p>
        <p>
          <img src="http://www.gregcons.com/KateBlog/content/binary/teaser[1][2][3][4][5][6][7][8][9][10][11][12].jpg" border="0" />
        </p>
        <p>
I really enjoyed writing this course and hope you enjoy watching it. If you need a
free trial, look over to the right on this page for the grey rectangle that says Author
and click for a 10 day trial.
</p>
        <p>
Kate<br /></p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=1022b4a7-8ad2-4f3f-9218-1d2deff5e617" />
      </body>
      <title>My Visual Studio 2017 course is live</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=1022b4a7-8ad2-4f3f-9218-1d2deff5e617</guid>
      <link>http://www.gregcons.com/KateBlog/MyVisualStudio2017CourseIsLive.aspx</link>
      <pubDate>Sat, 08 Jul 2017 14:40:45 GMT</pubDate>
      <description>&lt;p&gt;
I spent much of the spring working on this course, and am delighted to see it live!
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://www.pluralsight.com/courses/visual-studio-2017-essentials-beyond"&gt;Visual
Studio 2017: Essentials to the Power User&lt;/a&gt; is 7 hours of good stuff you need if
you're a Visual Studio user. My emphasis is on keeping you happy and productive by
getting the tool to help you and showing you neat features you probably didn't know
about. If you open that link in a new tab, you can play the course overview (a 2 minute
"trailer") and look at the table of contents. I've done versions of this course for
older Visual Studios and I get comments like "It's as though I have a whole new IDE"
and "I've been using Visual Studio for years and you showed me things I didn't know,
and I'm glad I do now." 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
I think debugging in general is not taught enough, so I'm happy to have 2 whole modules
on it here - not on philosophy of debugging or how to narrow down a bug, but just
on how to operate the machinery of Visual Studio's debugger. There's lots of it. Plus,
if you have Ultimate, there's another half a module on "Historical Debugging", IntelliTrace.
I also spend quite a lot of time on how to find your way around a large codebase with
the various searching, finding, navigating and exploring capabilities that have evolved
over time.
&lt;/p&gt;
&lt;p&gt;
Here's a quick topic summary:
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.gregcons.com/KateBlog/content/binary/teaser[1][2][3][4][5][6][7][8][9][10][11][12].jpg" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
I really enjoyed writing this course and hope you enjoy watching it. If you need a
free trial, look over to the right on this page for the grey rectangle that says Author
and click for a 10 day trial.
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=1022b4a7-8ad2-4f3f-9218-1d2deff5e617" /&gt;</description>
      <category>Client Development</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Visual Studio 2017</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=44ea286b-5d0e-4dca-b4be-e8426a4fa2f8</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=44ea286b-5d0e-4dca-b4be-e8426a4fa2f8</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
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.
</p>
        <p>
          <a href="https://visualstudiomagazine.com/articles/2016/04/19/intro-to-cpp-core-guidelines.aspx">The
first column</a> just sets the stage and explains what I'm doing, and gives you a
link to the Guidelines. The second, <a href="https://visualstudiomagazine.com/articles/2016/04/26/dont-cast-away-const-in-cpp.aspx">Don't
Cast Away Const</a>, 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!
</p>
        <p>
I have a number of columns already written and plans to write more. Please check them
out and spread the word!
</p>
        <p>
Kate
</p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=44ea286b-5d0e-4dca-b4be-e8426a4fa2f8" />
      </body>
      <title>New Column in Visual Studio Magazine</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=44ea286b-5d0e-4dca-b4be-e8426a4fa2f8</guid>
      <link>http://www.gregcons.com/KateBlog/NewColumnInVisualStudioMagazine.aspx</link>
      <pubDate>Fri, 29 Apr 2016 21:17:26 GMT</pubDate>
      <description>&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://visualstudiomagazine.com/articles/2016/04/19/intro-to-cpp-core-guidelines.aspx"&gt;The
first column&lt;/a&gt; just sets the stage and explains what I'm doing, and gives you a
link to the Guidelines. The second, &lt;a href="https://visualstudiomagazine.com/articles/2016/04/26/dont-cast-away-const-in-cpp.aspx"&gt;Don't
Cast Away Const&lt;/a&gt;, 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!
&lt;/p&gt;
&lt;p&gt;
I have a number of columns already written and plans to write more. Please check them
out and spread the word!
&lt;/p&gt;
&lt;p&gt;
Kate
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=44ea286b-5d0e-4dca-b4be-e8426a4fa2f8" /&gt;</description>
      <category>C++</category>
      <category>C++ Guidelines</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=defc6bbc-c40d-4b4d-ac69-c46c14482550</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=defc6bbc-c40d-4b4d-ac69-c46c14482550</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">My latest Pluralsight course is live! It's
called <a href="https://www.pluralsight.com/courses/cplusplus-core-guidelines-and-support-library-first-look">First
Look: C++ Core Guidelines and the Guideline Support Library</a> 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.<br /><br />
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 <a href="https://www.pluralsight.com/courses/cplusplus-core-guidelines-and-support-library-first-look">course
page, </a>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. 
<br /><br /><img src="http://www.gregcons.com/KateBlog/content/binary/overview.jpg" height="177" width="465" border="0" /><br /><br />
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.<br /><br />
Kate<br /><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=defc6bbc-c40d-4b4d-ac69-c46c14482550" /></body>
      <title>Quick course (98 minutes) to get you started with the C++ Core Guidelines</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=defc6bbc-c40d-4b4d-ac69-c46c14482550</guid>
      <link>http://www.gregcons.com/KateBlog/QuickCourse98MinutesToGetYouStartedWithTheCCoreGuidelines.aspx</link>
      <pubDate>Thu, 24 Mar 2016 18:10:15 GMT</pubDate>
      <description>My latest Pluralsight course is live! It's called &lt;a href="https://www.pluralsight.com/courses/cplusplus-core-guidelines-and-support-library-first-look"&gt;First
Look: C++ Core Guidelines and the Guideline Support Library&lt;/a&gt; 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.&lt;br&gt;
&lt;br&gt;
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 &lt;a href="https://www.pluralsight.com/courses/cplusplus-core-guidelines-and-support-library-first-look"&gt;course
page, &lt;/a&gt;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. 
&lt;br&gt;
&lt;br&gt;
&lt;img src="http://www.gregcons.com/KateBlog/content/binary/overview.jpg" height="177" width="465" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
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.&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=defc6bbc-c40d-4b4d-ac69-c46c14482550" /&gt;</description>
      <category>C++</category>
      <category>C++ Guidelines</category>
      <category>Mentoring</category>
      <category>Speaking</category>
      <category>Visual Studio 2015</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=7a506f3e-2387-4a63-b24d-dd6b3d6075b5</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=7a506f3e-2387-4a63-b24d-dd6b3d6075b5</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have a new Pluralsight course on Visual Studio called <a href="http://www.pluralsight.com/courses/visual-studio-2015-essentials-power-user">Visual
Studio 2015: Essentials to the Power-User</a>. 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:
</p>
        <ol>
          <li>
Getting Started (42:08)</li>
          <li>
Projects and Solutions (13:23)</li>
          <li>
Namespaces, Folders, and Files(27:03)</li>
          <li>
Understanding and Personalizing Visual Studio UI Components (26:57)</li>
          <li>
Exploring Relationships in Your Code(36:41)</li>
          <li>
Using Search and Find Effectively(28:15)</li>
          <li>
Letting Visual Studio Help You (46:28)</li>
          <li>
Basic Debugging Features (24:04)</li>
          <li>
Additional Debugging Features (44:30)</li>
          <li>
Working with Designers (39:37)</li>
          <li>
Useful Extensions (39:54)</li>
          <li>
IntelliTrace and Code Map (25:57)</li>
        </ol>
        <p>
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.)
</p>
        <p>
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.
</p>
        <p>
Kate<br /></p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=7a506f3e-2387-4a63-b24d-dd6b3d6075b5" />
      </body>
      <title>My Visual Studio 2015 course is live!</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=7a506f3e-2387-4a63-b24d-dd6b3d6075b5</guid>
      <link>http://www.gregcons.com/KateBlog/MyVisualStudio2015CourseIsLive.aspx</link>
      <pubDate>Mon, 09 Nov 2015 17:18:54 GMT</pubDate>
      <description>&lt;p&gt;
I have a new Pluralsight course on Visual Studio called &lt;a href="http://www.pluralsight.com/courses/visual-studio-2015-essentials-power-user"&gt;Visual
Studio 2015: Essentials to the Power-User&lt;/a&gt;. 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:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Getting Started (42:08)&lt;/li&gt;
&lt;li&gt;
Projects and Solutions (13:23)&lt;/li&gt;
&lt;li&gt;
Namespaces, Folders, and Files(27:03)&lt;/li&gt;
&lt;li&gt;
Understanding and Personalizing Visual Studio UI Components (26:57)&lt;/li&gt;
&lt;li&gt;
Exploring Relationships in Your Code(36:41)&lt;/li&gt;
&lt;li&gt;
Using Search and Find Effectively(28:15)&lt;/li&gt;
&lt;li&gt;
Letting Visual Studio Help You (46:28)&lt;/li&gt;
&lt;li&gt;
Basic Debugging Features (24:04)&lt;/li&gt;
&lt;li&gt;
Additional Debugging Features (44:30)&lt;/li&gt;
&lt;li&gt;
Working with Designers (39:37)&lt;/li&gt;
&lt;li&gt;
Useful Extensions (39:54)&lt;/li&gt;
&lt;li&gt;
IntelliTrace and Code Map (25:57)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
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.)
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=7a506f3e-2387-4a63-b24d-dd6b3d6075b5" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Visual Studio 2015</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=5bf0d625-2194-4bde-9dee-fe9d58799c6f</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=5bf0d625-2194-4bde-9dee-fe9d58799c6f</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
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 <a href="https://app.pluralsight.com/library/courses/using-stackoverflow-stackexchange-sites/table-of-contents">my
StackExchange course</a> that brought a huge smile to my face:
</p>
        <blockquote>
          <p>
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.
</p>
        </blockquote>
        <p>
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 <b>the exact reason why I wrote the course</b>.
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.
</p>
        <p>
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 :-)<br /></p>
        <p>
Kate<br /></p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=5bf0d625-2194-4bde-9dee-fe9d58799c6f" />
      </body>
      <title>Lovely comment on a course</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=5bf0d625-2194-4bde-9dee-fe9d58799c6f</guid>
      <link>http://www.gregcons.com/KateBlog/LovelyCommentOnACourse.aspx</link>
      <pubDate>Thu, 08 Oct 2015 21:43:35 GMT</pubDate>
      <description>&lt;p&gt;
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 &lt;a href="https://app.pluralsight.com/library/courses/using-stackoverflow-stackexchange-sites/table-of-contents"&gt;my
StackExchange course&lt;/a&gt; that brought a huge smile to my face:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
I have actually tried not to use Stack Exchange and stick to other sites.&amp;nbsp; I
had several bad experiences and have not gained any reputation at all on any questions
that I asked.&amp;nbsp; I have even deleted questions due to downvotes or other negative
activity.&amp;nbsp; Well after watching this, I understand the problems that I have had
in the past.&amp;nbsp; 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.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
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 &lt;b&gt;the exact reason why I wrote the course&lt;/b&gt;.
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.
&lt;/p&gt;
&lt;p&gt;
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 :-)&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=5bf0d625-2194-4bde-9dee-fe9d58799c6f" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=976bcbd1-2c61-4e9f-b441-bb2220be2d4f</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=976bcbd1-2c61-4e9f-b441-bb2220be2d4f</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In my Pluralsight course, <a href="http://shrsl.com/?~78zb">Using StackOverflow and
Other StackExchange Sites</a>, 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. 
<br /></p>
        <p>
Right now, Winter Bash is on and it's just for fun. I made <a href="http://youtu.be/yWLKYPVrdr0">a
quick video</a> 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.
</p>
        <p>
Kate<br /></p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=976bcbd1-2c61-4e9f-b441-bb2220be2d4f" />
      </body>
      <title>Video - Stack Exchange Winter Bash (hats)</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=976bcbd1-2c61-4e9f-b441-bb2220be2d4f</guid>
      <link>http://www.gregcons.com/KateBlog/VideoStackExchangeWinterBashHats.aspx</link>
      <pubDate>Wed, 24 Dec 2014 15:43:41 GMT</pubDate>
      <description>&lt;p&gt;
In my Pluralsight course, &lt;a href="http://shrsl.com/?~78zb"&gt;Using StackOverflow and
Other StackExchange Sites&lt;/a&gt;, 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. 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
Right now, Winter Bash is on and it's just for fun. I made &lt;a href="http://youtu.be/yWLKYPVrdr0"&gt;a
quick video&lt;/a&gt; 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.
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=976bcbd1-2c61-4e9f-b441-bb2220be2d4f" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=18a0e307-6878-46f0-9d98-602183e2b97f</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=18a0e307-6878-46f0-9d98-602183e2b97f</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">I'm headed to Australia tomorrow (I won't
get there till Thursday though) and I'm going to be doing some C++ talks while I'm
there. Both are aimed at folks who haven't been keeping up to date on all that's been
happening in the world of C++ over the last few years.<br /><br />
On Tuesday, July 10th, I'll do a free Tech Breakfast on the new features of the C++
language in the standard once called C++0x and now called C++ 11. I'll demonstrate
how a lot of these features are already in Visual Studio 2010 and some in Visual Studio
2012. It runs from 9am to 11 am in Sydney, and you do need to pre-register. 
<br /><br />
Then all day Wednesday, July 11th, I'll do a course on modern C++ development with
Visual Studio 2010 and 2012. I'll cover language changes, tool changes, drill into
my favourite feature - lambdas - and show some of the cool things they enable, and
give you some advice on best practices for writing C++ today. This course costs $300
Australian and will be held in Sydney just once.<br /><br />
I realize many people who read my blog don't need to come and learn this material.
But perhaps you know someone who does? There is room in both sessions for more people
- and I want to reach as many people as possible, so please spread the word! Registration
links for both session are on <a href="http://www.ssw.com.au/ssw/netug/SSWUpdate/_2012_06__Kate%20Gregory%20is%20coming%20to%20Australia.htm">the
SSW page announcing them</a>.<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=18a0e307-6878-46f0-9d98-602183e2b97f" /></body>
      <title>Do you know an Australian who needs a C++ refresher?</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=18a0e307-6878-46f0-9d98-602183e2b97f</guid>
      <link>http://www.gregcons.com/KateBlog/DoYouKnowAnAustralianWhoNeedsACRefresher.aspx</link>
      <pubDate>Mon, 02 Jul 2012 14:47:22 GMT</pubDate>
      <description>I'm headed to Australia tomorrow (I won't get there till Thursday though) and I'm going to be doing some C++ talks while I'm there. Both are aimed at folks who haven't been keeping up to date on all that's been happening in the world of C++ over the last few years.&lt;br&gt;
&lt;br&gt;
On Tuesday, July 10th, I'll do a free Tech Breakfast on the new features of the C++
language in the standard once called C++0x and now called C++ 11. I'll demonstrate
how a lot of these features are already in Visual Studio 2010 and some in Visual Studio
2012. It runs from 9am to 11 am in Sydney, and you do need to pre-register. 
&lt;br&gt;
&lt;br&gt;
Then all day Wednesday, July 11th, I'll do a course on modern C++ development with
Visual Studio 2010 and 2012. I'll cover language changes, tool changes, drill into
my favourite feature - lambdas - and show some of the cool things they enable, and
give you some advice on best practices for writing C++ today. This course costs $300
Australian and will be held in Sydney just once.&lt;br&gt;
&lt;br&gt;
I realize many people who read my blog don't need to come and learn this material.
But perhaps you know someone who does? There is room in both sessions for more people
- and I want to reach as many people as possible, so please spread the word! Registration
links for both session are on &lt;a href="http://www.ssw.com.au/ssw/netug/SSWUpdate/_2012_06__Kate%20Gregory%20is%20coming%20to%20Australia.htm"&gt;the
SSW page announcing them&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=18a0e307-6878-46f0-9d98-602183e2b97f" /&gt;</description>
      <category>C++</category>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Speaking</category>
      <category>Travel</category>
      <category>Visual Studio 11</category>
      <category>Visual Studio 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=a0966347-5053-451f-a3eb-795afa6cf569</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=a0966347-5053-451f-a3eb-795afa6cf569</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">Recently one of my staff went to a week-long
conference - her first. I gave her some tips before she went and it occurred to me
that others might like them too. I hope you'll apply them to a trip to Tech Ed or
some other conference where you can hear me speak.<br /><br />
First, here are some links to some other good posts on the topic. Here's <a href="http://www.gregcons.com/KateBlog/ReadyForTechEd.aspx">me
a year ago</a>, pointing to John Bristowe's suggestions for going to a big conference.
And here's <a href="http://www.gregcons.com/KateBlog/AdviceOnTalkingToHumansAtConferences.aspx">me
18 months ago</a>, pointing to Joey deVilla's suggestions for meeting people and talking
to them. And here's <a href="http://programmers.stackexchange.com/q/77102/285">a great
question</a> (with an answer from me) on Programmers.StackExchange about networking
at conferences. (BTW I met the asker of that question in person at Tech Ed, which
was great for both of us.) And here's <a href="http://www.gregcons.com/KateBlog/TechEdTipsForFirstTimers.aspx">me
four years</a> ago with some details on choosing talks to attend.<br /><br />
Now, here's the super condensed version of my advice:<br /><ul><li>
Plan your sessions in advance, at least two per timeslot. Carry a paper list of session
names and room numbers so if you decide to bail on one, you know exactly where to
run to, even if your electronics are out of battery and there's no wifi.</li><li>
Wear comfortable shoes and clothes, but not so comfortable that you would feel underdressed
when talking to a potential employer or other business contacts. You will walk a LOT
so choose those shoes with special care. It will be both stinking hot (outside - many
conferences are held in hot places at muggy times) and freezing cold (if you end up
right under the AC that is set on stun) so have a layering approach.</li><li>
Bring your own bag so you can tell it apart from everyone else's, and know just where
to find things you need. Leave as much as you possibly can in the hotel room, to save
your back during all that walking and to minimize what you might lose if there's any
kind of bag mishap.</li><li>
Eat at the conference - it's a great time to meet people and this is where I usually
bump into people I know. 
<br /></li><li>
Go to the trade show floor, the community area, and the like multiple times. Serendipity
will happen but you have to give it a chance</li><li>
Pack a somewhat larger bag than you need to - there is a lot of swag at Tech Ed and
first timers can't resist lining up for TShirts and the like. Don't be that person
who stuffs it all in the conference bag and checks a second bag on the way home. For
one thing, someone may accidentally pick up your conference bag thinking it is theirs.
Your conference bag and all your other swag should fit in your main bag.</li><li>
Pack your days and evenings FULL. Don't you dare watch TV in your hotel room! Go to
the labs and try something you always wanted to learn a little more about. Download
something that was just released and try it. Go to a party. Write up your notes (or
better yet, blog them.) Send your boss late night emails about what a great time you're
having and how much you're learning. Watch one of the sessions you didn't get to that
day and then figure out if the speaker is likely still at the conference and how you
can arrange to find that speaker and say thanks for the talk or ask a question. Fill
out the evals for the talks you went to. There is SO MUCH you can do while you're
on site, so try very hard to do it all. Make the most of the week, make it intense,
and you will get more out of it by fully engaging.</li><li>
Try to do at least a few hours of sightseeing - one afternoon or evening - with some
friends if you can. Maybe the attendee party is being held in some iconic location?
Go to that. Or there's a restaurant in the town that you've always wanted to eat at?
Gather a few folks and arrange something. Twitter is great with the conference hashtag
- "who wants to go to XYZ tonight?" - I've done this for going on tours too. Gives
you fellow geeks to talk to while you sightsee and strengthens friendships if you
go with people you only know professionally. But don't overdo the sightseeing - you're
here for the conference, remember.<br /></li></ul><p>
I hope I see you there! The better prepared you are, the more benefit you will get
from the conference!
</p><p>
Kate<br /></p><br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=a0966347-5053-451f-a3eb-795afa6cf569" /></body>
      <title>Conference Attendee Tips</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=a0966347-5053-451f-a3eb-795afa6cf569</guid>
      <link>http://www.gregcons.com/KateBlog/ConferenceAttendeeTips.aspx</link>
      <pubDate>Thu, 31 May 2012 15:24:04 GMT</pubDate>
      <description>Recently one of my staff went to a week-long conference - her first. I gave her some tips before she went and it occurred to me that others might like them too. I hope you'll apply them to a trip to Tech Ed or some other conference where you can hear me speak.&lt;br&gt;
&lt;br&gt;
First, here are some links to some other good posts on the topic. Here's &lt;a href="http://www.gregcons.com/KateBlog/ReadyForTechEd.aspx"&gt;me
a year ago&lt;/a&gt;, pointing to John Bristowe's suggestions for going to a big conference.
And here's &lt;a href="http://www.gregcons.com/KateBlog/AdviceOnTalkingToHumansAtConferences.aspx"&gt;me
18 months ago&lt;/a&gt;, pointing to Joey deVilla's suggestions for meeting people and talking
to them. And here's &lt;a href="http://programmers.stackexchange.com/q/77102/285"&gt;a great
question&lt;/a&gt; (with an answer from me) on Programmers.StackExchange about networking
at conferences. (BTW I met the asker of that question in person at Tech Ed, which
was great for both of us.) And here's &lt;a href="http://www.gregcons.com/KateBlog/TechEdTipsForFirstTimers.aspx"&gt;me
four years&lt;/a&gt; ago with some details on choosing talks to attend.&lt;br&gt;
&lt;br&gt;
Now, here's the super condensed version of my advice:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Plan your sessions in advance, at least two per timeslot. Carry a paper list of session
names and room numbers so if you decide to bail on one, you know exactly where to
run to, even if your electronics are out of battery and there's no wifi.&lt;/li&gt;
&lt;li&gt;
Wear comfortable shoes and clothes, but not so comfortable that you would feel underdressed
when talking to a potential employer or other business contacts. You will walk a LOT
so choose those shoes with special care. It will be both stinking hot (outside - many
conferences are held in hot places at muggy times) and freezing cold (if you end up
right under the AC that is set on stun) so have a layering approach.&lt;/li&gt;
&lt;li&gt;
Bring your own bag so you can tell it apart from everyone else's, and know just where
to find things you need. Leave as much as you possibly can in the hotel room, to save
your back during all that walking and to minimize what you might lose if there's any
kind of bag mishap.&lt;/li&gt;
&lt;li&gt;
Eat at the conference - it's a great time to meet people and this is where I usually
bump into people I know. 
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Go to the trade show floor, the community area, and the like multiple times. Serendipity
will happen but you have to give it a chance&lt;/li&gt;
&lt;li&gt;
Pack a somewhat larger bag than you need to - there is a lot of swag at Tech Ed and
first timers can't resist lining up for TShirts and the like. Don't be that person
who stuffs it all in the conference bag and checks a second bag on the way home. For
one thing, someone may accidentally pick up your conference bag thinking it is theirs.
Your conference bag and all your other swag should fit in your main bag.&lt;/li&gt;
&lt;li&gt;
Pack your days and evenings FULL. Don't you dare watch TV in your hotel room! Go to
the labs and try something you always wanted to learn a little more about. Download
something that was just released and try it. Go to a party. Write up your notes (or
better yet, blog them.) Send your boss late night emails about what a great time you're
having and how much you're learning. Watch one of the sessions you didn't get to that
day and then figure out if the speaker is likely still at the conference and how you
can arrange to find that speaker and say thanks for the talk or ask a question. Fill
out the evals for the talks you went to. There is SO MUCH you can do while you're
on site, so try very hard to do it all. Make the most of the week, make it intense,
and you will get more out of it by fully engaging.&lt;/li&gt;
&lt;li&gt;
Try to do at least a few hours of sightseeing - one afternoon or evening - with some
friends if you can. Maybe the attendee party is being held in some iconic location?
Go to that. Or there's a restaurant in the town that you've always wanted to eat at?
Gather a few folks and arrange something. Twitter is great with the conference hashtag
- "who wants to go to XYZ tonight?" - I've done this for going on tours too. Gives
you fellow geeks to talk to while you sightsee and strengthens friendships if you
go with people you only know professionally. But don't overdo the sightseeing - you're
here for the conference, remember.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I hope I see you there! The better prepared you are, the more benefit you will get
from the conference!
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=a0966347-5053-451f-a3eb-795afa6cf569" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Speaking</category>
      <category>Travel</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=4ddef89d-a47b-4e9c-8d21-5f3b203f556c</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=4ddef89d-a47b-4e9c-8d21-5f3b203f556c</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">A mentoring client of mine needs someone
to take on a specific project that should be about 500 hours of work. That fits nicely
into a summer, and the work would be suitable for a student or a junior programmer.
Here's the job description we wrote up (the mentor is me by the way):<br /><br />
Must have: 
<ul><li>
Familiarity with one or more programming languages and IDEs</li><li>
Careful attention to detail, especially for visual design (form layouts and alignments,
fonts etc)</li><li>
Willingness to learn a large and complex project</li><li>
Time management skills including estimating and reporting effort and time for tasks
and projects</li></ul><p>
Nice to have:
</p><ul><li>
.NET programming experience and familiarity with Visual Studio</li><li>
Experience developing a Windows Forms application</li><li>
Background in software testing or user support</li></ul><p>
The job offers:
</p><ul><li>
Work onsite in Peterborough</li><li>
40 hours a week as soon as the student’s schedule will allow</li><li>
Important work improving a product that is mission-critical to real customers</li><li>
Specific project to be tackled and completed; more will likely follow if this one
goes well</li><li>
Training on the tools to be used and the tasks to be done<br /></li><li>
Regular access to a world expert mentor in relevant areas</li><li>
Pleasant working environment with nice coworkers, relaxed dress code, and an open
office</li></ul><p>
It's worth mentioning that there is no C++ involved in this at all. So don't hold
back if you don't have it, and don't rush to apply thinking it's a C++ job, because
it's not. If you're interested, email me directly (please don't just comment here
or tweet me or the like) and I will pass along your resume and contact details. I
may have another client looking for someone soon as well, with similar requirements,
so let me know if I can hang on to your info and pass it along twice.<span style="font-family:Wingdings"></span></p><p>
Kate
</p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=4ddef89d-a47b-4e9c-8d21-5f3b203f556c" /></body>
      <title>Summer Job in Peterborough Ontario</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=4ddef89d-a47b-4e9c-8d21-5f3b203f556c</guid>
      <link>http://www.gregcons.com/KateBlog/SummerJobInPeterboroughOntario.aspx</link>
      <pubDate>Thu, 22 Mar 2012 15:50:17 GMT</pubDate>
      <description>A mentoring client of mine needs someone to take on a specific project that should be about 500 hours of work. That fits nicely into a summer, and the work would be suitable for a student or a junior programmer. Here's the job description we wrote up (the mentor is me by the way):&lt;br&gt;
&lt;br&gt;
Must have: 
&lt;ul&gt;
&lt;li&gt;
Familiarity with one or more programming languages and IDEs&lt;/li&gt;
&lt;li&gt;
Careful attention to detail, especially for visual design (form layouts and alignments,
fonts etc)&lt;/li&gt;
&lt;li&gt;
Willingness to learn a large and complex project&lt;/li&gt;
&lt;li&gt;
Time management skills including estimating and reporting effort and time for tasks
and projects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Nice to have:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
.NET programming experience and familiarity with Visual Studio&lt;/li&gt;
&lt;li&gt;
Experience developing a Windows Forms application&lt;/li&gt;
&lt;li&gt;
Background in software testing or user support&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The job offers:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Work onsite in Peterborough&lt;/li&gt;
&lt;li&gt;
40 hours a week as soon as the student’s schedule will allow&lt;/li&gt;
&lt;li&gt;
Important work improving a product that is mission-critical to real customers&lt;/li&gt;
&lt;li&gt;
Specific project to be tackled and completed; more will likely follow if this one
goes well&lt;/li&gt;
&lt;li&gt;
Training on the tools to be used and the tasks to be done&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Regular access to a world expert mentor in relevant areas&lt;/li&gt;
&lt;li&gt;
Pleasant working environment with nice coworkers, relaxed dress code, and an open
office&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
It's worth mentioning that there is no C++ involved in this at all. So don't hold
back if you don't have it, and don't rush to apply thinking it's a C++ job, because
it's not. If you're interested, email me directly (please don't just comment here
or tweet me or the like) and I will pass along your resume and contact details. I
may have another client looking for someone soon as well, with similar requirements,
so let me know if I can hang on to your info and pass it along twice.&lt;span style="font-family:Wingdings"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Kate
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=4ddef89d-a47b-4e9c-8d21-5f3b203f556c" /&gt;</description>
      <category>Canadian Colour</category>
      <category>Consulting Life</category>
      <category>Mentoring</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=2b88f7a0-5e0d-4418-8f08-8f8b837e4298</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=2b88f7a0-5e0d-4418-8f08-8f8b837e4298</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've been working on another C++ course for Pluralsight to complement the <a href="http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=win8-cpp">C++
WinRT/Windows 8/Metro</a> course I did as well as the two-part C++ Fundamentals course
(<a href="http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=cpp-fundamentals">part
1</a>, <a href="http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=cppfund2">part
2</a>). It's <a href="http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=adv-cpp">finished
and live</a>!
</p>
        <p>
The topics I cover are:
</p>
        <ul>
          <li>
Avoid Manual Memory Management</li>
          <li>
Use Lambdas</li>
          <li>
Use Standard Containers</li>
          <li>
Use Standard Algorithms</li>
          <li>
Embrace Move Semantics</li>
          <li>
Follow Style Rules</li>
          <li>
Consider the PImpl Idiom</li>
          <li>
Stop Writing C With Classes</li>
        </ul>
        <p>
I had a real blast writing this - while I was editing it I could hear my own enjoyment
of parts of it. I hope you enjoy it too. A Pluralsight <a href="http://www.pluralsight-training.net/microsoft/Products/Individual">subscription </a>is
such a bargain - buy one for the topics you simply MUST learn for work, then use it
on your own time to learn all those other things that you think you might benefit
from. (I recommend Annual Plus - $500 gets you the sample code and offline viewing,
all you can learn for a year.) Whether C++ is "must learn for work" or "I hear it's
different know, wonder if it could help me" for you, I hope you find it helpful. Please
let me know!
</p>
        <p>
Kate<br /></p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=2b88f7a0-5e0d-4418-8f08-8f8b837e4298" />
      </body>
      <title>Advanced C++ course now live on Pluralsight</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=2b88f7a0-5e0d-4418-8f08-8f8b837e4298</guid>
      <link>http://www.gregcons.com/KateBlog/AdvancedCCourseNowLiveOnPluralsight.aspx</link>
      <pubDate>Sat, 10 Mar 2012 19:36:17 GMT</pubDate>
      <description>&lt;p&gt;
I've been working on another C++ course for Pluralsight to complement the &lt;a href="http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=win8-cpp"&gt;C++
WinRT/Windows 8/Metro&lt;/a&gt; course I did as well as the two-part C++ Fundamentals course
(&lt;a href="http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=cpp-fundamentals"&gt;part
1&lt;/a&gt;, &lt;a href="http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=cppfund2"&gt;part
2&lt;/a&gt;). It's &lt;a href="http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=adv-cpp"&gt;finished
and live&lt;/a&gt;!
&lt;/p&gt;
&lt;p&gt;
The topics I cover are:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Avoid Manual Memory Management&lt;/li&gt;
&lt;li&gt;
Use Lambdas&lt;/li&gt;
&lt;li&gt;
Use Standard Containers&lt;/li&gt;
&lt;li&gt;
Use Standard Algorithms&lt;/li&gt;
&lt;li&gt;
Embrace Move Semantics&lt;/li&gt;
&lt;li&gt;
Follow Style Rules&lt;/li&gt;
&lt;li&gt;
Consider the PImpl Idiom&lt;/li&gt;
&lt;li&gt;
Stop Writing C With Classes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I had a real blast writing this - while I was editing it I could hear my own enjoyment
of parts of it. I hope you enjoy it too. A Pluralsight &lt;a href="http://www.pluralsight-training.net/microsoft/Products/Individual"&gt;subscription &lt;/a&gt;is
such a bargain - buy one for the topics you simply MUST learn for work, then use it
on your own time to learn all those other things that you think you might benefit
from. (I recommend Annual Plus - $500 gets you the sample code and offline viewing,
all you can learn for a year.) Whether C++ is "must learn for work" or "I hear it's
different know, wonder if it could help me" for you, I hope you find it helpful. Please
let me know!
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=2b88f7a0-5e0d-4418-8f08-8f8b837e4298" /&gt;</description>
      <category>C++</category>
      <category>Client Development</category>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Speaking</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=a243512d-6959-4a7f-b41e-2b65359b9285</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=a243512d-6959-4a7f-b41e-2b65359b9285</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The minute this was announced, I knew I had to go.
</p>
        <p>
          <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012">
            <img src="http://www.gregcons.com/KateBlog/content/binary/6f1bfc53-5eb9-4e2c-8b12-f9d295412afe.png" height="151" border="0" width="725" />
          </a>
        </p>
        <p>
Two days of "C++ today and tomorrow" with the bright lights of C++ today? Just try
and keep me away! I'm so glad I was there - it was AMAZING and FANTASTIC and just
generally wonderful. For me, personally, seeing so many old friends was a big part
of it. The C++ team, other C++ MVPs, people I went to university with, and so on.
It was also wonderful to see so many young people - including speakers, but also attendees,
who were clearly in their 20s (and a few who were obviously in their teens.) After
Chandler's talk I told someone "we can retire now: the future of C++ is in good hands."
The speakers were not "the usual suspects" at a Microsoft event either. At a panel
at the end of the second day, someone asked about C++ and the cloud and one of the
answers was to indicate three speakers sitting next to each other: "Microsoft guy,
Facebook guy, Google guy. Where <b>isn't</b> C++ in the cloud?" While that was a great
cloud answer, I think it also highlights how inclusive this was - it was a C++ conference
held at Microsoft, not a Microsoft conference.
</p>
        <p>
Some fun quotes I happened to write down:
</p>
        <ul>
          <li>
“if it’s that ugly, it must be good” - Bjarne, on why some newbies imitate horrible
code written long ago by their heroes</li>
          <li>
“write C-style code, expect C-style errors” - Bjarne again</li>
          <li>
“we know where bugs hide” – Bjarne (they hide in large tracts of complicated code)</li>
          <li>
"dot dot dot is where the fun begins" - Andrei</li>
          <li>
"real code is not supposed to fit on slides" - Andrei</li>
          <li>
"this is legal" - Andrei (we needed to be reassured since it rarely looked legal)<br /></li>
          <li>
"if you're using <font face="Courier New">new </font>or <font face="Courier New">delete</font>,
you're doing it wrong" - Herb (it's true!)<br /></li>
        </ul>
        <p>
And Chandler's talk was very much a 2012 talk, with lolcat-like interjections and
Simpsons references and even a how-agile-is-this update with a picture of Oscar Wilde
in reference to Andrei's earlier off-the-cuff description of some template error messages
(aka template barf) as being "a small novel by Oscar Wilde." The humour level was
very high, much of it self-deprecating - no-one, not even the coiners of the terms,
thinks <a href="http://en.wikipedia.org/wiki/RAII">RAII </a>or <a href="http://en.wikipedia.org/wiki/SFINAE">SFINAE </a>are
great names, but what the heck, they're the names we use.
</p>
        <p>
Even the little things here were so well done. Herb opened the conference by dedicating
it to <a href="http://en.wikipedia.org/wiki/Dennis_Ritchie">Dennis Ritchie</a>, which
I found extraordinarily touching and appropriate. He opened day 2 by celebrating <a href="http://t.co/BTVLlfCC">the
20 year anniversary of Microsoft C7</a> which was C++ 1 for them, with Visual C++
appearing in the next release. There on the podium was the two foot long, 44 pound
box, with multicoloured plusses all over it, in which it shipped. 
<br /></p>
        <p>
          <img src="http://www.gregcons.com/KateBlog/content/binary/herbwithbox.jpg" border="0" />
        </p>
        <p>
And what was inside? A lot of books, and a lot of 3.5" floppies (I took this picture
earlier, before the box headed to campus):
</p>
        <p>
          <img src="http://www.gregcons.com/KateBlog/content/binary/insidebox.jpg" border="0" />
        </p>
        <p>
There are 5 or 6 floppies in each bag and apparently each bag had a part number of
its own. 
<br /></p>
        <p>
This conference was far more than a trip down memory lane, of course. It was a two-day
Valentine from Microsoft to the C++ community, a demonstration of the "new growth"
in modern C++ and the power and capability that is there for those who are prepared
to start using the new features, and a chance for all of us to accelerate the learning
we have to do. I so hope you were able to be there, or to catch the energy by watching
it live and following tweets from those of us who had to share the bon mots and the
fun. But if not, the on-demand videos are almost all there now. Here are the links:
</p>
        <blockquote>
          <p>
            <strong>
              <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Keynote-Bjarne-Stroustrup-Cpp11-Style">Bjarne
Stroustrup</a>
            </strong>
            <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Keynote-Bjarne-Stroustrup-Cpp11-Style">
              <strong>:
C++11 Style</strong>
            </a>
          </p>
          <p>
            <strong>
              <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Threads-and-Shared-Variables-in-C-11">Hans
Boehm</a>
            </strong>
            <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Threads-and-Shared-Variables-in-C-11">
              <strong>:
Threads and Shared Variables in C++11</strong>
            </a>
            <br />
          </p>
          <p>
            <em>
            </em>
            <strong>
              <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/STL11-Magic-Secrets">Stephan
T. Lavavej: STL11 – Magic &amp;&amp; Secrets</a>
            </strong>
          </p>
          <p>
            <strong>
              <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Variadic-Templates-are-Funadic">Andrei
Alexandrescu</a>
            </strong>
            <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Variadic-Templates-are-Funadic">
              <strong>:
Variadic Templates are Funadic</strong>
            </a>
          </p>
          <strong>
            <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Interactive-Panel-The-Importance-of-Being-Native">Panel:
The Importance of Being Native </a>
          </strong>
          <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Interactive-Panel-The-Importance-of-Being-Native">(<strong>Bjarne,
Andrei, Herb, Hans</strong>)</a>
          <strong> </strong>
          <p>
          </p>
          <p>
            <strong>
              <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/C-11-VC-11-and-Beyond" target="_blank">Herb
Sutter</a>
            </strong>
            <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/C-11-VC-11-and-Beyond" target="_blank">: <strong>C++11,
VC++11 and Beyond</strong></a>
          </p>
          <p>
            <strong>
              <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Clang-Defending-C-from-Murphy-s-Million-Monkeys">Chandler
Carruth</a>
            </strong>
            <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Clang-Defending-C-from-Murphy-s-Million-Monkeys">
              <strong>:</strong>
              <strong>Clang
- Defending C++ from Murphy's Million Monkeys</strong>
            </a>
            <em>
              <br />
              <br />
              <em>
              </em>
            </em>
            <strong>
              <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Static-If-I-Had-a-Hammer">Andrei
Alexandrescu: Static If I Had a Hammer</a>
            </strong>
          </p>
          <p>
            <strong>
              <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/A-Concept-Design-for-C-">Bjarne
Stroustrup and Andrew Sutton: A Concept Design for C++</a>
            </strong>
          </p>
          <strong>
            <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Interactive-Panel-Ask-Us-Anything-">Panel:
Ask Us Anything! </a>
          </strong>
          <a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Interactive-Panel-Ask-Us-Anything-">(<strong>all
speakers</strong>)</a>
        </blockquote>
        <p>
Fair warning: both of Andrei's talks, and the Concepts talk, are hard. This is cool
new stuff that we are all learning about. There is no shame in pausing, rewinding,
and giving something a second listen. Look, Chandler was running through pitfalls
and problems that Clang catches, and showed some code with a problem I couldn't spot.
A few minutes later in the Q&amp;A, Bjarne asked him to clarify just what the problem
was. Made me feel better!
</p>
        <p>
Chances are you won't be able to watch any of these on fast forward, or skip any of
them. So I'm asking you to invest 12 hours of your life to watch all of them. Do it!
You won't regret it!
</p>
        <p>
Kate
</p>
        <p>
PS: They gave us shirts (it's all about the shirts for developers) with real code
on the back and this on the front:
</p>
        <img src="http://www.gregcons.com/KateBlog/content/binary/gonenative.png" height="408" border="0" width="726" />
        <br />
        <br />
Highly appropriate. Of course, it's not a comeback for those of us who never left.
But still...<br /><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=a243512d-6959-4a7f-b41e-2b65359b9285" /></body>
      <title>Gone Native!</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=a243512d-6959-4a7f-b41e-2b65359b9285</guid>
      <link>http://www.gregcons.com/KateBlog/GoneNative.aspx</link>
      <pubDate>Tue, 07 Feb 2012 17:19:41 GMT</pubDate>
      <description>&lt;p&gt;
The minute this was announced, I knew I had to go.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012"&gt;&lt;img src="http://www.gregcons.com/KateBlog/content/binary/6f1bfc53-5eb9-4e2c-8b12-f9d295412afe.png" height="151" border="0" width="725"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Two days of "C++ today and tomorrow" with the bright lights of C++ today? Just try
and keep me away! I'm so glad I was there - it was AMAZING and FANTASTIC and just
generally wonderful. For me, personally, seeing so many old friends was a big part
of it. The C++ team, other C++ MVPs, people I went to university with, and so on.
It was also wonderful to see so many young people - including speakers, but also attendees,
who were clearly in their 20s (and a few who were obviously in their teens.) After
Chandler's talk I told someone "we can retire now: the future of C++ is in good hands."
The speakers were not "the usual suspects" at a Microsoft event either. At a panel
at the end of the second day, someone asked about C++ and the cloud and one of the
answers was to indicate three speakers sitting next to each other: "Microsoft guy,
Facebook guy, Google guy. Where &lt;b&gt;isn't&lt;/b&gt; C++ in the cloud?" While that was a great
cloud answer, I think it also highlights how inclusive this was - it was a C++ conference
held at Microsoft, not a Microsoft conference.
&lt;/p&gt;
&lt;p&gt;
Some fun quotes I happened to write down:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
“if it’s that ugly, it must be good” - Bjarne, on why some newbies imitate horrible
code written long ago by their heroes&lt;/li&gt;
&lt;li&gt;
“write C-style code, expect C-style errors” - Bjarne again&lt;/li&gt;
&lt;li&gt;
“we know where bugs hide” – Bjarne (they hide in large tracts of complicated code)&lt;/li&gt;
&lt;li&gt;
"dot dot dot is where the fun begins" - Andrei&lt;/li&gt;
&lt;li&gt;
"real code is not supposed to fit on slides" - Andrei&lt;/li&gt;
&lt;li&gt;
"this is legal" - Andrei (we needed to be reassured since it rarely looked legal)&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
"if you're using &lt;font face="Courier New"&gt;new &lt;/font&gt;or &lt;font face="Courier New"&gt;delete&lt;/font&gt;,
you're doing it wrong" - Herb (it's true!)&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
And Chandler's talk was very much a 2012 talk, with lolcat-like interjections and
Simpsons references and even a how-agile-is-this update with a picture of Oscar Wilde
in reference to Andrei's earlier off-the-cuff description of some template error messages
(aka template barf) as being "a small novel by Oscar Wilde." The humour level was
very high, much of it self-deprecating - no-one, not even the coiners of the terms,
thinks &lt;a href="http://en.wikipedia.org/wiki/RAII"&gt;RAII &lt;/a&gt;or &lt;a href="http://en.wikipedia.org/wiki/SFINAE"&gt;SFINAE &lt;/a&gt;are
great names, but what the heck, they're the names we use.
&lt;/p&gt;
&lt;p&gt;
Even the little things here were so well done. Herb opened the conference by dedicating
it to &lt;a href="http://en.wikipedia.org/wiki/Dennis_Ritchie"&gt;Dennis Ritchie&lt;/a&gt;, which
I found extraordinarily touching and appropriate. He opened day 2 by celebrating &lt;a href="http://t.co/BTVLlfCC"&gt;the
20 year anniversary of Microsoft C7&lt;/a&gt; which was C++ 1 for them, with Visual C++
appearing in the next release. There on the podium was the two foot long, 44 pound
box, with multicoloured plusses all over it, in which it shipped. 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.gregcons.com/KateBlog/content/binary/herbwithbox.jpg" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
And what was inside? A lot of books, and a lot of 3.5" floppies (I took this picture
earlier, before the box headed to campus):
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.gregcons.com/KateBlog/content/binary/insidebox.jpg" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
There are 5 or 6 floppies in each bag and apparently each bag had a part number of
its own. 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
This conference was far more than a trip down memory lane, of course. It was a two-day
Valentine from Microsoft to the C++ community, a demonstration of the "new growth"
in modern C++ and the power and capability that is there for those who are prepared
to start using the new features, and a chance for all of us to accelerate the learning
we have to do. I so hope you were able to be there, or to catch the energy by watching
it live and following tweets from those of us who had to share the bon mots and the
fun. But if not, the on-demand videos are almost all there now. Here are the links:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Keynote-Bjarne-Stroustrup-Cpp11-Style"&gt;Bjarne
Stroustrup&lt;/a&gt;&lt;/strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Keynote-Bjarne-Stroustrup-Cpp11-Style"&gt;&lt;strong&gt;:
C++11 Style&lt;/strong&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Threads-and-Shared-Variables-in-C-11"&gt;Hans
Boehm&lt;/a&gt;&lt;/strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Threads-and-Shared-Variables-in-C-11"&gt;&lt;strong&gt;:
Threads and Shared Variables in C++11&lt;/strong&gt;&lt;/a&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&lt;/em&gt;&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/STL11-Magic-Secrets"&gt;Stephan
T. Lavavej: STL11 – Magic &amp;amp;&amp;amp; Secrets&lt;/a&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Variadic-Templates-are-Funadic"&gt;Andrei
Alexandrescu&lt;/a&gt;&lt;/strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Variadic-Templates-are-Funadic"&gt;&lt;strong&gt;:
Variadic Templates are Funadic&lt;/strong&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Interactive-Panel-The-Importance-of-Being-Native"&gt;Panel:
The Importance of Being Native &lt;/a&gt;&lt;/strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Interactive-Panel-The-Importance-of-Being-Native"&gt;(&lt;strong&gt;Bjarne,
Andrei, Herb, Hans&lt;/strong&gt;)&lt;/a&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/C-11-VC-11-and-Beyond" target="_blank"&gt;Herb
Sutter&lt;/a&gt;&lt;/strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/C-11-VC-11-and-Beyond" target="_blank"&gt;: &lt;strong&gt;C++11,
VC++11 and Beyond&lt;/strong&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Clang-Defending-C-from-Murphy-s-Million-Monkeys"&gt;Chandler
Carruth&lt;/a&gt;&lt;/strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Clang-Defending-C-from-Murphy-s-Million-Monkeys"&gt;&lt;strong&gt;:&lt;/strong&gt; &lt;strong&gt;Clang
- Defending C++ from Murphy's Million Monkeys&lt;/strong&gt;&lt;/a&gt;&lt;em&gt;
&lt;br&gt;
&lt;br&gt;
&lt;em&gt;&lt;/em&gt;&lt;/em&gt;&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Static-If-I-Had-a-Hammer"&gt;Andrei
Alexandrescu: Static If I Had a Hammer&lt;/a&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/A-Concept-Design-for-C-"&gt;Bjarne
Stroustrup and Andrew Sutton: A Concept Design for C++&lt;/a&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Interactive-Panel-Ask-Us-Anything-"&gt;Panel:
Ask Us Anything! &lt;/a&gt;&lt;/strong&gt;&lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Interactive-Panel-Ask-Us-Anything-"&gt;(&lt;strong&gt;all
speakers&lt;/strong&gt;)&lt;/a&gt;&lt;/blockquote&gt;
&lt;p&gt;
Fair warning: both of Andrei's talks, and the Concepts talk, are hard. This is cool
new stuff that we are all learning about. There is no shame in pausing, rewinding,
and giving something a second listen. Look, Chandler was running through pitfalls
and problems that Clang catches, and showed some code with a problem I couldn't spot.
A few minutes later in the Q&amp;amp;A, Bjarne asked him to clarify just what the problem
was. Made me feel better!
&lt;/p&gt;
&lt;p&gt;
Chances are you won't be able to watch any of these on fast forward, or skip any of
them. So I'm asking you to invest 12 hours of your life to watch all of them. Do it!
You won't regret it!
&lt;/p&gt;
&lt;p&gt;
Kate
&lt;/p&gt;
&lt;p&gt;
PS: They gave us shirts (it's all about the shirts for developers) with real code
on the back and this on the front:
&lt;/p&gt;
&lt;img src="http://www.gregcons.com/KateBlog/content/binary/gonenative.png" height="408" border="0" width="726"&gt;
&lt;br&gt;
&lt;br&gt;
Highly appropriate. Of course, it's not a comeback for those of us who never left.
But still...&lt;br&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=a243512d-6959-4a7f-b41e-2b65359b9285" /&gt;</description>
      <category>C++</category>
      <category>Client Development</category>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>MVP</category>
      <category>Seen and Recommended</category>
      <category>Visual Studio 11</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=640dcb10-4cde-472f-af5a-668f2d4c4839</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=640dcb10-4cde-472f-af5a-668f2d4c4839</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">Perhaps not a great surprise, but today
the<a href="http://northamerica.msteched.com/preconferenceseminars?fbid=oKcVjNIkmSS"> precons
for Tech Ed North America</a> were announced and mine is there too. It's well described
in <a href="http://www.gregcons.com/KateBlog/MyCPreconAtTechEd2012Amsterdam.aspx">the
previous blog post</a> and I'll be doing the same material at both events. So if Orlando,
June 10th works better for you than Amsterdam, June 25th, terrific and I'll see you
there! <a href="http://northamerica.msteched.com/registration?p=5">Registration </a>is
now open.<br /><br /><p><a href="http://northamerica.msteched.com/registration?p=5"><img src="http://www.gregcons.com/KateBlog/content/binary/teched2012.jpg" border="0" /></a></p><p>
Kate<br /></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=640dcb10-4cde-472f-af5a-668f2d4c4839" /></body>
      <title>Yes, my C++ Precon will also be at Tech Ed North America</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=640dcb10-4cde-472f-af5a-668f2d4c4839</guid>
      <link>http://www.gregcons.com/KateBlog/YesMyCPreconWillAlsoBeAtTechEdNorthAmerica.aspx</link>
      <pubDate>Thu, 12 Jan 2012 15:57:42 GMT</pubDate>
      <description>Perhaps not a great surprise, but today the&lt;a href="http://northamerica.msteched.com/preconferenceseminars?fbid=oKcVjNIkmSS"&gt; precons
for Tech Ed North America&lt;/a&gt; were announced and mine is there too. It's well described
in &lt;a href="http://www.gregcons.com/KateBlog/MyCPreconAtTechEd2012Amsterdam.aspx"&gt;the
previous blog post&lt;/a&gt; and I'll be doing the same material at both events. So if Orlando,
June 10th works better for you than Amsterdam, June 25th, terrific and I'll see you
there! &lt;a href="http://northamerica.msteched.com/registration?p=5"&gt;Registration &lt;/a&gt;is
now open.&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;a href="http://northamerica.msteched.com/registration?p=5"&gt;&lt;img src="http://www.gregcons.com/KateBlog/content/binary/teched2012.jpg" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=640dcb10-4cde-472f-af5a-668f2d4c4839" /&gt;</description>
      <category>C++</category>
      <category>Concurrency</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Speaking</category>
      <category>Visual Studio 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=9b346695-3ed4-43e8-8e3d-ab83d55f098a</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=9b346695-3ed4-43e8-8e3d-ab83d55f098a</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">Months ago, I tweeted "Once you have a
hammer, everything looks like a nail" with a link to <a href="http://aspalliance.com/2062_The_Darkness_Behind_DateTimeNow.all">an
interesting article</a> about the times you shouldn't use System.DateTime.Now - sure,
you know how to use it, but it's not always the right tool for the job. Keyvan Nayyeri
provides a number of alternatives for .NET developers who want to know when something
happened, or how long something took. Definitely worth a read.<br /><br />
Then just weeks after that, Susan Ibach gave the SQL side of the story with <a href="http://blogs.msdn.com/b/cdnsoldevs/archive/2011/06/22/why-you-should-never-use-datetime-again.aspx">a
blog post</a> about avoiding the DATETIME type if you're using SQL 2008. I saw the
headline and thought "what? what else would I keep a date or a time in?". The answer
is, either something smaller or something with more precision. Makes sense.<br /><br />
Goes to show, just because you've heard of System.DateTime in .NET or DATETIME in
SQL doesn't mean there's no other way to solve your problem. Keep learning!<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=9b346695-3ed4-43e8-8e3d-ab83d55f098a" /></body>
      <title>When DateTime is not what you want</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=9b346695-3ed4-43e8-8e3d-ab83d55f098a</guid>
      <link>http://www.gregcons.com/KateBlog/WhenDateTimeIsNotWhatYouWant.aspx</link>
      <pubDate>Mon, 15 Aug 2011 20:19:31 GMT</pubDate>
      <description>Months ago, I tweeted "Once you have a hammer, everything looks like a nail" with a link to &lt;a href="http://aspalliance.com/2062_The_Darkness_Behind_DateTimeNow.all"&gt;an
interesting article&lt;/a&gt; about the times you shouldn't use System.DateTime.Now - sure,
you know how to use it, but it's not always the right tool for the job. Keyvan Nayyeri
provides a number of alternatives for .NET developers who want to know when something
happened, or how long something took. Definitely worth a read.&lt;br&gt;
&lt;br&gt;
Then just weeks after that, Susan Ibach gave the SQL side of the story with &lt;a href="http://blogs.msdn.com/b/cdnsoldevs/archive/2011/06/22/why-you-should-never-use-datetime-again.aspx"&gt;a
blog post&lt;/a&gt; about avoiding the DATETIME type if you're using SQL 2008. I saw the
headline and thought "what? what else would I keep a date or a time in?". The answer
is, either something smaller or something with more precision. Makes sense.&lt;br&gt;
&lt;br&gt;
Goes to show, just because you've heard of System.DateTime in .NET or DATETIME in
SQL doesn't mean there's no other way to solve your problem. Keep learning!&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=9b346695-3ed4-43e8-8e3d-ab83d55f098a" /&gt;</description>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=c5d22b3e-77f7-4d9a-9a22-ee3515477f88</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=c5d22b3e-77f7-4d9a-9a22-ee3515477f88</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">I'm pleased to see that Kenny Kerr is writing <a href="http://msdn.microsoft.com/en-ca/magazine/ee532098.aspx?sdmr=KennyKerr&amp;sdmi=authors">his
C++ column for MSDN</a> again. He's also blogging again and in <a href="http://kennykerr.ca/2011/08/01/windows-with-c-c-and-the-windows-api/">a
recent entry</a>, he provides some really plain-spoken advice to people looking for
guidance:<br /><br /><ul><li>
"You can of course still use MFC but I do not recommend it as modern C++ can do a
better job of supporting the Windows developer."</li><li>
"You should never again use auto_ptr for anything."</li></ul>
So there! I agree with these, especially the auto_ptr one. It was an attempt at a
smart pointer that just wasn't smart enough. We have shared_ptr and unique_ptr now
and they work in collections and are truly smart pointers. Use them and stop typing
delete in your code entirely.<br /><br />
As for MFC, it does fill a need and I certainly wouldn't scrap a working MFC app just
because the library is getting old (the facelift a few releases ago helped) but if
I was starting a brand new application from File, New Project I would need a good
reason to use MFC as my UI framework. 
<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=c5d22b3e-77f7-4d9a-9a22-ee3515477f88" /></body>
      <title>Some guidance from Kenny Kerr</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=c5d22b3e-77f7-4d9a-9a22-ee3515477f88</guid>
      <link>http://www.gregcons.com/KateBlog/SomeGuidanceFromKennyKerr.aspx</link>
      <pubDate>Thu, 11 Aug 2011 17:29:29 GMT</pubDate>
      <description>I'm pleased to see that Kenny Kerr is writing &lt;a href="http://msdn.microsoft.com/en-ca/magazine/ee532098.aspx?sdmr=KennyKerr&amp;amp;sdmi=authors"&gt;his
C++ column for MSDN&lt;/a&gt; again. He's also blogging again and in &lt;a href="http://kennykerr.ca/2011/08/01/windows-with-c-c-and-the-windows-api/"&gt;a
recent entry&lt;/a&gt;, he provides some really plain-spoken advice to people looking for
guidance:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
"You can of course still use MFC but I do not recommend it as modern C++ can do a
better job of supporting the Windows developer."&lt;/li&gt;
&lt;li&gt;
"You should never again use auto_ptr for anything."&lt;/li&gt;
&lt;/ul&gt;
So there! I agree with these, especially the auto_ptr one. It was an attempt at a
smart pointer that just wasn't smart enough. We have shared_ptr and unique_ptr now
and they work in collections and are truly smart pointers. Use them and stop typing
delete in your code entirely.&lt;br&gt;
&lt;br&gt;
As for MFC, it does fill a need and I certainly wouldn't scrap a working MFC app just
because the library is getting old (the facelift a few releases ago helped) but if
I was starting a brand new application from File, New Project I would need a good
reason to use MFC as my UI framework. 
&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=c5d22b3e-77f7-4d9a-9a22-ee3515477f88" /&gt;</description>
      <category>C++</category>
      <category>Client Development</category>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Visual Studio 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=331c1d58-09c6-4717-92c5-c8f556f5c51c</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=331c1d58-09c6-4717-92c5-c8f556f5c51c</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
People often ask me what Visual Studio Ultimate offers that other versions do not.
There's a handy chart on <a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/product-comparison">the
Microsoft site</a>:
</p>
        <p>
          <img src="http://www.gregcons.com/KateBlog/content/binary/vs%20skus.jpg" border="0" />
        </p>
        <p>
The only problem is, if you don't know what "Architecture and Modeling" includes,
it's easy to think there's probably nothing useful in there. So I was pleased to see <a href="http://blogs.msdn.com/b/cdnsoldevs/archive/2011/08/04/by-the-way-there-is-still-no-documentation.aspx">a
blog post</a> by Susan Ibach from Microsoft Canada showing how easy it is to generate
a sequence diagram from code, and how that can help you understand code you've inherited
from a predecessor. That's one of the diagramming tools included in Visual Studio
Ultimate.
</p>
        <p>
Right click in some code, select Generate Sequence Diagram, set some options (does
getting a property count? What about calls to methods of String or other .NET Framework
classes?) and presto, you have a sequence diagram.
</p>
        <p>
          <br />
        </p>
        <p>
        </p>
        <img src="http://www.gregcons.com/KateBlog/content/binary/seq%20diag.jpg" border="0" />
        <br />
        <br />
This sort of thing can save you a tremendous amount of time, and that means it can
save your organization money. That's why some people buy Visual Studio Ultimate, after
all. Having access to a tool like this is one of the ways I can "hit the ground running"
when I join a project. If you need to do the same, make sure you're not ignoring a
capability you already have.<br /><br />
Kate<br /><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=331c1d58-09c6-4717-92c5-c8f556f5c51c" /></body>
      <title>Sequence Diagrams with Visual Studio</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=331c1d58-09c6-4717-92c5-c8f556f5c51c</guid>
      <link>http://www.gregcons.com/KateBlog/SequenceDiagramsWithVisualStudio.aspx</link>
      <pubDate>Tue, 09 Aug 2011 17:14:15 GMT</pubDate>
      <description>&lt;p&gt;
People often ask me what Visual Studio Ultimate offers that other versions do not.
There's a handy chart on &lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/product-comparison"&gt;the
Microsoft site&lt;/a&gt;:
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.gregcons.com/KateBlog/content/binary/vs%20skus.jpg" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
The only problem is, if you don't know what "Architecture and Modeling" includes,
it's easy to think there's probably nothing useful in there. So I was pleased to see &lt;a href="http://blogs.msdn.com/b/cdnsoldevs/archive/2011/08/04/by-the-way-there-is-still-no-documentation.aspx"&gt;a
blog post&lt;/a&gt; by Susan Ibach from Microsoft Canada showing how easy it is to generate
a sequence diagram from code, and how that can help you understand code you've inherited
from a predecessor. That's one of the diagramming tools included in Visual Studio
Ultimate.
&lt;/p&gt;
&lt;p&gt;
Right click in some code, select Generate Sequence Diagram, set some options (does
getting a property count? What about calls to methods of String or other .NET Framework
classes?) and presto, you have a sequence diagram.
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img src="http://www.gregcons.com/KateBlog/content/binary/seq%20diag.jpg" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
This sort of thing can save you a tremendous amount of time, and that means it can
save your organization money. That's why some people buy Visual Studio Ultimate, after
all. Having access to a tool like this is one of the ways I can "hit the ground running"
when I join a project. If you need to do the same, make sure you're not ignoring a
capability you already have.&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=331c1d58-09c6-4717-92c5-c8f556f5c51c" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Visual Studio 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=28390b4d-fde9-41ad-af99-37803af0f956</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=28390b4d-fde9-41ad-af99-37803af0f956</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">I consider myself a pretty skilled debugger,
and reasonably familiar with the things you can do in Visual Studio (My Visual Studio
course <a href="http://www.pluralsight-training.net/microsoft/courses/description?courseName=vs2010-gettingstarted">Part
1</a> and <a href="http://www.pluralsight-training.net/microsoft/courses/description?courseName=vs2010-moreintro">Part
2</a>, for example.) <a href="http://www.gregcons.com/KateBlog/ConditionalBreakpoints.aspx">Conditional
breakpoints</a>, <a href="http://www.gregcons.com/KateBlog/Tracepoints.aspx">tracepoints</a> in
C++ <a href="http://www.gregcons.com/KateBlog/TracepointsNotJustC.aspx">and in C#</a>,
breakpoints that only break <a href="http://www.gregcons.com/KateBlog/OneMoreBreakpointTipHitCount.aspx">every
10th time</a> they're reached, <a href="http://www.gregcons.com/KateBlog/ControllingDebuggerDisplay.aspx">customizing
the data tip</a> that shows when hovering over one of your own types, making data
tips <a href="http://www.gregcons.com/KateBlog/TransparentDataTips.aspx">transparent</a>,
and <a href="http://www.gregcons.com/KateBlog/SearchView.aspx?q=debug">plenty more</a> have
all been covered here in the blog over the years. But I still come across things I
didn't know before, or didn't try before.<br /><br />
Take <a href="http://altdevblogaday.com/2011/07/18/the-right-tool-for-the-job-debugging-c-with-visual-studio/">this
blog post</a> by "Daan-Nijs" about the abilities of the watch window. I knew the first
one, but the rest are new to me:<br /><br /><ul><li>
Changing a value in the watch window</li><li>
Changing a type in the watch window</li><li>
Inspecting an array in the watch window</li></ul>
Then there's re-running or skipping code by dragging the instruction pointer - I only
knew I could right click somewhere and say Set Next Instruction. Finally he includes
a reminder of how to enable Edit and Continue. All this is for C++, but you're welcome
to give some of the techniques a try in other languages and see what happens. Being
a faster and more productive debugger will rocket you up the overall productivity
leagues like nothing else.<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=28390b4d-fde9-41ad-af99-37803af0f956" /></body>
      <title>Things you didn't know the Watch window could do</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=28390b4d-fde9-41ad-af99-37803af0f956</guid>
      <link>http://www.gregcons.com/KateBlog/ThingsYouDidntKnowTheWatchWindowCouldDo.aspx</link>
      <pubDate>Mon, 01 Aug 2011 15:57:45 GMT</pubDate>
      <description>I consider myself a pretty skilled debugger, and reasonably familiar with the things you can do in Visual Studio (My Visual Studio course &lt;a href="http://www.pluralsight-training.net/microsoft/courses/description?courseName=vs2010-gettingstarted"&gt;Part
1&lt;/a&gt; and &lt;a href="http://www.pluralsight-training.net/microsoft/courses/description?courseName=vs2010-moreintro"&gt;Part
2&lt;/a&gt;, for example.) &lt;a href="http://www.gregcons.com/KateBlog/ConditionalBreakpoints.aspx"&gt;Conditional
breakpoints&lt;/a&gt;, &lt;a href="http://www.gregcons.com/KateBlog/Tracepoints.aspx"&gt;tracepoints&lt;/a&gt; in
C++ &lt;a href="http://www.gregcons.com/KateBlog/TracepointsNotJustC.aspx"&gt;and in C#&lt;/a&gt;,
breakpoints that only break &lt;a href="http://www.gregcons.com/KateBlog/OneMoreBreakpointTipHitCount.aspx"&gt;every
10th time&lt;/a&gt; they're reached, &lt;a href="http://www.gregcons.com/KateBlog/ControllingDebuggerDisplay.aspx"&gt;customizing
the data tip&lt;/a&gt; that shows when hovering over one of your own types, making data
tips &lt;a href="http://www.gregcons.com/KateBlog/TransparentDataTips.aspx"&gt;transparent&lt;/a&gt;,
and &lt;a href="http://www.gregcons.com/KateBlog/SearchView.aspx?q=debug"&gt;plenty more&lt;/a&gt; have
all been covered here in the blog over the years. But I still come across things I
didn't know before, or didn't try before.&lt;br&gt;
&lt;br&gt;
Take &lt;a href="http://altdevblogaday.com/2011/07/18/the-right-tool-for-the-job-debugging-c-with-visual-studio/"&gt;this
blog post&lt;/a&gt; by "Daan-Nijs" about the abilities of the watch window. I knew the first
one, but the rest are new to me:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Changing a value in the watch window&lt;/li&gt;
&lt;li&gt;
Changing a type in the watch window&lt;/li&gt;
&lt;li&gt;
Inspecting an array in the watch window&lt;/li&gt;
&lt;/ul&gt;
Then there's re-running or skipping code by dragging the instruction pointer - I only
knew I could right click somewhere and say Set Next Instruction. Finally he includes
a reminder of how to enable Edit and Continue. All this is for C++, but you're welcome
to give some of the techniques a try in other languages and see what happens. Being
a faster and more productive debugger will rocket you up the overall productivity
leagues like nothing else.&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=28390b4d-fde9-41ad-af99-37803af0f956" /&gt;</description>
      <category>C++</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Visual Studio 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=80efdae9-ab3e-4c27-9a0b-e9254093a6e2</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=80efdae9-ab3e-4c27-9a0b-e9254093a6e2</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Since Tech Ed came and went during my blogging hiatus, I didn't get around to providing
links to some of the sessions you might want to see. It's time to correct that omission:
</p>
        <ul>
          <li>
            <a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/WIT01">WOMEN IN
TECHNOLOGY LUNCHEON</a> - Developing a Strong Support Network: The Key to Being Successful
as Women in Technology</li>
          <li>
            <a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV316">ALM for
C++ in Microsoft Visual Studio 2010</a> - one of the highest rated sessions in the
whole conference. C++ sessions get high ratings!<br /></li>
          <li>
            <a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV304">Advanced
Programming Patterns for Windows 7</a> - my Day 2 session - no C++ content</li>
          <li>
            <a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV303">Modern Native
C++ Development for Maximum Productivity</a> - my Day 4 session - plenty of native
code here: lambdas, auto, the PPL, and so on.</li>
        </ul>
There were other sessions I attended, including a great interactive session that was
not recorded called "C++ Renaissance at Microsoft: How the C++ Developers Can Get
Involved" with plenty of conversation between Microsoft people and native developers.
You might want to do a little searching on the main <a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011">Tech
Ed Video site</a> to see what interests you.<br /><p>
Kate
</p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=80efdae9-ab3e-4c27-9a0b-e9254093a6e2" /></body>
      <title>Tech Ed USA - Recordings</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=80efdae9-ab3e-4c27-9a0b-e9254093a6e2</guid>
      <link>http://www.gregcons.com/KateBlog/TechEdUSARecordings.aspx</link>
      <pubDate>Fri, 29 Jul 2011 21:51:36 GMT</pubDate>
      <description>&lt;p&gt;
Since Tech Ed came and went during my blogging hiatus, I didn't get around to providing
links to some of the sessions you might want to see. It's time to correct that omission:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/WIT01"&gt;WOMEN IN
TECHNOLOGY LUNCHEON&lt;/a&gt; - Developing a Strong Support Network: The Key to Being Successful
as Women in Technology&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV316"&gt;ALM for
C++ in Microsoft Visual Studio 2010&lt;/a&gt; - one of the highest rated sessions in the
whole conference. C++ sessions get high ratings!&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV304"&gt;Advanced
Programming Patterns for Windows 7&lt;/a&gt; - my Day 2 session - no C++ content&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV303"&gt;Modern Native
C++ Development for Maximum Productivity&lt;/a&gt; - my Day 4 session - plenty of native
code here: lambdas, auto, the PPL, and so on.&lt;/li&gt;
&lt;/ul&gt;
There were other sessions I attended, including a great interactive session that was
not recorded called "C++ Renaissance at Microsoft: How the C++ Developers Can Get
Involved" with plenty of conversation between Microsoft people and native developers.
You might want to do a little searching on the main &lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011"&gt;Tech
Ed Video site&lt;/a&gt; to see what interests you.&lt;br&gt;
&lt;p&gt;
Kate
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=80efdae9-ab3e-4c27-9a0b-e9254093a6e2" /&gt;</description>
      <category>C++</category>
      <category>Client Development</category>
      <category>Concurrency</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Speaking</category>
      <category>Visual Studio 2010</category>
      <category>Windows 7</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=51e8ced1-cf6e-4cea-b0fb-f4e83cd7b4f3</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=51e8ced1-cf6e-4cea-b0fb-f4e83cd7b4f3</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today saw the release of the first episode (naturally, <a href="http://channel9.msdn.com/Shows/C9-GoingNative/GoingNative-0-Help-us-fly-this-plane-Some-modern-C-Meet-Ale-Contenti">Episode
0</a>) of GoingNative on Channel 9. As the introduction says:
</p>
        <blockquote>
          <p>
GoingNative is a new, monthly show on C9 dedicated to native development and native
developers, with an emphasis on modern C++. 
</p>
        </blockquote>
        <p>
You know there's been a lot of talk about the C++ Renaissance. I'm happy to see that
phrase get picked up, and I've got another one for you: Modern C++. Or as some folks
like to say "not your father's C++". If you think C++ means manual memory management,
strings as arrays of characters and a strange cast of global functions, and longing
for a library or framework that might rival what .NET has to offer, then you haven't
been keeping up with C++. The good news is that it won't take you long to catch up
- shared_ptr and unique_ptr, the Standard Library, lambdas and other Modern C++ goodies
are easy for both managed developers and longtime native developers to learn.
</p>
        <p>
In Episode 0, <a href="http://channel9.msdn.com/Niners/Charles">Charles Torre</a> (longtime
C++ friend) and Diego Dagum (C++ Community lead, <a href="http://blogs.msdn.com/b/vcblog/">blogger</a>,
and <a href="http://twitter.com/#%21/visualc">Tweeter</a>) lay some groundwork and,
of course, show code. It's always about the code, right? Then, they ask <b>you </b>to
get involved. Whether you're someone who wants to learn about C++, or someone who
wants to make sure something about C++ gets taught to others, speak up! And yes, that
includes topics on non-Microsoft platforms. Email C9GoingNative - they're using hotmail
- or on twitter, follow or talk to <a href="http://twitter.com/#%21/c9goingnative">@C9GoingNative</a>.
(There's <a href="https://www.facebook.com/groups/C9GoingNative?ap=1">a Facebook group</a>,
too - whatever way you like to interact is welcome.)<br /></p>
        <p>
But wait, did that sound like a whole episode? Nope, they grab the camera and head
over to see Ale Contenti - one of my favourite team members and one I've done interviews
and sessions with before. His talk gets technical fast, which is one of the things
I like about him! I too have a soft spot for 6502 assembler :-) and find template
meta-programming a bit of a write-only technique. I, too, like "the power the language
gives you to make the language bigger with libraries" and think that's part of the
appeal of C++ for me. Well, that and the power and performance and control, of course.
Are there downsides? Well, there's what Joni Mitchell called "the crazy you get from
too much choice" - C++ gives you many ways to do everything, according to your circumstances,
and having to decide how to do it, or having to connect two components that made different
choices about something as simple as how to represent a string, can be frustating.
As well, it's great to be in control, but that does mean that nobody is looking after
you. If you're inexperienced (and sometimes, even when you're not) you can make dangerous
choices and, as we like to say, shoot your foot off. Security holes and vulnerabilities
are important and C++ will let you write bad code, so you need to be aware of best
practices. Both Ale and Diego address these points, and you can expect to see more
of that in time to come - especially if you ask for it!
</p>
        <p>
Looking forward to next month's show already,<br /></p>
        <p>
Kate<br /></p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=51e8ced1-cf6e-4cea-b0fb-f4e83cd7b4f3" />
      </body>
      <title>GoingNative on Channel 9</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=51e8ced1-cf6e-4cea-b0fb-f4e83cd7b4f3</guid>
      <link>http://www.gregcons.com/KateBlog/GoingNativeOnChannel9.aspx</link>
      <pubDate>Wed, 27 Jul 2011 23:55:44 GMT</pubDate>
      <description>&lt;p&gt;
Today saw the release of the first episode (naturally, &lt;a href="http://channel9.msdn.com/Shows/C9-GoingNative/GoingNative-0-Help-us-fly-this-plane-Some-modern-C-Meet-Ale-Contenti"&gt;Episode
0&lt;/a&gt;) of GoingNative on Channel 9. As the introduction says:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
GoingNative is a new, monthly show on C9 dedicated to native development and native
developers, with an emphasis on modern C++. 
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
You know there's been a lot of talk about the C++ Renaissance. I'm happy to see that
phrase get picked up, and I've got another one for you: Modern C++. Or as some folks
like to say "not your father's C++". If you think C++ means manual memory management,
strings as arrays of characters and a strange cast of global functions, and longing
for a library or framework that might rival what .NET has to offer, then you haven't
been keeping up with C++. The good news is that it won't take you long to catch up
- shared_ptr and unique_ptr, the Standard Library, lambdas and other Modern C++ goodies
are easy for both managed developers and longtime native developers to learn.
&lt;/p&gt;
&lt;p&gt;
In Episode 0, &lt;a href="http://channel9.msdn.com/Niners/Charles"&gt;Charles Torre&lt;/a&gt; (longtime
C++ friend) and Diego Dagum (C++ Community lead, &lt;a href="http://blogs.msdn.com/b/vcblog/"&gt;blogger&lt;/a&gt;,
and &lt;a href="http://twitter.com/#%21/visualc"&gt;Tweeter&lt;/a&gt;) lay some groundwork and,
of course, show code. It's always about the code, right? Then, they ask &lt;b&gt;you &lt;/b&gt;to
get involved. Whether you're someone who wants to learn about C++, or someone who
wants to make sure something about C++ gets taught to others, speak up! And yes, that
includes topics on non-Microsoft platforms. Email C9GoingNative - they're using hotmail
- or on twitter, follow or talk to &lt;a href="http://twitter.com/#%21/c9goingnative"&gt;@C9GoingNative&lt;/a&gt;.
(There's &lt;a href="https://www.facebook.com/groups/C9GoingNative?ap=1"&gt;a Facebook group&lt;/a&gt;,
too - whatever way you like to interact is welcome.)&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
But wait, did that sound like a whole episode? Nope, they grab the camera and head
over to see Ale Contenti - one of my favourite team members and one I've done interviews
and sessions with before. His talk gets technical fast, which is one of the things
I like about him! I too have a soft spot for 6502 assembler :-) and find template
meta-programming a bit of a write-only technique. I, too, like "the power the language
gives you to make the language bigger with libraries" and think that's part of the
appeal of C++ for me. Well, that and the power and performance and control, of course.
Are there downsides? Well, there's what Joni Mitchell called "the crazy you get from
too much choice" - C++ gives you many ways to do everything, according to your circumstances,
and having to decide how to do it, or having to connect two components that made different
choices about something as simple as how to represent a string, can be frustating.
As well, it's great to be in control, but that does mean that nobody is looking after
you. If you're inexperienced (and sometimes, even when you're not) you can make dangerous
choices and, as we like to say, shoot your foot off. Security holes and vulnerabilities
are important and C++ will let you write bad code, so you need to be aware of best
practices. Both Ale and Diego address these points, and you can expect to see more
of that in time to come - especially if you ask for it!
&lt;/p&gt;
&lt;p&gt;
Looking forward to next month's show already,&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=51e8ced1-cf6e-4cea-b0fb-f4e83cd7b4f3" /&gt;</description>
      <category>C++</category>
      <category>Client Development</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=2a6cde64-590a-4ae3-9c6a-eff30c59dfee</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=2a6cde64-590a-4ae3-9c6a-eff30c59dfee</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">You go to Tech Ed to learn about technology
- developer tools, sysadmin tools, platforms like SharePoint or Windows Phone. But
there's more to your work than the nuts and bolts of how to solve a technical problem.
Do you use social media effectively? What would an effective use of Twitter or Facebook
look like, anyway? Are jobs shifting because of technology? How important is cross-platform
development? How important are new platforms? How do you react to big changes in your
technical world and direct your own career?<br /><br />
Well, there's a <a href="http://northamerica.msteched.com/topic/details/PRC100?fbid=30CmRmJ1Ymb#showdetailsmtag=seedfacebook">Tech
Ed precon Sunday evening</a> that covers that exact topic. And look who's involved: <b>Stephen
Rose</b> (Windows Community Manager), <b>Zeus Kerravala </b>(Distinguished Research
Fellow and Senior VP, Yankee Group), <b>Richard Campbell </b>(Co-founder of Strangeloop
Networks, co-host of .NET Rocks!, host of RunAsRadio, Microsoft MVP, Microsoft Regional
Director), <b>Michael Otey </b>(Senior Technical Director for Penton Media’s IT &amp;
developer publications, author of SQL Server Developer’s Guide series from Osborne-McGraw-Hill), <b>Tim
Huckaby </b>(Microsoft Regional Director, Founder of InterKnowlogy), <b>Michele Leroux
Bustamante </b>(Chief Architect with iDesign, Microsoft Regional Director, Microsoft
MVP, author of Learning WCF (O’Reilly)), <b> Jennifer Marsman </b>(Principal Developer
Evangelist for Microsoft, Central Region), <b> Tara Walker </b>(Microsoft Academic
Developer Evangelist), <b>Sean Deuby </b>(Technical Director, Penton Media’s Windows
IT Pro Magazine, Microsoft MVP), <b>Paul Thurrott </b>(Senior Industry Analyst, Penton
Media’s Windows IT Pro and Supersite for Windows; author of Windows Phone Secrets), <b>John
Willis </b>(VP of Training &amp; Services, Opscode), <b>Laura Hunter </b>(Principal
Technology Architect for Microsoft IT’s Identity &amp; Access Management team), <b>Yung
Chou </b>(Microsoft Senior IT Pro Evangelist, East Region) and <b>Barbara Yamauchi </b>(Microsoft
IT program manager for developer tools and IT lifecycle management). Wow! And this
is an interactive panel discussion, so you can help to shape the conversation.<br /><br />
There is a small fee ($99) and you have to arrive Sunday afternoon so you'll be able
to attend. But it looks like a heck of an evening! Glad to see so many RDs and MVPs
on that list.<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=2a6cde64-590a-4ae3-9c6a-eff30c59dfee" /></body>
      <title>Tech Ed Precon - Career Development</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=2a6cde64-590a-4ae3-9c6a-eff30c59dfee</guid>
      <link>http://www.gregcons.com/KateBlog/TechEdPreconCareerDevelopment.aspx</link>
      <pubDate>Thu, 31 Mar 2011 12:50:40 GMT</pubDate>
      <description>You go to Tech Ed to learn about technology - developer tools, sysadmin tools, platforms like SharePoint or Windows Phone. But there's more to your work than the nuts and bolts of how to solve a technical problem. Do you use social media effectively? What would an effective use of Twitter or Facebook look like, anyway? Are jobs shifting because of technology? How important is cross-platform development? How important are new platforms? How do you react to big changes in your technical world and direct your own career?&lt;br&gt;
&lt;br&gt;
Well, there's a &lt;a href="http://northamerica.msteched.com/topic/details/PRC100?fbid=30CmRmJ1Ymb#showdetailsmtag=seedfacebook"&gt;Tech
Ed precon Sunday evening&lt;/a&gt; that covers that exact topic. And look who's involved: &lt;b&gt;Stephen
Rose&lt;/b&gt; (Windows Community Manager), &lt;b&gt;Zeus Kerravala &lt;/b&gt;(Distinguished Research
Fellow and Senior VP, Yankee Group), &lt;b&gt;Richard Campbell &lt;/b&gt;(Co-founder of Strangeloop
Networks, co-host of .NET Rocks!, host of RunAsRadio, Microsoft MVP, Microsoft Regional
Director), &lt;b&gt;Michael Otey &lt;/b&gt;(Senior Technical Director for Penton Media’s IT &amp;amp;
developer publications, author of SQL Server Developer’s Guide series from Osborne-McGraw-Hill), &lt;b&gt;Tim
Huckaby &lt;/b&gt;(Microsoft Regional Director, Founder of InterKnowlogy), &lt;b&gt;Michele Leroux
Bustamante &lt;/b&gt;(Chief Architect with iDesign, Microsoft Regional Director, Microsoft
MVP, author of Learning WCF (O’Reilly)), &lt;b&gt; Jennifer Marsman &lt;/b&gt;(Principal Developer
Evangelist for Microsoft, Central Region), &lt;b&gt; Tara Walker &lt;/b&gt;(Microsoft Academic
Developer Evangelist), &lt;b&gt;Sean Deuby &lt;/b&gt;(Technical Director, Penton Media’s Windows
IT Pro Magazine, Microsoft MVP), &lt;b&gt;Paul Thurrott &lt;/b&gt;(Senior Industry Analyst, Penton
Media’s Windows IT Pro and Supersite for Windows; author of Windows Phone Secrets), &lt;b&gt;John
Willis &lt;/b&gt;(VP of Training &amp;amp; Services, Opscode), &lt;b&gt;Laura Hunter &lt;/b&gt;(Principal
Technology Architect for Microsoft IT’s Identity &amp;amp; Access Management team), &lt;b&gt;Yung
Chou &lt;/b&gt;(Microsoft Senior IT Pro Evangelist, East Region) and &lt;b&gt;Barbara Yamauchi &lt;/b&gt;(Microsoft
IT program manager for developer tools and IT lifecycle management). Wow! And this
is an interactive panel discussion, so you can help to shape the conversation.&lt;br&gt;
&lt;br&gt;
There is a small fee ($99) and you have to arrive Sunday afternoon so you'll be able
to attend. But it looks like a heck of an evening! Glad to see so many RDs and MVPs
on that list.&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=2a6cde64-590a-4ae3-9c6a-eff30c59dfee" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>MVP</category>
      <category>RD</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=d218b267-a926-4822-88b6-3e64b4194d76</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=d218b267-a926-4822-88b6-3e64b4194d76</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">One of the things C++ developers have had
for ages is a way to see a function's return value in the debugger, even if it isn't
kept in a local variable. For example, see tip 29 in this <a href="http://www.catch22.net/tuts/vctips">list
of Visual C++ tips</a> for VC++ 6.0 - a product released 12 or 13 years ago! <a href="http://blog.sublogic.com/2010/11/22/visual-studio-debugger-request-return-local-variable/">Managed
developers would like this ability, too</a>. Jared Parsons, from Technical Strategy
Incubation, points to a set of requests, and <a href="http://blogs.msdn.com/b/jaredpar/archive/2011/01/12/why-the-debugging-difference-between-c-and-vb-net-return-values.aspx">explains</a> why
it appears that VB has it already. (And you thought VB6 legacy support wasn't going
to help you!)<br /><br />
Take a look and see what you think. Would it be worth the possible performance hit?<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=d218b267-a926-4822-88b6-3e64b4194d76" /></body>
      <title>Seeing a function's return value in the debugger</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=d218b267-a926-4822-88b6-3e64b4194d76</guid>
      <link>http://www.gregcons.com/KateBlog/SeeingAFunctionsReturnValueInTheDebugger.aspx</link>
      <pubDate>Thu, 20 Jan 2011 15:28:24 GMT</pubDate>
      <description>One of the things C++ developers have had for ages is a way to see a function's return value in the debugger, even if it isn't kept in a local variable. For example, see tip 29 in this &lt;a href="http://www.catch22.net/tuts/vctips"&gt;list
of Visual C++ tips&lt;/a&gt; for VC++ 6.0 - a product released 12 or 13 years ago! &lt;a href="http://blog.sublogic.com/2010/11/22/visual-studio-debugger-request-return-local-variable/"&gt;Managed
developers would like this ability, too&lt;/a&gt;. Jared Parsons, from Technical Strategy
Incubation, points to a set of requests, and &lt;a href="http://blogs.msdn.com/b/jaredpar/archive/2011/01/12/why-the-debugging-difference-between-c-and-vb-net-return-values.aspx"&gt;explains&lt;/a&gt; why
it appears that VB has it already. (And you thought VB6 legacy support wasn't going
to help you!)&lt;br&gt;
&lt;br&gt;
Take a look and see what you think. Would it be worth the possible performance hit?&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=d218b267-a926-4822-88b6-3e64b4194d76" /&gt;</description>
      <category>C++</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=ff0a2afc-4d81-4997-b1c4-f824b837e24a</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=ff0a2afc-4d81-4997-b1c4-f824b837e24a</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">Since midsummer I've been watching the
"STL on STL" series accumulate on Channel 9. The lectures appeared as "part 1 of n",
"part 2 of n" and so on until, in the bleak midwinter, part 10 of 10 appeared, so
they must be done. Here are some links to them all:<br /><br /><ul><li>
1 - <a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Introduction-to-STL-with-Stephan-T-Lavavej">introduction</a></li><li>
2 - <a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-2-of-n">containers</a></li><li>
3 - <a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-3-of-n">shared
and unique smart pointers</a></li><li>
4 - <a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-4-of-n">whiteboarding</a></li><li>
5 - <a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-5-of-n">whiteboarding
continued</a></li><li>
6 - <a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-6-of-n">algorithms</a></li><li>
7 - <a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-7-of-n">more
algorithms</a></li><li>
8 - <a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-8-of-n">regular
expressions</a></li><li>
9 - <a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-9-of-n">rvalue
references</a></li><li>
10 - <a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-10-of-10">type
traits</a></li></ul>
There really isn't any universe in which the material this series covers can be called
Introductory. When Stephan has finished introducing you to the STL, you will know
an awful lot. And in this century, knowing the STL is a vital part of being a C++
developer. Many developers are scared of it: they think it's difficult and complicated.
And to be honest, it can be. There's an awful lot going on and there is a lot to learn.
Watching these videos, you can see how much Stephan LIKES this material, likes this
library, and he's clearly not scared of it or trying to impress you with how difficult
it is. He wants you to know all this. And if you follow along (and even do the homework!)
you will catapult yourself forward in your STL knowledge and abilities. Take the time
to do it, you won't regret it.<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=ff0a2afc-4d81-4997-b1c4-f824b837e24a" /></body>
      <title>STL wraps up the STL series</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=ff0a2afc-4d81-4997-b1c4-f824b837e24a</guid>
      <link>http://www.gregcons.com/KateBlog/STLWrapsUpTheSTLSeries.aspx</link>
      <pubDate>Wed, 12 Jan 2011 14:33:08 GMT</pubDate>
      <description>Since midsummer I've been watching the "STL on STL" series accumulate on Channel 9. The lectures appeared as "part 1 of n", "part 2 of n" and so on until, in the bleak midwinter, part 10 of 10 appeared, so they must be done. Here are some links to them all:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
1 - &lt;a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Introduction-to-STL-with-Stephan-T-Lavavej"&gt;introduction&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
2 - &lt;a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-2-of-n"&gt;containers&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
3 - &lt;a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-3-of-n"&gt;shared
and unique smart pointers&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
4 - &lt;a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-4-of-n"&gt;whiteboarding&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
5 - &lt;a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-5-of-n"&gt;whiteboarding
continued&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
6 - &lt;a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-6-of-n"&gt;algorithms&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
7 - &lt;a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-7-of-n"&gt;more
algorithms&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
8 - &lt;a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-8-of-n"&gt;regular
expressions&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
9 - &lt;a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-9-of-n"&gt;rvalue
references&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
10 - &lt;a href="http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-10-of-10"&gt;type
traits&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
There really isn't any universe in which the material this series covers can be called
Introductory. When Stephan has finished introducing you to the STL, you will know
an awful lot. And in this century, knowing the STL is a vital part of being a C++
developer. Many developers are scared of it: they think it's difficult and complicated.
And to be honest, it can be. There's an awful lot going on and there is a lot to learn.
Watching these videos, you can see how much Stephan LIKES this material, likes this
library, and he's clearly not scared of it or trying to impress you with how difficult
it is. He wants you to know all this. And if you follow along (and even do the homework!)
you will catapult yourself forward in your STL knowledge and abilities. Take the time
to do it, you won't regret it.&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=ff0a2afc-4d81-4997-b1c4-f824b837e24a" /&gt;</description>
      <category>C++</category>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Visual Studio 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=02f74242-98aa-43ee-9a8e-521f530fe11a</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=02f74242-98aa-43ee-9a8e-521f530fe11a</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">I was lucky enough to be part of a spirited
email discussion recently on the topic of exceptions. And luckier still that Diego
Dagum, the new C++ Community PM, has <a href="http://blogs.msdn.com/b/vcblog/archive/2010/12/29/making-an-exception.aspx">summarized
it on the VC team blog</a>. You should enjoy reading the "best practices" we worked
our way around to, like:<br /><blockquote>Most MVPs agreed that, despite not being illegal in C++, throwing primitive
types like <span style="font-family: 'Courier New';">int</span>, <span style="font-family: 'Courier New';">long</span>,
etc., or similarly Windows-based ones like <span style="font-family: 'Courier New';">HRESULT</span>,
etc. is a coding horror as inabilities to catch those in the proper place will make
the application crash with a hard post-investigation to determine where they are being
originated.<br /><br /></blockquote>Of course, we ended up talking about checked exceptions, one of the things
I really hated about Java personally, and RAII which is a critical way of thinking
if there are exceptions flying around your app. STL joins in with a comment that could
be worth gold to someone dealing with SEH:<br /><blockquote><p>
I strongly recommend AGAINST using the /EHa compiler option. Either /EHs or /EHsc
should ALWAYS be used, with /EHsc being preferable (it's faster because it assumes
that extern "C" functions won't emit exceptions - while technically permitted by the
Standard, sane code should never attempt to do such a thing, so giving up that ability
is worth the performance gain).
</p></blockquote><p>
And I am sure the comments will continue to grow and the conversation continue. This
is how we all get better, by discussing and sharing and occasionally defending our
practices. It's a must-read.
</p><p>
Kate<br /></p><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=02f74242-98aa-43ee-9a8e-521f530fe11a" /></body>
      <title>C++ Exceptions</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=02f74242-98aa-43ee-9a8e-521f530fe11a</guid>
      <link>http://www.gregcons.com/KateBlog/CExceptions.aspx</link>
      <pubDate>Sat, 01 Jan 2011 01:01:25 GMT</pubDate>
      <description>I was lucky enough to be part of a spirited email discussion recently on the topic of exceptions. And luckier still that Diego Dagum, the new C++ Community PM, has &lt;a href="http://blogs.msdn.com/b/vcblog/archive/2010/12/29/making-an-exception.aspx"&gt;summarized
it on the VC team blog&lt;/a&gt;. You should enjoy reading the "best practices" we worked
our way around to, like:&lt;br&gt;
&lt;blockquote&gt;Most MVPs agreed that, despite not being illegal in C++, throwing primitive
types like &lt;span style="font-family: 'Courier New';"&gt;int&lt;/span&gt;, &lt;span style="font-family: 'Courier New';"&gt;long&lt;/span&gt;,
etc., or similarly Windows-based ones like &lt;span style="font-family: 'Courier New';"&gt;HRESULT&lt;/span&gt;,
etc. is a coding horror as inabilities to catch those in the proper place will make
the application crash with a hard post-investigation to determine where they are being
originated.&lt;br&gt;
&lt;br&gt;
&lt;/blockquote&gt;Of course, we ended up talking about checked exceptions, one of the things
I really hated about Java personally, and RAII which is a critical way of thinking
if there are exceptions flying around your app. STL joins in with a comment that could
be worth gold to someone dealing with SEH:&lt;br&gt;
&lt;blockquote&gt;
&lt;p&gt;
I strongly recommend AGAINST using the /EHa compiler option. Either /EHs or /EHsc
should ALWAYS be used, with /EHsc being preferable (it's faster because it assumes
that extern "C" functions won't emit exceptions - while technically permitted by the
Standard, sane code should never attempt to do such a thing, so giving up that ability
is worth the performance gain).
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
And I am sure the comments will continue to grow and the conversation continue. This
is how we all get better, by discussing and sharing and occasionally defending our
practices. It's a must-read.
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=02f74242-98aa-43ee-9a8e-521f530fe11a" /&gt;</description>
      <category>C++</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=ec784d49-aba0-482c-9086-632c2bf2d507</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=ec784d49-aba0-482c-9086-632c2bf2d507</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">It's the time of year where people set
themselves goals - for the whole of 2011, for the next few months, or just in general.
And you can read a lot about SMART goals and how great they are. <a href="http://en.wikipedia.org/wiki/SMART_criteria">Opinions
vary</a> on exactly what the letters stand for but I'll go with Specific, Measurable,
Attainable, Relevant, and Timely. So if I'm giving you a performance review and I
say "you should be more helpful", that is not a SMART goal because we can't measure
your helpiness and it's also not terribly specific and I haven't given you any kind
of time frame for improvement. If you're not helpier tomorrow, have you failed your
goal? What about next week? Next month? How long do you have to get more helpful?
If I say "you should fill out your timesheet more often" it's still not a SMART goal
because it's vague and doesn't have a time element and so on. I can make it a SMART
goal by saying something like this: "over the next 6 weeks, at least 5 weeks' timesheets
will be completed by 10am of the next Monday morning." The relevance will have to
come into play when I explain to you that late timesheets delay our billing of clients
and mess up our cash flow. (Or whatever; we actually don't use timesheets here, but
that's not the point.)<br /><br />
So OK, we have this concept. And it seems like a pretty good one. After all, if you
write it like that, we can come back after 6 weeks (or whatever) and say "pass" or
"fail". But let's look at the timesheet-laggard above. Let's say that person misses
week 1 and week 2, then goes flawless after that. Still fail? If you feel that way,
then as soon as the laggard misses week 2, why keep trying? You've blown the goal,
right? 
<br /><br />
Then there's the matter of the consequences of blowing the goal. Am I going to fire
you for messing up my invoicing and causing cash flow headaches and just generally
not caring about the business? (I might.) But if you have a goal to pass a particular
cert, and you fail it, is anyone going to fire you? Or you have a personal goal to
run some distance under some time and you don't get to that time, will you give up
running?<br /><br />
Here's I. M. Wright on <a href="http://blogs.msdn.com/b/eric_brechner/archive/2010/03/01/i-m-deeply-committed.aspx">why
having a dozen year-long SMART goals is just wrong</a> - they take so long to write,
if people meet 11 out of 12 they can still have a fail of a year, they're all about
you when you're actually part of a team, and so on. Since they're unavoidable at some
companies, he has some suggestions how to have 4 or 5 really good ones. He also doesn't
like SMART for stretch goals, and I agree. Christophe is more about how <a href="http://runningagile.com/2010/01/31/stupid-goals/">things
change over an entire year</a>, so the goal is probably not relevant by the time limit.
The top answer to <a href="http://programmers.stackexchange.com/q/28927/285">this
StackOverflow question</a> says they're not good for developers, period.<br /><br />
In answering <a href="http://programmers.stackexchange.com/q/29062/285">this StackOverflow
question </a>I realized something. SMART goals are good for "shape up or else" goals,
put on a person by someone else, that allow just a few weeks to achieve something
really, well, specific, measurable, and relevant. Do your timesheets. Come to work
on time. Include a decent comment when you check in your work. They're really not
good for "be a better person", "lose weight", "make more money", or even "get a paid
acting job". You just need a different way to express and measure progress on those
kind of goals. If you're setting a goal for yourself, unless you think you're correcting
a deficiency and have consequences lined up for failure, don't make it a SMART goal.<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=ec784d49-aba0-482c-9086-632c2bf2d507" /></body>
      <title>Don't set yourself SMART goals</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=ec784d49-aba0-482c-9086-632c2bf2d507</guid>
      <link>http://www.gregcons.com/KateBlog/DontSetYourselfSMARTGoals.aspx</link>
      <pubDate>Thu, 23 Dec 2010 21:48:30 GMT</pubDate>
      <description>It's the time of year where people set themselves goals - for the whole of 2011, for the next few months, or just in general. And you can read a lot about SMART goals and how great they are. &lt;a href="http://en.wikipedia.org/wiki/SMART_criteria"&gt;Opinions
vary&lt;/a&gt; on exactly what the letters stand for but I'll go with Specific, Measurable,
Attainable, Relevant, and Timely. So if I'm giving you a performance review and I
say "you should be more helpful", that is not a SMART goal because we can't measure
your helpiness and it's also not terribly specific and I haven't given you any kind
of time frame for improvement. If you're not helpier tomorrow, have you failed your
goal? What about next week? Next month? How long do you have to get more helpful?
If I say "you should fill out your timesheet more often" it's still not a SMART goal
because it's vague and doesn't have a time element and so on. I can make it a SMART
goal by saying something like this: "over the next 6 weeks, at least 5 weeks' timesheets
will be completed by 10am of the next Monday morning." The relevance will have to
come into play when I explain to you that late timesheets delay our billing of clients
and mess up our cash flow. (Or whatever; we actually don't use timesheets here, but
that's not the point.)&lt;br&gt;
&lt;br&gt;
So OK, we have this concept. And it seems like a pretty good one. After all, if you
write it like that, we can come back after 6 weeks (or whatever) and say "pass" or
"fail". But let's look at the timesheet-laggard above. Let's say that person misses
week 1 and week 2, then goes flawless after that. Still fail? If you feel that way,
then as soon as the laggard misses week 2, why keep trying? You've blown the goal,
right? 
&lt;br&gt;
&lt;br&gt;
Then there's the matter of the consequences of blowing the goal. Am I going to fire
you for messing up my invoicing and causing cash flow headaches and just generally
not caring about the business? (I might.) But if you have a goal to pass a particular
cert, and you fail it, is anyone going to fire you? Or you have a personal goal to
run some distance under some time and you don't get to that time, will you give up
running?&lt;br&gt;
&lt;br&gt;
Here's I. M. Wright on &lt;a href="http://blogs.msdn.com/b/eric_brechner/archive/2010/03/01/i-m-deeply-committed.aspx"&gt;why
having a dozen year-long SMART goals is just wrong&lt;/a&gt; - they take so long to write,
if people meet 11 out of 12 they can still have a fail of a year, they're all about
you when you're actually part of a team, and so on. Since they're unavoidable at some
companies, he has some suggestions how to have 4 or 5 really good ones. He also doesn't
like SMART for stretch goals, and I agree. Christophe is more about how &lt;a href="http://runningagile.com/2010/01/31/stupid-goals/"&gt;things
change over an entire year&lt;/a&gt;, so the goal is probably not relevant by the time limit.
The top answer to &lt;a href="http://programmers.stackexchange.com/q/28927/285"&gt;this
StackOverflow question&lt;/a&gt; says they're not good for developers, period.&lt;br&gt;
&lt;br&gt;
In answering &lt;a href="http://programmers.stackexchange.com/q/29062/285"&gt;this StackOverflow
question &lt;/a&gt;I realized something. SMART goals are good for "shape up or else" goals,
put on a person by someone else, that allow just a few weeks to achieve something
really, well, specific, measurable, and relevant. Do your timesheets. Come to work
on time. Include a decent comment when you check in your work. They're really not
good for "be a better person", "lose weight", "make more money", or even "get a paid
acting job". You just need a different way to express and measure progress on those
kind of goals. If you're setting a goal for yourself, unless you think you're correcting
a deficiency and have consequences lined up for failure, don't make it a SMART goal.&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=ec784d49-aba0-482c-9086-632c2bf2d507" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=3dfbe79d-64b2-478d-ac74-6d6aa25032d2</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=3dfbe79d-64b2-478d-ac74-6d6aa25032d2</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">Many people really don't understand where
P/Invoke signatures come from, or what they mean. They head over to <a href="http://pinvoke.net/">pinvoke.net</a>,
which - don't get me wrong - is a hugely important resource, and then blindly paste
in whatever they find and try compiling and running their code. Or they use the superbly
helpful <a href="http://www.gregcons.com/KateBlog/GeneratePInvokeSignaturesWithANewFreeUtility.aspx">P/Invoke
Interop Assistant</a>. Again, paste, build, run, works on my machine. 
<br /><br />
This is a great way to start. The problem is assuming that once one run worked, you're
done. You need to read and understand the P/Invoke signature you are using. Especially
when you are passing in a pointer, or getting a pointer back, you must know who owns
that memory and who will clean it up. Are you handing it over to the native code to
manage? Is there a risk your managed code will clean it up before the native code
is done with it? Is there a risk the native code will clean it up, and then later
the managed code will also try to clean it up? Don't think these things don't happen,
they most certainly do.<br /><br /><a href="http://elegantcode.com/2010/11/17/the-black-art-of-pinvoke-and-marshaling-in-net/">Here's
an example</a>: a long running intermittent bug that was caused by a P/Invoke declaration
that said the managed side would clean up, but that should have said the native side
would (since the native side did.) And <a href="http://stackoverflow.com/questions/526661/intptr-safehandle-and-handleref-explained">here's
a nice summary</a> of ways to make sure that native resources (like handles) aren't
cleaned up too soon by the managed side. Sorry, but you need to understand this stuff
in order to interop successfully. That's where the phrase "head spinning interop"
came from, after all. 
<br /><br />
Don't like it? Don't want to learn it? Then use an interop library like the <a href="http://code.msdn.microsoft.com/windowsapicodepack">Code
Pack</a> that takes care of those sorts of things for you and exposes an entirely
managed interface. Have to learn it whether you want to or not? Consider using the
Code Pack as a reference for how to do interop properly. The full source code is available,
and nicely commented too.<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=3dfbe79d-64b2-478d-ac74-6d6aa25032d2" /></body>
      <title>PInvoke Signatures: "it compiled ok" is not enough</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=3dfbe79d-64b2-478d-ac74-6d6aa25032d2</guid>
      <link>http://www.gregcons.com/KateBlog/PInvokeSignaturesItCompiledOkIsNotEnough.aspx</link>
      <pubDate>Sun, 19 Dec 2010 17:10:28 GMT</pubDate>
      <description>Many people really don't understand where P/Invoke signatures come from, or what they mean. They head over to &lt;a href="http://pinvoke.net/"&gt;pinvoke.net&lt;/a&gt;,
which - don't get me wrong - is a hugely important resource, and then blindly paste
in whatever they find and try compiling and running their code. Or they use the superbly
helpful &lt;a href="http://www.gregcons.com/KateBlog/GeneratePInvokeSignaturesWithANewFreeUtility.aspx"&gt;P/Invoke
Interop Assistant&lt;/a&gt;. Again, paste, build, run, works on my machine. 
&lt;br&gt;
&lt;br&gt;
This is a great way to start. The problem is assuming that once one run worked, you're
done. You need to read and understand the P/Invoke signature you are using. Especially
when you are passing in a pointer, or getting a pointer back, you must know who owns
that memory and who will clean it up. Are you handing it over to the native code to
manage? Is there a risk your managed code will clean it up before the native code
is done with it? Is there a risk the native code will clean it up, and then later
the managed code will also try to clean it up? Don't think these things don't happen,
they most certainly do.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://elegantcode.com/2010/11/17/the-black-art-of-pinvoke-and-marshaling-in-net/"&gt;Here's
an example&lt;/a&gt;: a long running intermittent bug that was caused by a P/Invoke declaration
that said the managed side would clean up, but that should have said the native side
would (since the native side did.) And &lt;a href="http://stackoverflow.com/questions/526661/intptr-safehandle-and-handleref-explained"&gt;here's
a nice summary&lt;/a&gt; of ways to make sure that native resources (like handles) aren't
cleaned up too soon by the managed side. Sorry, but you need to understand this stuff
in order to interop successfully. That's where the phrase "head spinning interop"
came from, after all. 
&lt;br&gt;
&lt;br&gt;
Don't like it? Don't want to learn it? Then use an interop library like the &lt;a href="http://code.msdn.microsoft.com/windowsapicodepack"&gt;Code
Pack&lt;/a&gt; that takes care of those sorts of things for you and exposes an entirely
managed interface. Have to learn it whether you want to or not? Consider using the
Code Pack as a reference for how to do interop properly. The full source code is available,
and nicely commented too.&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=3dfbe79d-64b2-478d-ac74-6d6aa25032d2" /&gt;</description>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=94548231-3438-4e87-9141-15a92d288876</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=94548231-3438-4e87-9141-15a92d288876</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">It's over 200 pages long, and over four
years old, but I just heard about it recently. A long, dense discussion of whether
certain C++ features (templates, namespaces, RTTI, etc) have a performance cost, and
how to write code that incurs as little performance cost as possible. Its official
name: <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/TR18015.pdf">ISO/IEC TR
18015:2006(E) Technical Report on C++ Performance</a>. In addition to runtime performance,
it also touches on compile slowness, the "brittle base class" problem, and the different
performance characteristics of various STL collections and algorithms. If you care
about the speed of your C++ code, you should read this, even if some of it is already
familiar to you.<br /><br />
I'd like to give some kind of "Restrained Understatement" award to this sentence:<br /><br /><blockquote>Template meta-programming and expression templates are not techniques
for novice programmers, but an advanced practitioner can use them to good effect. 
<br /></blockquote>To be clear about where these authors are placing the "advanced" bar,
I don't use meta-programming, I consider it too advanced for me. And I have 20+ years
of C++!<br /><br />
The whole report is platform independent (though embedded systems are discussed separately)
and compiler independent, too. I wish it were updated for C++0x, but I guess that
will have to wait until C++0x is settled :-). There's a 14 page bibliography, and
you would do well to read many of them, though <a href="http://twitter.com/#%21/jangray/status/15796821473361920">my
source</a> for the link winkily pointed out<a href="http://www.openrce.org/articles/files/jangrayhood.pdf"> another
possible paper</a>. That one is old enough to get a driver's license, but I think
you might enjoy reading it anyway. As the introduction begins:<br /><br /><blockquote>It is important to understand how your programming language is implemented.
Such knowledge dispels the fear and wonder of “What on earth is the compiler doing
here?”; imparts confidence to use the new features; and provides insight when debugging
and learning other language features. It also gives a feel for the relative costs
of different coding choices that is necessary to write the most efficient code day
to day. 
<br /></blockquote>It's only 23 pages long, and concludes:<br /><blockquote>... we have considered many of the significant C++ run-time implementation
issues. We see that some wonderful language features are almost free, and others can
incur significant overhead. These implementation mechanisms are applied quietly for
you, behind the curtains, so to speak, and it is often hard to tell what a piece of
code costs when looking at it in isolation. The frugal coder is well advised to study
the generated native code from time to time and question whether use of this or that
particularly cool language feature is worth its overhead. 
<br /></blockquote>Good advice, in 1994 or 2010.<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=94548231-3438-4e87-9141-15a92d288876" /></body>
      <title>ISO Technical report on C++ Performance</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=94548231-3438-4e87-9141-15a92d288876</guid>
      <link>http://www.gregcons.com/KateBlog/ISOTechnicalReportOnCPerformance.aspx</link>
      <pubDate>Fri, 17 Dec 2010 16:34:31 GMT</pubDate>
      <description>It's over 200 pages long, and over four years old, but I just heard about it recently. A long, dense discussion of whether certain C++ features (templates, namespaces, RTTI, etc) have a performance cost, and how to write code that incurs as little performance cost as possible. Its official name: &lt;a href="http://www.open-std.org/jtc1/sc22/wg21/docs/TR18015.pdf"&gt;ISO/IEC
TR 18015:2006(E) Technical Report on C++ Performance&lt;/a&gt;. In addition to runtime performance,
it also touches on compile slowness, the "brittle base class" problem, and the different
performance characteristics of various STL collections and algorithms. If you care
about the speed of your C++ code, you should read this, even if some of it is already
familiar to you.&lt;br&gt;
&lt;br&gt;
I'd like to give some kind of "Restrained Understatement" award to this sentence:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;Template meta-programming and expression templates are not techniques
for novice programmers, but an advanced practitioner can use them to good effect. 
&lt;br&gt;
&lt;/blockquote&gt;To be clear about where these authors are placing the "advanced" bar,
I don't use meta-programming, I consider it too advanced for me. And I have 20+ years
of C++!&lt;br&gt;
&lt;br&gt;
The whole report is platform independent (though embedded systems are discussed separately)
and compiler independent, too. I wish it were updated for C++0x, but I guess that
will have to wait until C++0x is settled :-). There's a 14 page bibliography, and
you would do well to read many of them, though &lt;a href="http://twitter.com/#%21/jangray/status/15796821473361920"&gt;my
source&lt;/a&gt; for the link winkily pointed out&lt;a href="http://www.openrce.org/articles/files/jangrayhood.pdf"&gt; another
possible paper&lt;/a&gt;. That one is old enough to get a driver's license, but I think
you might enjoy reading it anyway. As the introduction begins:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;It is important to understand how your programming language is implemented.
Such knowledge dispels the fear and wonder of “What on earth is the compiler doing
here?”; imparts confidence to use the new features; and provides insight when debugging
and learning other language features. It also gives a feel for the relative costs
of different coding choices that is necessary to write the most efficient code day
to day. 
&lt;br&gt;
&lt;/blockquote&gt;It's only 23 pages long, and concludes:&lt;br&gt;
&lt;blockquote&gt;... we have considered many of the significant C++ run-time implementation
issues. We see that some wonderful language features are almost free, and others can
incur significant overhead. These implementation mechanisms are applied quietly for
you, behind the curtains, so to speak, and it is often hard to tell what a piece of
code costs when looking at it in isolation. The frugal coder is well advised to study
the generated native code from time to time and question whether use of this or that
particularly cool language feature is worth its overhead. 
&lt;br&gt;
&lt;/blockquote&gt;Good advice, in 1994 or 2010.&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=94548231-3438-4e87-9141-15a92d288876" /&gt;</description>
      <category>C++</category>
      <category>Client Development</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=0a2c6405-d286-4ba8-8dfe-bdc50dfe7a1c</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=0a2c6405-d286-4ba8-8dfe-bdc50dfe7a1c</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">Lately there's been quite a lot of interest
on programmers.se about <a href="http://programmers.stackexchange.com/questions/tagged/interview-questions">interview
questions</a>, and specifically the "coding at the whiteboard" part of the interview.
It came up in a discussion of <a href="http://programmers.stackexchange.com/questions/15623/fizzbuzz-really">FizzBuzz</a>,
in one about <a href="http://programmers.stackexchange.com/questions/16769/whiteboard-testing-during-an-interview-legitimate-way-to-back-up-your-whitebo">"testing"
your whiteboard code</a>, and in one about <a href="http://programmers.stackexchange.com/questions/21230/the-joel-test-question-11-what-are-pros-and-cons">question
11 of the Joel test</a>. 
<br /><br />
I ask candidates to code at the whiteboard. I ask an intensely simple question, because
I am mostly testing for things other than the actual code the person writes. I know,
however, that there are places that actually want you to tackle reasonably challenging
problems. I came across <a href="http://blogs.msdn.com/b/diegumzone/archive/2010/11/27/c-programming-interviews-what-interviewers-want-you-to-show.aspx">this
blog entry</a> by <a href="http://blogs.msdn.com/b/diegumzone/">Diego Dagum</a> (who
edits The Architecture Journal, writes architecture columns, and is committed to native
C++big time) that walks you through a C++ whiteboard problem that is decidedly non-trivial.
What I found interesting is that he starts his "thinking aloud" the same way I would,
but then when I would start writing something that worked for valid input, he first
started to set out examples of invalid input. And when he wrote the code, it starts
by rejecting various categories of invalid input before processing anything. It's
cool to see someone thinking differently from me. 
<br /><br />
One thing really struck me. He spends over a page on the signature of his method -
why he called it rtoi, why it returns an unsigned int, why its argument is const,
whether it should take a  unicode string or not, why an STL string and not a
char*. See how much these problems reveal about a person? That kind of care and precision
is not something you can discover by asking a person "how important is it to you that
a method signature is chosen with care? Can you give me some examples of naming methods
you have done?" Coding in a job interview is about so much more than syntax. Are you
prepared for the whiteboard?<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=0a2c6405-d286-4ba8-8dfe-bdc50dfe7a1c" /></body>
      <title>C++ Interview Whiteboard problem</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=0a2c6405-d286-4ba8-8dfe-bdc50dfe7a1c</guid>
      <link>http://www.gregcons.com/KateBlog/CInterviewWhiteboardProblem.aspx</link>
      <pubDate>Thu, 02 Dec 2010 02:59:11 GMT</pubDate>
      <description>Lately there's been quite a lot of interest on programmers.se about &lt;a href="http://programmers.stackexchange.com/questions/tagged/interview-questions"&gt;interview
questions&lt;/a&gt;, and specifically the "coding at the whiteboard" part of the interview.
It came up in a discussion of &lt;a href="http://programmers.stackexchange.com/questions/15623/fizzbuzz-really"&gt;FizzBuzz&lt;/a&gt;,
in one about &lt;a href="http://programmers.stackexchange.com/questions/16769/whiteboard-testing-during-an-interview-legitimate-way-to-back-up-your-whitebo"&gt;"testing"
your whiteboard code&lt;/a&gt;, and in one about &lt;a href="http://programmers.stackexchange.com/questions/21230/the-joel-test-question-11-what-are-pros-and-cons"&gt;question
11 of the Joel test&lt;/a&gt;. 
&lt;br&gt;
&lt;br&gt;
I ask candidates to code at the whiteboard. I ask an intensely simple question, because
I am mostly testing for things other than the actual code the person writes. I know,
however, that there are places that actually want you to tackle reasonably challenging
problems. I came across &lt;a href="http://blogs.msdn.com/b/diegumzone/archive/2010/11/27/c-programming-interviews-what-interviewers-want-you-to-show.aspx"&gt;this
blog entry&lt;/a&gt; by &lt;a href="http://blogs.msdn.com/b/diegumzone/"&gt;Diego Dagum&lt;/a&gt; (who
edits The Architecture Journal, writes architecture columns, and is committed to native
C++big time) that walks you through a C++ whiteboard problem that is decidedly non-trivial.
What I found interesting is that he starts his "thinking aloud" the same way I would,
but then when I would start writing something that worked for valid input, he first
started to set out examples of invalid input. And when he wrote the code, it starts
by rejecting various categories of invalid input before processing anything. It's
cool to see someone thinking differently from me. 
&lt;br&gt;
&lt;br&gt;
One thing really struck me. He spends over a page on the signature of his method -
why he called it rtoi, why it returns an unsigned int, why its argument is const,
whether it should take a&amp;nbsp; unicode string or not, why an STL string and not a
char*. See how much these problems reveal about a person? That kind of care and precision
is not something you can discover by asking a person "how important is it to you that
a method signature is chosen with care? Can you give me some examples of naming methods
you have done?" Coding in a job interview is about so much more than syntax. Are you
prepared for the whiteboard?&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=0a2c6405-d286-4ba8-8dfe-bdc50dfe7a1c" /&gt;</description>
      <category>C++</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=5a189868-d89b-46e6-a55e-3057eaa5f7a7</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=5a189868-d89b-46e6-a55e-3057eaa5f7a7</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.msteched.com/Speakers/Kate-Gregory">
            <img src="content/binary/ms-teched-logo.png" border="0" />
          </a>
        </p>
        <p>
Wow, these things get up there fast! My sessions were very well received and I had
such a great time doing them! In the order I delivered them, they are:
</p>
        <p>
        </p>
        <ul>
          <li>
            <a href="http://www.msteched.com/2010/Europe/WIT001">Women In Technology Panel</a> -
Claudia Woods, Freena Eijffinger, Paula Januszkiewicz, and Rhonda Layfield joined
me to take questions from the audience and talk about what was on everyone's mind.
There's really no video - just the title slide for the whole hour. Please listen!</li>
          <li>
            <a href="http://www.msteched.com/2010/Europe/WCL322">The Windows API Code Pack: Add
Windows 7 Features to Your Application</a> - This one includes screen capture so you
can follow along in the demos. You can also download the powerpoints from this page,
and as I mention in the talk, the demo code is the samples that come with the Code
Pack.</li>
          <li>
            <a href="http://www.msteched.com/2010/Europe/DEV311">Modern Programming with C++0x
in Microsoft Visual C++ 2010</a> - I had a great time delivering this talk even though
it was the first time I delivered this version of it. The attendees responded by putting
the talk in the top ten for the whole conference - thankyou! It, too captures the
screen and slides, and you can download the powerpoints.</li>
          <li>
            <a href="http://www.msteched.com/2010/Europe/WCL329">Advanced Programming Patterns
for Windows 7</a> - Another talk I was doing for the first time and I enjoyed it too.
If you'd like the sample code, stay tuned - I will blog when the recipes are released.
The slides are with the video of the screen and slides.</li>
        </ul>
        <p>
        </p>
        <p>
If you came in person, <b>thank you</b>! If you couldn't be there, please watch the
videos and leave me a comment. Speaking on technical topics really is the most fun
you can have standing up, and I can't do it without audiences.
</p>
        <p>
Kate
</p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=5a189868-d89b-46e6-a55e-3057eaa5f7a7" />
      </body>
      <title>Tech Ed Videos are Up</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=5a189868-d89b-46e6-a55e-3057eaa5f7a7</guid>
      <link>http://www.gregcons.com/KateBlog/TechEdVideosAreUp.aspx</link>
      <pubDate>Sat, 13 Nov 2010 13:41:15 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.msteched.com/Speakers/Kate-Gregory"&gt;&lt;img src="content/binary/ms-teched-logo.png" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Wow, these things get up there fast! My sessions were very well received and I had
such a great time doing them! In the order I delivered them, they are:
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.msteched.com/2010/Europe/WIT001"&gt;Women In Technology Panel&lt;/a&gt; -
Claudia Woods, Freena Eijffinger, Paula Januszkiewicz, and Rhonda Layfield joined
me to take questions from the audience and talk about what was on everyone's mind.
There's really no video - just the title slide for the whole hour. Please listen!&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.msteched.com/2010/Europe/WCL322"&gt;The Windows API Code Pack: Add
Windows 7 Features to Your Application&lt;/a&gt; - This one includes screen capture so you
can follow along in the demos. You can also download the powerpoints from this page,
and as I mention in the talk, the demo code is the samples that come with the Code
Pack.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.msteched.com/2010/Europe/DEV311"&gt;Modern Programming with C++0x
in Microsoft Visual C++ 2010&lt;/a&gt; - I had a great time delivering this talk even though
it was the first time I delivered this version of it. The attendees responded by putting
the talk in the top ten for the whole conference - thankyou! It, too captures the
screen and slides, and you can download the powerpoints.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.msteched.com/2010/Europe/WCL329"&gt;Advanced Programming Patterns
for Windows 7&lt;/a&gt; - Another talk I was doing for the first time and I enjoyed it too.
If you'd like the sample code, stay tuned - I will blog when the recipes are released.
The slides are with the video of the screen and slides.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
If you came in person, &lt;b&gt;thank you&lt;/b&gt;! If you couldn't be there, please watch the
videos and leave me a comment. Speaking on technical topics really is the most fun
you can have standing up, and I can't do it without audiences.
&lt;/p&gt;
&lt;p&gt;
Kate
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=5a189868-d89b-46e6-a55e-3057eaa5f7a7" /&gt;</description>
      <category>C++</category>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Speaking</category>
      <category>Visual Studio 2010</category>
      <category>Windows 7</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=69b93972-11a5-48a6-81c6-31c34e8f2dc7</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=69b93972-11a5-48a6-81c6-31c34e8f2dc7</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://www.bizspark.com/">BizSpark </a>is
an amazing program. Startups (companies under 3 years old with revenue under a million
dollars a year) that are making software can have full access to Microsoft developer
tools (yes, MSDN Ultimate for every developer in the company) for FREE. There is a
$100 exit fee, but it costs you nothing to get started. We are a Network Partner and
have sponsored a number of our mentoring clients into the program.<br /><br /><img src="content/binary/BizSparkTile.jpg" border="0" /><br /><br />
Well now some firms are seeing the end of that three-year membership ahead of them
and wondering, what's next? <a href="http://blogs.msdn.com/b/somasegar/archive/2010/11/04/bizspark-graduation-offer-for-startups.aspx">Soma
has announced</a> a truly generous offer. Graduates from the program can have that
exit fee (nominal as it was) waived, and can keep and continue to use all the software
they acquired while in the program. For some, this will be all they need to keep on
making great software with those tools. But some will want newer versions as they
are released, or will want the Windows Azure subscriptions that come with an MSDN
subscription. So for the (very low) price of about $1000 per developer, they can continue
their subscriptions for another two years. That will take care of developer tools
like Visual Studio. As well, they can buy Microsoft Software Assurance at half price,
if they need production licenses of Windows or SQL Server.<br /><br />
If your startup has been in business three years, and you've been paying people and
renting an office all that time, I'm sure these prices look delightfully affordable
to you. If you've been hesitating about joining BizSpark because you weren't sure
what would happen after the three years, well now you know, so don't hold back! For
those who are eligible it really is the best deal in town.<br /><br />
Kate<br /><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=69b93972-11a5-48a6-81c6-31c34e8f2dc7" /></body>
      <title>What happens after BizSpark?</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=69b93972-11a5-48a6-81c6-31c34e8f2dc7</guid>
      <link>http://www.gregcons.com/KateBlog/WhatHappensAfterBizSpark.aspx</link>
      <pubDate>Tue, 09 Nov 2010 13:13:33 GMT</pubDate>
      <description>&lt;a href="http://www.bizspark.com/"&gt;BizSpark &lt;/a&gt;is an amazing program. Startups (companies
under 3 years old with revenue under a million dollars a year) that are making software
can have full access to Microsoft developer tools (yes, MSDN Ultimate for every developer
in the company) for FREE. There is a $100 exit fee, but it costs you nothing to get
started. We are a Network Partner and have sponsored a number of our mentoring clients
into the program.&lt;br&gt;
&lt;br&gt;
&lt;img src="content/binary/BizSparkTile.jpg" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
Well now some firms are seeing the end of that three-year membership ahead of them
and wondering, what's next? &lt;a href="http://blogs.msdn.com/b/somasegar/archive/2010/11/04/bizspark-graduation-offer-for-startups.aspx"&gt;Soma
has announced&lt;/a&gt; a truly generous offer. Graduates from the program can have that
exit fee (nominal as it was) waived, and can keep and continue to use all the software
they acquired while in the program. For some, this will be all they need to keep on
making great software with those tools. But some will want newer versions as they
are released, or will want the Windows Azure subscriptions that come with an MSDN
subscription. So for the (very low) price of about $1000 per developer, they can continue
their subscriptions for another two years. That will take care of developer tools
like Visual Studio. As well, they can buy Microsoft Software Assurance at half price,
if they need production licenses of Windows or SQL Server.&lt;br&gt;
&lt;br&gt;
If your startup has been in business three years, and you've been paying people and
renting an office all that time, I'm sure these prices look delightfully affordable
to you. If you've been hesitating about joining BizSpark because you weren't sure
what would happen after the three years, well now you know, so don't hold back! For
those who are eligible it really is the best deal in town.&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=69b93972-11a5-48a6-81c6-31c34e8f2dc7" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=3c0fe4c7-f7b3-4b51-a5f4-3014214807cb</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=3c0fe4c7-f7b3-4b51-a5f4-3014214807cb</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">Let's say you've written a great client
(that is, not web) application. Perhaps you've added some specific features to make
it great on Windows 7. Certainly you've made sure it runs on Windows 7. Or perhaps
on Windows Server 2008 R2. Or maybe your app runs on Windows Azure, or Windows Phone
7. Good work! You put time and effort into confirming that your app fits your chosen
platform. Now, would you like to be able to prove it with a suite of automated tests
and a logo that shows you passed them? Of course you would.<br /><br />
So head on over to <a href="http://www.microsoftplatformready.com/home.aspx">Microsoft
Platform Ready</a> and take a look around. You'll find training resources to help
you build applications that target Windows 7, Windows Server 2008 R2, and Windows
Azure. You can test your app and get logos like<b> Powered by Windows Azure</b> and <b>Works
with Windows Server 2008 R2</b>.You can even showcase your application in a marketplace,
and take advantage of special offers like extended trials of developer tools from
various partners.<br /><br />
This is an obvious step for anyone building a client application, on any part of the
Microsoft platform. Investigate, join, reap the rewards :-).<br /><br />
Kate 
<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=3c0fe4c7-f7b3-4b51-a5f4-3014214807cb" /></body>
      <title>Want to prove your Windows app makes the grade?</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=3c0fe4c7-f7b3-4b51-a5f4-3014214807cb</guid>
      <link>http://www.gregcons.com/KateBlog/WantToProveYourWindowsAppMakesTheGrade.aspx</link>
      <pubDate>Sun, 07 Nov 2010 12:57:05 GMT</pubDate>
      <description>Let's say you've written a great client (that is, not web) application. Perhaps you've added some specific features to make it great on Windows 7. Certainly you've made sure it runs on Windows 7. Or perhaps on Windows Server 2008 R2. Or maybe your app runs on Windows Azure, or Windows Phone 7. Good work! You put time and effort into confirming that your app fits your chosen platform. Now, would you like to be able to prove it with a suite of automated tests and a logo that shows you passed them? Of course you would.&lt;br&gt;
&lt;br&gt;
So head on over to &lt;a href="http://www.microsoftplatformready.com/home.aspx"&gt;Microsoft
Platform Ready&lt;/a&gt; and take a look around. You'll find training resources to help
you build applications that target Windows 7, Windows Server 2008 R2, and Windows
Azure. You can test your app and get logos like&lt;b&gt; Powered by Windows Azure&lt;/b&gt; and &lt;b&gt;Works
with Windows Server 2008 R2&lt;/b&gt;.You can even showcase your application in a marketplace,
and take advantage of special offers like extended trials of developer tools from
various partners.&lt;br&gt;
&lt;br&gt;
This is an obvious step for anyone building a client application, on any part of the
Microsoft platform. Investigate, join, reap the rewards :-).&lt;br&gt;
&lt;br&gt;
Kate 
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=3c0fe4c7-f7b3-4b51-a5f4-3014214807cb" /&gt;</description>
      <category>Client Development</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Windows 7</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=1c5f9648-ca73-4d87-a1ba-fcef7834b5e0</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=1c5f9648-ca73-4d87-a1ba-fcef7834b5e0</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
You may have noticed that the <a href="http://www.gregcons.com/KateBlog/FallCrossCanadaTour.aspx">fall
tour I'm doing</a> features morning talks that go till about 11:30, and evening talks
that start at 6pm. I've decided that between those two, I'll spend the afternoon in
a coffee shop and host an "on the road coffee and code". As I explain on the<a href="http://www.gregcons.com/coffeeandcode.aspx"> Coffee
and Code page</a> I keep for this purpose, this is really informal. Just stop by,
say hi, we can talk about whatever you like. If you were at the morning session, you
might want to just walk with me from the venue to the coffee shop and continue the
conversation. Or if you're coming to the evening session, you might want to try to
find me during the afternoon to ask something specific, then head to the venue together.
Or maybe you have a topic to discuss that has nothing to do with <a href="http://blogs.msdn.com/b/cdndevs/archive/2010/11/02/building-awesome-apps-for-windows-7-community-tour.aspx">Building
Awesome Windows 7 Applications</a> in managed code: a C++ question, or an extending
Visual Studio 2010 question, or whatever. That's great, and the Coffee and Code format
is just the place for us to have that chat.
</p>
        <p>
          <img src="http://www.gregcons.com/images/coffee%20cup.jpg" alt="Levitating coffee cup from microsoft.ca/office" />  <img src="http://www.gregcons.com/images/laptop.jpg" alt="Ancient laptop from microsoft.ca/office" /></p>
        <p>
If you live or work near the venues for the fall tour, I'd appreciate your suggestions
(by email or twitter) for where to hold these. Obviously we need wifi, power, and
a table we can hog for most of the day. My default choice is Starbucks, but if you
know a better one that I can easily walk to, please tell me about it. Once I've chosen
the location I can finalize the times.
</p>
        <p>
Looking forward to meeting everyone,
</p>
        <p>
Kate
</p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=1c5f9648-ca73-4d87-a1ba-fcef7834b5e0" />
      </body>
      <title>Coffee and Code in Montreal, Mississauga and Ottawa</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=1c5f9648-ca73-4d87-a1ba-fcef7834b5e0</guid>
      <link>http://www.gregcons.com/KateBlog/CoffeeAndCodeInMontrealMississaugaAndOttawa.aspx</link>
      <pubDate>Fri, 05 Nov 2010 16:10:46 GMT</pubDate>
      <description>&lt;p&gt;
You may have noticed that the &lt;a href="http://www.gregcons.com/KateBlog/FallCrossCanadaTour.aspx"&gt;fall
tour I'm doing&lt;/a&gt; features morning talks that go till about 11:30, and evening talks
that start at 6pm. I've decided that between those two, I'll spend the afternoon in
a coffee shop and host an "on the road coffee and code". As I explain on the&lt;a href="http://www.gregcons.com/coffeeandcode.aspx"&gt; Coffee
and Code page&lt;/a&gt; I keep for this purpose, this is really informal. Just stop by,
say hi, we can talk about whatever you like. If you were at the morning session, you
might want to just walk with me from the venue to the coffee shop and continue the
conversation. Or if you're coming to the evening session, you might want to try to
find me during the afternoon to ask something specific, then head to the venue together.
Or maybe you have a topic to discuss that has nothing to do with &lt;a href="http://blogs.msdn.com/b/cdndevs/archive/2010/11/02/building-awesome-apps-for-windows-7-community-tour.aspx"&gt;Building
Awesome Windows 7 Applications&lt;/a&gt; in managed code: a C++ question, or an extending
Visual Studio 2010 question, or whatever. That's great, and the Coffee and Code format
is just the place for us to have that chat.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.gregcons.com/images/coffee%20cup.jpg" alt="Levitating coffee cup from microsoft.ca/office"&gt; &amp;nbsp;&lt;img src="http://www.gregcons.com/images/laptop.jpg" alt="Ancient laptop from microsoft.ca/office"&gt;
&lt;/p&gt;
&lt;p&gt;
If you live or work near the venues for the fall tour, I'd appreciate your suggestions
(by email or twitter) for where to hold these. Obviously we need wifi, power, and
a table we can hog for most of the day. My default choice is Starbucks, but if you
know a better one that I can easily walk to, please tell me about it. Once I've chosen
the location I can finalize the times.
&lt;/p&gt;
&lt;p&gt;
Looking forward to meeting everyone,
&lt;/p&gt;
&lt;p&gt;
Kate
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=1c5f9648-ca73-4d87-a1ba-fcef7834b5e0" /&gt;</description>
      <category>C++</category>
      <category>Canadian Colour</category>
      <category>Client Development</category>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Visual Studio 2010</category>
      <category>Windows 7</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=87d67c82-6791-4ef4-82c4-af684fc5e0f6</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=87d67c82-6791-4ef4-82c4-af684fc5e0f6</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here's something that happens to me a lot. I'm working on a project that is mostly
Technology A, but I need a little Technology B. I want a sample or two to show me
what it can do. I search the web, but often find mostly things written by people who
don't know what they're doing and are posting their (possibly flawed) code into question-and-answer
forums. I search MSDN, but often the newest technologies don't have their samples
yet. I also remember to check if the <a href="http://1code.codeplex.com/">All-in-One
Framework</a> people (<a href="http://www.gregcons.com/KateBlog/CodingGuidelinesFromTheAllinOneFrameworkTeam.aspx">I
blogged about their coding standards document earlier</a>) have anything. And if I
still get nowhere I start asking people I know if they have one.
</p>
        <p>
Well, now those helpful folks at All-in-One are kicking it up a notch. And remember,
they cover all technologies and languages related to Microsoft tools. (Want to know
more about them? Here's a <a href="http://www.youtube.com/watch?v=cO5Li3APU58">fun
video</a>.)<br /></p>
        <p>
          <img src="content/binary/samplerequestservice.png" border="0" />
        </p>
        <p>
And this goes back to one of my earliest blog posts - <a href="http://www.gregcons.com/KateBlog/WhatYouWantToGetCouldBeWhatINeedToGive.aspx">what
you want may be what I need to give</a>. Imagine it's your job to decide what samples
to write. How are you ever going to find out what developers out in the big wide world
want samples of? You could come up with a great idea and then find out people already
had all the samples they needed for that. So that person wants ideas for samples.
And here you are needing a sample. See how that works? 
<br /></p>
        <p>
Just visit the wiki page and follow their instructions. It's a tad more complex than
"shoot me an email and tell me what you need" and for good reason. Give it a whirl
if there's something you need!
</p>
        <p>
Kate<br /></p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=87d67c82-6791-4ef4-82c4-af684fc5e0f6" />
      </body>
      <title>Get Microsoft to write you a code sample (really)</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=87d67c82-6791-4ef4-82c4-af684fc5e0f6</guid>
      <link>http://www.gregcons.com/KateBlog/GetMicrosoftToWriteYouACodeSampleReally.aspx</link>
      <pubDate>Mon, 01 Nov 2010 15:40:23 GMT</pubDate>
      <description>&lt;p&gt;
Here's something that happens to me a lot. I'm working on a project that is mostly
Technology A, but I need a little Technology B. I want a sample or two to show me
what it can do. I search the web, but often find mostly things written by people who
don't know what they're doing and are posting their (possibly flawed) code into question-and-answer
forums. I search MSDN, but often the newest technologies don't have their samples
yet. I also remember to check if the &lt;a href="http://1code.codeplex.com/"&gt;All-in-One
Framework&lt;/a&gt; people (&lt;a href="http://www.gregcons.com/KateBlog/CodingGuidelinesFromTheAllinOneFrameworkTeam.aspx"&gt;I
blogged about their coding standards document earlier&lt;/a&gt;) have anything. And if I
still get nowhere I start asking people I know if they have one.
&lt;/p&gt;
&lt;p&gt;
Well, now those helpful folks at All-in-One are kicking it up a notch. And remember,
they cover all technologies and languages related to Microsoft tools. (Want to know
more about them? Here's a &lt;a href="http://www.youtube.com/watch?v=cO5Li3APU58"&gt;fun
video&lt;/a&gt;.)&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="content/binary/samplerequestservice.png" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
And this goes back to one of my earliest blog posts - &lt;a href="http://www.gregcons.com/KateBlog/WhatYouWantToGetCouldBeWhatINeedToGive.aspx"&gt;what
you want may be what I need to give&lt;/a&gt;. Imagine it's your job to decide what samples
to write. How are you ever going to find out what developers out in the big wide world
want samples of? You could come up with a great idea and then find out people already
had all the samples they needed for that. So that person wants ideas for samples.
And here you are needing a sample. See how that works? 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
Just visit the wiki page and follow their instructions. It's a tad more complex than
"shoot me an email and tell me what you need" and for good reason. Give it a whirl
if there's something you need!
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=87d67c82-6791-4ef4-82c4-af684fc5e0f6" /&gt;</description>
      <category>C++</category>
      <category>Client Development</category>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Visual Studio 2010</category>
      <category>Windows 7</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=530de662-187a-4271-8312-0ed82805adde</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=530de662-187a-4271-8312-0ed82805adde</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">Jennifer Marsman has built <a href="http://blogs.msdn.com/b/jennifer/archive/2010/10/15/windows-7-development-resources.aspx">a
very nice list of Windows 7 developer resources</a>. Of course, she had me at Code
Pack (the very first item she lists as a matter of fact), but she carries on, drilling
into both native and managed scenarios, covering libraries, SDKs, training materials,
UX guidelines, samples, blogs - even Twitter handles!<br /><br />
There is a LOT of material out there and it's a little bit fragmented. This is a great
post to help you find your way around. Remember, if you have a Windows app, it should
be a Windows 7 app!<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=530de662-187a-4271-8312-0ed82805adde" /></body>
      <title>Great roundup of Windows 7 developer resources</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=530de662-187a-4271-8312-0ed82805adde</guid>
      <link>http://www.gregcons.com/KateBlog/GreatRoundupOfWindows7DeveloperResources.aspx</link>
      <pubDate>Sat, 16 Oct 2010 17:07:42 GMT</pubDate>
      <description>Jennifer Marsman has built &lt;a href="http://blogs.msdn.com/b/jennifer/archive/2010/10/15/windows-7-development-resources.aspx"&gt;a
very nice list of Windows 7 developer resources&lt;/a&gt;. Of course, she had me at Code
Pack (the very first item she lists as a matter of fact), but she carries on, drilling
into both native and managed scenarios, covering libraries, SDKs, training materials,
UX guidelines, samples, blogs - even Twitter handles!&lt;br&gt;
&lt;br&gt;
There is a LOT of material out there and it's a little bit fragmented. This is a great
post to help you find your way around. Remember, if you have a Windows app, it should
be a Windows 7 app!&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=530de662-187a-4271-8312-0ed82805adde" /&gt;</description>
      <category>C++</category>
      <category>Client Development</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Windows 7</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=775e881b-4e35-49db-a1a2-5bbb106803b1</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=775e881b-4e35-49db-a1a2-5bbb106803b1</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm teaching OO design and UML again this term, and one of the things I emphasize
to the class is the dangers of coupling. (Get your mind out of the gutter, I mean
classes with dependencies on each other.) It's not about calling methods of each other
necessarily; it's more about if-I-change-this-one, I'll-have-to-change-this-one-too.
Changes that ripple through a system are expensive and dangerous.
</p>
        <p>
When I am helping clients with interop, they are often surprised to learn how entire
applications and libraries can depend on each other without ever calling each other's
code. For example, App A writes a record to a database table. Service B checks the
table regularly for new records (or records with a 0 in the Handled column, or whatever)
and calls a web service (or whatever.) Those applications are now coupled - if a change
in one necessitates a change in the format of that table (or its name, etc) then the
other must be changed too. Thinking ahead and doing all you can to reduce this kind
of coupling is part of the challenge of doing good application integration, even if
there are no interop calls in the solution.
</p>
        <p>
And then there's performance. So often left until last, it provides another consideration
that you should ideally have in mind all the way along. And as <a href="http://blogs.msdn.com/b/ricom/archive/2010/09/27/less-loosely-coupled-than-meets-the-eye.aspx">Rico
Mariani points out</a>, it also couples applications and libraries you may have thought
were independent:
</p>
        <blockquote>
          <p>
Two subsystems that both (loosely) use 2/3 of the L2 cache are going to use 4/3 of
a cache... that’s not good. There may be no lines between them in the architecture
diagram but they are going to destroy each others ability to work.
</p>
        </blockquote>
        <p>
Sound advice as always. Please read the post, and keep one more "don't forget" floating
around as you design and architect your systems and solutions.
</p>
        <p>
Kate<br /></p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=775e881b-4e35-49db-a1a2-5bbb106803b1" />
      </body>
      <title>Coupling where you don't expect it</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=775e881b-4e35-49db-a1a2-5bbb106803b1</guid>
      <link>http://www.gregcons.com/KateBlog/CouplingWhereYouDontExpectIt.aspx</link>
      <pubDate>Tue, 12 Oct 2010 14:58:52 GMT</pubDate>
      <description>&lt;p&gt;
I'm teaching OO design and UML again this term, and one of the things I emphasize
to the class is the dangers of coupling. (Get your mind out of the gutter, I mean
classes with dependencies on each other.) It's not about calling methods of each other
necessarily; it's more about if-I-change-this-one, I'll-have-to-change-this-one-too.
Changes that ripple through a system are expensive and dangerous.
&lt;/p&gt;
&lt;p&gt;
When I am helping clients with interop, they are often surprised to learn how entire
applications and libraries can depend on each other without ever calling each other's
code. For example, App A writes a record to a database table. Service B checks the
table regularly for new records (or records with a 0 in the Handled column, or whatever)
and calls a web service (or whatever.) Those applications are now coupled - if a change
in one necessitates a change in the format of that table (or its name, etc) then the
other must be changed too. Thinking ahead and doing all you can to reduce this kind
of coupling is part of the challenge of doing good application integration, even if
there are no interop calls in the solution.
&lt;/p&gt;
&lt;p&gt;
And then there's performance. So often left until last, it provides another consideration
that you should ideally have in mind all the way along. And as &lt;a href="http://blogs.msdn.com/b/ricom/archive/2010/09/27/less-loosely-coupled-than-meets-the-eye.aspx"&gt;Rico
Mariani points out&lt;/a&gt;, it also couples applications and libraries you may have thought
were independent:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
Two subsystems that both (loosely) use 2/3 of the L2 cache are going to use 4/3 of
a cache... that’s not good. There may be no lines between them in the architecture
diagram but they are going to destroy each others ability to work.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Sound advice as always. Please read the post, and keep one more "don't forget" floating
around as you design and architect your systems and solutions.
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=775e881b-4e35-49db-a1a2-5bbb106803b1" /&gt;</description>
      <category>Client Development</category>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=ccfa6d4d-f2f8-49f7-82cb-9fa90f2afc6d</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=ccfa6d4d-f2f8-49f7-82cb-9fa90f2afc6d</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I love this image:
</p>
        <p>
          <img src="http://www.gregcons.com/KateBlog/content/binary/blahblah.png" border="0" />
        </p>
        <p>
I know this is true because in my role as friends-and-family help desk, I get people
to read the error messages and then I repeat whatever they just told me and then they
are like "oh, I get it! Thanks! I'm glad I know someone who understands these darn
computers!" This works over the phone when I can't even see the message. 
<br /></p>
        <p>
Now why am I mentioning this, besides the fact I love this dialog? Because it comes
from <a href="http://blogs.msdn.com/b/cjacks/archive/2008/12/11/you-can-t-fix-application-compatibility-problems-with-dialog-boxes.aspx">a
lovely blog entry by Chris Jackson</a> on why app compat problems can't be fixed by
talking to the user about them. You slave over a lovely dialog with a button which
might as well say CLICK HERE TO GET A VERSION THAT DOESN'T HAVE THIS PROBLEM or a
checkbox that might as well say CHECK THIS IF YOU DON'T THINK ITS A PROBLEM AND ARE
SICK OF BEING REMINDED but instead the user clicks JUST THIS ONCE I WANT TO USE THE
OLD ONE BUT BE SURE TO TELL ME ALL THIS AGAIN NEXT TIME. 
</p>
        <p>
Is there a solution? I don't know. But you need to know people are like this.
</p>
        <p>
Kate<br /></p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=ccfa6d4d-f2f8-49f7-82cb-9fa90f2afc6d" />
      </body>
      <title>Lalalala I'm not reading</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=ccfa6d4d-f2f8-49f7-82cb-9fa90f2afc6d</guid>
      <link>http://www.gregcons.com/KateBlog/LalalalaImNotReading.aspx</link>
      <pubDate>Tue, 28 Sep 2010 18:36:19 GMT</pubDate>
      <description>&lt;p&gt;
I love this image:
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.gregcons.com/KateBlog/content/binary/blahblah.png" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
I know this is true because in my role as friends-and-family help desk, I get people
to read the error messages and then I repeat whatever they just told me and then they
are like "oh, I get it! Thanks! I'm glad I know someone who understands these darn
computers!" This works over the phone when I can't even see the message. 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
Now why am I mentioning this, besides the fact I love this dialog? Because it comes
from &lt;a href="http://blogs.msdn.com/b/cjacks/archive/2008/12/11/you-can-t-fix-application-compatibility-problems-with-dialog-boxes.aspx"&gt;a
lovely blog entry by Chris Jackson&lt;/a&gt; on why app compat problems can't be fixed by
talking to the user about them. You slave over a lovely dialog with a button which
might as well say CLICK HERE TO GET A VERSION THAT DOESN'T HAVE THIS PROBLEM or a
checkbox that might as well say CHECK THIS IF YOU DON'T THINK ITS A PROBLEM AND ARE
SICK OF BEING REMINDED but instead the user clicks JUST THIS ONCE I WANT TO USE THE
OLD ONE BUT BE SURE TO TELL ME ALL THIS AGAIN NEXT TIME.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Is there a solution? I don't know. But you need to know people are like this.
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=ccfa6d4d-f2f8-49f7-82cb-9fa90f2afc6d" /&gt;</description>
      <category>Client Development</category>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=1f6160bd-8d5e-4bc7-8cee-726e4e5efdff</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=1f6160bd-8d5e-4bc7-8cee-726e4e5efdff</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">I came across this blog post of a <a href="http://worldofsu.com/philipsu/?page_id=193">farewell
email from Philip Su</a>, written as he was leaving Microsoft after twelve years.
You might expect that someone leaving a company would have some negative things to
say about it, but not Philip. He sounds like a very nice person and one who's done
pretty well by being nice. I thoroughly approve. It is full of specific and actionable
advice as well as philosophy. I liked "Smart people understand why smart people disagree."
and his thoughts on how people rank themselves, and what influences their ranking
of others.<br /><br />
Well worth a read.<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=1f6160bd-8d5e-4bc7-8cee-726e4e5efdff" /></body>
      <title>Career Advice: Be Nice. Work Hard.</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=1f6160bd-8d5e-4bc7-8cee-726e4e5efdff</guid>
      <link>http://www.gregcons.com/KateBlog/CareerAdviceBeNiceWorkHard.aspx</link>
      <pubDate>Wed, 22 Sep 2010 20:16:33 GMT</pubDate>
      <description>I came across this blog post of a &lt;a href="http://worldofsu.com/philipsu/?page_id=193"&gt;farewell
email from Philip Su&lt;/a&gt;, written as he was leaving Microsoft after twelve years.
You might expect that someone leaving a company would have some negative things to
say about it, but not Philip. He sounds like a very nice person and one who's done
pretty well by being nice. I thoroughly approve. It is full of specific and actionable
advice as well as philosophy. I liked "Smart people understand why smart people disagree."
and his thoughts on how people rank themselves, and what influences their ranking
of others.&lt;br&gt;
&lt;br&gt;
Well worth a read.&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=1f6160bd-8d5e-4bc7-8cee-726e4e5efdff" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=dce4f4cd-13ee-4fc9-80bd-20c8b0d35c81</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=dce4f4cd-13ee-4fc9-80bd-20c8b0d35c81</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">A first glance, a <a href="http://www.amazon.com/Working-Crowd-Social-Marketing-Business/dp/190612471X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1283974021&amp;sr=8-1">book
about social media</a> might seem to be "dancing about architecture." But of course
the target audience for the book is people who are not yet fully fluent in social
media and it makes perfect sense to talk to such people using a medium in which they
are fully fluent. That means book form makes sense.<br /><br />
I was lucky enough to get a preview copy of <span id="btAsinTitle"><u>Working the
Crowd: Social Media Marketing for Business </u>from <a href="http://eileenbrown.wordpress.com/">Eileen
Brown</a>. She and I have been working together and bumping into each other for years,
which is why I agreed to read it. But I'm recommending it simply because it's good.
It's full of no-nonsense advice and useful anecdotes. Just a few pages in, for example,
she says:<br /><br /></span><blockquote><span id="btAsinTitle">If you want to progress in business, don’t
wait to be discovered.  Make sure you have a great online profile and a positive
brand.   </span><br /><span id="btAsinTitle"></span></blockquote><span id="btAsinTitle"><br />
I'm not saying that no-one has thought of that before. I am saying that clearly stated
and useful advice is a good thing, and this book is full of such advice. She clearly
tackles this "this is just a fad" crowd, explains about "influencers" (like me) and
lays out specific actions steps you can follow to have a good social media experience.
This includes how to measure what is happening, which most companies desparately need.
She even covers specific sites and tools, guidelines for blogging and Twitter, and
how to protect yourself from reputation damage or legal consequences.<br /><br />
It's a good book. If you don't have a social media strategy yet, then reading this
one will take you a long way forward. I recommend it to any business wondering about
"the twitter". You can <a href="http://www.amazon.com/Working-Crowd-Social-Marketing-Business/dp/190612471X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1283974021&amp;sr=8-1">pre-order
on Amazon</a> now and I suggest you do, though you may want to adjust this link to
point to the Amazon nearest you.<br /><br />
Kate<br /></span><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=dce4f4cd-13ee-4fc9-80bd-20c8b0d35c81" /></body>
      <title>Good Social Media Book</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=dce4f4cd-13ee-4fc9-80bd-20c8b0d35c81</guid>
      <link>http://www.gregcons.com/KateBlog/GoodSocialMediaBook.aspx</link>
      <pubDate>Sat, 18 Sep 2010 17:36:43 GMT</pubDate>
      <description>A first glance, a &lt;a href="http://www.amazon.com/Working-Crowd-Social-Marketing-Business/dp/190612471X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1283974021&amp;amp;sr=8-1"&gt;book
about social media&lt;/a&gt; might seem to be "dancing about architecture." But of course
the target audience for the book is people who are not yet fully fluent in social
media and it makes perfect sense to talk to such people using a medium in which they
are fully fluent. That means book form makes sense.&lt;br&gt;
&lt;br&gt;
I was lucky enough to get a preview copy of &lt;span id="btAsinTitle"&gt;&lt;u&gt;Working the
Crowd: Social Media Marketing for Business &lt;/u&gt;from &lt;a href="http://eileenbrown.wordpress.com/"&gt;Eileen
Brown&lt;/a&gt;. She and I have been working together and bumping into each other for years,
which is why I agreed to read it. But I'm recommending it simply because it's good.
It's full of no-nonsense advice and useful anecdotes. Just a few pages in, for example,
she says:&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;blockquote&gt;&lt;span id="btAsinTitle"&gt;If you want to progress in business, don’t
wait to be discovered.&amp;nbsp; Make sure you have a great online profile and a positive
brand.&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;br&gt;
&lt;span id="btAsinTitle"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span id="btAsinTitle"&gt;
&lt;br&gt;
I'm not saying that no-one has thought of that before. I am saying that clearly stated
and useful advice is a good thing, and this book is full of such advice. She clearly
tackles this "this is just a fad" crowd, explains about "influencers" (like me) and
lays out specific actions steps you can follow to have a good social media experience.
This includes how to measure what is happening, which most companies desparately need.
She even covers specific sites and tools, guidelines for blogging and Twitter, and
how to protect yourself from reputation damage or legal consequences.&lt;br&gt;
&lt;br&gt;
It's a good book. If you don't have a social media strategy yet, then reading this
one will take you a long way forward. I recommend it to any business wondering about
"the twitter". You can &lt;a href="http://www.amazon.com/Working-Crowd-Social-Marketing-Business/dp/190612471X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1283974021&amp;amp;sr=8-1"&gt;pre-order
on Amazon&lt;/a&gt; now and I suggest you do, though you may want to adjust this link to
point to the Amazon nearest you.&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;/span&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=dce4f4cd-13ee-4fc9-80bd-20c8b0d35c81" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=7768b17d-d3db-428d-a8d8-148eb0280692</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=7768b17d-d3db-428d-a8d8-148eb0280692</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">I'm having a Coffee and Code of my own
in downtown Toronto on September 23rd all afternoon. Actually, I'll start at 11 and
be there until 6 to catch the "stop by after work" folks. If you've heard of Coffee
and Code at all, you know how this works. If you haven't, I've made <a href="http://www.gregcons.com/CoffeeAndCode.aspx">a
page on our web site about it</a>. Just drop in and ask me "Is it true that the C++
language is getting new keywords and stuff? How can that be? And does it really matter?"
or "Do you have the Windows Phone 7 tools installed? Can you show me an app on the
emulator?" or "Is Visual Studio 2010 really nicer than Visual Studio 2008?" or "What
local user group meetings should I be coming to?" or whatever else is on your mind.<br /><br />
So stop by any time between 11 and 6 on the 23rd to the Starbucks at Yonge and King.
I'll be at the big table at the back, just walk up and say hi. We'll talk about whatever
is on your mind, maybe some of you will talk amongst yourselves, maybe you'll show
me what you're working on. I'm looking forward to it!<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=7768b17d-d3db-428d-a8d8-148eb0280692" /></body>
      <title>Hosting a Coffee and Code</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=7768b17d-d3db-428d-a8d8-148eb0280692</guid>
      <link>http://www.gregcons.com/KateBlog/HostingACoffeeAndCode.aspx</link>
      <pubDate>Thu, 02 Sep 2010 14:18:01 GMT</pubDate>
      <description>I'm having a Coffee and Code of my own in downtown Toronto on September 23rd all afternoon. Actually, I'll start at 11 and be there until 6 to catch the "stop by after work" folks. If you've heard of Coffee and Code at all, you know how this works. If you haven't, I've made &lt;a href="http://www.gregcons.com/CoffeeAndCode.aspx"&gt;a
page on our web site about it&lt;/a&gt;. Just drop in and ask me "Is it true that the C++
language is getting new keywords and stuff? How can that be? And does it really matter?"
or "Do you have the Windows Phone 7 tools installed? Can you show me an app on the
emulator?" or "Is Visual Studio 2010 really nicer than Visual Studio 2008?" or "What
local user group meetings should I be coming to?" or whatever else is on your mind.&lt;br&gt;
&lt;br&gt;
So stop by any time between 11 and 6 on the 23rd to the Starbucks at Yonge and King.
I'll be at the big table at the back, just walk up and say hi. We'll talk about whatever
is on your mind, maybe some of you will talk amongst yourselves, maybe you'll show
me what you're working on. I'm looking forward to it!&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=7768b17d-d3db-428d-a8d8-148eb0280692" /&gt;</description>
      <category>Consulting Life</category>
      <category>INETA</category>
      <category>Mentoring</category>
      <category>Speaking</category>
      <category>Visual Studio 2010</category>
      <category>Windows 7</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=91f34751-e9b3-4996-bb94-4021aa175a89</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=91f34751-e9b3-4996-bb94-4021aa175a89</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">Let's say you read <a href="http://www.gregcons.com/KateBlog/AMustReadForCDevs.aspx">the
entry about data structure visualizers </a>and in addition to all the STL humour you
got excited about being able to control the way the debugger shows your objects as
you work at understanding your application at runtime. And then you were sad because
you don't do native C++ work and you don't know how you could get the same behaviour
in a managed application. Well, have I got a keyword for you - <a href="http://msdn.microsoft.com/en-us/library/x810d419.aspx">DebuggerDisplay</a>.
Don't like that MSDN page about it? <a href="http://msdn.microsoft.com/en-us/library/ms228992.aspx">Here's
another</a>. Quick and easy, at least for simple types with only a few member variables.
Give it a whirl. There's<a href="http://www.dev102.com/2009/04/09/debuggerdisplay-and-debuggerbrowsable-two-debugger-attributes-you-should-know/"> a
nice example </a>with screen shots at Dev102.<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=91f34751-e9b3-4996-bb94-4021aa175a89" /></body>
      <title>the DebuggerDisplay attribute</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=91f34751-e9b3-4996-bb94-4021aa175a89</guid>
      <link>http://www.gregcons.com/KateBlog/theDebuggerDisplayAttribute.aspx</link>
      <pubDate>Tue, 31 Aug 2010 23:19:29 GMT</pubDate>
      <description>Let's say you read &lt;a href="http://www.gregcons.com/KateBlog/AMustReadForCDevs.aspx"&gt;the
entry about data structure visualizers &lt;/a&gt;and in addition to all the STL humour you
got excited about being able to control the way the debugger shows your objects as
you work at understanding your application at runtime. And then you were sad because
you don't do native C++ work and you don't know how you could get the same behaviour
in a managed application. Well, have I got a keyword for you - &lt;a href="http://msdn.microsoft.com/en-us/library/x810d419.aspx"&gt;DebuggerDisplay&lt;/a&gt;.
Don't like that MSDN page about it? &lt;a href="http://msdn.microsoft.com/en-us/library/ms228992.aspx"&gt;Here's
another&lt;/a&gt;. Quick and easy, at least for simple types with only a few member variables.
Give it a whirl. There's&lt;a href="http://www.dev102.com/2009/04/09/debuggerdisplay-and-debuggerbrowsable-two-debugger-attributes-you-should-know/"&gt; a
nice example &lt;/a&gt;with screen shots at Dev102.&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=91f34751-e9b3-4996-bb94-4021aa175a89" /&gt;</description>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=e34eddb2-23f2-4b1e-95b5-e27c70ae3647</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=e34eddb2-23f2-4b1e-95b5-e27c70ae3647</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">As a new school year starts to roll around
I naturally pay a little more attention to articles about undergraduate education.
I'm once again teaching a one-term course on Object Oriented Design and UML at Trent
University in Peterborough. This is of course just one piece of the curriculum. Trent
is an interdisciplinary place and its graduates are expected to understand the concepts
that underpin what they're learning. In fact this is what I see as the main difference
between those with a university education and those without (though there are exceptions
on both sides.) It's one thing to learn, perhaps by rote, the steps required to make
a certain kind of application, and it's another to understand what you are doing and
why. The latter kind of person generally finds it easier and easier to learn new things,
connecting them to things already known, while the former finds it harder and harder
as a mass of seemingly-unconnected facts moil around in an overly-crammed head that
feels ready to explode.<br /><br />
I approve of valuing concepts over specific how-to's. It's hard work keeping up with
the very latest technology when all you're doing is using it. It's even harder when
you're also working on concepts and trying to teach. I don't expect a university to
teach students how to use a specific user interface framework (MFC, Winforms, WPF,
whatever) -- I expect it to teach them user interface concepts, illustrated with some
framework the prof happens to know that's generally available. The students can then
learn a variety of UI frameworks over their careers. But that doesn't mean I approve
of all the ways in which programming as part of undergraduate education varies from
programming in real life. Two specific variations I have a problem with are team size
and problem size.<br /><br />
In real life, it's rare to work all alone, all the more so when you've only just graduated.
Most university computer science grads will join a team of 2-10 developers reporting
to a lead of some sort, with various people from QA, user reps, the business people
and so on having various positions of semi-authority, semi-teammate in relation to
them. Yet undergrads are generally expected to work alone on all projects and never
discuss them with anyone until handing them in. 
<br /><br />
In real life, problems are not well specified, certainly not as tightly as undergrad
assignments are. Most importantly, in real life user input is bizarrely ill formed.
Users type letters where numbers belong, leave mandatory fields blank, even deliberately
construct complicated bad input as part of hacking attempts. Yet most undergrad assignments
do little or no input validation or error handling unless those are the point of the
assignment. And of course, most undergrad assignments can be completed by an inexperienced
programmer working alone a few hours a week (10 at most) in a week or two while most
real problems take weeks and months of work by one or more dedicated resources to
produce even a preliminary solution.<br /><br />
Trent (and I presume most other universities) addresses these issues with a fourth
year course in which a team of students works on a real problem for an outside entity
- usually a local firm or charity. They must gather requirements, code, test and implement
a solution, and present to their peers and professors a summary of the project. Some
students benefit immensely from this, though most take on far too big a challenge
and struggle to complete it.<br /><br />
My contribution is to point out to my students where things are being simplified for
them, where things would be vastly different in real life. Undergraduate courses simply
cannot be the same as on the job training, and I don't want them to be. I want my
students to be learning concepts and underpinnings as much as language syntax and
how to work particular tools. But I want them to understand that when they start to
put all this to use, things will feel very different than they did during class time.
An assignment from your boss and an assignment from me are very different. (I've blogged
before that in real life, <a href="http://www.gregcons.com/KateBlog/No710ForYou.aspx">you
don't get 7/10</a>, you have to keep doing it until it is right.)<br /><br />
I don't have all the answers. Lots of people muse about this stuff. <a href="http://cacm.acm.org/magazines/2010/1/55760-what-should-we-teach-new-software-developers-why/fulltext">Here's
the inventor of C++ on the same issues</a>. Easy to complain, hard to do anything
about it, but we can all do our bit.<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=e34eddb2-23f2-4b1e-95b5-e27c70ae3647" /></body>
      <title>Teaching undergrads</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=e34eddb2-23f2-4b1e-95b5-e27c70ae3647</guid>
      <link>http://www.gregcons.com/KateBlog/TeachingUndergrads.aspx</link>
      <pubDate>Fri, 27 Aug 2010 20:45:29 GMT</pubDate>
      <description>As a new school year starts to roll around I naturally pay a little more attention to articles about undergraduate education. I'm once again teaching a one-term course on Object Oriented Design and UML at Trent University in Peterborough. This is of course just one piece of the curriculum. Trent is an interdisciplinary place and its graduates are expected to understand the concepts that underpin what they're learning. In fact this is what I see as the main difference between those with a university education and those without (though there are exceptions on both sides.) It's one thing to learn, perhaps by rote, the steps required to make a certain kind of application, and it's another to understand what you are doing and why. The latter kind of person generally finds it easier and easier to learn new things, connecting them to things already known, while the former finds it harder and harder as a mass of seemingly-unconnected facts moil around in an overly-crammed head that feels ready to explode.&lt;br&gt;
&lt;br&gt;
I approve of valuing concepts over specific how-to's. It's hard work keeping up with
the very latest technology when all you're doing is using it. It's even harder when
you're also working on concepts and trying to teach. I don't expect a university to
teach students how to use a specific user interface framework (MFC, Winforms, WPF,
whatever) -- I expect it to teach them user interface concepts, illustrated with some
framework the prof happens to know that's generally available. The students can then
learn a variety of UI frameworks over their careers. But that doesn't mean I approve
of all the ways in which programming as part of undergraduate education varies from
programming in real life. Two specific variations I have a problem with are team size
and problem size.&lt;br&gt;
&lt;br&gt;
In real life, it's rare to work all alone, all the more so when you've only just graduated.
Most university computer science grads will join a team of 2-10 developers reporting
to a lead of some sort, with various people from QA, user reps, the business people
and so on having various positions of semi-authority, semi-teammate in relation to
them. Yet undergrads are generally expected to work alone on all projects and never
discuss them with anyone until handing them in. 
&lt;br&gt;
&lt;br&gt;
In real life, problems are not well specified, certainly not as tightly as undergrad
assignments are. Most importantly, in real life user input is bizarrely ill formed.
Users type letters where numbers belong, leave mandatory fields blank, even deliberately
construct complicated bad input as part of hacking attempts. Yet most undergrad assignments
do little or no input validation or error handling unless those are the point of the
assignment. And of course, most undergrad assignments can be completed by an inexperienced
programmer working alone a few hours a week (10 at most) in a week or two while most
real problems take weeks and months of work by one or more dedicated resources to
produce even a preliminary solution.&lt;br&gt;
&lt;br&gt;
Trent (and I presume most other universities) addresses these issues with a fourth
year course in which a team of students works on a real problem for an outside entity
- usually a local firm or charity. They must gather requirements, code, test and implement
a solution, and present to their peers and professors a summary of the project. Some
students benefit immensely from this, though most take on far too big a challenge
and struggle to complete it.&lt;br&gt;
&lt;br&gt;
My contribution is to point out to my students where things are being simplified for
them, where things would be vastly different in real life. Undergraduate courses simply
cannot be the same as on the job training, and I don't want them to be. I want my
students to be learning concepts and underpinnings as much as language syntax and
how to work particular tools. But I want them to understand that when they start to
put all this to use, things will feel very different than they did during class time.
An assignment from your boss and an assignment from me are very different. (I've blogged
before that in real life, &lt;a href="http://www.gregcons.com/KateBlog/No710ForYou.aspx"&gt;you
don't get 7/10&lt;/a&gt;, you have to keep doing it until it is right.)&lt;br&gt;
&lt;br&gt;
I don't have all the answers. Lots of people muse about this stuff. &lt;a href="http://cacm.acm.org/magazines/2010/1/55760-what-should-we-teach-new-software-developers-why/fulltext"&gt;Here's
the inventor of C++ on the same issues&lt;/a&gt;. Easy to complain, hard to do anything
about it, but we can all do our bit.&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=e34eddb2-23f2-4b1e-95b5-e27c70ae3647" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=f3738ef8-db43-4879-aeca-879c071b5a91</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=f3738ef8-db43-4879-aeca-879c071b5a91</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Have you ever heard of the All-in-One Framework? Well I hadn't. They've been around
for about 18 months. Back in February, on their first anniversary, <a href="http://blogs.msdn.com/b/codefx/archive/2010/02/10/all-in-one-code-framework-celebrates-first-anniversary.aspx">they
described themselves</a> like this:
</p>
        <blockquote>
          <p>
...this initiative [has been] developed by the CodeFx Project Group to an "<a href="http://cfx.codeplex.com/" target="_blank" mce_href="http://cfx.codeplex.com">all-in-one
code framework</a>" that includes more than 300 code samples, covers almost all Microsoft
development technologies, ranks 18th among 13000 open source projects on <a href="http://www.codeplex.com/" mce_href="http://www.codeplex.com">CodePlex</a>,
received numerous kudos from customers, proved its values in real support incidents,
and created a lot of win-win opportunities within the corporation.
</p>
        </blockquote>
        <p>
It looks like the participants are all Microsoft employees and they're collecting
pieces of code for any language and platform that can be used to solve real world
problems. On the CodePlex site, they elaborate:
</p>
        <blockquote>
          <p>
Microsoft All-In-One Code Framework delineates the framework and skeleton of Microsoft
development techniques through typical sample codes in three popular programming languages
(Visual C#, VB.NET, Visual C++). Each sample is elaborately selected, composed, and
documented to demonstrate one frequently-asked, tested or used coding scenario based
on our support experience in MSDN newsgroups and forums. If you are a software developer,
you can fill the skeleton with blood, muscle and soul. If you are a software tester
or a support engineer like us, you may extend the sample codes a little to fit your
specific test scenario or refer your customer to this project if the customer's question
coincides with what we collected.
</p>
        </blockquote>
        <p>
For example, they've written <a href="http://blogs.msdn.com/b/codefx/archive/2010/05/02/invoke-native-c-dll-from-net-code.aspx">a
summary </a>of the ways to call native C++ code from managed code. You can find the
pieces elsewhere, but having them all together makes it easier for you to compare
and contrast. They often <a href="http://blogs.msdn.com/b/codefx/">blog </a>additions
as they are completed.<br /></p>
        <p>
Now as you can imagine, a big team creating hundreds of samples needs some sort of
vision and structure to keep things consistent. That's where the style guide comes
in. And now you can <a href="http://1code.codeplex.com/releases/view/50431">download
it from CodePlex</a>. It's an 87 page Word document that covers everything you might
wonder about, for both native and managed code, including tabs-vs-spaces (no tabs,
please), how much to comment (as I blogged <a href="http://www.gregcons.com/KateBlog/UsefulCodeComments.aspx">recently </a>and <a href="http://www.gregcons.com/KateBlog/CommentsThenAndNow.aspx">not
so recently</a>), Hungarian Notation (use it in native code if you must, but it's
a relic; do not use it in managed code), smart pointers (yes, but don't bring in all
of ATL for them - I look forward to this section being updated for C++0x), the right
way to implement IDisposable, and an especially nice section on Interop at the end.
</p>
        <p>
I don't care what language you work in - this is a document you should at least skim.
It could settle some arguments at the office, improve your code, and spare you from
some horrible bugs. <a href="http://1code.codeplex.com/releases/view/50431">Download
it</a>, won't you?
</p>
        <p>
Kate<br /></p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=f3738ef8-db43-4879-aeca-879c071b5a91" />
      </body>
      <title>Coding guidelines from the All-in-One Framework team</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=f3738ef8-db43-4879-aeca-879c071b5a91</guid>
      <link>http://www.gregcons.com/KateBlog/CodingGuidelinesFromTheAllinOneFrameworkTeam.aspx</link>
      <pubDate>Mon, 23 Aug 2010 19:26:16 GMT</pubDate>
      <description>&lt;p&gt;
Have you ever heard of the All-in-One Framework? Well I hadn't. They've been around
for about 18 months. Back in February, on their first anniversary, &lt;a href="http://blogs.msdn.com/b/codefx/archive/2010/02/10/all-in-one-code-framework-celebrates-first-anniversary.aspx"&gt;they
described themselves&lt;/a&gt; like this:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
...this initiative [has been] developed by the CodeFx Project Group to an "&lt;a href="http://cfx.codeplex.com/" target="_blank" mce_href="http://cfx.codeplex.com"&gt;all-in-one
code framework&lt;/a&gt;" that includes more than 300 code samples, covers almost all Microsoft
development technologies, ranks 18th among 13000 open source projects on &lt;a href="http://www.codeplex.com/" mce_href="http://www.codeplex.com"&gt;CodePlex&lt;/a&gt;,
received numerous kudos from customers, proved its values in real support incidents,
and created a lot of win-win opportunities within the corporation.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
It looks like the participants are all Microsoft employees and they're collecting
pieces of code for any language and platform that can be used to solve real world
problems. On the CodePlex site, they elaborate:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
Microsoft All-In-One Code Framework delineates the framework and skeleton of Microsoft
development techniques through typical sample codes in three popular programming languages
(Visual C#, VB.NET, Visual C++). Each sample is elaborately selected, composed, and
documented to demonstrate one frequently-asked, tested or used coding scenario based
on our support experience in MSDN newsgroups and forums. If you are a software developer,
you can fill the skeleton with blood, muscle and soul. If you are a software tester
or a support engineer like us, you may extend the sample codes a little to fit your
specific test scenario or refer your customer to this project if the customer's question
coincides with what we collected.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
For example, they've written &lt;a href="http://blogs.msdn.com/b/codefx/archive/2010/05/02/invoke-native-c-dll-from-net-code.aspx"&gt;a
summary &lt;/a&gt;of the ways to call native C++ code from managed code. You can find the
pieces elsewhere, but having them all together makes it easier for you to compare
and contrast. They often &lt;a href="http://blogs.msdn.com/b/codefx/"&gt;blog &lt;/a&gt;additions
as they are completed.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
Now as you can imagine, a big team creating hundreds of samples needs some sort of
vision and structure to keep things consistent. That's where the style guide comes
in. And now you can &lt;a href="http://1code.codeplex.com/releases/view/50431"&gt;download
it from CodePlex&lt;/a&gt;. It's an 87 page Word document that covers everything you might
wonder about, for both native and managed code, including tabs-vs-spaces (no tabs,
please), how much to comment (as I blogged &lt;a href="http://www.gregcons.com/KateBlog/UsefulCodeComments.aspx"&gt;recently &lt;/a&gt;and &lt;a href="http://www.gregcons.com/KateBlog/CommentsThenAndNow.aspx"&gt;not
so recently&lt;/a&gt;), Hungarian Notation (use it in native code if you must, but it's
a relic; do not use it in managed code), smart pointers (yes, but don't bring in all
of ATL for them - I look forward to this section being updated for C++0x), the right
way to implement IDisposable, and an especially nice section on Interop at the end.
&lt;/p&gt;
&lt;p&gt;
I don't care what language you work in - this is a document you should at least skim.
It could settle some arguments at the office, improve your code, and spare you from
some horrible bugs. &lt;a href="http://1code.codeplex.com/releases/view/50431"&gt;Download
it&lt;/a&gt;, won't you?
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=f3738ef8-db43-4879-aeca-879c071b5a91" /&gt;</description>
      <category>C++</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=f4de4d24-9bee-48d2-87fb-70f40303a395</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=f4de4d24-9bee-48d2-87fb-70f40303a395</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was visiting a mentoring client today and we wanted to look at the config file for
an application that is deployed with ClickOnce. So I needed to know where it was installed.
I know that you can get to installation locations pretty quickly from the start menu:
</p>
        <p>
          <img src="http://www.gregcons.com/KateBlog/content/binary/co3b.jpg" border="0" />
        </p>
        <p>
So I took a look at the ClickOnce app in the start menu:
</p>
        <p>
          <img src="http://www.gregcons.com/KateBlog/content/binary/co1b.jpg" border="0" />
          <img src="http://www.gregcons.com/KateBlog/content/binary/co2.jpg" border="0" />
        </p>
        <p>
That's a problem - no Open File Location. I tried a little web searching but wasn't
happy with what I found. Then I remembered.
</p>
        <p>
Start the app - simple enough, since it's on your start menu. Then bring up task manager.
If you right click the app on the Applications tab, there's no joy:
</p>
        <p>
          <img src="http://www.gregcons.com/KateBlog/content/binary/co4.jpg" border="0" />
        </p>
        <p>
But ... if you choose Go To Process (or just switch to the process tab and look for
the right EXE name) then we're in business:
</p>
        <p>
          <img src="http://www.gregcons.com/KateBlog/content/binary/co5.jpg" border="0" />
        </p>
        <p>
The very first choice, Open File Location.
</p>
        <p>
And when we get there, sure enough, there's a config file (among other things):
</p>
        <p>
          <img src="http://www.gregcons.com/KateBlog/content/binary/co6.jpg" border="0" />
        </p>
        <p>
Completely obscure path, but who cares, I can confirm the config settings for the
running app and that's all I needed.
</p>
        <p>
Kate
</p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=f4de4d24-9bee-48d2-87fb-70f40303a395" />
      </body>
      <title>Where is my Click Once stuff installed?</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=f4de4d24-9bee-48d2-87fb-70f40303a395</guid>
      <link>http://www.gregcons.com/KateBlog/WhereIsMyClickOnceStuffInstalled.aspx</link>
      <pubDate>Fri, 18 Jun 2010 16:17:23 GMT</pubDate>
      <description>&lt;p&gt;
I was visiting a mentoring client today and we wanted to look at the config file for
an application that is deployed with ClickOnce. So I needed to know where it was installed.
I know that you can get to installation locations pretty quickly from the start menu:
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.gregcons.com/KateBlog/content/binary/co3b.jpg" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
So I took a look at the ClickOnce app in the start menu:
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.gregcons.com/KateBlog/content/binary/co1b.jpg" border="0"&gt; &lt;img src="http://www.gregcons.com/KateBlog/content/binary/co2.jpg" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
That's a problem - no Open File Location. I tried a little web searching but wasn't
happy with what I found. Then I remembered.
&lt;/p&gt;
&lt;p&gt;
Start the app - simple enough, since it's on your start menu. Then bring up task manager.
If you right click the app on the Applications tab, there's no joy:
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.gregcons.com/KateBlog/content/binary/co4.jpg" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
But ... if you choose Go To Process (or just switch to the process tab and look for
the right EXE name) then we're in business:
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.gregcons.com/KateBlog/content/binary/co5.jpg" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
The very first choice, Open File Location.
&lt;/p&gt;
&lt;p&gt;
And when we get there, sure enough, there's a config file (among other things):
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.gregcons.com/KateBlog/content/binary/co6.jpg" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
Completely obscure path, but who cares, I can confirm the config settings for the
running app and that's all I needed.
&lt;/p&gt;
&lt;p&gt;
Kate
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=f4de4d24-9bee-48d2-87fb-70f40303a395" /&gt;</description>
      <category>Client Development</category>
      <category>Mentoring</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=19403784-7975-4da4-af49-e7cbc4255f63</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=19403784-7975-4da4-af49-e7cbc4255f63</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">Metaphors can be dangerous things. Just
recently I got into a Twitter conversation with someone who was using the metaphor
"it's like leaving your car unlocked, or your front door" - meaning something you
would never do and would expect to be dangerous. But in my neck of the woods, that
metaphor triggers different neurons, having a meaning more like something you regularly
do and would never expect to be a problem. (I not only never lock my car in my or
a neighbour's driveway, I also know many people who would leave their keys in their
cars in someone else's driveway.) It doesn't really matter whether you think door
locking is normal, the point is your metaphor needs to have the same meaning for your
audience as it does for you.<br /><br />
For an example of a metaphor landing really badly, check out <a href="http://www.scottberkun.com/blog/2010/when-visualizations-go-wrong-part-2/">Scott
Berkun's blog post</a> on the "periodic table of visualization techniques." Now unlike
Scott (who thinks the periodic table is obscure, complex, and unfondly remembered)
I really like the periodic table. I think it carries a tremendous amount of important
information in a very compact way, and explains some relationships succinctly. But
I think it makes a poor metaphor when trying to discuss all the different ways you
can present information visually. Plus, their particular version of it doesn't seem
to have any actual periodicity, anything that's the same in each column, anything
that's the same in each row, or any reason for the lengths of the rows. Always understand
a metaphor before you use it. Otherwise you're working against your own goal - helping
someone else understand your point.<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=19403784-7975-4da4-af49-e7cbc4255f63" /></body>
      <title>Choose your metaphors wisely</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=19403784-7975-4da4-af49-e7cbc4255f63</guid>
      <link>http://www.gregcons.com/KateBlog/ChooseYourMetaphorsWisely.aspx</link>
      <pubDate>Mon, 14 Jun 2010 15:52:59 GMT</pubDate>
      <description>Metaphors can be dangerous things. Just recently I got into a Twitter conversation with someone who was using the metaphor "it's like leaving your car unlocked, or your front door" - meaning something you would never do and would expect to be dangerous. But in my neck of the woods, that metaphor triggers different neurons, having a meaning more like something you regularly do and would never expect to be a problem. (I not only never lock my car in my or a neighbour's driveway, I also know many people who would leave their keys in their cars in someone else's driveway.) It doesn't really matter whether you think door locking is normal, the point is your metaphor needs to have the same meaning for your audience as it does for you.&lt;br&gt;
&lt;br&gt;
For an example of a metaphor landing really badly, check out &lt;a href="http://www.scottberkun.com/blog/2010/when-visualizations-go-wrong-part-2/"&gt;Scott
Berkun's blog post&lt;/a&gt; on the "periodic table of visualization techniques." Now unlike
Scott (who thinks the periodic table is obscure, complex, and unfondly remembered)
I really like the periodic table. I think it carries a tremendous amount of important
information in a very compact way, and explains some relationships succinctly. But
I think it makes a poor metaphor when trying to discuss all the different ways you
can present information visually. Plus, their particular version of it doesn't seem
to have any actual periodicity, anything that's the same in each column, anything
that's the same in each row, or any reason for the lengths of the rows. Always understand
a metaphor before you use it. Otherwise you're working against your own goal - helping
someone else understand your point.&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=19403784-7975-4da4-af49-e7cbc4255f63" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=4cebfd6f-5ef9-481f-8bb7-1afcb027e9a6</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=4cebfd6f-5ef9-481f-8bb7-1afcb027e9a6</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It's no secret that I'm not in my twenties. After all, I'm in my fourth decade of
being paid to program. (To be fair, you enter that decade as you pass the doing-it-for-30-years
mark.) I have gained a lot of experience in all that time, and not all of it is programming
experience. I am slowly gaining wisdom and judgment in general. But am I losing things?
Am I perhaps closed off to new experiences, or stuck in the mud? Is there anything
you can in general conclude about a person because of their age?
</p>
        <p>
I have two problems with that line of thinking. The first is that differences between
any two individuals in a group are always larger than the differences between groups.
I can easily find two 20-somethings who differ from each other more than either differs
from a 30-something or even an 80-something. Women in general may be shorter than
men in general, but I'm sure we all know a man who is shorter than most women or a
woman who is taller than most men. What you know about the group doesn't necessarily
apply to the individual. My second problem is specific to age - some age related effects
are actually related to "you went to university in the 70s" or "you learned to code
in the age of GUIs" more than to how old you are, others are actually about your life
experience, still others your work experience. Two 60-somethings may not have gone
to university at the same time as each other or learned to code at the same time as
each other. That makes it even harder to generalize based on a single piece of information
- when you were born.
</p>
        <p>
A few months back,<a href="http://www.lessonsoffailure.com/developers/pervasive-myths-older-software-developers/"> 'Dave'
posted </a>a series of myths about older developers and then debunked them. Do you
find yourself believing any of these?
</p>
        <ul>
          <li>
Older software developers are more expensive 
</li>
          <li>
Older software developers are less flexible and less capable of learning new technologies</li>
          <li>
Older software developers are less able to perform the arduous tasks of software development
(read: work long, painful hours)</li>
          <li>
Older software developers are less mentally agile 
</li>
          <li>
Older software developers are more jaded and cynical</li>
        </ul>
        <p>
        </p>
        <p>
My only issue with this list of myths is that it doesn't contain positive ones. It's
also a myth that older developers are wiser, more tuned to business issues, better
at talking to others, and so on. Some are -- I strongly believe I am -- and it takes
a while to get there, but time passing isn't the only thing that brings about that
change in a person. 
<br /></p>
        <p>
I have to work with people a lot younger than me every day. Perhaps some of them think
less of me because of my age at first. I'm pretty confident that doesn't last. If
you're not an "older programmer" yet, I hope you aspire to be one someday.
</p>
        <p>
Kate<br /></p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=4cebfd6f-5ef9-481f-8bb7-1afcb027e9a6" />
      </body>
      <title>Is older better? Or anything?</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=4cebfd6f-5ef9-481f-8bb7-1afcb027e9a6</guid>
      <link>http://www.gregcons.com/KateBlog/IsOlderBetterOrAnything.aspx</link>
      <pubDate>Sat, 29 May 2010 17:56:45 GMT</pubDate>
      <description>&lt;p&gt;
It's no secret that I'm not in my twenties. After all, I'm in my fourth decade of
being paid to program. (To be fair, you enter that decade as you pass the doing-it-for-30-years
mark.) I have gained a lot of experience in all that time, and not all of it is programming
experience. I am slowly gaining wisdom and judgment in general. But am I losing things?
Am I perhaps closed off to new experiences, or stuck in the mud? Is there anything
you can in general conclude about a person because of their age?
&lt;/p&gt;
&lt;p&gt;
I have two problems with that line of thinking. The first is that differences between
any two individuals in a group are always larger than the differences between groups.
I can easily find two 20-somethings who differ from each other more than either differs
from a 30-something or even an 80-something. Women in general may be shorter than
men in general, but I'm sure we all know a man who is shorter than most women or a
woman who is taller than most men. What you know about the group doesn't necessarily
apply to the individual. My second problem is specific to age - some age related effects
are actually related to "you went to university in the 70s" or "you learned to code
in the age of GUIs" more than to how old you are, others are actually about your life
experience, still others your work experience. Two 60-somethings may not have gone
to university at the same time as each other or learned to code at the same time as
each other. That makes it even harder to generalize based on a single piece of information
- when you were born.
&lt;/p&gt;
&lt;p&gt;
A few months back,&lt;a href="http://www.lessonsoffailure.com/developers/pervasive-myths-older-software-developers/"&gt; 'Dave'
posted &lt;/a&gt;a series of myths about older developers and then debunked them. Do you
find yourself believing any of these?
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Older software developers are more expensive 
&lt;/li&gt;
&lt;li&gt;
Older software developers are less flexible and less capable of learning new technologies&lt;/li&gt;
&lt;li&gt;
Older software developers are less able to perform the arduous tasks of software development
(read: work long, painful hours)&lt;/li&gt;
&lt;li&gt;
Older software developers are less mentally agile 
&lt;/li&gt;
&lt;li&gt;
Older software developers are more jaded and cynical&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
My only issue with this list of myths is that it doesn't contain positive ones. It's
also a myth that older developers are wiser, more tuned to business issues, better
at talking to others, and so on. Some are -- I strongly believe I am -- and it takes
a while to get there, but time passing isn't the only thing that brings about that
change in a person. 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
I have to work with people a lot younger than me every day. Perhaps some of them think
less of me because of my age at first. I'm pretty confident that doesn't last. If
you're not an "older programmer" yet, I hope you aspire to be one someday.
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=4cebfd6f-5ef9-481f-8bb7-1afcb027e9a6" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=91cfe982-aee7-4424-bef4-90781d654708</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=91cfe982-aee7-4424-bef4-90781d654708</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">When I started out in this industry (and
I'm in my fourth decade of being paid to program) there was a definite culture of
rudeness within it. Smart people weren't just allowed to be rude to not-so-smart people,
it was expected. Being rude to others was how you proved you were smart, whether it
was with a cutting insult thought up on your feet, or with a cruel proof of just where
they had gone wrong. As a group we were especially fond of insulting those who weren't
developers with brilliantly disguised insults they couldn't understand, or so the
theory went. Who hasn't heard someone refer to "error codes" like PEBCAK or ID-ten-T?<br /><br />
But over the last generation or so I've noticed a switch. I hear the chair, keyboard
thing still, but only self-referentially. That is after someone has asked for help,
perhaps with a starting position of "I have found a bug in Windows", and then sorted
it all out and realized they were doing something wrong, they may say "well it turns
out the problem was between the chair and the keyboard after all, eh?". When I interview
developers for a job at my firm, I ask about working with non developers (testers,
technical writers, users, project managers) and I need to see (not just be told about)
respect and interest for those people and those jobs.<br /><br />
Now not everyone feels that way. <a href="http://advice.cio.com/meridith_levinson/geek_pride_soft_skills_are_for_weenies?source=CIONLE_nlt_blogsd_2010-03-04">Meredith
Levinson</a> asks if there is a still a place for the "I'm smart, I don't need soft
skills" geek pride of old. Commenters point out that speaking truth to power is important,
and those who won't be rude sometimes don't do it. <a href="http://elegantcode.com/2010/03/04/soft-skills-are-actual-skills/">David
Starr</a> talks about how to tell someone that a thoughtless habit, like always coming
late to meetings, is bothering you. I would <a href="http://www.gregcons.com/KateBlog/WhyCriticismShouldntBeWrappedInPraise.aspx">skip
the praise sandwich</a>, but I support the idea of pointing out the consequences of
something another person may have thought had none. Interestingly, <a href="http://www.connectitnews.com/canada/story.cfm?item=7755">Susanne
Biro </a>points out how people who are actively interested in learning soft or social
skills can still be blundering about doing very rude things, apparently unaware.<br /><br />
I think in the end it's not that our industry has changed much. It's that people who
are just starting out in it are often a bit rude. OK, sometimes they're very rude.
But as they gain technical skill, many of them also gain the ability to take others
into account and to work in teams. Those people get promoted. So now, hanging out
with decision makers, with people who are allowed to represent their companies in
public, with people who get paid to help other people get better, I mostly meet polite
and interesting geeks. The rude ones probably still exist -- I just don't run into
them very often. Which group would you rather be in?<br /><br />
Kate<br /><p></p><img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=91cfe982-aee7-4424-bef4-90781d654708" /></body>
      <title>Soft skills, politeness, and what's in it for you</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=91cfe982-aee7-4424-bef4-90781d654708</guid>
      <link>http://www.gregcons.com/KateBlog/SoftSkillsPolitenessAndWhatsInItForYou.aspx</link>
      <pubDate>Tue, 25 May 2010 12:02:37 GMT</pubDate>
      <description>When I started out in this industry (and I'm in my fourth decade of being paid to program) there was a definite culture of rudeness within it. Smart people weren't just allowed to be rude to not-so-smart people, it was expected. Being rude to others was how you proved you were smart, whether it was with a cutting insult thought up on your feet, or with a cruel proof of just where they had gone wrong. As a group we were especially fond of insulting those who weren't developers with brilliantly disguised insults they couldn't understand, or so the theory went. Who hasn't heard someone refer to "error codes" like PEBCAK or ID-ten-T?&lt;br&gt;
&lt;br&gt;
But over the last generation or so I've noticed a switch. I hear the chair, keyboard
thing still, but only self-referentially. That is after someone has asked for help,
perhaps with a starting position of "I have found a bug in Windows", and then sorted
it all out and realized they were doing something wrong, they may say "well it turns
out the problem was between the chair and the keyboard after all, eh?". When I interview
developers for a job at my firm, I ask about working with non developers (testers,
technical writers, users, project managers) and I need to see (not just be told about)
respect and interest for those people and those jobs.&lt;br&gt;
&lt;br&gt;
Now not everyone feels that way. &lt;a href="http://advice.cio.com/meridith_levinson/geek_pride_soft_skills_are_for_weenies?source=CIONLE_nlt_blogsd_2010-03-04"&gt;Meredith
Levinson&lt;/a&gt; asks if there is a still a place for the "I'm smart, I don't need soft
skills" geek pride of old. Commenters point out that speaking truth to power is important,
and those who won't be rude sometimes don't do it. &lt;a href="http://elegantcode.com/2010/03/04/soft-skills-are-actual-skills/"&gt;David
Starr&lt;/a&gt; talks about how to tell someone that a thoughtless habit, like always coming
late to meetings, is bothering you. I would &lt;a href="http://www.gregcons.com/KateBlog/WhyCriticismShouldntBeWrappedInPraise.aspx"&gt;skip
the praise sandwich&lt;/a&gt;, but I support the idea of pointing out the consequences of
something another person may have thought had none. Interestingly, &lt;a href="http://www.connectitnews.com/canada/story.cfm?item=7755"&gt;Susanne
Biro &lt;/a&gt;points out how people who are actively interested in learning soft or social
skills can still be blundering about doing very rude things, apparently unaware.&lt;br&gt;
&lt;br&gt;
I think in the end it's not that our industry has changed much. It's that people who
are just starting out in it are often a bit rude. OK, sometimes they're very rude.
But as they gain technical skill, many of them also gain the ability to take others
into account and to work in teams. Those people get promoted. So now, hanging out
with decision makers, with people who are allowed to represent their companies in
public, with people who get paid to help other people get better, I mostly meet polite
and interesting geeks. The rude ones probably still exist -- I just don't run into
them very often. Which group would you rather be in?&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=91cfe982-aee7-4424-bef4-90781d654708" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=d80f3a31-76a6-4457-8aae-c97453f825a6</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=d80f3a31-76a6-4457-8aae-c97453f825a6</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A colleague of mine who is not near Toronto has a client in Toronto who needs .NET
developers. They would like to start out with a contract position and it could become
permanent if it's a good fit for everyone. Here's the job description:
</p>
        <blockquote>
          <p>
Position: Senior Programmer / Analyst
</p>
          <p>
Pay: $7,500 per month contract (negotiable)
</p>
          <p>
Applicant must be an expert or proficient in:
</p>
          <ul>
            <li>
MFC</li>
            <li>
ATL 
</li>
            <li>
COM</li>
            <li>
.NET Framework  /  C#</li>
            <li>
.NET Services</li>
            <li>
Microsoft SQL Programming</li>
          </ul>
          <p>
Experience in the following areas would be helpful but not required:
</p>
          <ul>
            <li>
WCF</li>
            <li>
WPF/SilverLight</li>
            <li>
ASP.NET</li>
            <li>
Visual SourceSafe</li>
            <li>
Mechanical engineering experience</li>
          </ul>
          <p>
Responsibilities:
</p>
          <p>
The primary responsibility is to modernize a legacy C++ distributed application. This
may include a redesign and possible rearchitect of the application. The final application
should be an n-tiered application. The tiers would ideally be:
</p>
          <ul>
            <li>
WPF/Silverlight  as the presentation layer</li>
            <li>
A business layer with business components (C#) exposed via WCF</li>
            <li>
A data layer</li>
          </ul>
          <p>
Where necessary, COM components can be preserved.
</p>
          <p>
Other responsibilities include:
</p>
          <ul>
            <li>
Move image files from file database to SQL database</li>
            <li>
Document the application</li>
            <li>
Handle ongoing change requests.</li>
          </ul>
        </blockquote>
        <p>
        </p>
        <p>
Someone who moved from C++ to C# but didn't forget their C++ would be perfect. They
are looking for more than one person so it sounds like a fairly meaty project. This
is strictly onsite work, no remote work, which is why I mentioned where they are (east
of the DVP; west of Pickering.)<br /><br />
Anything you email to me about this I will forward to my colleague who will in turn
forward it to the Toronto folks. Good luck!<br /><br />
Kate<br /><br /></p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=d80f3a31-76a6-4457-8aae-c97453f825a6" />
      </body>
      <title>.NET jobs in Eastern Toronto</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=d80f3a31-76a6-4457-8aae-c97453f825a6</guid>
      <link>http://www.gregcons.com/KateBlog/NETJobsInEasternToronto.aspx</link>
      <pubDate>Wed, 19 May 2010 20:19:23 GMT</pubDate>
      <description>&lt;p&gt;
A colleague of mine who is not near Toronto has a client in Toronto who needs .NET
developers. They would like to start out with a contract position and it could become
permanent if it's a good fit for everyone. Here's the job description:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
Position: Senior Programmer / Analyst
&lt;/p&gt;
&lt;p&gt;
Pay: $7,500 per month contract (negotiable)
&lt;/p&gt;
&lt;p&gt;
Applicant must be an expert or proficient in:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
MFC&lt;/li&gt;
&lt;li&gt;
ATL 
&lt;/li&gt;
&lt;li&gt;
COM&lt;/li&gt;
&lt;li&gt;
.NET Framework&amp;nbsp; /&amp;nbsp; C#&lt;/li&gt;
&lt;li&gt;
.NET Services&lt;/li&gt;
&lt;li&gt;
Microsoft SQL Programming&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Experience in the following areas would be helpful but not required:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
WCF&lt;/li&gt;
&lt;li&gt;
WPF/SilverLight&lt;/li&gt;
&lt;li&gt;
ASP.NET&lt;/li&gt;
&lt;li&gt;
Visual SourceSafe&lt;/li&gt;
&lt;li&gt;
Mechanical engineering experience&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Responsibilities:
&lt;/p&gt;
&lt;p&gt;
The primary responsibility is to modernize a legacy C++ distributed application. This
may include a redesign and possible rearchitect of the application. The final application
should be an n-tiered application. The tiers would ideally be:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
WPF/Silverlight&amp;nbsp; as the presentation layer&lt;/li&gt;
&lt;li&gt;
A business layer with business components (C#) exposed via WCF&lt;/li&gt;
&lt;li&gt;
A data layer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Where necessary, COM components can be preserved.
&lt;/p&gt;
&lt;p&gt;
Other responsibilities include:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Move image files from file database to SQL database&lt;/li&gt;
&lt;li&gt;
Document the application&lt;/li&gt;
&lt;li&gt;
Handle ongoing change requests.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Someone who moved from C++ to C# but didn't forget their C++ would be perfect. They
are looking for more than one person so it sounds like a fairly meaty project. This
is strictly onsite work, no remote work, which is why I mentioned where they are (east
of the DVP; west of Pickering.)&lt;br&gt;
&lt;br&gt;
Anything you email to me about this I will forward to my colleague who will in turn
forward it to the Toronto folks. Good luck!&lt;br&gt;
&lt;br&gt;
Kate&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=d80f3a31-76a6-4457-8aae-c97453f825a6" /&gt;</description>
      <category>C++</category>
      <category>Client Development</category>
      <category>Consulting Life</category>
      <category>Mentoring</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=b4a55716-eba6-4b0a-b0e7-f1de774fd40a</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=b4a55716-eba6-4b0a-b0e7-f1de774fd40a</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Programming is not one skill - it's a large conglomeration of skills. Some people
are not very good programmers because they aren't very good at imagining their way
through an algorithm. Others have great ideas and imagination, but it's painful to
watch them type and they can't be bothered to learn how to use their tools (editors,
etc) so they just take twice as long as everyone else to create the code. Still others
are doing fine until their code does something unexpected, and then things fall apart,
because they can't figure out what's going on. They step too soon, spend ages stepping
through code that couldn't possibly cause the problem, then get impatient and end
up skipping right past the problem. Worse, they don't seem to understand the capabilities
of the debugger. I've watched people spend over 5 minutes patiently stepping into
so that when they reach a particular line, they know how control reached it. Then
I show them the Call Stack window and they say "oh".
</p>
        <p>
I've blogged before about <a href="http://www.gregcons.com/KateBlog/ct.ashx?id=0f8695c3-a3a6-4931-88ff-72a792472179&amp;url=http%3a%2f%2fwww.gregcons.com%2fKateBlog%2fConditionalBreakpoints.aspx">conditional
breakpoints</a> and <a href="http://www.gregcons.com/KateBlog/ct.ashx?id=0f8695c3-a3a6-4931-88ff-72a792472179&amp;url=http%3a%2f%2fwww.gregcons.com%2fKateBlog%2fTracepoints.aspx">tracepoints</a>, <a href="http://www.gregcons.com/KateBlog/ct.ashx?id=0f8695c3-a3a6-4931-88ff-72a792472179&amp;url=http%3a%2f%2fwww.gregcons.com%2fKateBlog%2fOneMoreBreakpointTipHitCount.aspx">hit
counts</a>, <a href="http://www.gregcons.com/KateBlog/SearchView.aspx?q=debug">and
so on</a>. There is so much to the Visual Studio debugger that it is very hard to
know it all. But the more you know, the better you are. And what's more, being a great
debugger has more value than some of the other programming skills, because so much
debugging happens at urgent times, is unexpected, and needs to be done as quickly
and efficiently as possible. The difference in impact between being good and great
is very large.
</p>
        <p>
So how to be a better debugger? Partly, it's practice, especially practice with someone
who's really good. That person can say "hey, what are you doing? Here's a way easier
way to get there!" Even practice alone can motivate you to learn how to do something
and get you reading the documentation or searching the web. You could buy a book,
if anyone even buys books any more. You could take a debugging course, and spend a
day or a week with someone who really knows every speck of this enormous tool. Of
course, that costs money, travel time, and so on. Some of you will do it, and benefit
from it tremendously.
</p>
        <p>
But ALL of you can benefit from watching <a href="http://www.wintellect.com/CS/blogs/jrobbins/archive/2010/04/29/want-to-know-how-to-debug-better-for-free.aspx">John
Robbins' latest set of videos</a> on Channel 9. It's in three parts and they total
about three and a half hours. It hits the ground running and just doesn't stop. It's
all using Visual Studio 2010 but the vast majority of the features he shows are in
earlier versions too. I knew a lot of it (even the Go To Find box and the file opening
etc) but I learned new things in the first ten minutes and continued to learn new
things as they continued - both actual capabilities of the tool and interesting ways
of thinking, like using hit counts on a breakpoint not to stop, but just to count
how much some code gets run. I wish I could get the slides and code, but I guess some
things need to be saved for the folks who actually take the course. 
<br /></p>
        <p>
If you're a .NET developer, watch these videos. Now.<br /></p>
        <p>
Kate<br /></p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=b4a55716-eba6-4b0a-b0e7-f1de774fd40a" />
      </body>
      <title>Be a better debugger</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=b4a55716-eba6-4b0a-b0e7-f1de774fd40a</guid>
      <link>http://www.gregcons.com/KateBlog/BeABetterDebugger.aspx</link>
      <pubDate>Tue, 11 May 2010 12:18:59 GMT</pubDate>
      <description>&lt;p&gt;
Programming is not one skill - it's a large conglomeration of skills. Some people
are not very good programmers because they aren't very good at imagining their way
through an algorithm. Others have great ideas and imagination, but it's painful to
watch them type and they can't be bothered to learn how to use their tools (editors,
etc) so they just take twice as long as everyone else to create the code. Still others
are doing fine until their code does something unexpected, and then things fall apart,
because they can't figure out what's going on. They step too soon, spend ages stepping
through code that couldn't possibly cause the problem, then get impatient and end
up skipping right past the problem. Worse, they don't seem to understand the capabilities
of the debugger. I've watched people spend over 5 minutes patiently stepping into
so that when they reach a particular line, they know how control reached it. Then
I show them the Call Stack window and they say "oh".
&lt;/p&gt;
&lt;p&gt;
I've blogged before about &lt;a href="http://www.gregcons.com/KateBlog/ct.ashx?id=0f8695c3-a3a6-4931-88ff-72a792472179&amp;amp;url=http%3a%2f%2fwww.gregcons.com%2fKateBlog%2fConditionalBreakpoints.aspx"&gt;conditional
breakpoints&lt;/a&gt; and &lt;a href="http://www.gregcons.com/KateBlog/ct.ashx?id=0f8695c3-a3a6-4931-88ff-72a792472179&amp;amp;url=http%3a%2f%2fwww.gregcons.com%2fKateBlog%2fTracepoints.aspx"&gt;tracepoints&lt;/a&gt;, &lt;a href="http://www.gregcons.com/KateBlog/ct.ashx?id=0f8695c3-a3a6-4931-88ff-72a792472179&amp;amp;url=http%3a%2f%2fwww.gregcons.com%2fKateBlog%2fOneMoreBreakpointTipHitCount.aspx"&gt;hit
counts&lt;/a&gt;, &lt;a href="http://www.gregcons.com/KateBlog/SearchView.aspx?q=debug"&gt;and
so on&lt;/a&gt;. There is so much to the Visual Studio debugger that it is very hard to
know it all. But the more you know, the better you are. And what's more, being a great
debugger has more value than some of the other programming skills, because so much
debugging happens at urgent times, is unexpected, and needs to be done as quickly
and efficiently as possible. The difference in impact between being good and great
is very large.
&lt;/p&gt;
&lt;p&gt;
So how to be a better debugger? Partly, it's practice, especially practice with someone
who's really good. That person can say "hey, what are you doing? Here's a way easier
way to get there!" Even practice alone can motivate you to learn how to do something
and get you reading the documentation or searching the web. You could buy a book,
if anyone even buys books any more. You could take a debugging course, and spend a
day or a week with someone who really knows every speck of this enormous tool. Of
course, that costs money, travel time, and so on. Some of you will do it, and benefit
from it tremendously.
&lt;/p&gt;
&lt;p&gt;
But ALL of you can benefit from watching &lt;a href="http://www.wintellect.com/CS/blogs/jrobbins/archive/2010/04/29/want-to-know-how-to-debug-better-for-free.aspx"&gt;John
Robbins' latest set of videos&lt;/a&gt; on Channel 9. It's in three parts and they total
about three and a half hours. It hits the ground running and just doesn't stop. It's
all using Visual Studio 2010 but the vast majority of the features he shows are in
earlier versions too. I knew a lot of it (even the Go To Find box and the file opening
etc) but I learned new things in the first ten minutes and continued to learn new
things as they continued - both actual capabilities of the tool and interesting ways
of thinking, like using hit counts on a breakpoint not to stop, but just to count
how much some code gets run. I wish I could get the slides and code, but I guess some
things need to be saved for the folks who actually take the course. 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
If you're a .NET developer, watch these videos. Now.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
Kate&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=b4a55716-eba6-4b0a-b0e7-f1de774fd40a" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
      <category>Visual Studio 2010</category>
    </item>
    <item>
      <trackback:ping>http://www.gregcons.com/KateBlog/Trackback.aspx?guid=99aef627-f588-4adc-b520-76c8015725c0</trackback:ping>
      <pingback:server>http://www.gregcons.com/KateBlog/pingback.aspx</pingback:server>
      <pingback:target>http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=99aef627-f588-4adc-b520-76c8015725c0</pingback:target>
      <dc:creator>Kate Gregory</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I teach a course at <a href="http://www.trentu.ca/cois/undergrad_program.php">Trent
University </a>on Object Oriented Analysis and Design with UML, and have done since
the last century. I teach my students how to make decisions about the systems they
will some day build, and how to draw diagrams that communicate those decisions to
others. We find as often as not that the act of trying to make the diagram leads us
through the thought processes that are needed to make good decisions. That brings
huge value even if you never show the diagram to anyone else and never update it.<br /><br />
I've never been a big fan of "technical documentation" in the form of a giant binder
that some poor person has to keep up to date any time the code changes. If you want
to know all the methods of the Employee class, why not use Intellisense or the Object
Browser or the like? But that doesn't mean I don't like making those diagrams at the
beginning, when they help me to do my thinking. I also make them when I have something
to explain, including when I bring a new person onto a project. So how much do I love
this quote?
</p>
        <p>
        </p>
        <blockquote> the UML ... was to be a language for visualizing, specifying, constructing,
and documenting the artifacts of a software-intensive system—in short, a graphical
language to help reason about the design of a system as it unfolds. Most diagrams
should be thrown away, but there are a few that should be preserved, and in all, one
should only use a graphical notation for those things that cannot easily be reasoned
about in code.</blockquote>
        <p>
        </p>
        <p>
It's in an interview <a href="http://www.gregcons.com/KateBlog/DesignPatterns15YearsLater.aspx">I
already linked to</a>, but it took <a href="http://codebetter.com/blogs/patricksmacchia/archive/2009/11/04/the-code-is-the-truth-but-it-is-not-the-whole-truth.aspx">Patrick
Smacchia</a> to point our those sentences to me. As I wind up the last few weeks of
the course, it's nice to know that my position on the point of the diagrams and deliverables
is aligned with one of my heroes.
</p>
        <p>
Kate
</p>
        <img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=99aef627-f588-4adc-b520-76c8015725c0" />
      </body>
      <title>Why do we make UML diagrams?</title>
      <guid isPermaLink="false">http://www.gregcons.com/KateBlog/PermaLink.aspx?guid=99aef627-f588-4adc-b520-76c8015725c0</guid>
      <link>http://www.gregcons.com/KateBlog/WhyDoWeMakeUMLDiagrams.aspx</link>
      <pubDate>Fri, 27 Nov 2009 01:38:10 GMT</pubDate>
      <description>&lt;p&gt;
I teach a course at &lt;a href="http://www.trentu.ca/cois/undergrad_program.php"&gt;Trent
University &lt;/a&gt;on Object Oriented Analysis and Design with UML, and have done since
the last century. I teach my students how to make decisions about the systems they
will some day build, and how to draw diagrams that communicate those decisions to
others. We find as often as not that the act of trying to make the diagram leads us
through the thought processes that are needed to make good decisions. That brings
huge value even if you never show the diagram to anyone else and never update it.&lt;br&gt;
&lt;br&gt;
I've never been a big fan of "technical documentation" in the form of a giant binder
that some poor person has to keep up to date any time the code changes. If you want
to know all the methods of the Employee class, why not use Intellisense or the Object
Browser or the like? But that doesn't mean I don't like making those diagrams at the
beginning, when they help me to do my thinking. I also make them when I have something
to explain, including when I bring a new person onto a project. So how much do I love
this quote?
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;blockquote&gt; the UML ... was to be a language for visualizing, specifying, constructing,
and documenting the artifacts of a software-intensive system—in short, a graphical
language to help reason about the design of a system as it unfolds. Most diagrams
should be thrown away, but there are a few that should be preserved, and in all, one
should only use a graphical notation for those things that cannot easily be reasoned
about in code.&lt;/blockquote&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
It's in an interview &lt;a href="http://www.gregcons.com/KateBlog/DesignPatterns15YearsLater.aspx"&gt;I
already linked to&lt;/a&gt;, but it took &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2009/11/04/the-code-is-the-truth-but-it-is-not-the-whole-truth.aspx"&gt;Patrick
Smacchia&lt;/a&gt; to point our those sentences to me. As I wind up the last few weeks of
the course, it's nice to know that my position on the point of the diagrams and deliverables
is aligned with one of my heroes.
&lt;/p&gt;
&lt;p&gt;
Kate
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.gregcons.com/KateBlog/aggbug.ashx?id=99aef627-f588-4adc-b520-76c8015725c0" /&gt;</description>
      <category>Consulting Life</category>
      <category>Mentoring</category>
      <category>Seen and Recommended</category>
    </item>
  </channel>
</rss>