"Do what you love" or "Love what you do"?

A friend of mine has returned once again to a place called “career second-guessing.” He’s an IT guy who’s comfortable but not “happy” with his current employer or work situation. (It’s a decent paying job with little surprises but no room for growth.)

We’ve been bantering via email about what he should do. My last response was something that may be of interest to others, so I’m sharing it below.

“Do what you love” is probably the wrong thing to say. The correct thing to say is “Love what you do.” There are huge differences. Sounds almost the same, and it is — the difference is the chicken and egg.

If you believe, “Do what you love,” you must first figure out what you love — something that’s not easy to do, because we don’t know what we love until we find it. Think about the time before you met your significant other… If you had to describe your perfect mate (physically, mentally, emotionally, etc.), it wouldn’t necessarily describe him or her (at least, not in all ways). It’s no different with work.

Consider how many times we’ve said, “This is my dream job / mate / situation.” How many times has that panned out? Odds are, it flamed out more often than it panned out.

Some people get lucky and love what they do early in their professional career. Sometimes, over time, you fall out of love with what you’re doing. When you’re not loving what you do, it’s time to move on — just like it’s time to move on when you don’t love your mate. You’re fooling yourself otherwise.

I’ve changed jobs more times than most grown men can count (more than a baker’s dozen jobs since college). I average 1 1/2 years between job changes. For a period of time at each new job, I love what I am doing because it’s exciting and new, like a new girlfriend, or a new video game. Then I fall out of love, and I move on.

Your challenge is to find the thing that you’ll love to do, then hope that it’ll continue to keep your interest. If you don’t have it now, it’s time for a new job, where you may find it. If you don’t find it at the next job, then try again. Don’t lock yourself into something you don’t love to do.

Oddly, the only two things I’ve stuck with in my life for more than three years are my wife (!) and my baseball game (!!). I guess they both have a certain “stickiness” to them that I can’t quite shake. Now if I could only get my wife to play my baseball game, I may be in heaven…

Popularity: 2% [?]

Eight cores, four gigs, ten raids, oh my!

Last week, I dealt with an outage of my “business-grade” Internet connection for the last time. The solution? A managed server, courtesy of SoftLayer.

For a pretty darn good price, I get full access to a dual quad-core server with 4 gigs of RAM and 500GB of usable disk space in a RAID10 array. Add in an awesome web-based control panel, an excellent sales staff (thanks, Michael!), and provisioning in less than two hours, it seems like the right decision so far.

It’ll take some time before I migrate completely to this new rig, but until then, I can enjoy the following scenery.

image

Popularity: 2% [?]

Good morning, vandalism, bad morning, good Geico

I woke up this morning and everything was going fine until my paper boy rang the doorbell.

No, my paperboy didn’t deliver a bad newspaper — but he did deliver bad news, related to the condition of my car, which was parked in front of my house.

Smash in my back windshield Smash in my front windshield

At 9:30AM, I called the police, who still haven’t showed up after 5 hours. At this point, the car is already gone. The incredibly friendly and helpful people at Geico coordinated the towing of my car to an auto glass repair shop that can fix everything today. To top it off I also had glass coverage, so no out of pocket expenses. (I was ready to start calling junk yards, as the car is eight years old, and I have no problem with previously used windows.)

This is the first claim ever on my insurance with Geico (over ten years!), and I have to say I couldn’t be happier with the level of service they provided. Great rates and great service! I highly recommend them.

While I was writing this post, a fellow who lives a block away rang my bell and told me he saw the whole thing (he happened to go out for a cigarette at about 3:00AM). Apparently two punks (the only proper description of them) with sledgehammers jumped out of a Jeep Cherokee, smashed the front and back windows, and drove off. The guy down the block was too far away to get a license plate number (damn!), and couldn’t get close enough to see it before they drove off.

What many are probably thinking (and what the sanitation guys said when they saw me outside this morning pondering the mess) is, “Who did you piss off lately?” The answer to that is no one. I can’t think of any enemies I have, or anyone who’d be so perturbed with anything I do (which isn’t all that much as it is) to do such a criminal act. Maybe it was a disgruntled CSFBL user? Nah, I don’t think so; they’re better people than that.

How do you describe people who commit these acts? Cowards. They are a blight to society, an embarrassment to the human race. You get your jollies bashing windows with sledgehammers? I’d have more respect for you if you rang my doorbell at 3:00AM and asked me to come outside to slug it out Ultimate Fighting style. At least in the latter case you’re willing to show your face to your victim.

Months back, my brother made news by going outside and helping his neighbor accost someone breaking into a car on his block. I only wish I’d have been as lucky to wake up to the noise early this morning.

Then again, maybe I’m lucky I didn’t wake up — running outside wearing nothing but a pair of boxer shorts as two guys with sledgehammers bash my car doesn’t give me very good odds… but if they are truly the cowards they are, they’d have driven off anyway, and maybe I could have caught that license plate number.

