5 way(s) to pluralize

Programmers are lazy or maybe they just can’t count. More and more I see sites out there with dumb things like “1 page(s)” or worse just “1 pages”. I could find lots of Yahoo pages with this kind of stuff, but that’s beside the point – I’m providing help for lazy programmers who can’t count.

The rule is simple. Words are plural for every value except 1. But now you don’t even have to remember that. Just cut and paste one of the functions below.

To use any of them, call them with the count of things and then the singular form of the word and the plural form. For the truly lazy, if you can pluralize your word by just appending an “s” to the end, the last argument is optional. But don’t do this with words like “quantity”, duh.


PHP Example:

I know 5 lazy < ?php echo pluralize(5, 'programmer', 'programmers'); ?>.

I know 5 lazy < ?php echo pluralize(5, 'programmer'); ?>.

Their < ?php echo pluralize(1, 'mommy', 'mommies') ?> didn't teach them to count.

Spits out:

I know 5 lazy programmers.

I know 5 lazy programmers.

Their mommy didn't teach them to count.

Here’s the code to cut ‘n paste:

PHP

function pluralize($count, $singular, $plural = false)
{
   if (!$plural) $plural = $singular . 's';

  return ($count == 1 ? $singular : $plural) ;
}

I’m surprised this isn’t already Yet Another PHP Function

Perl

sub pluralize()
{
   my ($count, $singular, $plural) = @_;

   $plural = $singular . 's' if (!$plural) ;

  return $singular if ($count == 1);
  return $plural; 
}

I’m sure someone will come along and rewrite this in one illegible line. Of course there’s already a CPAN module for this if you’re afraid of writing any code yourself.

Java

public static String pluralize(int count, String singular)
{
   return pluralize(count, singular, singular.concat('s'));
}

public static String pluralize(int count, String singular, String plural)
{
  return (count == 1 ? singular : plural) 
}

Boy I wish Java had optional arguments.

JavaScript

String.prototype.pluralize = function(count, plural)
{
  if (plural == null)
    plural = this + 's';

  return (count == 1 ? this : plural) 
}

OO JavaScript is cool

Please contribute your favorite oddball language. It’s too early in the morning for me to write in C and I get hives anytime I look at Visual Basic.

How I Killed My Answering Machine: Part VII

This is the last of seven parts of the story of how I killed my answering machine. How complicated can it be to replace a simple little device with something a little more geeky? About 17 months, $500 and countless hours – that’s how complicated.

Part VII: The Damage

With everything finally working, it was just a matter of cleaning everything up and putting it away. But first, there was a need for some destruction. There’s no hole for the ethernet cable to get out of the TiVo, so you have to make one. This was fun. I pulled out a power drill, found a nice spot on the back case of the TiVo, and let out many months of frustrations on the box. The cable went through, I connected it to the wireless bridge, put the cover back on, and put it back in the entertainment center. I left the screws off – who knows when I’ll need to go in there again. So far, so good though. From what I hear, the next time TiVo pushes an update I’ll have to pull the drive out and reinstall any software I’ve added such as the telnet and FTP servers.

My router that I no longer needed arrived from Amazon soon after and I sold it to a coworker minus the rebate which I said I would send in. Months later I would get a rejection postcard from Linksys saying that my purchase was out of the specified time period. It wasn’t, but I’m too lazy to fight it, which is exactly what they want I guess. So I lost $10 on that router.

Some nights later I used the telnet and FTP servers I installed earlier to put TiVoWebPlus and TyStudio on my newly-networked TiVo. TiVoWebPlus’s interface is a bit funky, but it’s far easier to browse and search for programs and schedule programs when you have a mouse and a keyboard rather than a remote. I can also theoretically do last-minute scheduling from work if I wanted to.

TyStudio is also quite nice if you want to get a program off your TiVo. I’ve only really wanted to do this once, but it worked. Tranferring a 300MB video file over a 802.11b wireless connection was pretty painful, but eventually finished. The hardest part was converting TyStudio’s MPEG2 stream to something that could be transcoded to something streamable. I forget what software I finally used, but it worked.

