Wednesday, January 17, 2007

Let The Fun Begin

Last week Thursday my laptop decided to break on me.  I've had it for about 4 years, and it has worked amazingly well all this time.  I bought a fairly high end machine at the time, and what's amazing is that I've never felt a strong urge to replace it in all this time.  I figured I'd need to probably buy a new Vista machine in the next 6 months, but really... laptop specs haven't improved terribly since I bought the last one.  Memory is a bit cheaper, and video card options have improved.  You can get a dual core machine which is nice, but really, clock speeds aren't being pushed up because the clock is one of the main power draws on a laptop processor.  The faster you push the clock, the more power you burn.  And when it comes to a mobile computer, battery is life.

For whatever reason, the hinge on my Dell decided to lock up on me.  When I opened it up, I heard this cracking, creaking noise, and the top facing above the keyboard started to pull away from the case.  I've messed around with it quite a bit, but can't seem to get it to work properly again.  It is still usable.  It boots, and I can open and close the case, but the facing is cracking and the screen is unstable staying up.  So I went back to Dell and bought a new laptop.  This one had been very, very good to me, so I decided to go back to it.  Once again, I paid for a very nice machine, and full expect it to last at least another 4 years.

It's actually quite strange that I'm not the type to constantly turn over computer hardware.  Hell, my Uncle (who really only uses his computer for buying and selling stuff on eBay) goes through computers faster than I do.  My problem is that I'm very picky about my computer setup.  And once I have my machine setup just the way I want, with everything installed on it that I want, I just can't imagine going through all that again on a new machine.  I figure it will take me at least a week before I'm able to stop using my old laptop at least partially, and probably at least another full week before I feel really comfortable on my new machine.

I will definitely give it up for Dell though.  When I ordered my new machine last Friday, they said the ship date would be the 22nd.  I figured I could make my old machine last for that long.  Then Sunday I got notification that it shipped.  That's right... more than a full week ahead of schedule.  They said it would be at my door step between Wednesday and Friday.  I got it Tuesday.  However, I do have a few complaints which I will air here.

First, like any boxed computer, they put tons of useless crap on it that I don't want.  There were so many trials from so many different companies, it took me a full hour to remove them all.  Secondly, they set up the screen resolution terribly.  It's a wide screen laptop, and they had it setup as 120 dpi, so all the fonts were horribly distorted.  Had I not been an expert in my field and immediately recognized what was causing it, I would have probably had to call their technical support line for help.  Not smart on their part.

Now I have to decide what I want to do with the old machine.  Normally with my old computers, I reformat them, refurbish them, and give them away to a needy friend who has a really old machine (or in one case none at all) and could use an upgrade.  Several of my old computers have had long, healthy, second (and in one case, third) lives... and it just feels good to do.  But with this one physically failing this way, I don't feel good about giving it away.  So now I have a dilema.  One possibility is that I tear out the guts, and see if I can turn it into a cool digital picture frame, ala Picture Picture.  The other is that I take it out to a field somewhere and recreate a classic scene from Office Space:

Any thoughts?

#    10:09 AM by Nick | 1 Comment |

A Cheap Morning Laugh

Just now I took a big drink of my non-fat vanilla latte, looked at this morning's Dilbert cartoon, and almost spit all over my computer.  You've been warned.

#    8:33 AM by Nick | No Comments |
 Thursday, January 04, 2007

Gimme!

I'm a pretty typical computer geek in that I have my fair share of geeky toys.  I have a rather nice collection of geeky odds and ends that I like to keep in my cube at work.  Jeff Atwood offhandedly pointed out a new toy... which I feel I now must have.  It's a clock made out of Nixie Tubes!  One of my first "tech jobs" was working for the Technical Support Center at MSOE (where I got my degree in Computer Engineering).  My primary job was computer repair and network administration, but occasionally I'd get dragged into the "the dome" (where we stored all sorts of ancient computer equipment which we didn't need any more) to tear stuff apart for recycling.  One of the items that we tore apart had all sorts of displays made out of Nixie Tubes, and so I kept one cause I thought it was cool... which I still have to this day, and sits on a shelf in my cube with my other toys.  So when I saw a picture of the Nixie Tube Clock... I immediately started to drool:

In my eyes, this is the perfect combination of form and function.  A gorgeous stainless steal modern look to the base, yet it's operation depends on 30 year old technology.  I love this kind of elegant combination of old and new.  So why don't I just go out and order one right now?  It's $300!  That's just a little too much for a clock that would sit in my cube... even for me.

#    9:04 AM by Nick | 2 Comments |
 Friday, December 29, 2006

Spreading the Word

It all started with Jeff Atwood, and then I saw another one from Omar Shahine, so I'll add my own to the mix.  Instead of talking about simplifying the login process, or going to a .com site faster, I'm going to talk about opening up Windows Explorer.  Hopefully Jeff won't take offense to stealing this format, and helping to start a dreaded blog meme.

