The stuff leaders are made of…?

For a variety of reasons, I’ve been thinking a lot about leadership lately. About how I can respect a person (like the guy I worked for at my first programming job) for their skills and abilities, while not necessarily respecting that person as a leader. And then there are other people that I do respect as leaders. What makes the difference?

The more I think about it, the more I think that a big part of it comes down to one thing, and that’s empathy.

Some of the people I’ve worked with, and for, simply don’t have it. They do things without it ever even occurring to them that those things will have an emotional impact. The capacity for empathy just isn’t in their wiring.

And it has a big effect. Which one is more effective? This:

This is really important for the success of the company. It has to get done. Make it happen.

Or this:

This is really important for the success of the company. I know you guys are going to have to put in a lot of sweat and tears on this, and I know some of it is going to suck in the short run. And believe me, I’ve been through these myself, and I’m with you in spirit. But it has to get done. I’m counting on you to make it happen.

Often, a lot of that is unspoken. It comes through in the tone of voice, the choice of words, even the eyebrows. But it comes through. Someone who acknowledges you as a human being, instead of treating you like a robot, is a hell of a lot more effective as a leader. Whereas someone who is in a leadership role, but just doesn’t have the gift of empathy, should seriously consider that maybe they’re in the wrong place. Or should find some other way to compensate for it.

I’m actually going somewhere with this.

Jennie started a new job this past Monday, doing phone surveys. It has its good points and its bad points so far. One of the good points is that she can set her own schedule.

One of the bad points is that any hours (or partial hours) that she’s not on the phones do not count. This is a detail that they forgot to tell her when she made up her schedule for the week. (In fact, it directly contradicts what they told her during training.) She spends time doing paperwork, trying to chase down a manager to approve her paperwork, trying to find somebody to get her another list of numbers to call when she finishes the last one. It adds up. The week is almost over, and the call center is not open enough hours between now and Sunday night (the official end-of-week) for her to meet the 40 hours she’s required to get.

The upshot is that, unless somebody from management intervenes, she will probably lose her job. And there won’t be any senior-enough managers in the office until Monday.

She wants to cut her losses, quit, and go spend her time looking for another job.

But while she’s looking, her paychecks will stop, and our mortgage won’t. My vote is to stick it out until Monday, and talk to a manager, and see what can be done. I can’t believe they would fire all of the new hires who happen to guess wrong when they schedule their first week.

I believe that for her to finish out today and tomorrow, and then go talk to a manager on Monday, is a logical, solid course of action. We’ve had a couple of brief phone conversations today, and I asked her to stick it out. I made suggestions on how she could deal with the frustration. I even asked her to promise to give it a fair shot. Try not to spend time worrying about losing your job; there’s nothing you can do until Monday. Take one day at a time. Make it through today. Think about the house. Think about the cats. I love you. Hang in there.

All, I hope, good advice.

But you know what? Advice is cheap. And now that I think back on it, I think I made a fatal mistake. I was taking the leadership role, by saying what needed to be done. But during those conversations, I don’t think I ever did anything to empathize.

I didn’t say that I know how maddening it must be. I didn’t say that I know how much effort it will be to make it through the day. I didn’t say that I’ve been through it before, and that I know how much it sucks. I didn’t say that I’m just as worried about her losing the job as she is. I didn’t say that I’m with her in spirit. I didn’t say how much I appreciate her being willing (however reluctantly) to go through with it. I didn’t say I’m counting on her, and that I believe in her, and that I know she can hang in there and make it through and get it done. I didn’t even say I’d give her a backrub when she got home.

I didn’t say any of that. It never even occured to me.

Nobody told me being a grown-up was going to be so damned hard! I think it’s important to stay calm and focused when things go wrong, but… well, if I’m telling my emotions to shut up so I can deal with the crisis, then I’m losing all touch with empathy. And turning into the same thing that infuriates me in other people.

No wonder Jennie got so frustrated talking to me this morning. (Among many, many other occasions.)

Jennie: I’m sorry. I’ll try my damndest to do better.