So that’s it? I’m done? Not quite. Lingo still had a few issues. For one, my outgoing callerid was still showing my temporary number. Worse, they were going to charge me for having two numbers after a few months. A few emails and calls later, they fixed that.

The more persistent problem was that the time on the incoming caller id was wrong – 4 hours into the future. I live in California, not Nova Scotia. This was particularly annoying because my spinning info globe thing also serves as a clock in my living room, so I’m always seeing the wrong time rotating around. I sent a few emails to Lingo (noting that my account had my time zone set to Pacific) about this and they responded to say it was fixed and that I may have to reset my modem for it to take effect. I did that a few times and it didn’t do anything. I sent another email and didn’t get any response at all. One day I had idea – what if I changed my timezone on the Lingo website to a timezone 4 hours behind Pacific, like Hawaii time? I did that and the callerID was now a couple hours in the past. Good. Then I set it back to Pacific. It worked. I guess that’s the telephony equivalent of “jiggling the handle.” Lingo customer support is pretty useless.

My God, I think that may really be it. I have VOIP. All my cordless phones work. My TiVo can update. Best of all, my answering machine is collecting dust in the attic.

So the final damage tally for this project is:

17 months
 5 modems ($46)
 5 trips to Fry's
 3 operating system installs
 2 wireless routers ($55)
 1 network card ($69)
 1 CallSoftPro license ($50)
 1 serial adapter ($4)
 1 wireless bridge ($35)
 1 cordless phone system ($216.42)
 1 spinning info globe ($50)
 dozens of reboots 
 many stupid hours wasted + several more writing a stupid blog about it

That’s about $550 plus whatever it costs to power a PC “answering machine” for a year.

Of this I still have a license for CallSoft Pro, a serial adapter and a modem with broken caller id to sell. Oh, let me know if you’re interested in using Lingo (despite my issues here). We both get $25 off our bills with a referral code. If I can refer 22 people, I could actually break even on this endeavor. Unlikely.

If there’s a lesson here, it’s don’t try to build your own answering machine. Also, don’t call me – send me email. Given the fiascos of the last year, who knows what state my phone system might be in right now?

How I Killed My Answering Machine: Part VI

This is the sixth of seven parts of the story of how I killed my answering machine. How complicated can it be to replace a simple little device with something a little more geeky? About 17 months, $500 and countless hours – that’s how complicated.

Part VI: Ethernot

My TurboNet card still wasn’t working. I got to know all the various log files on the TiVo drive, looking for anything that would indicate what was wrong. Again trying to eliminate some pieces, I brought the TiVo into the study and connected it directly into my router. Ding! The light came on for TurboNet and things looked happy. I set the TiVo’s phone number to “,#401” which caused it to “dial-up” over the ethernet connection and the update completed. It was fast too.

This seemed to indicate that the wireless bridge I bought was the problem. I looked closer at the specs for the TurboNet and the wireless bridge and I thought I figured out why. The bridge was 10 base-T ethernet only and the TurboNet was well, turbo: 100 base-T according to its web page. Aha!

I posted a message on the support board about my discovery. Realizing that my wireless bridge wasn’t going to work, I decided to buy another one. I could always sell the bridge at work.

Since I knew my Linksys WRT54G router worked fine, I made one last trip to Fry’s to get another one, which can be set up to work as a bridge. It would also be faster and if I got more devices that needed networking in the living room, it would be easier to plug them in as well.

I went and grabbed a router but it wasn’t the same price as before. It was $10 more. The guy at the desk said that I could get the rebate at the counter, but when I went there they said there wasn’t one. Knowing I could get it on Amazon for cheaper, I left, ending my streak of positive Fry’s experiences. I went home and ordered it from Amazon. The trip wasn’t completely unproductive; I did place a cache.

Soon after I got a response to my question on the SiliconDust forum. The TurboNet was 10 AND 100 BaseT, so it should have worked with bridge. He said I might want to try a crossover cable. Of course I thought this suggestion was silly. I was using the cable that came with the bridge. Why wouldn’t they give you a crossover cable if that’s what you needed? And it worked with my laptop, so that couldn’t be it.

