jump to navigation

The Silver "Bulletsh" of Questions October 2, 2009

Posted by markegilbert in General.
add a comment

One of my favorite movies is “The Hunt for Red October” with Alec Baldwin and Sean Connery.  I’ve lost count of the number of times I’ve seen it, but it I’m fairly sure I’ve cleared 25 by now.  Once you’ve seen it, how can you resist quoting the line “Most things in here don’t react too well to bullets”, making sure to add the “sh” sound at the end?

There are several great scenes in the movie, but one of my favorites is where Jack Ryan (Baldwin) is trying to come up with a way to basically steal a state-of-the-art Soviet submarine, avoid the need to eliminate the entire crew, and convince the Soviet government that the United States doesn’t have it.  Ryan is convinced that the captain of the submarine, Marko Ramius (Connery), is trying to defect and wants to deliver the submarine to the United States.

The scene starts off with Ryan realizing that he doesn’t need to figure out to get the crew off and dupe the Soviet government – Ramius must have already figured out how to do that.  So, he reasons, I just need to figure out what Ramius is going to do.  Ryan continues his verbal brainstorming with “They’d have to want to get off.  How do you get a crew to want to get off a submarine?  How do you get a crew to want to get off a nuclear…”  At that point, he has his answer.  “How do you get a crew to want to get off a nuclear submarine?”  Easy – fake a reactor accident.  What I love about this scene is Ryan continuing to rephrase the question until he comes up with one that he can answer.  Once he got around to including “nuclear” in his question, the answer became obvious.

This skill is increasingly useful in the “information age”, where search engines are the true portals to the Internet.  Imagine trying to find anything on the Net without using something like Google or Bing – inefficient, at best.  As good as search engines have become, though, the answers they can lead us to are usually only as good as the queries we start with. 

In several cases, it’s easy to know what to search with.  Suppose you’re presented with an error message like “Derived classes cannot raise base class events.”  If you want to find a way to correct or avoid that problem, the most logical first search should be on the message itself (in which case you might turn up this light and fluffy post).

In other cases, though, the question is harder to formulate.  Suppose you don’t know that you can have one class inherit from another class, but you want several to share some of the same functionality.  It will probably take you a few tries (at least) to arrive at the silver bullet question – the one that you will be able to find an answer for.  It’s times like this where Ryan’s skill comes into play.

When I’m faced with a situation like this, I try to formulate the best question I can and see what comes up.  I don’t really expect to find the answer with my first search, but rather, I’ll skim through the first couple of pages of hits looking for alternate keywords and phrases to try, and then try another search.  Wash-rinse-repeat until I have my answer.

Now, I don’t want to mislead you into thinking that this technique always works, or that I can always apply this technique with success.  There are times when I just can’t find what I’m looking for – I can’t formulate that silver bullet question. 

As I was formulating my notes for this post, I began to wonder if there are classes or seminars out there to show you how to ask better questions, or show you ways to reformulate your current question into one that you can find an answer to.  One technique might be the “Ryan Approach”.

Another might be to completely explain the issue to someone who isn’t involved.  I can’t tell you how many times I’ve asked a colleague to come over to my desk and look at the problem.  They stand there for two to three minutes while I explain what’s happening and what I’ve tried.  The act of having to verbalize everything about the issue to other person will more times than not lead me to the answer – and the other person doesn’t have to do or say anything.  They just stood there and listened.

What other tricks or techniques can help you to formulate the silver bullet of questions?

Pigeon faster than the interwebs September 11, 2009

Posted by markegilbert in General.
add a comment

I wonder how the pigeon’s speed would stack up against an unladen African Swallow: http://ca.news.yahoo.com/s/reuters/090909/odds/odd_us_safrica_pigeon

Organizational System Fail August 24, 2009

Posted by markegilbert in General, Tools and Toys.
2 comments

The core of my organizational system for many years has been Microsoft OneNote (most of that experience is with OneNote 2003, although I spent a year with OneNote 2007).  In the last year I coupled that Microsoft Live Mesh, and the combination was awesome.  I could organize my day and week from home, then walk into the office and find those notes synched up with my work machine.

It was easy to use.  It was reliable.  I didn’t have to think about it – it just worked.

And then on Friday, it didn’t.

I booted up my machine to find two projects’-worth of notes completely gone.  Those two projects just happened to be my MAIN two projects currently – weeks of thoughts, ideas, questions and solutions: gone.