First impressions: Vault

We’ve been looking at switching source-control systems at work, and one of the new systems we’re looking at is SourceGear Vault.

I’ve played around with Vault at work, but I haven’t actually used it in a real project. So, since it’s free for a single-user installation, I decided a while back to download it at home, and use it for DGrok.

Here are my impressions so far:


Vault consists of three separate pieces: the server, the admin tool, and the client. Accordingly, they also have three installers.

But they do try to make life a little easier: the server installer is actually an “everything” installer, which you can, if you so choose, use to install all three products on the same PC.

Lovely, says I. I’m installing all three on my home computer, so I’ll just use the server installer, and select everything.

That was mistake #1.

So I logged in under an administrator account, installed all three products, logged back in with my development account, opened up the Start menu… no Vault.

Log out. Log back in as an admin. Make sure it’s really there in the Start menu. It is. Check the folder properties for the “Vault” Start menu folder. Yep, they put it under the administrator’s Start menu, instead of under the All Users Start menu.

Sigh. Uninstall. Reinstall. This time, keep a sharp eye out for the “install for all users / install for just me” radio buttons, all the while grumbling at SourceGear for not making “all users” the default.

The radio buttons aren’t there.

This really bugs me. Am I going to have to log in as admin, find the Users control panel applet, promote my development account to administrator, Fast User Switch back to the startup screen, log in as my development user, install Vault, log out, switch back to my administrator account, and remove admin privileges from my development account? Yuck. I’ve done it before, but it doesn’t exactly make me want to send the vendor a nice basket of fruit for Christmas.

Well, I thought, maybe they just didn’t put those radio buttons in the server installer. That would sort of make sense; the Web service is only directly runnable by a single user, after all. Of course, that user is actually a daemon account, not the user who’s doing the installing. So it doesn’t make a lot of sense in either case.

But I downloaded the other two installers, and uninstalled, and reinstalled the server, this time selecting only the server. Then I installed the admin tool from its own installer.

No radio buttons.

I’m getting disgusted at this point, but I decide to take the plunge, and go ahead and install the client too. And, lo! I did look, and it did have the blesséd radio buttons.


It does mean that I’m going to have to do some jerking around any time I want to use the admin tool. But at least Vault is basically usable without going through too many stupid contortions one way or another.

Lesson learned: Don’t use the Vault server installer to install the Vault client. Just don’t do it.

Visual Studio integration

Visual Studio integration was fairly painless. And let me tell you, once you’ve got Vault going, it’s way faster than VSS.

This really surprised me. With Vault, you’ve got a .NET client piece, talking over a Web service, to an .asmx running on Microsoft IIS, which then connects to an SQL Server database. That’s a hell of a lot of overhead. Obviously, client/server has serious benefits when you’re running on a network, but since VSS just talks to flat files, I would’ve expected VSS to be much faster when everything’s on the local computer. Apparently not so.

Checkouts, in particular, are imperceptible with Vault, whereas checkouts with VSS (with the repository on my local PC here at home, mind you) always brought Visual Studio to a dead stop for one or two seconds.

Score one for Vault.

Visual Studio diffs

Vault’s diff window is one of the things I was most looking forward to. Unfortunately, there’s some poor implementation here that makes it less than a pleasure to use.

When I’m using VSS, and I want to view diffs from Visual Studio, I right-click on a file and select “Compare Versions”. There’s a brief delay, and then a VSS diff window pops right up, nicely maximized so I can see everything.

When I’m using Vault, and I right-click and select “Compare Versions”, I don’t get diffs. Instead, I get a huge dialog box with six radio buttons (one of them grayed out), edit boxes, Browse buttons, and a grayed-out checkbox. Gaah. Okay, what does it say? “Compare the working file/folder to:” The radio button for “The last version retrieved from the repository” is selected. Okay, that’s fine. Click OK.

(When VSS asks questions like this, it always — always — has a checkbox saying “Only show this dialog if I’m holding the Shift key”. I like that feature. I use that feature all the time. That’s why VSS diffs only take me two clicks. It really disturbs me that Vault doesn’t have anything like it.)