That was it. The guy on the forum said that my laptop probably had an auto-sensing ethernet card, which means it didn’t need a crossover cable; it would detect if the wires were crossed and cross them over internally. I went back to my big bag of cables and pulled out a crossover cable. The green light came on. It worked. I’m a dope.

Next, Part VII: The Damage

How I Killed My Answering Machine: Part V

This is the fifth of seven parts of the story of how I killed my answering machine. How complicated can it be to replace a simple little device with something a little more geeky? About 17 months, $500 and countless hours – that’s how complicated.

Part V: My TiVo Gets Nervous

With my TiVo networking hardware in transit and our TiVo out of guide data, we were desperate. For a few days we lived like plebes, our lives dictated by programming schedules and tortured by commercials. It was unbearable.

Then one day I turned on the TV and TiVo wasn’t unhappy anymore. What? Apparently it finally held a modem connection long enough to update itself. If this worked often enough, I wouldn’t have to do a thing. I think my TiVo got nervous that I’d be ripping it open soon, possibly frying it in the process. But soon the bridge and the network card arrived and I wasn’t backing down now. I tested out the wireless bridge with my laptop and it worked perfectly. I upgraded the firmware just to be diligent and it was a go there.

Since I had already upgraded my TiVo drive twice, opening it up again wasn’t a big deal. I had the special torx driver set to open it up, so it came apart quickly. Getting the TurboNet card in wasn’t hard, so I quickly had it installed and without putting the case back on I plugged it in and hooked it up. I powered on the TiVo. The good news was that it booted up normally and didn’t blow up. The bad news was that there was no link light on the TurboNet card, which means it couldn’t talk to the network. I tried dialing out from the TiVo anyway and it didn’t work.

Gah!! When will this end?? Or rather, when will I stop insisting that I be on the bleeding edge of technology while also remaining relatively frugal?

It was reported that you didn’t need to install any drivers or anything to make the TurboNet work; newer versions of the TiVo software had it built-in. Assuming that this was the problem for a minute, I booted up my old “answering machine” with a Linux Boot CD and installed the drivers onto the TiVo’s hard drive. While I was in there I enabled telnet and FTP on the box so I could get into it later without installing the drive into my PC. I reinstalled the hard drive in the TiVo and started it up. Once again it didn’t instantly become a flaming box of metal and plastic, but the TurboNet didn’t work either. I consulted the support message boards and tried a bunch of different settings, making error logs more verbose where I could. I did this many times and each time meant taking the hard drive out of the TiVo, putting it in the PC, running a few commands and reinstalling into the TiVo. The carpet between the study and the living room was starting to wear out.

Next, Part VI, Ethernot

The New Yahoo! News Beta is out!

The new Yahoo! News Beta is out!

We’ve been working on this for a long time and it’s great to finally let the world see it. It’s got some great stuff that I’ve been thinking about ever since I joined the Y! News team 3 years ago. It has bigger pictures, a cleaner look, IM story to a friend, and My Sources on the front page – a sort of “News RSS for Dummies”.

You can finally autoplay slideshows. Just click the play button and sit back. If you like to scan headlines, you’ll love the tabbed views on the front page. The Y!Q contextual links on each story are pretty cool as well.

Under the hood, we’ve killed every font tag and table. It’s all PHP generating semantic markup. Thanks to the magic of mod_rewrite, you’ll automatically go back to the beta.news site if you select the “Go There” link in the yellow box on any page on news.yahoo.com. So even if you use My Yahoo, you’ll always get to experience the new news after you’ve selected it once. URLs are generally a LOT shorter too.

The “rate this story” widgets are much prettier. They don’t force you to view a new page. You can also rate from photos and slideshows. *

We’ve also implemented some nice passive personalization. Little options like the last tabs you selected on the front page, your slideshow speed preference and your preferred view – Headlines Only or Headlines and Summaries on lists of stories are all sticky. Set them once and when you come back it’ll stay that way.