I actually found myself talking to my computer: “Oh no, you did NOT just do that.”  Sigh.  Oh yes, it did.  What a way to start a Friday.

I managed to recover a few of the points from memory, but as Professor Jones would say “I wrote them down…so that I wouldn’t HAVE to remember.”  More importantly, I resolved that this weekend I would solve the core issue.  Namely – the combination of OneNote and Live Mesh, or more specifically, how OneNote stores its data.

The core of my organizational system was four OneNote “notebooks”.  Each notebook contained one or more “pages” where each page contained the notes for a single project.  The notebooks were named “Today”, “This Week”, “Work” and “Personal”, and my typical day would begin by moving pages into “Today” so I would have the focus for the day.  As I completed them, I’d delete them.  If they were put on hold for some reason, I’d move them to “This Week” or one of the others.

Live Mesh, for its part, is configured to watch one specific folder on my machine – the folder where I keep my .one files.  If it sees one on my hard drive that’s more recent than the corresponding version in the cloud, it copies it up.  If it finds one in the cloud that’s more recent than the corresponding one on my hard drive, it copies it down.

Simple right?  Of course not.  If it were simple I wouldn’t be writing a blog post about it.

My machine at home is on 24/7.  That means that I can move a page from notebook A to B, and within a minute or so that move will be replicated to the cloud.  My machine at work, on the other hand, it usually off when I’m not there.  So, when I get into work in the morning, I boot up my machine and Live Mesh with it.  Live Mesh then takes a minute or two to look at the cloud copies of my .one files, and if it finds any updates it pulls them down.

OneNote manages a single .one file for each notebook.  As I moved a page from “Today” to “This Week”, for example, both of the corresponding .one files would be updated to reflect the move.  That means that if I move a page from notebook A to notebook B, and then go into work, boot up, and change B at work before Live Mesh has had a chance to bring down the update to B from home, that update will be lost.  The page won’t exist in A anymore (because I moved it out of there), and my work-update to B will overwrite the home-update to B (because the work-update is more recent).

I actually had this happen to me a couple of months ago.  The damage then was a relatively minor and short-lived project (“schedule dental appointment”, or something like that), so it was easily recovered from memory.  At the time I thought I learned my lessons:

1) When I come into the office in the morning, let Live Mesh boot up and synch up before trying to use OneNote locally.
2) When I am about to leave the office in the evening, let Live Mesh post my most recent updates to the cloud before shutting down.

As near as I can tell on Friday, I didn’t do anything with OneNote for the first 15 minutes my machine was running – I didn’t even have OneNote opened.

So, as I sat there is nearly stunned silence last Friday morning trying to will my notes back into existence, I resolved that I would do one of the following:

1) Find a way to store my notebook pages in separate files so simple moves wouldn’t cause entire projects to blink out of existence, or
2) Find another tool to keep my notes organized, or
3) Write a new tool that would meet my needs.

I did some digging into using OneNote and Live Mesh, and found many people raving about the combination, but nobody talking about any synching problems.  The closest I got was this post on Microsoft Connect.

The other tools (task managers) that I found were way too UI-heavy: too many buttons, options, colors, etc.  I just wanted something very subdued, easy, and flexible.  I don’t need or want to subdivide my projects into 500 discrete steps.  All I need is a text editor and the ability to indent – after all, that’s basically what I had been using OneNote for all these years. 

So, that left me with rolling my own.  What I ended up with was a simple desktop application that I call “Tasks”:

Tasks 

Tasks basically allows me to organize and manage a pile of text files – one per project – on the file system.  Tasks stores all of the text files in one folder on the file system, and that folder is synched between my two machines via Live Mesh.  Additionally, the task groups and there contents (Today, Tomorrow, etc.) are defined in an XML file, also in that same, synched folder.   The result is that I see the exact same view at home or at work.  Within Tasks I can create new tasks, move them from group to group, reorder them within a group, change the file name, open an editor to modify their contents, and delete them.

I haven’t decided if I’m going to release this as another tool or not (at the very least, it’s not ready for general release now).  This was something I crammed in over the weekend, so while it does what I need it to do, there are a lot of little things that were left out due to time constraints.  However, today was the first real day in action for Tasks, and it performed well. 