Now it pops up a diff window, but no matter how much I try, that diff window is always tiny when it pops up. It’s about half as tall as the screen, and about half as wide as the screen. Every time. So we’re talking 25% of the available real estate, and that’s not even counting overhead from things like toolbars and status bars and gutters. It makes absolutely no effort to remember the window position from one diff to the next, even within a single Visual Studio session. And nowhere can I find a preference to tell the damn thing to always maximize.

The annoyances add up. Quickly.

So, with VSS, I was always two clicks away from a usable diff. Two clicks that were pretty close together on the screen. But with Vault, I have to do those two clicks, then get my mouse over to a little OK button halfway across the screen (actually, I usually just hit ENTER with my left hand), and then move the mouse halfway across the screen again to get to the teensy little Maximize button (although I usually just double-click on the title bar, since it’s a bigger target).

When I do get that diff window up, those sub-line-level diffs are nice. But geez. C’mon, guys, get with the program:

  1. Don’t ask me what I want to compare against. You’re slowing me down. Just go ahead and use the option I selected last time. But once the diff window is open, let me change my mind; put those six options in a dropdown menu or a sidebar. (And remember my selection for next time.)
  2. And maximize the diff window by default. Always. Always.

Uncommon Knowledge about nuclear waste

I just ran across, a Web site that plays 20 Questions. And no, this isn’t that old BASIC program that just builds a tree of questions based on your “yes/no” responses, and can’t cope with a wrong answer early on; this is actually artificial intelligence, and it learns from experience.

It can be quite amusing. So far, I’ve beaten it on Taser, nuclear waste, and mouse pad. (It got confused because my mouse pad is round.)

If it can’t guess correctly (they actually give it 30 questions so it can learn faster), it asks you what you were thinking of, and if that thing is already in its database, you can tell it so. That’s when the fun begins.

If your answer was in its database (whether it guessed correctly, or it failed but you identified the item as something it knew), it shows you a summary page. Here it compares notes (“Does it weigh more than a duck? You said Irrelevant, I say Yes.”). (Though they do have a disclaimer saying “It does not matter if our answers disagree, as over time the game will change its answers to reflect common knowledge.”)

That part tends to be entertaining in itself, but then at the bottom of the page, it shows other “facts” it has amassed about the item in question. These will probably self-correct over time, but… well, here’s an example.

Uncommon Knowledge about nuclear waste
Does it have a hard outer shell? I say Probably.
Is it smooth? I say Yes.
Does it come in different colors? I say Yes.
Does it have a tail? I say Probably.
Is it made in many different styles? I say Yes.
Is it bright? I say Yes.
Do you open and close it? I say Probably.
Does it live in the forest? I say Probably.
Does it produce light? I say Yes.
Does it contain a liquid? I say Yes.
Is it small? I say Probably.
Is it furry? I say Probably.
Does it come in a box? I say Yes.
Can you order it at a restaurant? I say Probably.
Does it fit in your wallet? I say Yes.
Is it something you can wear? I say Probably.

That’s just a great visual, isn’t it? Today’s lunch special: wallet-sized, wearable, forest-dwelling nuclear waste. With a tail and a furry outer shell. Now available in many different styles and colors. Order yours today!

Et tu, Alavert?

I remember always getting a stuffy nose whenever my family went on a trip. It’s only in the past year or so that I finally realized it was probably allergies. To what, I’m not sure. At my grandma’s farm, it might have been a problem with mold; but I had problems visiting my other grandparents in Phoenix, and mold certainly wasn’t an issue there. Never a huge issue (except a few times in Arizona when the combination of dry air and Kleenex overuse led to nosebleeds), but an irritation.

(And no, I’m pretty sure it’s not an allergy to cats. My allergies got neither better nor worse when we started amassing felines.)

