# Saturday, April 04, 2009

I spend a lot of time at a keyboard and screen. Most of the time, I'm working. I might be writing code or a document, reading something to better myself, reading something because it's my job to review it, watching a video or screencast, triaging bugs in TFS, or of course processing email. Some of these tasks involve a lot of typing, others mainly mousing, and some involve sitting almost completely still with the occasional page-down or mouse click. Other times, I'm having conversations with family or friends, reading something for fun, or playing a game. These tasks also have the same spectrum of frantic-typing and clicking through to mostly passive consumption with the occasional click or keypress. And at still third times I'm doing what we might call family administrative tasks - seeing when the grocery store in a nearby town closes, checking the school web site for holiday dates, ordering something, renewing something, banking or billpaying - or business administrative tasks - including invoicing my clients. You can't tell, by looking at the back of my screen or listening to my typing and mousing, what I'm doing. You can't tell by where I'm sitting either ... I might be using Remote Desktop to access the computer where our book-keeping software is installed, or a server that needs to be configured, or a client machine so that I can reproduce a production problem.

So what? Well it isn't how work has usually been. Hundreds of years ago, if someone was working you could tell by looking at them. They had a hammer in their hand, or a paintbrush, or some other tool. Even a few decades ago, if someone worked at a desk by writing on paper it was easy to see what desk they were at, what papers were strewn around them. Reading the paper looked very different from checking the invoices. And of course, leisure never involved the same tools or locations as work. Now, not so much. Bill Buxton has an interesting article on just this topic. He's at Microsoft Research, and it pleases me to think that folks there are thinking about this. I look forward to a future time when people can get a better idea of what I'm doing and how interruptable I am, not just "you're always on your computer."




Saturday, April 04, 2009 8:45:51 AM (Eastern Standard Time, UTC-05:00)  #    
# Thursday, April 02, 2009

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.


Thursday, April 02, 2009 4:30:01 PM (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, March 31, 2009

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.


Tuesday, March 31, 2009 4:16:37 PM (Eastern Standard Time, UTC-05:00)  #    
# Sunday, March 29, 2009

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.


Sunday, March 29, 2009 6:47:01 PM (Eastern Standard Time, UTC-05:00)  #    
# Friday, March 27, 2009

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!


Friday, March 27, 2009 6:27:43 PM (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, March 25, 2009

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!


Wednesday, March 25, 2009 6:17:10 PM (Eastern Standard Time, UTC-05:00)  #    
# Monday, March 23, 2009

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.


Monday, March 23, 2009 6:12:21 PM (Eastern Standard Time, UTC-05:00)  #    
# Saturday, March 21, 2009

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.


Saturday, March 21, 2009 5:59:39 PM (Eastern Standard Time, UTC-05:00)  #