For me, the tool to manage tasks has become such a critical application that it needs to be ridiculously dependable.  Don’t get me wrong – this isn’t medical monitoring equipment or a spacecraft guidance system, it’s just a task manager.  But, it’s that tool that allows me to be as organized and efficient as I am.  If that tool isn’t easy to use, if it isn’t reliable, if I have think about it, then questions of “is my data safe” begins to creep in and sap that efficiency.  Get those critical tools – task managers, source control, data backup, whatever they are – and work to get them as automatic and as reliable as breathing.  The time and anxiety you save by doing that more than makes up for the investment.

Approaching the grid again April 22, 2009

Posted by markegilbert in General.
add a comment

As I’m sure you’ve noticed I’ve been off the blog grid for a while now.  My day job has been unusually packed with work (a good thing, for sure) for the last several months, but I’ve also been working on a few “extracurriculars” since late 2008, and especially since January.  Something had to give, and my blogs were it.

The first project was the birth of my second daughter, Lucille in January.  I think my wife and I have gotten into a decent rhythm now, so I think I can start working in things around that.

The second project is really related to the first.  My wife started back teaching last week after being on maternity leave since January, so the week before that was spent trying to give her time to get caught up with the school emails and getting her plans together for the first week back.

The third project is the Kalamazoo X Conference, being held this Saturday.  That has really been a draw on my time in the last month especially, but it’s something I’ve been involved with since mid last year.  Don’t get me wrong – I am very excited to see it come together as it has, but I will also be very relieved to see it done with.

I’ve been maintaining that once April was over and done with things the insanity should drop back down to a more manageable level, and I’ll be able to get back to some of the other projects that have unfortunately been sitting idle.  What do I have in store?  A software project for an endeavor with my brother and dad, revising a novel that my wife and I wrote, a home automation project, a software development “approach” project – basically I have work for at least the next two years.  From all of this I will also be returning to more regular (and frequent) blog posts.

Thanks for your patience, and stay tuned for more.

Kalamazoo X Conference March 24, 2009

Posted by markegilbert in Agile, General.
1 comment so far

When I was in my fifth year in the Computer Science program at Western Michigan University (yes, my four-year degree required a five-year plan), I thought I had a good collegiate resume built up.  I was near the top of my class.  I was a better than average C hacker.  I was comfortable on SPARCs and PCs.  I was a great problem solver.

I had everything I needed to be a great software developer.  I was so sure of myself that instead of hiring on to a great company, I decided to start my own.  I didn’t want to work for a huge software shop, so why not go to the other extreme and strike out on my own?  I already had a lead for my first major customer.  Others would surely flock to me.

Ahem.  Reality has a way of setting in when you least expect it.

After two and a half years of operating as an independent contractor and being supported by my lovely wife’s salary, I decided that perhaps the independent gig wasn’t for me after all.  Having said that, I wouldn’t trade those two and a half years for anything.  That was one of the most intensive stretches of learning that I’ve done in my life.

What did I learn?  That knowing a programming language inside and out, knowing how to make Visual Studio sing, and being able to solve Millennium Problems for breakfast are necessary, but not sufficient, to make a great software developer.  (Ok, so solving Millennium Problems is probably NOT necessary, but you get the idea.)

What was missing?  What else did I do for that two and half years that I didn’t realize I was going to need?

  1. Learning to work with clients and other developers.
  2. Architecting a solution, not just writing the code for it.
  3. Being able to do a little self-promotion.

This is just a slice of the topics that we want to tackle in the first ever Kalamazoo X Conference*, taking place on Saturday, April 25 in downtown Kalamazoo.  Our goal with this conference is to complement the excellent technical conferences in the region (such as the Days of .NET and CodeMash) with sessions in human interaction, interface and graphic design, and system architecture.  We’re putting together a great lineup of speakers and are eager to get people together to talk about all of the other things needed to be a great software developer.

Hope to see you there.

 

 

* Full Disclosure: I am on the planning committee for the X Conference.

Lucy, she’s home (Part 2 of 2) January 21, 2009

Posted by markegilbert in General.
add a comment

So, as you may recall from Part 1 of this post, everyone got the green light to go home on Wednesday (the 14th).  One of the required checkout items was a car seat inspection.  The nurse looked up our model in her book, making sure that there weren’t any outstanding recalls issued for it.  After everything checked out we asked her for a brief refresher on how to buckle Lucy in (after all it had been 6 years since we last used this car seat).  Pack-horse Dad walked down to the lobby carrying almost everything, while Mom got to ride in a wheelchair.  (Sheesh, who’s going through labor now?)

