Jeff Atwood has a post on "five dollar words" where he discusses (and briefly defines) these three words. They're helpful, all the more so if you know the concepts but never knew they had a name. Then in the comments people start to talk about Normalization, Instantiation, Canonicalization, Covariance, Deprecation, Atomic, ACID, SOLID and so much more. Many provide links (how did we ever live before Wikipedia?) and if not, well, you have access to a search engine I'm sure. Having these words lets you have conversations you couldn't otherwise have. Reminding yourself of the definitions every once in a while can't hurt.

Most of these are pretty straightforward to remember if you have some Latin and Greek - enough to know the scientific prefixes. For example idem means "same" and "potent" refers to power - the function always has the same power. Mutable means change-able (think about the word mutant) and im- negates that, so the value can't be changed. (Swapping in im- for idem- in the first word results in another perfect valid word whose meaning can be worked out from its parts.) I learned a lot of Latin and Greek prefixes in high school and university, and I'm really glad I did. I can't write a sentence in either language, but I can work out what a lot of "intellectual" words mean just by going through their parts.

I've heard people use the name "elevator pitch" for a concise answer to a question like "What do you do?" or "What is this company that you run?". I don't think that's a good use of the term. You pitch a specific project or idea (which might be "hire me" but might not.) Answering a small-talk question isn't making a pitch. It does, however, have a lot in common with the elevator pitch - most importantly that you don't have very long at all. Hi, how are you, that's a cool shirt, where do you work, what do you do there - these aren't essay questions.

So you want a concise answer, so that at least you don't talk people's ear off and bore them. And it would be neat if your answer either led the conversation in a direction you'll enjoy, or brought you business, or both. Steve Pavlina has given this quite a bit of thought. It's a long blog post that leads down to 2 or 3 10-12 word sentences, but that's the thing with short statements - they take forever to write.

I've been working on this for a while with gregcons - what's our 10 word answer to what do we do? Generally I say "We solve people's problems. Sometimes we write them software, other times we give them advice on software deveopment or mentor them." If the person looks even vaguely interested I might elaborate, but often that's all the answer they needed. The process of finding this short answer for us, and the process ahead of me to continue to shorten it, does give useful insight into what parts of my job and what parts of this business matter the most to me. I highly encourage everyone whose answer is "all kinds of stuff!" to take the time to find the common thread rather than just listing off a whole pile of -ing verbs until the person who asked slips into a coma. For more on the "what is my real underlying business" (as opposed to the skills you happen to ply in support of that business) you might also want to read a year-ending post from Mike Gunderloy that's just as valid at this time of year.

What do you do if someone blogs about you? It's kind of rude to ignore such a nice thing. I suppose it might be rude (braggy) to draw attention to it, also. In this particular case, I'm very pleased by the specific things they're saying about me, and the occasion is a good one, too, so I'm going to go ahead and brag a little: Joey (I jumped up and down with delight when Microsoft hired him) says I was the first non-Microsoftie to welcome him to the Empire. I can believe that, but only because we were both at a reception the day before the PDC so I got to him before the rest of the community. Julie (a long time friend, and inspiration to me for her ability to remember so many people and what they care about) declares that I am wise, something I truly aspire to be.

Both of them are celebrating Ada Lovelace, who wasn't the first "woman in technology" but was perhaps the first programmer of any gender. It's nice to know our history and to feel a connection that stretches back a little further than 1970. 166 years ago, she wrote out a method for calculating Bernoulli numbers with (the nonexistent) Analytical Engine. Pausing to remember that, and to call out good behaviour when we see it, is a good thing.

The WPF team has a home on CodePlex where they release the WPF Toolkit and other goodies. To quote their project description,

The WPF Toolkit is a collection of WPF features and components that are being made available outside of the normal .NET Framework ship cycle. The WPF Toolkit not only allows users to get new functionality more quickly, but allows an efficient means for giving feedback to the product team. Many of the features will be released with full source code as well.

One of the nice things they have added is a set of nine lovely WPF themes you can use in your applications today. Use the link to download them and to see the instructions for theming your app.

The appearance changes dramatically - with no coding on your part once you've hooked in the theme!

Windows 7 has this neat feature called Libraries. It aggregates together several real folders - perhaps two or three folders on your machine, or perhaps one on your machine and one elsewhere on the network. Within this "virtual folder" you can search, sort, and otherwise explore a large collection of files without having to worry about which real folder houses them. The usual examples given are your photos or your music, but I could also see it being handy for those "project folders" that every developer keeps on the working box, and the shared project folder that some (but not all) of the documents have been copied to. If you set up a Library that represents all those folders, you can read through the documentation without getting caught up in whether a particular file is on the project share, developer A's machine, or developer B's machine.

This blog post by Vinod Unny (a fellow RD) presents another cool use for Libraries - as a temporary creation to help you copy and paste from many different folders (perhaps all those individual developer ones) into another (perhaps that project share.) What a nice explanation!

I've written before about Agile and how we do it (not like other folks) and how I agree it can play well with CMMI. Even with that background, I was a little taken aback to read the title of this Scott Ambler blog post. But he makes an interesting case. He says at level 1 you're doing core Agile things. Maybe you're using Scrum, XP, Agile Modeling, or Agile Data. You're on the way. At level 2, you're disciplined Agile. I might phrase this as saying there's process in your agility and agility in your process. He lists some processes that build on Scrum and XP to provide a little more structure while staying lean. Then at level 3 you've achieved agility at scale. That really is a tough one - a small team with a small customer base has a much easier time being agile today. Perhaps it's a mythical level, or perhaps some folks are operating there.

I'm going to keep reading what Scott has to say on this. It's increasing my own comfort level with what to call our own approach to software development and problem solving.

I love this story. Seems a fellow was playing a low-stakes slot machine. This thing takes pennies, so if you win the "big jackpot" it doesn't rain pennies on you, it displays a message that says "you have won $xyz, please call an attendant over to this machine so you can collect" or words to that effect. Imagine his delight when it told him he had won 42.9 million dollars! Sadly, when the attendant arrived there was no 43 million dollar payout. The most that machine can pay out is $9,025.

So what happened? Here's the quote from the story:

In a confusing nutshell: Computers speak in a language of bits. Information is represented with zeros and ones. Very often, these numbers – both positive and negative – are stored in 32-bit sequences.

Still with me?

In this system, the number —1 can also be represented as 4294967295. Count that many pennies as dollars and you see 42,949,672.95.

The reporter wants you to know this is difficult. I want you to know it's hilarious. But then again, I didn't write a 43 million dollar signed/unsigned bug.

Toronto Code Camp is happening again this year, and this year I will be there speaking. My session title wasn't deliberately chosen to show up first in the list of sessions, I promise. The talk is:

Boost Developer Productivity: Write Extensions to Visual Studio Visual Studio is a complex tool used by a wide variety of developers. Customizing your tool makes you more productive, and Visual Studio is highly extensible. In this demo-heavy session you will see how to write your own Code Snippets, how to write and use macros, how to write a simple add-in, and how to create your own templates for projects and project items, complete with wizards. Streamline development to fit your processes and habits by writing a little code to ensure that Visual Studio works the way you do.

I hope you already know the rules of Code Camp: all code, no fluff, and always free. Come on out and learn!