Anyway, today, we sadly get to chalk one up for the bad guys.

Popularity: 4% [?]

Automatic downloads and usability

I just went to download the latest release of GraffitiCMS (which is rather impressive), when I noticed this on their download page.

Thanks for downloading Graffiti!

We know you’re excited about building your new Graffiti site, but please be patient as your download is being prepared. If you click the link below, you will experience a delay in processing.

If your download doesn’t start after you count to 10 backwards in Roman numerals, please click here.

First, I thought it was interesting that they said "If your download doesn’t start after you count to 10 backwards in Roman numerals, please click here." Then, I started wondering… is this the best way to deliver a download to users?

The "automatic download" is rather ubiquitous — nearly all web sites use it. Some questions I wonder about…

  • What percentage of users get the automatic download? How close to 100% is this number? If it’s far from 100%, should we rethink the approach?
  • For those who do get the automatic download, is it something they are comfortable with? Do they typically respond correctly to the browser’s response ("open/save" prompts, or those silly IE slide-in alert bars that people tend not to see)?
  • For those who don’t get the automatic download, how long does it take them to figure out how to initiate the download manually? What’s the abandon rate?

I don’t know the answer to any of those questions, but on the surface, I’d think a better approach (using the GraffitiCMS example above) would be to not have an automatic download. Instead, change the text of the page to the below, and have a big [START DOWNLOAD] button.

Your Graffiti download is ready!

We know you’re excited about building your new Graffiti site. Please click the Start Download link below to get your copy of Graffiti.

[START DOWNLOAD]

I wonder if an approach like that is more useful to users, and has a lower abandon rate than the automatic download approach…

Popularity: 4% [?]

CSFBL server/connectivity issues

Due to a failure of our router that connects us to the Internet, CSFBL is temporarily unavailable. A new router is expected to be received from Verizon on May 2, and we hope to be back online by the weekend.

To be specific, the router didn’t completely fail. The router’s external interface (to the public Internet) works fine, as does its wireless connectivity. What failed was the router’s four Ethernet (wired network) interfaces.

After 45 minutes on hold for a Verizon tech (and being disconnected once), I got a person who was able to confirm that my model router had a known problem where the Ethernet interfaces fail. They were nice enough to offer to ship a free replacement in two days (but were unable to ship it any faster), but couldn’t explain why they didn’t proactively replace customer’s routers who had this known problem. (He was able to tell based on the serial number of the router.)

Either way, this issue — and the fact that the current CSFBL server now has insufficient disk space for all the necessary databases and one week’s worth of backups — is forcing me to recognize that the days of self-hosting CSFBL in my basement are long gone. Managed dedicated hosting is the only long-term solution, albeit a pricey one (up to three times more per month than I pay now).

Oh, and for those who are curious — I will disable the CSFBL sims as soon as I can get access to the console. You see, there’s no keyboard or monitor hooked up to the box, and everything is controlled through the network — a network I can’t connect to right now.

Popularity: 6% [?]

Castle now accepting donations (and getting one from me)

Castle Project is a wonderful thing. I still don’t understand a lot of it, but it’s darn impressive, and has become my library of choice. It’s also no coincidence that my long-sought departure from ASP.Net WebForms was timed with my discovery of Castle MonoRail.

Hammett (the man behind Castle) has finally started accepting donations for his work. I have one thing to say to him:

"It’s about time!"

I know first-hand what it’s like to spend a lot of time on something that:

  1. a lot of people use, and
  2. does not bring in any money (at least, not directly)

My pain has been CSFBL, which today does accept donations (and I truly appreciate every one of them!).

Thinking about this more, it’s been six months since I’ve donated to an open source/free project (I promised last year to donate $5 per month to one), so in order to catch up, I’m sending Hammett $30 ($5 per month). Let’s hope the exchange rate is favorable to him!

My open source donation history to date far is as follows.

Thanks for all your hard work, Hammett, and I hope you can afford yourself a nice vacation for the donations you receive!

Popularity: 4% [?]

Bad programming examples (part 1 of x)

There’s no end to the number of bad programming examples we’ve seen in the past or will see in the future. Recently, I saw this one. (This was actual code seen in an actual project.)

[source:c-sharp]
try { createDate = Request.Params["createDate"]; }
catch (Exception) { createDate = “-1″; }
[/source]

Nice and ugly. Aside from a horrible way to implement a try/catch block, it screams of performance issues and unreadable code.

A more proper alternative follows.

[source:c-sharp]
createDate = Request.Params["createDate"] ?? “-1″;
[/source]

The same project also had this use of integer parsing.

[source:c-sharp]
try { myInt = Int32.Parse(textBox.Text); }
catch (Exception) { myInt = -1; }
[/source]

In this case, you would use the TryParse method instead:

[source:c-sharp]
if (Int32.TryParse(textBox.Text, out myInt))
myInt = -1;
[/source]

Exception handling is for exceptions, not for null checking or validations.

Popularity: 6% [?]