There’s still much to clean up, optimize and finish. I’m a little too tired to write much more, so please check it out and let me know what you think. Here’s the formal tour.

* I learned something here about HTTP, specifically the HTTP 204 response code. It says “I got your request and did something OK, but I don’t need to send you any data back”. It’s really handy for stuff like this. In the past I always changed the location of a hidden image, hidden frame or used flash or XMLHttpRequest. This method is dead simple and has been there forever.

How I Killed My Answering Machine: Part IV

This is the fourth of seven parts of the story of how I killed my answering machine. How complicated can it be to replace a simple little device with something a little more geeky? About 17 months, $500 and countless hours – that’s how complicated.

Part IV: Modem Misery

With Lingo working, there was only one problem left – the TiVo. Since the phone was disconneced in December, our TiVo wasn’t able to call out and get program data. I had until the 5th to get some data in there or it would completely lose track of what to record and that would be horrible. Life as we know it would stop.

Once the phone jacks were all working, I forced the TiVo to make a call. It wouldn’t connect. It didn’t like the phone line. I tried over and over again, but because it wasn’t a regular phone line, it couldn’t reliably connect to the modem on the other side. I tried changing the dialup number and some settings (disable caller ID with *70, set a calling prefix of ,#096 to force the modem to a lower speed) but nothing worked or worked long enough for it to complete a call.

I went back to the excellent TivoCommunity and did some web searching for advice. One interesting idea was to use an external modem to download program data. People had done this successfully when their modems burned out or for controlling the modem more carefully to make it work over VOIP like me.

I rummaged around for a bit and came out with a US Robotics Sportster 28.8 modem and the original stereo to serial cable adapter (who the heck decided to use that?) that came with my TiVo. Take THAT all you people that said my big boxes of cables, wires and obsolete computer equipment in the garage was a waste of space! (I just KNOW that a 75-foot serial cable and my fat ethernet dongles will save my life someday.)

There was one problem – the serial cable attached to the back of the modem was for a Mac serial port. I needed a regular 9-pin version. Go to Fry’s. Do not pass go, do not collect $200.

Once again, Fry’s actually had what I wanted. Confused by my success, I spent a half hour wandering around the store looking at gadgets trying to find something I want that they didn’t have. I did wander by a 30in Apple Cinema display. Boy, that thing is a beaut. You could practically swim in it. I felt very small standing next to it. Finally I bought my $4 adapter and headed home.

I decided to see if I could get the modem to work off my laptop first before trying it off the TiVo. I connected the serial adapter to the modem to my laptop and fired up HyperTerminal. It wouldn’t dial. I fiddled around with the baud settings a million times, flipped around the dip switches on the modem and finally got it to respond. It dialed! That was good, but it wouldn’t connect to the TiVo dialup number. Well, every once in a while it would connect, but not reliably.

We I went through the TiVo setup just to get different dialup numbers to try. Some worked more consistently than others, but it seemd that Lingo just didn’t give me a clean enough line to make a modem connection. I spent even more time in modem AT code land. AT&D0&H0&I0&R1&W0&W1? Sure, don’t mind if I do.

For a while I was spending every spare moment day and night trying different dialup numbers, AT codes, dipswitches and configurations. The clock was ticking on my program guide and soon our TiVo would have no data and therefore have no idea when or what to record. I disconnected everything from my network except the Lingo adapter and plugged the modem right into it. Every once in a while it would connect briefly, but usually not. Sensing defeat, I laid out my options. Should I continue with this or buy my way out of this? I made a spreadsheet:

Option 1 was to break down and get DirecTV. I hate Comcast anyway and this would allow me to nearly eliminate the need for a phone line (besides the initial setup). Option 2 was to add a network card to my TiVo which was risky and would cost money, but ultimately would be the cheapest route. Option 3 was to buy a new Series 2 TiVo that I could hook up with a wireless adapter. The bonus there would be that I could also use the Home Media Options on the new TiVo, allowing me to view photos, listen to my iTunes music and download programs off it. I could either buy a lifetime subscription or pay monthly for the new unit. The last option would be to completely give up, unravel this whole mess and go back to my regular old analog phone line from SBC. That one would be the hardest to swallow given the amount of time and effort I put into making this work.

In the meantime, D-Day arrived and there was no program data left on the TiVo. I tried repeatedly to just use the modem in the TiVo some more to dial, but it would get interrupted in the middle of the download (if it was able to connect at all) and fail completely.

I spent a few more hours trying to get the modem to work in the simplest configuration possible. Finally, at 12:16 am on Jan. 6 I gave up and ordered a TurboNet ethernet adapter for my TiVo from 9th Tee Enterprises for $69.25. Second, I bought a refurbished Netgear wireless bridge for $35. That should do it.

Next, Part V: My TiVo Gets Nervous

How I Killed My Answering Machine: Part III

This is the third of seven parts of the story of how I killed my answering machine. How complicated can it be to replace a simple little device with something a little more geeky? About 17 months, $500 and countless hours – that’s how complicated.

Part III: Lingo

Plan D: Lingo

I lived with my unsatisfying answering machine though until December when I signed up for the Lingo VOIP service. We barely use our landline anyway (if it were up to me I’d drop it altogether), so this was cheaper than what we get from SBC ($14.95 a month for 500 minutes). Plus it included free long distance. And it had this little feature where it can email voicemail to you. I unplugged my answering machine PC.

The setup kit arrived in mid-December. The installation for the VOIP modem says you can install it behind your router, but I couldn’t get that to work. When I put it in front of my router, it messed all kinds of things up, even though that configuration prioritizes voice traffic. There’s a web interface to the router that I played with to try to get it working, but didn’t have any luck. Sometimes I couldn’t get to it at all. I also discovered it had a telnet interface where you could change many of the same settings. After messing around in there, I managed to get it in a state where it wasn’t pingable anymore. Oops. I ran out of time before Christmas vacation to get it working right, so I just left it.

Of course while we were on Christmas vacation, Lingo finished transferring my number over and my local phone service was cancelled. The Lingo voicemail was working though and we’re getting messages via email which is fine while we’re not home.

When we returned in January, I set out to get it working. There are absolutely no buttons on the thing and no obvious way to reset the thing to factory defaults. Figuring all was lost, I called Lingo support. The Indian guy that answered walked me through the braindead troubleshooting rituals – turn everything off, and turn it back on. That didn’t work? How about turning everything on and off again? Finally he gave up and set he would escalate to level 2 support; they would call me back sometime.

The next day I finally got back into the router by plugging the ethernet port directly into my laptop and accidentally pinging the broadcast address which reminded me what random IP address I had assigned to it. I then got it working again by putting it in front of my router, but then I remembered why I didn’t like that last time – all kinds of networking stuff got messed up. Lingo kinda assumes that you have one computer connected directed to a cable modem or DSL line. I’ve got something like 5 behind a router.

Moving it back behind the router just wouldn’t work. I tried messing with the router (an SMC7004VBR) settings, but it wouldn’t go. I did some research on some messageboards and people mentioned which routers worked well for them. Lots of people also seemed to have a poor opinion of SMC routers.

I decided it was time to upgrade to 802.11g anyway and headed to Fry’s on Jan. 3 after checking the prices for the router I wanted, the Linksys WRT54G. This one seemed to be pretty popular and what’s better is that it has a unique (for consumer routers) QoS feature which would allow me to prioritize voice traffic over data so calls wouldn’t get dropped if I’m downloading a file or something at the same time. And it wouldn’t require me to put the Lingo modem in front of it.

For once, I had a mostly positive Fry’s experience. At first I couldn’t find the router. The shelf they should have been on was empty. But if there’s one thing I’ve learned about Fry’s is that they put the same item in at least two different places. Sure enough I eventually stumbled upon a Linksys kiosk with the router I wanted. Amazingly it was the same price as Amazon ($50) with the same rebate! I happily paid the extra sales tax as my fee for “having it right now.”

When I got home, I quickly realized that my old router sucked. This new one was slick. It started up very quickly, unlike my old one that took at least a minute to get going. The web interface had lots of cool options. The box had all kinds of stickers and warnings to run the setup CD first to configure it. I tried that, but it couldn’t find the router. I gave up and just plugged it in. It worked right away. Even better, Lingo worked perfectly when plugged into it. Amazing! It was fast too. It is a bit ugly, but I can live with that. I spent some time configuring it the way I liked, spat on my old router, and went to bed.

The next day I finished the phone setup, plugging the wall’s phone outline into the Lingo and all the phones in the house lit up. Cool! (Of course I did this without reading the warnings that if you did this and there was still power coming through the phone line from the phone company, it would fry your VOIP modem. Good thing it didn’t.)

There was only one problem left – the TiVo.

Next, Part IV: Modem Misery

How I Killed My Answering Machine: Part II

This is the second of seven parts of the story of how I killed my answering machine. How complicated can it be to replace a simple little device with something a little more geeky? About 17 months, $500 and countless hours – that’s how complicated.

Part II: More Modems and Windows

On December 16, 2003 I bought a Lucent 56K V92 PCI Modem off eBay for $9. This was a software-based (controllerless) modem, but supposedly there were Linux drivers as well. By this time I had pretty much given up on Linux. Between poor driver support and trouble just getting the voicemail software installed, it just wasn’t worth it. Instead, I stumbled across CallSoft (via a paid link on Google no less) which was amazingly feature-rich and configurable. Best of all I could just install it and forget about it.

Plan C: Windows

But even using real drivers on Windows, I found a problem. The caller ID worked, but only when there was a name with the number. So if caller ID just returned a number, it didn’t show anything at all. Useless. I installed, uninstalled and reinstalled the drivers on windows over and over again but didn’t have any better luck.

CallSoft seemed to be working well though, so I registered it on Jan 6, 2004 for $50. It still didn’t like the modem though, so I broke down and bought one of the recommended modems for CallSoft. Modem #4 was purchased for $29 on Jan 22.

This new modem finally worked well. It worked for voicemail, the caller ID worked and CallSoft liked it. The only annoying problem is that it displayed an “O” as the caller’s name when only a number was returned from caller ID, but I could live with that.

I also turned on the speech support and downloaded the professional voices from IBM. When a call came in, it would speak the name and number loudly from our office and send a windows popup to my laptop with the number. Voicemail would be recorded and sent via email as an MP3 attachment. For solicitors, I could play a “do not call” message back to them, targed by caller id. I also found that by turning down up the number of rings before answer to 6 or so, most telemarketers wouldn’t wait that long to place a message. This was pretty sweet. I had myself a 40-pound, 120-watt uber-answering machine. I put the old answering machine up in the attic.

Too bad the new machine wasn’t reliable. Sometimes I would come home and find that CallSoft had crashed or just didn’t pick up. After a while the speech stuff stopped working too and it just wouldn’t speak when a call came in. I “fixed” CallSoft’s reliability problems by installing SwitchOff, a little utility that rebooted my “answering machine” every night. It was very annoying that I couldn’t trust my answering machine though. Random people would tell us that our answering machine was broken or didn’t pick up. We always knew when it was 10 pm because we’d hear the “answering machine” reboot from the study.

In September I found myself with a Sharper Image gift certificate, so I got myself one of those spinning info globes, purely as a highly-visible caller id display. That works pretty well actually and had some additional coolness factor, even if it does make noise all the time. It sure beat running over to a phone and squinting at the LCD.

In October, I got tired of getting kicked off my wireless network every time the phone rang, so I upgraded to a Motorola 5.8 Ghz phone system with two extra handsets. This was great because I could now put the handsets wherever I wanted them rather than where the phone outlets were. I had set up some power line adapters, but because of the how the circuits are laid out in the house, I still had to run a long phone line to get the phone where I wanted it to be. No more. And I now had a phone with lounging reach of the couch. I still occasionally have problems with interference when my phone rings, but I’m not sure it’s worth fixing at this point.

These purchases had nothing to do with voicemail per se, but they did solve some of my telephony problems, even if CallSoft wasn’t still doing what I wanted.

Next, Part III: Lingo

How I Killed My Answering Machine: Part I

This is the story of how I killed my answering machine. How complicated can it be to replace a simple little device with something a little more geeky? About 17 months, $500 and countless hours – that’s how complicated. This story is ridiculously long, technical and includes lots of geeky terminology, so if you’re not into that sort of thing, check this space in a week for something resembling regularly scheduled programming. I’ve broken the story up into seven parts because I can’t imagine someone trying to read the whole thing in one sitting.

Part I: A Simple Plan of Execution

I think it’s finally dead.

I’ve hated my answering machine for a long time now. In 2003 I hatched a plan to kill it.

The simple idea was to put one of my mostly idle computers to good use and use it as my answering machine. I would get rid of all the annoying buttons and blinky lights and have something nice and usable. I would be able to listen to messages over the web or just have them emailed to me. That’s all I wanted.

Plan A: Mac OS X

I have a PowerMac G4 that’s basically my home server and I would love it if Apple included voicemail software with OS X. Sadly the modems in their machines are not voice-capable. I used to have an voice-capable external 56K modem, but I have no idea where it went. Since my last rant on the topic, PhoneValet got an upgrade and seems like a good solution for Mac OS X, but it’s $200!

Plan B: Linux

My next best idea was to repurpose an old Pentium II I had lying around as a Linux server and run some software there. VOCP would supposedly do everything I wanted. Great.

First I had to get a Linux distribution on the PC. Hmm, I don’t have a CD burner on the PC. Thankfully Apple’s Disk Image utility handles ISO images just fine and I was able to download Red Hat, burn it to two CDs and pop it into the PC. I had it reformat the drive, wiping out XP and setting up its own partitions. The install went fairly smoothly although it asked me way more questions than I really cared to bothered with. In the end I had a working Linux system – or so it seemed.

Meanwhile, I ran over to Fry’s and bought a modem, carefully avoiding anything that said “WinModem”, knowing it probably wouldn’t work with Linux. I came back home on November 23, 2003 with a Best Data modem for $32.46 and threw that in the machine.

Now the fun was getting the modem drivers working. I played around with all the software and compiled stuff, but it wouldn’t work. Then I thought that it might be a good idea to see if this modem isn’t DOA first. Windows drivers came in the box of course. Too bad I wiped out Windows. Red Hat was acting weird anyway. It wouldn’t download any updates. The registration utility just kept crashing.

I thought I would just install Windows into some free space on the drive. I searched around on the web for answers on how to do this. The answer: you can’t. You have to install Windows first, then Linux. Doh! Having Windows seemed to be the best course of action, so I copied a few of the files I worked on over to my Mac, reformatted the PC disk and installed Windows XP again. Once that was done, I installed Red Hat into another partition. Great. Now I can dual boot.

Now the good news was that the modem was recognized and worked in Windows. The bad news was that I discovered something about the modem – it didn’t seem to have any voice capabilities. I looked up the modem info on the internet and sure enough, it was NOT a voice modem, even if the box said it was. This extended my streak of bad Fry’s experiences to about 9,000 or so in a row.

After performing the painful return ritual at Fry’s, I went onto eBay on Nov. 24 and bought another modem. My consolation was that this modem as about $25 cheaper than the one I got at Fry’s – $8. It was an Intel modem, based on the Ambient MD563X-HaM chipset which supposedly would work for voicemail.

A few days later that one arrived and I started playing with it. After messing with AT modem codes for a while in Linux(it’s been a LONG time since I did that), I gave up and decided to get it working in Windows. This modem was recognized and seemed to work, except it didn’t show caller ID. (I drove Anne crazy calling our phone over and over to test this.) While the chipset was supposed to support it, it didn’t work in these modems. Sure enough, the eBay listing didn’t show caller id as a feature and I didn’t read it carefully. Back to eBay.

Next: Part II, More modems and Windows