I pulled the car around while everyone waited inside (it was a bright sunny day, but bitter cold out).  Everyone got buckled in and we pulled out of the hospital parking ramp.  We went about half a mile, stopped at a red light waiting to turn, and then BAM!  We got rear-ended – luckily not all that hard, just enough to push our car forward a foot or two.  My wife jumped.  I jumped and went for the horn (don’t ask; I don’t know why that seemed to be the sensible reaction, but it did).  Lucy slept.  The other driver and I pulled into a parking lot to inspect the damage.  The other driver’s car had no visible damage – well, at least no visible NEW damage.  It looked like she had close contacts with at least a couple of fire hydrants already – the bottom third of her bumper didn’t exist.  Mine had a small scratch on it, but otherwise was unscathed.  We let it go, and continued on our way home.  (We would call the nurse that inspected our car seat later that evening to thank her, and explain what had happened less than a mile from the hospital.)

After letting the adrenaline wear off for a few minutes, I made the comment to my wife, “It’s a good thing that happened when we were driving home, as opposed to on the way to the hospital.”  Her eyes got REALLY big, and she said, “Oh jeez, I would have told you to just keep going.  It’s not a crime to drive away from the scene of an accident if you’re the victim.”  After giving it a few more seconds, she added, “Either that, or I would have gotten out of the car and ripped someone’s head off.”  Yep, that’s the wife I know and love.

We spent the next couple of days getting Lucy’s blood drawn to make sure her jaundice was clearing up.  By Friday, though, her bilirubin levels were still going up, so our pediatrician recommended that Lucy be admitted to Bronson Methodist Hospital, the other major medical facility here in town, since they still had their pediatric unit (Borgess used to, but not anymore).  My wife and I were disheartened to learn that we would have to go back to ANY hospital, but we knew it was for the best, and the odds were good that she would be out in a day or so.

We checked in to Bronson at 7pm Friday night and they had the room already set up for Lucy.  Lucy would be on a biliblanket, but she would also be under two sunlamps.  Being doused with light would make the bilirubin water soluble so Lucy could just pee it out.  The light therapy doesn’t work unless the light can reach her skin, so she was stripped down to her diaper and put in an isolet (basically an incubator) so she would keep warm.  The lights were extremely bright, so to protect her eyes they needed to give her essentially a sleeping mask.  Now, you can’t just put a mask with elastic strings on a four-day old – that’s just asking for trouble.  What you CAN do apparently is attach self-adhesive Velcro to her temples, and then put a piece of felt across her eyes.  Basically, Lucy would be on a weekend sunbathing vacation.

The plan was to have Lucy lie on her back on the blanket to maximize her exposure to the biliblanket and the lights above.  What we found, however, was that Lucy likes sleeping on her side – a lot.  We’d place her on the blanket, and she would almost immediately bring her legs up to her chest and roll – well, fall – onto her right side.  We’d set her back up and she’d roll/fall over again.  To make sure that SOME part of her stayed on the blanket, we started to put her on her back just to one side of the blanket so that she would fall onto it.

That worked for the first night, but then we got the bright idea to roll up a pair of cloth diapers and place them at her waist level on either side to keep her in place.  That way her back would be completely on the blanket, and the overhead lamps could do their job.  As a colleague of mine pointed out, we were chocking her like you would an airplane tire.

The meals were the other interesting thing about this stay.  Technically, Lucy was the one who had been admitted to the hospital, so she was entitled to the meals.  However, since she being breast-fed and couldn’t take solid food yet, all of those meals went to my wife.  My wife would do the job of converting eggs and hash browns, chicken sandwiches, and steak and potatoes into breast milk.  It was highly entertaining calling room service to order those items on behalf of a 5-day old.  It was even more entertaining having the food service person show up and confirm that he or she had the correct room by asking “Order for Lucille Gilbert, born 1/12/2009?”  “Yep, that’s us!”

Being that this was the pediatric unit, everything was decked out with murals and fun things to look at – ceilings, walls, and floors.  It also meant that there were lots of kid-friendly things available for the patients (and presumably their families).  I mean, if you were a 10-year old stuck in a hospital for an extended period of time, the last thing you want to do is flip between the Weather channel and C-SPAN all day long.  Our room (and I assume all of the rooms on the floor) had a DVD player hooked up to the TV, and the unit had stacks of family-friendly movies that you could check out.  They also had a Wii, a Playstation 3 and an XBox360 that you could play with.  Unfortunately, convincing arguments for why my 5-day old wanted to play Guitar Hero (let alone HOW) eluded me, so those resources went untapped during her stay.  Sigh.

