Category Archives: Tech

perrow.ca 2.0


I’ve just finished rewriting some parts of my family web site to be more “AJAX-y”. There are a bunch of pages where we have pictures from various vacations and baby pictures of my kids and such. With the old format, the page loaded all of the images for a particular page and if you wanted to see a close-up of one of them, you clicked on it and it just displayed the raw image. Then you had to click the back button to get back to the list of images. This was fine, but not very nice on a slow system (like my parents and Gail’s parents, who are on dial-up). Some friends of mine use smugmug.com for their family pictures, and I like their setup — it shows some thumbnails in a panel on the left and when you click on one, it loads that image on the right. There are also next and previous links to cycle through pictures one at a time, and there are page forward and page back links for going to the next set of thumbnails. I decided to steal borrow this idea and in so doing, teach myself Javascript and AJAX. AJAX is actually an acronym meaning “Asynchronous Javascript And XML”, but my solution doesn’t use any XML, so I suppose I should just call it AJ.

I started doing the work myself from scratch. I found an online tutorial that described Javascript (I had done a little bit previously, but had to get much more in-depth) as well as what AJAX was and how to do asynchronous requests. After adding a few fairly simple AJAX things to my lacrosse pool web site, I started work on the image galleries at perrow.ca. I was making progress when I discovered a Javascript library called jquery which made some of the AJAX stuff easier but more importantly, made navigating through the DOM much easier as well. It allows you to iterate through all objects of a particular class and make changes to them, or find a particular element given its ID, and make other changes that would otherwise require lots of HTML changes. Best of all, they’ve already solved the cross-browser issues for you, so when trying to determine the size of an element, I don’t have to worry about the fact that IE does things in the DOM differently than Firefox.

I downloaded it and started adding jquery calls to my Javascript code, and this allowed me to clean up my code significantly. As I mentioned, all of the code I’d written to handle IE and Firefox differences went away (and I hadn’t even got to Safari, Opera, or Chrome).

The most complex part of this whole project was keeping all the languages straight. The whole site is written using PHP, so to make changes, I had to change the PHP code to generate different HTML, then update the CSS stylesheet, then add the Javascript code to make the AJAX requests, then update more PHP code to handle those requests. The Firebug plug-in for Firefox was invaluable for debugging Javascript, although there were a number of occasions where it would just lock up. Firefox would continue seemingly normally, but Firebug just stopped responding. I couldn’t even click the ‘X’ or hit F12 to close the Firebug window. Shutting down Firefox completely and then starting it up again cleared out whatever cruft was causing that.

The other difficult part was the fact that the browser’s “Display page source” feature is not useful if the contents of the page are mostly generated using Javascript. If the page wasn’t doing the right thing, I had to tweak the output so that it would display the raw html so that I could see what was going wrong. This is what we old guys call the time-honoured printf method of debugging, not like these kids today with their C# and their Visual Studio and their fancy-schmancy debugging tools. Back in my day, we used printf and that was it. And we liked it.

The whole page is basically done with Javascript now. The HTML for the main part of the page now consists of:

 
 
 
 

Everything else is done using CSS and Javascript — CSS to define where things go and what they look like (colours, borders, stuff like that), and Javascript to load the page initially and to handle mouse clicks. The “pagecount” block is populated with the page number, number of pages, and page navigation links. The “imgcount” block contains the image number, image count, and image navigation links. The thumbnail area is populated with the appropriate page of thumbnails, currently four rows of images, where the number of images per row is dependent on the size of the block in the browser. The “mainimagearea” is populated with the first image on the page, and is then updated whenever the user clicks on a thumbnail. When the page is loaded, the “spinner” spans are initialized to contain a little spinner image function hidespinner() { document.getElementById( ‘spinner’ ).style.display = “none”; }spinner Stop! that indicates that something is happening in the background. Thanks to jquery, this can be done in a single line, regardless of how many spinners I have on the page:

$(".spinner").html( "" );

It’s also nice that if I change the spinner image or the location of the file, I just have to change the URL in this one place rather than anywhere I use the spinner image. That can be done with CSS as well:

.spinner { background: url( /images/ajax-loader.gif ); }

If you do it using Javascript, however, the spinners won’t show up if you have Javascript disabled. In that case, however, nothing else will load either, so the page will be entirely blank. I had to add tags containing a message saying that you need Javascript enabled to make this work. Since I do have a non-Javascript solution (the old code), I could just put that code inside the tag, and I probably will… later.

I used to have a special page for a “slideshow”, where it would display a large image and you could click next and previous to go through them, or click “autoplay” and it would automatically go to the next image after five seconds. To implement this in the Javascript world, I just added a checkbox for “Auto-advance”, which sets a Javascript timer for five seconds and pretends that “Next” was clicked when the timer fires. I had to make sure I cancel the timer if the user clicks anything else, but apart from that, it was pretty easy.

Irony: thawte.com insecure?


I was trying to download some root certificates from thawte, and Firefox gave me this error:

XSS attempt from thawte.com

Thawte is the second biggest public certificate authority in the world. Their entire raison d’être is internet security. I see there being three posibilities here:

  1. they really do have an XSS vulnerability on their site
  2. their site is badly written so as to confuse NoScript
  3. there’s a bug in NoScript that causes a false positive on the Thawte web site

Any of the three is the height of irony.

Review: StackOverflow


StackOverflow is a new programming Q&A web site created by Jeff Attwood and Joel Spolsky. (Well, I think Joel just helped fund and promote it, he didn’t do any of the actual creation — that was Jeff and his team). It is still in beta, and things are still in flux, but the changes are calming down somewhat. It’s not a discussion board (though some would like to use it that way), it’s specifically designed for programming questions and answers. The questions can be as detailed as you need them to be (here’s one on writing XML files using a particular tool in a particular encoding scheme using C#), but there are lots of more generic ones too. One seemingly popular question is “what are some of your favourite “hidden” features of ” — there are such questions on C, C++, C#, Java, python, perl, and others. I’ve found a couple of helpful tips in those ones.

The site was meant to be an amalgam of Yahoo! Answers (though only for programming questions), digg, and a wiki. You can ask and answer questions (and make comments on both), and each question can have one “accepted” answer. For each question and answer, you can “upvote” if you like it (i.e. it’s correct, partially correct, or at least helpful) or “downvote” if you don’t (if it’s wrong or not helpful at all). You can also mark a question or answer as “offensive” if it’s hate speech or spam or something like that. If an question or answer gets enough offensive votes, it vanishes entirely. With the speed at which things get voted on, this can happen very quickly, so if someone posts some spam “question”, it will likely vanish within a couple of minutes. You can also tag each question with up to five categories, similar to gmail labels, so if you want to search for all questions on C#, you can just click the C# tag. (There’s even a sqlanywhere tag, though there’s only been one SQL Anywhere question so far.) The idea of the site is that if you have a programming question, even if you don’t know about SO, google searches will hit the SO site and you’ll find your answer quickly and easily.

I think the idea of this site originated in part with experts-exchange.com (which used to be expertsexchange.com but they added the dash because it looked like ExpertSexChange.com (snicker)). A number of times in the past, I have done Google searches looking for information, and came across a question on that site that was similar to the information I was looking for. But when I went to the site to look at the conversation, it said that I had to become a member (i.e. pay) to see the answers. I immediately thought “bite me” and went to the next Google entry. I’m sure Jeff did the same thing, and then decided that having such a site for programmers that was free would be a good thing.

On a related note, there is advertising on the SO site, but it’s only one unobtrusive ad down the right side of each page. Maybe I’m naïve when it comes to internet advertising (actually, there’s no maybe about it), but I can’t imagine that even with several thousand users, that one ad is bringing in enough money to pay Jeff a living wage (he is working on this full-time) plus pay the other three or four part-time employees.

SO uses the concept of “reputation” to (a) give users some “credibility” (though that’s artificial; I’ll get to that in a bit) and (b) to allow users to gain limited “moderator” abilities. The more upvotes your questions and answers get, the more you gain reputation, and obviously you lose rep points for downvotes. There are also badges for certain milestones (eg. you get a “good answer” badge for each of your answers with a net upvote of 25), but they’re essentially just for fun. Once you have enough rep points, you can start doing extra things; you can’t leave comments until you have 50 points, you can retag other people’s questions when you get to 500, and you can edit other people’s posts and delete comments when you get to 2000.

Anyway, enough about what the site is, and onto my impressions of it.

Moderation in moderation

SO was a private beta for several weeks before it went public. While it was private, everything was wonderful. Once it went public, I didn’t notice a significant drop in the quality of questions or answers, but there was an (expected) increase in the amount of junk added — people asking silly or subjective questions (“Should the open brace of an if be on the same line as the if or on the next line?“). One question contained the subject line “Why do birds…” and the rest of the question was “…suddenly appear, every time you are near?”. The user who posed the question was “The Carpenters”. The question was down-voted so fast that within two minutes of the question being posted, I couldn’t find it anymore. I was one of those who down-voted it, mainly because it forced that horrible song into in my head, and it’s still there. Now that I’ve mentioned it, it’s probably in your head too — sorry ’bout that.

However, the moderation is having its problems too. I’ve seen lots of questions closed by one user and then re-opened by a different one. I saw one question that was an exact duplicate of another one posted a couple of minutes earlier by the same guy (it looked like he posted a question and didn’t think it worked, so he did it again). One of them received five or six answers and was then closed as a duplicate, while the other one (that remained open) had no answers. Part of this problem is the speed at which answers show up, which is the next topic.

For the most part, the moderation is done automatically by the community as a whole — if a question or answer is stupid, meaningless, or an obvious troll, it’s downvoted or marked as offensive and disappears. There is no provision for voting on users, but at least one has been deleted because of useless postings (this was “Consultant Barbie” who answered a bunch of questions with ” is hard. Let’s go shopping!”). This is odd because in one of the SO podcasts, Jeff mentioned that he did not want to delete users who did this, because it would basically make them mad and they’d just keep creating new accounts or finding other ways to be a pest. If you just ignore them and downvote their inane answers, they will either get bored and stop, or they wouldn’t, but you would rarely see their downvoted answers anyway.

I’m not sure I’m sold on the idea of closing threads, other than for questions that are duplicates of previous questions. It won’t be long until there are hundreds of users with enough rep to close questions, and then there will be edit wars where one user will continuously close a thread and another will continuously re-open it. At that point a real moderator will need to step in, and then the whole self-moderation thing goes out the window.

The Fastest Gun in the West

One problem that’s come up a number of times was summarized in a question and given the name The Fastest Gun in the West problem. You see a question that you know the answer to, and you take the time to write a well thought-out and researched answer. Once you click “Post your answer”, you find that eight other people have answered in the meantime, and some of those answers have even been upvoted. Those answers are frequently quick and dirty (“I dunno, maybe try this”), and may even be wrong. In the long run, you’d think that your longer and better answer would get more upvotes, but it doesn’t always seem to work that way. In the end, you see a question that you know the answer to, and immediately starting writing the fastest, shortest answer possible. You post pseudocode rather than actually make sure your code compiles. You say “there may be issues on Mac” rather than taking two minutes to look up what the issues are and post them. All in all, the quality of answers tends to go down.

In the long run, I think this will be less of an issue, as people’s reputation gets high enough that they don’t worry so much about the numbers. If you write the best answer to a question but people vote up an earlier answer more than yours, oh well. You can always leave a comment explaining why your answer is better or more complete or whatever.

Reputation is everything — or not

Your abilities on SO are based solely on your reputation score. The more people upvote your questions or answers, the more reputation you get. You also gain rep by having lots of people respond to (or even view) your questions. The idea is that if you ask smart questions and give helpful answers, you’ll get a high rep score, and people will be able to trust your answers. This is meaningless for (at least) three reasons:

  1. A very knowledgable user who just joined SO last week will have a much lower rep score that someone who joined a few months ago (and this will get worse the longer the site is around).
  2. There are rep whores out there who post questions and answers willy-nilly in the hopes of gaining rep points. One upvote is worth five downvotes, so as long as you don’t post utter garbage, you’re bound to gain more than you lose, even if your answers aren’t always that helpful. I’ve seen answers that were wrong but voted up anyway that began “I don’t know but maybe…” Why would you upvote that kind of answer?
  3. Some questions are not programming-related, but still count towards your reputation. I am a prime example of this. As of today (Sept. 30, 2008), I have a reputation score of 1939. I have asked three questions and given 65 answers. My top answer to an actual programming question is 18, but I have five answers that are much higher than that:
    • two answers to one question (“What is your favourite programmer cartoon?”) that combine for 102 upvotes
    • two more for another question (“Great programming quotes”) that combine for 107, and
    • one answer at an unbelievable 123 (and still growing daily). That one is an answer to the question “Confessions of your worst WTF Moment” where I tell the story of the time I accidentally got my colleague’s fingerprints inserted into the FBI database. (I blogged about that a couple of years ago.)

    The majority of my reputation (1090 points out of 1939) has come from those five non-programming questions. So most of my reputation on this question-and-answer site comes from two quotes I didn’t make, two comics I didn’t draw, and a story (though admittedly a pretty funny one). Less than half actually comes from questions or answers. I’m sure that I’m not the only one in this situation, though I suppose in five years, assuming I actually ask some more good questions and give some more helpful answers, it will all even out.

What’s a programming question?

One of the biggest problems right now is questions that involve programmers but don’t actually involve programming. There have been questions on interview tips (both from the interviewer and interviewee points of view), writing a resume, salaries, certification, and that kind of thing. There are lots of very subjective questions that don’t have real answers (or at least, not a single answer), like “Should programmers have laptops or desktops?” or “What’s the most influential book every programmer should read?” There have also been some other questions that might be tangentially related to programming, like questions on hardware setups or networking problems. Those ones are sometimes “justified” by things like “As a programmer, I need to have my network properly configured or I can’t do my job”. This may be true, but it’s true for many other non-programmer jobs too. You shouldn’t be able to just prefix any question with “As a programmer, …” and automatically have it apply. As a programmer, I need to eat healthy foods, but asking about whether asparagus is better for you than broccoli isn’t a valid question for SO.

When such questions appear, some folks just answer them, others downvote and complain, and sometimes a moderator will just close the question as not being a programming question. If that’s the case, why is the “programming cartoons” thread still open? The guidelines (in the faq) aren’t clear. Well, they try to be clear, stating “Avoid asking questions that are subjective, argumentative, or require extended discussion” and “try to refrain from asking questions about Stack Overflow itself unless you absolutely, positively have to”. But searching the “subjective” tag gives you 583 questions, the vast majority of which are not closed. One question asks “How do you vent stress as a programmer?” Is that a programming question? No, and it’s subjective and could require (or incite) extended discussion. So it should be avoided, according to the faq, right? But this question has received 34 (net) upvotes and 133 answers and has not been closed. There are no negative comments or answers saying that it’s not a programming question. So are these kind of questions allowed, or not?

What the site really needs is forums.stackoverflow.com or something like that — a message board where you can go and discuss things. I suppose you could use the comments for that, but it would be nice to have a place to discuss things that’s separate from the Q&A part of the site.

Community-owned posts

One idea that I didn’t get at first was community-owned posts. When you ask a question, you can mark it as “Community-owned”, and then you get no reputation points for that question. Every answer is also marked as community-owned, and so people who answer get no rep either. I get that — if you’re asking a subjective question (i.e. one that might have many answers), you might mark it as community-owned so that people know you’re not just trying to bump your rep score by asking such a question. In that case, it’s your choice as to whether to mark the question as community-owned. The thing that I didn’t get about it was that there are a few rules that will automatically turn a regular question into a community-owned question, which means that the person who asked will get no further reputation score from that question. This happens if:

  1. the asker edits the question more than five times
  2. if more than four different people edit the question, or
  3. if the question receives more than 30 answers.

I didn’t like the idea that other people had control over whether I received reputation score from my own question. However, I heard Jeff talk on the podcast about the reasons behind these decisions, and now I think it’s kind of clever. Here is the reasoning behind each of these rules:

  1. This is to prevent someone from continually editing their own question just so that it stays on the home page.
  2. Any question that has been edited by lots of different people was more than likely not very clear to begin with, and so rewarding the asker with rep points after others have cleaned up the question doesn’t make sense.
  3. A question that has more than 30 answers is more than likely a subjective one or a poll or something similar, not a specific programming question that the site was designed for. In that case, you should not be rewarded for asking such a question.

Conclusion

Overall I’m pretty psyched about StackOverflow. I think it could be a really useful resource for every programmer. It’s also a lot of fun (which is why some have begun calling it “CrackOverflow”), though it’s still very new, so we’ll see if the novelty wears off after a while. There’s are still some kinks to work out, but once people figure out (and get comfortable with) the community moderation thing, and realize that the reputation scores don’t tell you how much creedence to give an answer, I can see this site becoming one of the most popular programming sites anywhere.

A Case of the Duh’s


And I call myself a computer guy. First I installed a hard drive that my BIOS can’t handle, eventually causing the drive to fail. (The worst thing about that is that I tried to run Spinrite on the drive a number of months ago, long before it failed, and Spinrite told me that the drive size was different than what the BIOS thought it was. I remember thinking at that time that if Windows could see the correct size, this didn’t matter. Duh #1.)

Then I bought a new card for the computer so that it would be able to recognize the larger drive, and installing it killed the machine. (Duh #2.) The card is also not returnable, so if I can’t use it, it’s $30 down the toilet. So Gail and I decided to buy a new computer so we could install the disk in that one. We found a brand new PC at Tiger Direct — Intel Celeron Dual Core 1.6 GHz, 2 GB RAM, 320 GB disk, DVDRW, keyboard, mouse, various memory card readers, on sale for $299. So we bought it last weekend, and I’ve spent the last few days setting it up — installing the wireless card from the other machine, reinstalling applications and drivers, setting up email and user accounts, and so on.

I must mention CopyTrans once again — when I paved and rebuilt my system back in the spring, I used CopyTrans to recreate my iTunes library from my iPod and it worked flawlessly. This past weekend, I used it again to do the same thing and once again, it worked flawlessly. This time, with the faster USB 2.0 ports on the new machine, the whole thing took maybe two hours. More snaps for CopyTrans.

The new machine came preloaded with Windows Vista Home Premium. I’ve used Vista a few times at work, but I never really played with anything other than what I needed to do my job, so there’s lots that I had never seen.. It looks nice, has performed very well so far, and has some very nice features, like parental controls for user accounts and the ability to resize a disk partition without formatting the disk, or even shutting down the computer. I’ll write more about Vista in a few weeks after I’ve been able to play with it a little more.

Anyway, last night I decided to install the old system disk into the new machine and copy the data off of that. There isn’t that much data on it, but we did store some stuff on it after the bigger disk died. I took the cover off the machine and looked for the empty disk bay. That’s when I realized Duh #3.

The new computer does not support the old EIDE disks. There isn’t even a power adapter that fits the disk. So now we have these two old disks that cannot be installed in the new computer and I have to buy an external disk enclosure and access the disks via USB. I already bought an external enclosure when the disk died, hoping that I could access it that way, but I couldn’t. When we decided to buy a new computer, I figured I wouldn’t need the enclosure so (Duh #4) I returned it. Now I have to go and buy it again. Sigh.

Hopefully we’re done with the Duh’s… for now at least.

IvanAnywhere on Space TV


Space TV interviewed my co-workers Glenn Paulley, Ian McHardy, and Ivan Bowman about IvanAnywhere a few weeks ago, and the results aired last Friday night on their show “The Circuit”. The piece is online: go here and click the link at the top that says “Ivan Anywhere, the robot telecommuter”. There is also a direct link to the video, but note that the link resizes your browser window. The bit about Ivan is about four minutes long, and starts a minute or so into the video.

I PVR’ed the show, but I’ll be damned if I can figure out how to copy it to my computer. I thought I could record it straight to my digital video camera, but the camera doesn’t have inputs, so I’d have to play the video and then actually record the TV screen with the camera. Video and audio quality would both suck, so I didn’t bother. Of course, even if I could get it in digital format, I couldn’t post it to YouTube or anything, since it’s copyrighted.

It’s all in the name


I was looking on amazon.com for a link to a book called “Fire in the Valley”, which I once bought from a bargain bin for about $5. It’s the history of the PC — starting with the Altair in the 70s and continuing with the emergence (and sometimes subsequent failure) of Apple, Microsoft, and various other tech companies. Very interesting book. I found the link here, but the amazon search also found another book with a similar title: “Fire in the Valley: Female Genital Massage“. Not the same book.

Now you’ve done it


I mentioned my hard drive problem a little while ago, and after a couple of weeks of not getting anywhere, I finally bought a PCI IDE card that I thought would solve the problem. I cracked the case on the computer and installed the card. Gail had given the hard drive to her friend to see if he could salvage any of it (he hasn’t had a chance to look at it yet), so I couldn’t do much anyway, but I turned the machine back on, and it started to boot, so I figured I hadn’t screwed it up too badly and turned it off again.

The next day, I was playing my guitar and realized that I hadn’t discovered yet whether Windows could see the new card. I fired up the computer, and continued with whatever song I was playing. (Probably the guitar solo for Metallica’s “One”, and I was probably nailing it like I always do. No, really.) After a minute I realized that the computer was off. I reached down and hit the power button again and…

Nothing.

No power, no lights, no beeps, nothing. I put the guitar away and tried a few more times. I unplugged the power cord and plugged it back in. I put the cover on the computer, in case the fact that it was open was causing a problem (though I don’t know why it would). I took the cover off again and removed the new card. Nothing. On a whim, I unplugged the computer from the UPS and plugged it directly into the power bar, and the power supply for the computer buzzed for a second. I thought “Yes! It’s the UPS!”, but then realized that (a) the monitor was also plugged into the UPS and was working, and (b) pressing the power button on the computer still didn’t start it.

That’s when I realized that the power bar was itself plugged into the UPS, so I unplugged the computer from that and plugged it directly into the wall. Again the fan buzzed and then stopped, but this time when I hit the power button, the computer started. I thought I was home free, but after a few seconds, the computer simply turned off again and hasn’t come back on since.

Picture taken from flickr under Creative Commons.

I’m a software guy, and though I’ve done my share of card-swapping and hard drive / CD drive / DVD drive installation and such over the years, I can’t say I’m a hardware guy. In particular, I have no freaking idea what the problem is. Could be the power supply. Could be the power switch. Could be a short on the motherboard. Could be any number of other things, and I don’t even know enough to know what they might be.

As I said, this was a $10 computer that has done its job admirably. I have grown to like idea of turning it into a NAS, so now I’m looking for a cheap computer to do that with — Tiger Direct has a refurb PC for $200; I’d probably buy an extra gig of RAM but other than that, it should do nicely. Gail’s not too excited about the idea of buying a refurb computer, but it’s got a 3 months parts and labour warranty, and you can extend it to a year for $36. I don’t generally like extended warranties, but in this case I might consider it. I’ll happily pay $36 if it means that someone else will fix my computer if I screw it up again.

Must have


Memo to management: each of our developers needs a new chair. The ones we have are fine, but think of how much more productive we’d be!

Note: photo stolen from gizmodo.com since the novelquest.com site is all flash.

 

This chair workstation is unbelievable, Specs:

  • 3 19″ monitors, up to 3840×1024 resolution
  • Touch screen to control the chair, including lighting, sound, air flow, positions, and password protection
  • Leather seat with lumbar support, headrest, electronic height and recline adjustment
  • HEPA air purification system
  • Built-in UPS
  • 360° rotation. programmable to rotate automatically over 8 hours
  • Built-in webcam, wireless headset
  • Dual core 2.6 GHz Intel, 4 GB RAM, 1 TB hard disk, top of the line video and audio cards, TV tuner, Blu-ray player / DVD writer, wireless networking, mouse, and keyboard

Minor drawback: $40,000 each. US. Plus shipping.

Email interruptions


I have read in a number of different places (here’s one) that you should not have your email client notify you as soon as email arrives — check once every hour or half hour or even less often because it takes your brain more than a minute to get back into its train of thought after being interrupted. Hogwash.

Let me clarify — if an email arrives that requires your attention (i.e. you need to respond right away or immediately take some action), then yes, I can see it taking a minute or so to get back into what you were doing before. If handling the email takes an hour or more, it may take even longer. But speaking for myself, I get emails all day long, and the majority of them are either not relevant (i.e. another developer notifying me (as part of the entire development team) of a bug he fixed in a module that I never use) or not important enough to stop and deal with immediately. In those cases, it might take me five seconds to get back into what I was doing. Given the number of 5 second interruptions I get, I’d have to be sitting at my desk in a daze for many minutes at a time to get my average interruption time up to 65 seconds. While this may be true on some days, it’s not related to email.

Irony: While writing this blog entry, I received an email. I stopped, read it, decided that I could deal with it later, and then came back to this. My first thought was “Now, what was I saying? Oh yes, something about email.” It still only took me a few seconds to remember what I was in the middle of saying, but it did strike me as kind of funny.

Looking for a fix


I’ve got the shakes. I’m shivering and sweating at the same time. I feel hungry but the thought of eating turns my stomach. I’m terribly thirsty and I feel like there isn’t enough water in the world. That’s right — I’m going through podcast withdrawal. The second hard drive on my home computer, the one labeled “Multimedia” that has hundreds of documents and home videos, thousands of digital pictures, and my entire iTunes library on it, simply stopped working the other day. I assumed it was a hard disk failure and attempted to run Spinrite on it, only to find that Spinrite refused to do anything with it because the BIOS thought it was a different size than it actually was. I went into the BIOS setup and sure enough, the BIOS thought that my 250 GB disk was 137 GB. Windows XP, however, seemed to know the right size.

So since the drive died, I have not been able to sync my iPod or download any new podcasts. I might have to (gasp) listen to music on my way to work tomorrow! Oh no, wait — a while ago, I downloaded seven or eight older episodes of Security Now, so I will be able to listen to descriptions of how VPNs work or WEP vs. WPA encryption, or stuff like that. Whew.

Anyway, back to the hard drive. The machine is an old IBM NetVista that we bought for the bargain basement price of $10. Gail’s company was getting rid of a whole bunch of these machines, so we picked one up. Shortly thereafter, our last computer died and we replaced it with this one, and it’s been great ever since. I guess I never checked the BIOS when I installed the new disk, or maybe because Windows could see all 250 GB of it, I didn’t worry about the fact that the BIOS couldn’t. Once I downloaded some more pictures from the camera, the disk went over the 137 GB mark, and then everything went all to hell.

I upgraded the BIOS to the most recent one available on the IBM support web site, which is dated 2003. No change. A former co-worker of Gail’s, who bought one of the NetVista machines at the same time, is currently using his as a NAS, with a terabyte of storage, so he must have figured this out at some point. Gail said he bought a $30 PCI SATA card and that’s it, but my drive is an IDE. (He’s away on business or vacation or something right now so I can’t ask him.) I went to a computer parts place in Burlington called Tiger Direct (wow, is that place ever cool) and asked the guy there, and he said that if the BIOS won’t recognize drives that big, then buying a new IDE controller card will not help, so perhaps Bill replaced the motherboard on his machine before adding the SATA card. He did say that if I bought an external drive enclosure and then attached the drive via USB, that should work regardless of the BIOS, so I did that. The machine recognized that there was a drive there, but described it as “offline”, and simply refused to bring it online.

I’m sure that if I kept the disk in the enclosure and reformatted it, life would be rosy, but then I lose the data on the disk. The majority of it is backed up online thanks to Jungle Disk, but not all of it. For example, my iTunes library is not backed up. I decided not to back that up because it’s re-creatable; my iTunes purchases are backed up to a CD, I can re-download any puretracks.ca purchases, and of course I can re-rip all of my CDs. That only took six weeks the first time around.

Feel free to post any suggestions here in the comments!