It’s been getting a bit worse over the past year or so — mostly a stuffy nose, but enough to be annoying. First I tried Claritin (not much effect), and then Jennie picked up some Alavert, which works fairly well (and has the added bonus that you can just let it dissolve in your mouth, so you don’t need to go find water to take it with — makes it great for on-the-go usage). I can go weeks without needing to take any, but my allergies have been acting up again the past few days, so I’ve been taking it whenever I remember to.

Well, I took my first Ritalin this morning. And since it’s a stimulant, the doctor said I should cut caffeine from my diet, lest I get the “too much coffee” jitters. So I won’t be surprised if I get a withdrawal migraine today without my daily 56 ounces of Coke. I’ll try to stick it out, so I don’t screw with the Ritalin’s effects too much… but if I desperately need a fix, there’s already a mostly-full 24-pack in my cube. (grin)

He also said that non-drowsy allergy meds can cause problems. He wasn’t specifically familiar with Alavert, but said I should probably avoid it. I called the Walgreen’s pharmacy this morning, and they confirmed that it can cause problems with Ritalin.

So, not only am I without caffeine, but I have a stuffy nose. How exciting.

On the plus side, the doctor did say that Ritalin does have a bit of an antihistamine effect. But with the low dosage I’m starting at, I don’t really expect to see much help from that for a while yet.

I’m just hoping the tradeoffs turn out to be worth it. Stay tuned. (I know I will.)

Oh, and I’ve created a new blog category: Ooo pretty.

Approaching withdrawal

It’s been a little over a month since I was diagnosed with ADD. Today was my first appointment with a psychiatrist to talk about treatment options.

I picked a doctor who specializes in adult ADD, and it showed — he walked me through a fairly extensive set of questions, never once referring to any notes. We covered a lot of ground, and when were done, he agreed with the existing, informal diagnosis: yes, I definitely have ADD, and no, there’s nothing else seriously wrong with me psychiatrically (though he was intrigued by my participation in NaNoWriMo).

Today I picked up the first of two drugs he’s going to try me on, both stimulant-based. (There’s a class of non-stimulant drugs, and he asked me which type I’d like to try; but he said that the non-stimulants take around six weeks to kick in, and he doesn’t usually use them on new patients.) For the next two weeks, I’ll be taking Ritalin, starting with a lower dose and gradually working my way up, trying to see what works.

The downside is, since it’s a stimulant, I need to avoid mixing it with other stimulants. Meaning, I need to stop drinking caffeine. Ouch.

Conversations with cats

Jennie and I will occasionally hold mock conversations with our cats. As in, one of us will ask the cat a question, and the other will supply the answer, usually speaking in a distinctive voice so we can tell it’s the “cat” talking.

Today at the store, Jennie got some of those magnetic letters that you can put on your refrigerator. Good cat toys. We got some a month or two ago, and they’re all missing now, most of them having been knocked under the stove or the refrigerator. Hence the need for refills.

So Jennie put the new letters on the fridge, and Sox immediately started leaping at them, pulling one down, batting it under the fridge, looking briefly forlorn that he couldn’t reach his toy anymore, and then pulling another one down to play with.

I was watching him do this, and I asked him, “What are you going to do when you’ve filled up all the space under the fridge, and there’s no room for any more letters under there?”

Jennie supplied the answer, in her best Sox voice: “I don’t know, Dad. I guess we’ll just have to get a new fridge.”

API magic: Windows’ password dialog

I ran across an article on MSDN with some info on using Windows security APIs in your program. It’s targeted at C++, though it has a couple of passing references to .NET.

Some observations:

  1. It has an example of how to bring up the standard Windows “enter a password” dialog, customized for your program. I wondered how GMail Notifier did it. (CredUIPromptForCredentials, for those too lazy to follow the link.) Alas, the example is in C++, not .NET, but it’s on
  2. It has examples of a new XP/2003 API function that encrypts data using the current user’s credentials, so that data can only be decrypted by that same user. This is a pretty interesting idea, for things like password storage. (CryptProtectData and CryptUnprotectData. Also documented on
  3. Man. Security APIs are ugly.
  4. Especially from C++.