Saturday came and Lucy’s bilirubin levels had dropped a good chunk, and by Saturday night it had dropped enough that they turned off both of the overhead lamps.  Lucy was discharged late Sunday morning, and we were eager to get home.  Much to my relief, no moving violations were involved in the second drive home from the hospital.

Lucy continues to do well, and we’re all adjusting to a fourth family member.  My wife could really use a six-pack of bottled sleep right now, though.

Lucy, she’s home! (Part 1 of 2) January 19, 2009

Posted by markegilbert in General.
2 comments

For most of the last nine months, my wife and I have been working on getting ready for a new arrival, and no, it was not my new computer.  We found out in April that she was pregnant with our second daughter.  We were thrilled, but we knew there was a lot of work to do ahead of time.  Budgets would have to be analyzed, rooms would have to be rearranged, and tubs of baby clothes would have to be cracked open.

Sigh.  If only we could bottle sleep.

Then TheProject came along.  Probably the single largest project I’ve been involved with.  Huh, it starts in November.  Double-huh, I’m the Lead Developer/Solutions Architect/Deployment Guru on it.  Oh look, it’s slated to be deployed on 1/19.  Ahem.  Can you see where this is leading?

  • Theoretical date of delivery for Baby Gilbert: 1/27
  • Realistic date of delivery for Baby Gilbert, which takes into consideration that our first daughter was two weeks early: 1/13

Yeah.  With my luck, my wife would go into labor the week that TheProject was slated to be deployed.  Needless to say, the Project Manager was a little, um, concerned.  So, more plans were laid – notes were kept up to date, backup developers were briefed, and gift bags of Valium were pre-ordered (it’s considered bad luck to have the PM wig out, right?).

About a week before the deployment, my PM happens to catch me in the hall.  Here’s how that fateful weekend went:

Friday 1/9, 4:30pm.  PM says, “I’m fully expecting to get an email from you this weekend saying that your wife delivered.”  I chuckle.  “I don’t think I want to take that bet.”

Saturday 1/10: No baby.

Sunday 1/11: No baby.

Monday 1/12, 6am: No baby.  I think to myself, “Woohoo!  PM’s bet was wrong after all.”

Monday 1/12, 6:05am:  Wife says, “I’ve had two contractions this morning.”  I reply, “Uh, were they the Braxton-Hicks type?”  Wife replies, “Uh, no, I’m pretty sure they weren’t.”  I think for a second, and say the most intelligent thing I could come up with at that moment, “Huh.”  I then run downstairs and craft email to PM and team explaining that I may be leaving early today to head to the hospital.

Monday 1/12, 8:40am:  I drop my first daughter off at school, then I call Wife.  “Hi honey, how are you doing?”  Wife replies, “Well, the contractions are coming about 7 minutes apart now.”  I use the same intelligent response as before, “Huh.”  I was then able to follow it up with something slightly more useful, “I guess I’m working from home today.”

Monday 1/12, 8:45am:  I arrive home, craft another email to team explaining that I’m working from home, and then scramble to get the last minute things ready for the trip to hospital.

Monday 1/12, 10:45am:  I’m still at home, and the contractions seem to have leveled off, so I decide that I can probably do an 11am conference call with PM and a partner after all.

Monday 1/12, 11:00am: “Hi everyone, this is Mark.  I may have to leave the call suddenly because my wife is having contractions.”  Collective “awwww!” ensues.

Monday 1/12, 11:30am: “Ok everyone, my wife just let me know that I have to wrap it up now.”  Everyone wishes me well and I hang up.

Monday 1/12, 11:50am: I call the hospital to give them a heads up that my wife has started labor, the contractions are close enough and strong enough that we don’t want to wait any longer, and we’ll be coming in soon.  Of course, as soon as the nurse answers the phone, that message gets condensed ever so slightly to “Hi, this is Mark Gilbert, my wife and I are coming in.”  It only took me three more tries to provide the nurse with enough information that she figured out what the h*** I was trying to say.

Monday 1/12, 12:30pm: Check into the hospital.

