Sunday, March 26, 2006

Finally caught back up

When I recovered all of my data after the hard drive crash, I just put it all into a folder on the new computer. Tonight, I finished getting all of the data back into the right directories.

I double checked that everything in source control was up to date, and made sure that my DeskBlogger code was correct. I thought I had missed the boat on some of it, because the msi that was available for download was out of date (I just updated it to the newest version, which I am using to type this entry).

I have a set of features for v2, also. I'm going to change the work flow, so that you don't have to log in to your blog before posting. To do that, I'm going to have to decouple the post object from the blog object (up to now, a post has contained a reference to the particular blog that it is associated with).

I'm going to change that, and allow the post to exist without knowledge of a blog. This will allow a user to type one or more blog entries, and save them to the local machine, without having to connect to the internet. This will also make it easier for those people that have multiple blogs to post their entries to all of them.

Stay tuned for more updates.

Friday, March 24, 2006

Shockingly unqualified developers

Over the last week, we have been interviewing developers for a short-term consulting gig. We need someone who can hit the ground running, and be useful right off. Our needs are pretty straightforward; we need someone who can write some sql scripts, and hopefully help us with some database tuning, and someone who knows their way around a group of business objects designed using object oriented principles.

The first guy had 14 years of experience, and the consulting firm said they were going to use him as an application architect. We gave him a simple db schema, and asked for a couple of scripts. This guy, with 14 years of experience in developing, and tons of sql and oracle experience, couldn't write a simple query using three related tables!

The next guy had 10 years of experience, and tons of consulting gigs, using C, VB, C++, C#, and VB.Net. Dude couldn't tell me the difference between inheritance and interface implementation. I asked him what an interface was, and he never said the word contract.

What is the deal with this? Where have all of the decent developers gone?

Wednesday, March 22, 2006

Fighting Diabetes

Many of you know that I read a lot of blogs. One of the technical blogs I subscribe to is Scott Hanselman's blog.

Scott has diabetes. From what he writes, it sounds like he has a really bad case. He's going to be participating in a walk against diabetes. http://www.hanselman.com/blog/TeamHanselmanAndDiabetesWalk2006.aspx

Thursday, March 16, 2006

What to do if your notebook hard drive fails

First, Don't Panic.

As long as you didn't let the smoke out of your hard drive, you should be okay. Here's what you need to do:

  1. Go buy a USB laptop hard drive enclosure.
  2. Plug your laptop hard drive into the enclosure, and hook the usb cable up to your computer at home.
  3. Download some recovery software like R-Studio.
  4. Pay the company their $45, they are about to earn it, and earn it big time.
  5. Install R-Studio on your home pc, and start it up.
  6. Tell R-Studio to scan the USB connected hard drive.
  7. It should, once it's done, give you the original directory structure of your hard drive. As an added bonus, many of the files you deleted from the HD will be available again.
  8. Select the files you care about, and tell R-Studio to recover checked items.
  9. Go to sleep.
  10. When you get up, it should be done. You should see a screen like this:
    Screen print of successful restore operation

I cannot tell you how stoked I am that this worked. As you can see in the screenshot, I lost some files, but not many, and not the ones that I care about. Most of the lost files were MP3s and videos, which I can re-acquire. I got the important stuff back (email, code, documents). Just about 11 gigs worth.

Thank you, R-Studio.

Wednesday, March 15, 2006

Software metrics

Lately, there has been a lot of talk at work about the set of bugs filed against our system. Most of that discussion revolves around two metrics: number of open bugs, and the time since the bug was reported.

The powers-that-be at work have decided that the dev team should complete 18 bugs every week, and 2 enhancements. There is no mention of bug severity, scope, or importance to the application. All that matters is the 20 items, and that those 20 items are the oldest items still open in the database.

Larry Osterman has an interesting post about a similar situation. He presents the case from the point of view of measuring tester performance based on number of bugs reported in a given time frame, but I argue that the conclusions are equally valid when talking about the number of bugs closed in a given time frame. Larry's Rules of Software Engineering #2: Measuring Testers by test Metrics Doesn't. Larry's essay got included in Joel Spolsky's book.

Why is it that software project managers refuse to understand that there is more to a bug than it's count? Some bugs are inherently more important than others. Some bugs affect the functionality or profitability of a system, while many bugs are just nit-picky user preferences (or worse, tester preferences) disguised as a "bug".

Here's my real question: If your executive team is focusing on the wrong metric (popular opinion on my team is that they are), whose failure is that? What if your executive team is built of people who have historically had to focus on the number of beans? Who, from the tech team, is responsible for teaching them the way to manage a software project? Or is it their responsibility, as product/project managers, to buy a book, and learn more of the techniques for successfully managing a software project?

Tuesday, March 14, 2006

All the little things

The hard drive in my work laptop failed last week. That sucks, right? Well, I thought it was irritating and all, but now it's gotten downright freaking irritating.

I had about 7-10 GB of personal data on that hard drive.

I had a few work files that hadn't been added to source control yet.

I had about 2 GB of work emails.

I had several (about 25-30) files checked out of Vault on the machine, with changes not saved.

I recreated the work that I lost. I have been dealing with the loss of email. No big deal.

Well, tonight, I decided to work on my game a bit. I thought of a way to implement the wrapping/clipping that I want to use; or at least close approximation of the behavior I ultimately want. So, I go to my Vault server, and get latest on all my code. No errors, no problems. I go to build the project, and oh boy, here come the issues.

Generally, I use source control integrated through Visual Studio. The opposite of Eric Sink. I'm one of those customers he was out of touch with. Here's where things get tricky. At work, we use another SourceGear product, SourceOffSite. At home, I use Vault. I've been trying to get my work to purchase Vault for a long time, but it hasn't worked yet (I won't get into that this time, I promise). Since I realize that my work computer is primarily a work computer, I set up SourceOffSite as the Visual Studio-integrated source control client. Vault, I have to use like Eric, in standalone mode.

There are some nuances to using source control without it being integrated. Mostly, you have to think more. Which, if you know me, you realize is sometimes pretty freaking tricky. For instance, if you add a new class to a project in Visual Studio, and have integrated source control, the source control both checks out the project file, and adds your new class to source control. If you use the standalone client, then you have to manually check out the project file, and manually add the new class. Manually add the new class. What a concept. Being used to integration, I forgot to add a couple of new classes to source control. Guess who feels like a total freaking ass?

The worst part is that those two classes are critical to the game's architecture. And, I haven't looked at the classes in months, since they have been static for a while. I have no recollection of their specific implementations. If I can't find some way to recover the data off of the corrupted hard drive, I am totally screwed.

I'm downloading SystemWorks now, to see if it can recover my data. This is SO not cool.

And, there's a bunch of the little things that are driving me crazy. Settings that have been lost. RSS subscriptions missing. Little things, but incredibly irritating. Oh well, at least I will have more empathy for customers who lose data, if I ever end up working on a source control system (hint, hint Mr. Sink).

Wednesday, March 01, 2006

What an amazing day

Today has been wonderful. What's been so wonderful, you ask? I'll tell you:


  • I got to start writing a new tool in VS 2005 today, at work.

  • Big M called me today, and it was a great conversation. After our last conversation went sour, I was worried that our relationship might have been damaged beyond belief, but I was wrong.

  • While I was on the phone, UPS showed up. Not only did I get my leather jacket (go Courtney!), I got all the computer stuff I ordered yesterday.



See, an amazing, wonderful day. I couldn't have asked for anything else to make it better.

I'm supposed to hear from Big M on Friday again, so see when we are going to next get together. Can't wait for that.