Every computer with Windows has Windows Explorer, that everyone has to use to manage their files.  It's pretty much unavoidable that you'll have to use it most every day.

As much as we see Windows Explorer every day, you'd think we would have mastered it by now. Unfortunately, we haven't. Here's what I've observed users doing, over and over again:

  1. Click the mouse on the Start button.
  2. Click the mouse on Program Files.
  3. Click the mouse on Accessories.
  4. Click the mouse on Windows Explorer.

Every time I watch someone do this, a little part of me dies inside. And I see it all the time*.

I'm not just talking about casual users like our parents. I'm talking about our fellow software developers, and other users who work with the computer for most of the day. People who really should know better.

What kills me about this is all the needless, painful mouse clicks. You've needlessly clicked your mouse and waited for menus millions of times-- just add a little Windows Logo+E to the mix! I'm no keyboard Nazi. All I want is to save users a few precious seconds of their day as they slog through their computer files during their work day. And it's so darn easy:

  1. Press the Windows Logo button + E

See? Wasn't that nice? Now it's your turn to play Keyboard Appleseed and spread the word so your fellow coworkers can spend less time opening programs - and more time getting actual work done.

* A variation I also see is when people right click on the Start button and click Explore from the context menu.  Although it's fewer mouse clicks, it needlessly takes you deep into your directory structure where your Start menu shortcuts are stored, and so is also a waste of time.

#    9:45 AM by Nick | 1 Comment |
 Friday, December 22, 2006

You Know You're a Geek When...

... reading a post about Beowulf first conjures memories of the distributed computing project, and not the original Old English poem.

#    9:15 AM by Nick | No Comments |
 Thursday, December 21, 2006

BarCamp Madison Details Announced

The dates and location for BarCamp Madison have been finalized.  It will be March 3rd and 4th, 2007 at the Inn on the Park Hotel.  The next planning meeting will be held in early January, so stay tuned to the Current Event page for details if you want to participate.

#    2:39 PM by Nick | No Comments |
 Tuesday, December 12, 2006

Happy Birthday Edvard Munch

One of my coworkers IM'd me this morning...

See Google's main page?

Every now and then they change the logo on the main page, either to celebrate a holiday or some other event.  Today is Evard Munch's birthday, and they have a Google Logo featuring one of his most famous paintings, The Scream.

As it happens, one of the many trinkets that fills my cube is an inflatable version of the main character in The Scream.  I also have a version that I use as desktop wallpaper on my computer sometimes.  So I wish a very happy birthday to the now departed Edvard Munch, who so aptly painted an event that I sometimes want to recreate at work on a daily basis.

#    8:57 AM by Nick | No Comments |
 Thursday, December 07, 2006

Brrr... It's Cold In Here

Our code froze!  A lot of companies include some sort of code freeze process in their development process, but few truly honor the meaning, and instead simply use it as just another artificial milestone that they can celebrate.  But what exactly is Code Freeze, and why is it useful?  At a very basic level, code freeze simply means that no more changes are allowed to be introduced into source control.  Generally this also means that all defects have either been fixed, or they have been reviewed and its been decided to either not fix them, or delay fixing until another release.  Usually the first build after code freeze is declared a Release Candidate.

The one important part of the code freeze process, which many companies fail to implement is the shelf period.  If you freeze code, and then immediately release your software the next day, then code freeze is pretty meaningless.  I personally recommend at least a one week shelf period after a release candidate (depending on the size and complexity of the application).  During this period of time, your developers and testers should continue testing and using the application.  Because nothing new is introduced into the code, this provides a period where everyone can feel confident that things are going well, and extra regression testing and user acceptance testing is performed.

Code freeze also signals an important change in the development process.  Before code freeze, defects are fixed at will by people, and changes can be introduced rapidly.  During code freeze, extra scrutiny is placed on any defects that are submitted, and generally only high priority defects are considered for fixing after a review process which includes the development lead, test lead, and project managers.  Defects that include changes to functionality should be flat out rejected, and only defects to already included functionality should be considered.  Also, any code changes that are made during the freeze must be associated with one of these defects, and must be reviewed by another developer on the team before it is to be included in another release candidate build.  Any changes made to the code that aren't related to the defect should be rejected by the reviewer.  I don't know how many times I've seen people try to sneak in changes during code freeze, just because they wanted to "clean up the code".  Now is not the time for those types of changes.  The reviewer should also verify that the change is safe, and that it actually fixes the defect.  The idea is not to introduce a new bug when trying to fix this one.

If multiple release candidates are created, it is up to project management whether the code freeze time will be extended.  This is generally done after examining the nature of the defect, and the also the size of the change, and how much code was effected.  If something as small as a spelling mistake is found, then code freeze would not be impacted.  However, if a generic library method is changed that is used by various parts of the application, then you'd want to extend the freeze to regression test the affected areas.

Remember, code freeze isn't just another meaningless milestone.  It should include process change, and should help to introduce confidence and stability to the software development process just prior to deployment.

#    10:39 AM by Nick | No Comments |