Monday 1/12, 3:37pm: Lucille “Lucy” Gilbert was born.  Hang on a second – did I just miss something here?  Like the whole labor thingy?  Oh wait.  Hang on.  I think I remember being mangled by my lovely wife during each and every contraction.  “Here’s an arm, do with it what you need.”  “Yes, dear, you can have both arms to squeeze.”  “Please dear, try to grab the side of my leg, not between the two.”

The payoff was definitely worth the effort, though:

LucilleKellie1-13-09

Many thanks to the wonderful L&D staff at Borgess Health – they were awesome.

The rest of Monday was fairly quiet by comparison.  Lucy got cleaned up.  Mom got cleaned up.  Dad finally got to eat lunch about 5pm.

I sent around a quick email to everyone letting them know that Lucy had arrived.  Our eldest daughter was nice enough to call my brother and my sister-in-law to let them know the good news.  I found out later that the message to my brother was something to the effect of “Uncle James!  Lucy’s out – she escaped!”

On Wednesday the 13th, everyone got the green light to go home.  But of course, nothing is ever that easy.

(to be continued)

Testing for water – I guess it works January 3, 2009

Posted by markegilbert in General.
add a comment

We got water in our basement a couple of times this past summer, but luckily it was in the unfinished part of our basement.  Both times, however, it took us the better part of a day to notice it, so my wife decided to find a detector of some kind to alert us if it happened again.

What she found was a small, slightly creepy-looking product called “LeakFrog”.  The device is really quite simple.  The thing is powered by three AAA batteries and sits on the floor where you might get water.  There are two exposed metal contacts on opposite ends of the unit, and when water swarms the unit (as little as 1/32″ according to the packaging), an electrical circuit is completed and the alarm sounds.

I wanted to test the unit, so I put the batteries in and picked it up with the intention of getting a small bowl of tap-water and dropping the thing in.  As soon as I picked it up, however, it went off.  It only took me a second to realize that when I grabbed it, I made contact with both of the metal contacts.  My hands, being slightly sweaty at the time, completed the circuit.

Ok, then.  No bowl necessary.  I guess it works – and with far less than 1/32″ water.

Rise of the New Machine December 29, 2008

Posted by markegilbert in General.
2 comments

This is the first blog post in a while, and I decided to make it from the comfort of my new machine.

Finished Machine

I decided for this computer that I didn’t need a laptop as much as I wanted a powerful machine, so the hardware options available to my budget were greater.  One of those options was building my own machine, a feat I had still not yet undertaken.  After doing some initial pricing, I found that I could build a very nice machine for much less than I could buy from a commercial vendor such as Dell or Sony.

What were my goals?

  • First and foremost I wanted to be able to prove to myself that I could spec out and build a machine from the ground up.  As middle-schoolish as this sounds, I felt it was a rite of passage as a professional developer that I had not yet passed.  I have historically shied away from the hardware side of computers; I wanted to put an end to that hesitation.
  • I wanted a 64-bit machine.  The last three computers that I’ve owned or used on a daily basis have run on Windows XP 32-bit.  The 32-bit processor meant that I was limited to about 3 1/3 GB of RAM.  I wanted something powerful enough that I could run a couple of virtual machines at the same time.
  • Finally, I also wanted a machine that would last me for at least 3-5 years without a major hardware upgrade.

Of course, DECIDING to build my own machine was one thing.  Actually putting together a computer that functioned was quite another.  I started by browsing through the TigerDirect.com catalog, a site that I knew at least a couple of my coworkers recommended for electronics.  After a day and a half (a full 12 hours when all was said and done) of reading, research, and comparison shopping, I managed to put together the following list of parts:

  1. CPU: Intel Core i7 920 (with heat sink included).  $309.99, TigerDirect.com
  2. Motherboard: Asus P6T-Deluxe.  $309.99, NewEgg.com
  3. Memory: OCZ PC3-10666 Platinum, 6GB.  $245.99, NewEgg.com
  4. Case: ATX Mid-Tower, $69.99 (local vendor)
  5. Hard Drive: Western Digital Caviar SE16 500GB.  $64.99, TigerDirect.com
  6. Video Card: Visiontek Radeon HD 3650.  $59.99, TigerDirect.com
  7. Optical Drive: Sony DRU-V200S/BR.  $29.99, TigerDirect.com
  8. Power Supply: OCZ / StealthXStream / 600-Watt: $59.99, NewEgg.com
  9. Linksys Wireless NIC: $42.39, Circuit City
  10. Battery Backup: APC Back-Ups RS 1500.  $199.99, Amazon
  11. Monitor: Dell UltraSharp 2208FP, Wide Panel.  $229.76, Dell.com
  12. Logitech MX310 Optical Mouse, $29.24, Amazon

Core Computer Components (not including Mouse, Monitor, or Battery): $1,193.31

Total Cost: $1,652.30

My biggest concern was that I would buy components that weren’t compatible with each other.  In one case that fear came to fruition.  I originally purchased the AeroCool M40 MATX Cube Case, but I missed the significance of the “M” in “MATX”.  The Asus motherboard was an ATX style board, whereas the case was designed for “micro-ATX” boards.  I didn’t realize the issue until it came time to mount the board into the case.  There was much gnashing of teeth that evening, let me tell you.  I returned it, and purchased a mid-tower ATX case from a local computer shop, and it has worked out well.

My second concern was that I would fry out a component, or start getting strange errors when I hooked things together.  Luckily for me, hardware component design and documentation has come a VERY long way since I tried putting components together.  For the most part, the cables and the motherboard were exceptionally well labeled, and everything went together in about 6 hours.  I’ve had many situations with past machines where I would plug in a new drive, or an extra stick of RAM, and fight with the BIOS for hours to get it to be recognized.  With this machine, everything went together very smoothly, and appeared to work on the first try.

I did, however, have one place where panic set in for a good 5 minutes before I realized what was happening.  I assembled the machine and installed the operating system on my workbench (where I could actually ground myself).  Once I had the OS installed I felt the machine was stabile enough to move to my desk.  During the 40 feet distance between the two, I heard something go “thump” inside the case.  I initially dismissed it as simply the extra power supply cables shifting inside (I ended up using less than half of the ends that the power supply had on it, so the wad that was left got stuffed into an unused drive bay).  When I powered the machine up, it didn’t even make it to the Vista startup screen when it shut itself back down.

Huh?  Let’s try that again.  Same thing – 15 seconds or so in and it just dies.

Oh crap.

I tried it a few more times, each time trying to watch the messages on the screen for clues as to what was happening.  Each time getting more scared that I fried out a $300 component somewhere (if I had spares of everything I wouldn’t have been AS concerned; I could just swap out components until I found the bad one; as it was, I had no idea what was happening).

I unplugged it, and carried it back to the workbench.  I plugged it back into the CRT that I had it in before, and this time I was able to see a glimpse of a message just before it shut itself down.  The message was something to the effect of “CPU temperature too high; shutting down”.

Oh.

CRAP.

I pulled the cover off, and found that the CPU heat sink had broken away from three of its four moorings, and was literally dangling off of the motherboard.  With the fins not making contact with the CPU, the heat sink wasn’t really doing any good.

The good news was that I now knew what had happened, what that thump was, and how to fix it.  I was scared that the bad news would be that the CPU had melted itself down in my half dozen or so attempts to boot it up.  I cleaned off the thermal paste from both the heat sink and the CPU (it came pre-pasted), applied some of my own, and reattached the heat sink to the motherboard/CPU.  I gave it a good jiggle when I was done to make sure it would stay put.  I booted the machine back up, and it seemed to come up just fine.  As I was working on it, I started to entertain the hope that the CPU’s heat sensor would shut it down before any real damage took place, and so far it appears that that is the case.  I’ve had the machine up and running continuously now for days, and it hasn’t given me any troubles since.

Overall, I am extremely pleased with the outcome.  The new machine screams, having a Vista rating of 5.2 (the Gaming Graphics metric is dragging it down; all of the other indicators are 5.7 or higher, out of a possible 5.9), and has a LOT of room for growth.  Not bad when you consider the core hardware ran me less than $1,200.

Upcoming MDSM Meeting – October October 5, 2008

Posted by markegilbert in General, Visual Studio/.NET.
add a comment

We needed to change hosting providers for the DevMI.com site, so I thought this would be a perfect time to dive into something new, specifically the ASP.NET MVC Framework.  I will be presenting an introduction to the framework (using the new site as my example) at the October 23 MDSM meeting.    If you’re in the Kalamazoo area on the 23rd, please feel free to join us.  We’d appreciate a quick RSVP at Contact@DevMI.com to let us know to expect you.

Hope to see you there!