The Route To Hell…

A year ago, I finally got a new
laptop
to replace my aging
Fujitsu LifeBook 420D
. By aging I mean decrepid. By decrepid, I mean
Pentium 120 with no USB, a broken CD-ROM and a misaligned floppy drive. The
kind of laptop that makes me cringe when I show up at a customer’s site and
they ask, “Can you fix it?”

The question that needs to be asked is, “Is it worth fixing?” In this case, it
didn’t take me long to decide, “Hell no!” I got a good deal on the new laptop,
although it wasn’t a high end system, I think I got a good value for my money.
So far, my only complaints were the need to upgrade the RAM (a cheap fix) and the
left button on the touchpad. It has a mind of its own. Mostly, when I click it,
it ignores me. When it decides to respond, it makes up for lost time and clicks
twice. I’m under warranty, but I’ve already been told, “It might be a driver
problem and you’ll need to wipe the hard disk and install the recovery CD
before we can accept the warranty.” Yeah, I’ll get right on that. For now, I
have a little mouse I plug in when I need it. Soon, I’ll be upgrading the hard
disk. When I do, I’ll clone it, do the factory refresh and deal with the
warranty issue. Until then, I won’t be recommending the manufacturer or the
retailer to my customers.

The one thing I do love about my laptop is the freedom that comes with the
included 802.11g Wifi adapter. Along with my fancy, new D-Link DI-624 broadband
router
, I can freely roam the house and even sit on the patio and enjoy the
sunset view over the lake while I merrily answer email and poke around online.
Usually.

When I first put in the router, I started having problems with interference. My
cordless phone is also 2.4 GHz and everytime the phone rang, my router would
reset. My desktop system would tell me that the ethernet signal disappeared and
I’d watch the interface cycle. Any data transfers I had going, remote shells,
and IRC would all bomb out. I lived with this for a few weeks until I got to
talking to one of my buddies online. He suggested I force the wireless radio to
use a different channel and avoid the interference. Lo and behold, it worked!
My router ceased its dance of death with my telephone and I thought all was
well.

Unfortunately, I won the battle, but the war was far from over. Although the
regular disconnects were over, I was still experiencing random, intermittent
disconnects. These disconnects would occur anywhere from two to twenty times
per day. I also had problems with large data transfers. Anytime I fired up
bittorrent or any other P2P applications, my connection would start dropping
every five to ten minutes and stay gone for around five minutes. The only way
to hasten the recovery would be to release and renew my IP address from the
command line. Believe it or not, I lived with this for almost a year. The straw
that broke the proverbial camel’s back was a sudden and immediate need to run a
VPN connection to one of my clients. After establishing the tunnel, the
connection was so slow, it was unusable. In fact, I couldn’t even get
Enterprise Manager to connect to the remote SQL Server database.

I ended up taking the router completely out of play and plugging my PC directly into
my cable modem. This worked great for my desktop, but it left my wireless
laptop feeling lonely and neglected. Of course, all the other annoying problems
went away as soon as I bypassed the router.

Last I checked, D-Link offered a three year warranty on their products. Since I
needed a new router for use in my office, I decided I would purchase a new
router, take the old to the office and get it replaced under warranty. Having a
definite plan of action, I proceeded to purchase a new router. As it happened,
Office Depot had the same model router on sale for about $40 (after mail-in
rebates). With my $15 bonus coupon from the rewards program, I would be out of
there spending less than $30 net on the router.

I installed the new router only to discover that it suffered the same problem
as my previous, allegedly defective router. I guess I had a premonition this
would happen, because I hadn’t yet carved up the box for the UPC symbol or sent
in my rebate forms. I resolved to return the router and purchase a completely
different brand. Since it was the weekend and gas was still close to $3/gal, I
suffered until Monday. Connecting and disconnecting cables from the
cable modem and my PC was getting a bit old, so I tried logging into the
router’s web interface and turning off the wireless radio. Without the wireless
function, the router worked nearly perfectly. I say nearly because I was still
getting a couple of disconnects daily.

Yesterday, I exchanged the D-Link for a Linksys WRT54G router. I chose this one
because I anticipated great fun playing with the open source firmware. Not that
I intended to write my own Linux build for the box, but I knew a few people had
enhanced the stock build considerably and thought it would be fun to play.
Installing the router took only a few moments. I flashed the router with the
latest official firmware build and my connection has been flawless. I even
downloaded a 350 MB torrent last night and never once did my connection to IRC
cycle.

Postscript: My new router appears to be TOO new to use third party firmware.
The router uses revision 4 hardware (my serial number starts with CDFA) and the
likes of Sveasoft’s Alchemy refused to load. They promise support in version 1.1. I can’t wait.

Hacked Off

The other day, one of my websites was defaced by a scripted hack. I’m still not sure exactly how they got in, but I assume I can thank the recently identified SQL Injection exploits such as this one since the hack was accomplished by replacing the footer values in my PHP-Nuke configuration database.

During the course of a normal day, my PC tends to stay logged into IRC. Unfortunately, I’ve been working on a project lately that requires me to login to a remote network using a VPN and the client security policy forces all my internet traffic through the VPN connection which is nicely firewalled. When I log in to upload my work and test, I have to disconnect all the little utilities and applications I use that constantly access my Internet connection.

This is important because had I not been offline working, I could have dealt with my problem a bit quicker. As it was, I only found out about it because one of my online buddies dug out my phone number from whois and called me.

I’m not going to glorify the hack or the hacker by any direct mention. The defacement looked like this. As far as I can tell, the intrusion was complete scripted. My guess is that the script googles a string that somehow identifies vulnerable systems and then runs the exploit against one of the unpatched entry forms.

Sadly, the latest public release of PHP-Nuke still hasn’t fixed the bug. I think I’ll be motivated soon to migrate that site off of Nuke and onto another CMS.

Universally FUBARed

For the second time since they opened in 1990, I was talked into going to Universal Studios in Orlando. It took all of 10 minutes to remember why I hadn’t been back.

(cue flashback fog) The two things that stood out from my last visit were the pointless herding of visitors by employees and the lines. When I go to a theme park, I expect to wait to get on rides. Fifteen years ago, no one had invented the likes of Disney’s FastPass system and access to specific attractions was the closest thing to a communist utopia you’d find in the free world – that is to say, everyone had an equal opportunity to stand in long lines. What aggravated me most was how the lines were managed. Mostly, they weren’t. The lines consisted of endless zigzags of chains winding a twisting path through some area with nothing to do except eavesdrop on your immediate neighbors and whine about how hot it is. Unlike the megalithic competition, Universal offered nothing in the way of distraction to make you forget how annoying bored eight year olds can possibly get after 60 minutes of imitating cattle on the way to the slaughterhouse.

I’m sure some efficiency engineer was paid a handsome sum to design the layout of the public areas to maximize traffic flow. For instance, in the name of efficiency, this person (or group of persons if anyone else wants in on the credit) figured out the optimal way to cram cars onto a fixed slab of pavement. Measured in cars/acre and rate of parking, I’m willing to bet they got a hefty bonus. Too bad they neglected to consider that people may not want to drive past a half mile of empty pavement to park in the spot physically furthest from the theme park entrance. Even to my untrained eye, I could see where they could have routed the traffic differently without making cars and pedestrians battle for right of way.

So, it was with great apprehension that I learned my wife had scored a pair of “Star Tickets” for admission to the park. Realizing that fifteen years had passed and that things surely had changed, I decided to give it a go. Besides, the tickets were free, so what did we have to lose? Someday, I’ll learn that unbridled optimism is for suckers. Clearly, that day was not here yet.

We had two tickets, we needed three, so we were going to spend some money on the third ticket plus parking. I figured $60 plus a tank of gas, so at $83/gallon, we’d have some fun for under a grand. I know… gas didn’t quite make it to $83/gallon, but one can’t be sure about these things when Exxon/Mobile has record quarterly profits to exceed. Looking on Universal’s website (screenshot), I see that they’re open until 7pm, so we’ll have about six hours to play once we get there.

Getting there was easy considering the entire route is along I-4 where they’ve conveniently replicated Tampa’s Malfunction Junction at regular intervals so that we won’t miss it when the fix is completed sometime next year.

The lines at the parking booths were encouragingly short with no more than two cars per gate. The price went up a buck from the last time we visited Margaritaville earlier in the year, but such is life. Since our last visit, Universal replaced the asphalt parking lots with a series of enormous parking decks. It took about ten minutes to navigate past the traffic cones and bored attendants before we got to the deck and level that was actively being filled. I was starting to feel optimistic about the trip when I noticed that they had setup two lanes of traffic feeding a single lane around a 90 degree turn. Most people politely lined up and behaved, but inevitably, some Type A tourist in a rented luxury sedan would decide his time was much more important than everyone elses and would jump into the empty lane to cut in line. Let me pause briefly to give kudos to the Florida crackers in the old Chevy pickup who decided to straddle both lanes after the second Andretti wannabe attempted passing while under caution flags. Naturally, after the turn, we had two lanes again and suffered from deja vu as yet another set of the self-appointed elite tried their luck against the dually.

Parking matters aside, the walk to the front gates was somehow longer than the walk from the back 9 at my local duffer course. Universal does provide moving sidewalks, which is nice. Oddly, they had at least one completely turned off for each segment of the walk. I blame either human error or the Return Of The Efficiency Expert (coming soon to a themepark near you).

Sheesh, I’m getting wordy and I haven’t even talked about how badly they implemented what little technology they had. Ticket booth – second in line. The one window we waited at was staffed by an employee who types about 12 char/min. That’s right, characters. I’ve seen people fill out tax returns faster than this lady could enter the bare essentials for two people buying annual passes. Hey Universal! How about basic training for your frontline staff if you’re going to require more background information than my mortgage banker. It honestly took over 20 minutes to take care of one customer. I finally jumped lines and finished my transaction about the same time as the people buying the passes.

Had we bought tickets, they would have been $60/person for one person/one day. I mistakenly thought that the Florida resident special was adding a second day for free. Turns out, it’s adding the second park, but no extra days. Furthermore, the Star Tickets were only good for Universal, not Islands of Adventure, so that bonus was useless. To add insult to injury, on that day, Universal closed at 6pm instead of 7pm as stated on their website. Every employee I asked (there were four total) insisted I was mistaken and looked at the wrong park’s hours on their website. Not one bothered to check. How wrong they were.

All told, we lost about half an hour and got into the park about 1:30. We decided against the “added value” options ($20 per head for all you can eat all day in three separate restaurants – excluding beverages and $15 for the express option which lets you skip most of the lines). Inside the park, there weren’t many people. We knew it wouldn’t last. At 4pm, they would be allowing 32,000 Christian rockers through the gates for Rock The Universe.

Let me just summarize my annoyances with the rides we had time to experience:

Jimmy Neutron’s Nicktoon Blast. Are the misters that come off the big fans supposed to spray you with a volume of water equivalent to a light rain? I’m guessing not and suspect they were ready for adjustment. The holding cell where the audience is queued prior to the actual ride had one big screen for everyone to watch. My daughter (one would think she is the primary audience for this attraction) could only see the screen after I hoisted her onto my shoulders. Why not place a few monitors around the room? Oh, and turn the volume up a bit so we can hear it over the majority of people who wouldn’t shut up.

Shrek 4-D. Same complaint about the holding cell. Note to future theme park designers – if you there is ANY chance your audience will be stuck in the holding cell longer than anticipated, please find an audio track longer than 20 seconds to loop while you stall for time. In addition, being the last person left in the entire United States who hasn’t seen the movie, I found the teenagers with the scripted attitudes and insults to be intensely annoying. Once we were seated, we got just past the donkey sneeze and the show stopped. After two minutes of tolerating yet more scripted insults, they started over. At least the second time, I knew to cover my face before getting it sprayed with simulated donkey snot. The water in the face thing seems to be the only immersive element Universal mastered throughout the park.

Revenge of the Mummy. The ride itself was fun. As a bonus, I noticed they replaced the chains in the queues with fixed sections of stainless steel railings. I’m not sure, but I guess that’s progress. I’ll have to check with an efficiency expert on that and get back to you. The actual queue – still boring. I think they need to fire the efficiency experts and hire some Imagineers to work on ways to keep people occupied as they shuffle through the neverending lines. Thankfully, the park was pretty empty and none of the waits were more than 15 minutes (for now).

Another interesting point.. they provide free lockers for your bags while you are on the ride. For this ride, the lockers are free for up to 2.5 hours at which point you pay $2 per half hour. The lockers are controlled by a fingerprint scanner. It takes two scans of your thumb and assigns you a locker. When you are ready to retrieve your bag, you enter your locker number into a keypad and then let it scan your thumb again. Here’s the rub – there are two stations on each bank of lockers and they aren’t networked! You can only go to the station you originally used to retrieve your belongings. Stupid.

E.T. Adventure. This one annoyed the crap out of me. The ride was fun. It is reminiscent of the Peter Pan ride at the Magic Kingdom. Getting onto the ride required obtaining a “badge” from two employees. This bottleneck turned out to be merely an unnecessary waste of time. To get the badge, you have to give them your first name and they then hand you a vinyl card with a barcode on it. When I got the card, I’m thinking this might be cool.. Maybe E.T. will say my name or something on the ride. *BZZZZT!* Wrong! Before getting on the ride, another employee collected the badges and dropped them into a bin where they remained unscanned. WTF is up with that?

Twister. Huge outdoor line but they at least provided video. The video clips are scarier than the ride.

I’m actually pretty settled down at this point because, although we are short on time, things are moving along pretty well and my daughter is having a good time. We’ve now been in the park about 90 minutes and done five rides. We decide to head over to Hollywood and grab a couple of frosty lemonades on the way. Here’s where things went south. Next stop..

Back To The Future -The Ride. After we got in line, we hit the first checkpoint. An employee directed us to a path and told us to go that way. I think it took longer to scale the ramps we walked up than it took to experience this ride. The ramps were all in full sun and we had no shade. At this point, I was wishing someone would throw more water in my face.

<digression>Universal has been open for over fifteen years now. Why didn’t they plant some shade trees along the major walkways? Everywhere you walk, you are in the sun. And it is HOT in Florida eight months of the year. I blame efficiency engineers.</digression>

BTTF:TR was fun once we got going. It’s your basic motion simulator and the ride is hosted by the esteemed Dr. Emmett Brown. It’s not terribly high tech, but that might explain why it didn’t malfunction.

Men In Black: Alien Attack. This ride looked like it would be the most fun of all. You ride around in a vehicle along a track and shoot at aliens. Sort of like Buzz Lightyear at MK but not cartoonish. The aliens are all animatronic and you have an LED scorecard at your seat to tell you how you’re doing. Because of the nature of the ride, all bags are again to be stored in free lockers. The trouble with this plan is that these lockers are only free for 45 minutes. The ride takes about 10 minutes and we were told the wait would be 30 minutes. We went for it and it turned out the line was only 20 minutes. We decided to go again, so I waited in line to retrieve my stuff figuring I would redeposit it into another locker for another 45 minutes. My wife’s thumb sufficed and I didn’t try my thumb on a second go, so don’t ask if they check.

We got back in line and were again told the line was 30 minutes long. The line was substantially longer this time, so I was a bit nervous about the time. I asked the attendant why the time limit was so restrictive. Rather than answer, he told me to come find him if the line ran long and he’d help me retrieve my things. Back in line, we moved about 20 feet in 20 minutes. I’m about to start getting agitated when word trickles back from the front of the line that the ride was down. It crashed and there was no ETA for when it would be back. The attendant confirmed this, so I waiting another ten minutes to get my things from the locker and we decided to catch the final T2:3D show.

I should point out that at this point, we managed to get through two rides in about two hours. It was now well after 4pm and hordes of marauding pubescent teenagers were streaming into the park at an alarming rate. Rock The Universe was starting to look like the Crusades as performed by Attilla and the Huns. That is to say, these kids were charged up and pretty much running roughshod over anyone between them and wherever they were headed.

Terminator 2:3D Battle Across Time. We got back to the line for this one about 20 minutes before the show which starts on the half hour. The show was listed on the program as the last show of the day. 20 minutes was what the attendants told us to plan around to ensure a seat. As it was, the line was already extremely long and they cut it off just behind us. This attraction looked like it was going to top MIB in terms of fun and we were all excited to see it. Think of it as a 3D movie with live action role playing. The show actually started in the holding tank where a live actor introduced the theme and we were treated to a commercial for Skynet and Cyberdyne, the fictitious company who creates the homicidal weapons systems and robots. The commercial is interrupted by rebels from the future… you get the picture. It was fun.

After the introduction, semi-automatic doors open into the theater and it’s a free for all for seating. We ended up with some center seats near the front and settled in to finish the show. It goes along smoothly for about three or four minutes and then it stops. Suddenly. Without warning. I’m secretly hoping that this is another “interruption” by the rebels, but alas, my optimism is shredded when drone #2 announces that the attraction has broken and we are to immediately exit the theater. Oh, and by the way, come back later for priority seating for your inconvenience. Needless to say, we’re horribly disappointed.

More insult to compound the injury – outside the attraction, they are already loading the next herd into the holding cell. The show wasn’t broken, they just decided to unload us to keep their schedule rather than restart it. I’m beyond speechless by this realization. Because of the broken rides, we have done nothing but wait in lines for the last two hours. Yes, it’s 6pm and we have to leave. We finished our one turn on MIB precisely at 4pm.

I hope they improve things a bit before I come back again in 2020.

What the F

Today, I had to build a computer for delivery on Tuesday for a very good customer of mine. He really likes using zip drives, so I offered to move his existing Zip 250 into his new computer. I was ripping the old computer apart anyway to copy the old hard drive onto a partition in the new computer, so it really took no appreciable effort to do so – or so I thought.

<digression>The old computer inexplicably started locking up without warning. The only way to bring it back to life was to let it sit for a while. My first thought was that one of the fans was dead or dying and the problem was heat related. I booted the system into the CMOS to look at the hardware monitor. The CPU fan was moving along at a steady 3042 rpm and the CPU maintained a constant temperature of 46-49C. So much for my heat theory. While I was in there, I also noted that the voltages coming off the power supply were right in line with what I expected and rock steady.

I went ahead and booted the system into windows figuring there might be a corrupted swap file or garbage in the temp directory. Both of those circumstances have occurred for me in the past, so I thought I’d start there. I deleted the temp files and jumped into a command prompt to look for spyware and viruses in the windows and system32 folders when the computer locked up on me without warning. The keyboard was completely dead. I couldn’t even get an LED toggle on the numlock key. The old three finger salute was unavailable as well. My only recourse was to hold the power button down for the requisite four seconds or use the reset key. I tried both. Even though the screen blanked, nothing ever came back.

So… scratch the “blame windows” theory. Clearly, I was dealing with a hardware issue. Now this particular customer doesn’t like a lot of downtime and trial and error. Given that there were no obvious symptoms that led me to any specific component, I gave him the option of either allowing me to troubleshoot the problem by swapping components until we found the culprit or allowing me to cut to the chase and just replace the motherboard, CPU, RAM and power supply. I hate tossing out good parts like that, but for the price of hardware, it’s often cheaper to just go ahead with what amounts to a partial upgrade.

It turns out, this fellow had even less of a tolerance for partial solutions than I expected and he requested I just replace the entire computer. It allowed him to move up to Windows XP from 2000 and taking the time to do a clean install of his software was something he had been planning for me to do anyway.</digression>

Fast forward to this evening. I’ve assembled the new computer, moved the zip drive over and I have to say, I’m quite pleased with the new setup. Here’s what I put in:

  • AOpen QF50 Midtower Enclosure
  • Gigabyte GA-8I945P Motherboard
  • Pentium 4 3.4 GHz with the LGA775 socket form factor
  • A gig of RAM
  • AGP 8x GeForce 4 video
  • 250 GB Maxtor SATA Hard Disk
  • DVD-/+RW
  • 52x CD-RW

All in all, a decent system. I loaded Windows XP Professional, installed Norton Antivirus and then realized the onboard gigabit LAN adapter wasn’t active because the driver wasn’t native. I inserted Gigabyte’s driver CD to activate and install the motherboard drivers. Gigabyte has a pretty nifty solution. You pick all the drivers you want/need from the initial splash screen and it installs them all, even if it needs to reboot in the middle, without any further user intervention. I went ahead and selected all four drivers (Intel chipset, USB 2.0, Marvell Gigabit LAN, and audio) and set it loose. The downside of their nifty driver is that it doesn’t really tell you what it’s doing. Basically, there is a little red line near the bottom left that serves as a progress indicator. For some reason, it stalled somewhere between 10 and 15 percent and refused to budge. I cancelled the install tried restarting it but had no further luck.

After rebooting, the driver installation automatically restarted but it remained stuck in the same place. I tried a few things, including going into the CD-ROM and installing the drivers one at a time, but I couldn’t get the one I really needed without their installer. Windows claimed the .INF file for the gigabit LAN adapter was in an ‘unexpected format’ – whatever that means.

I decided to explore the hard drive to see if cleaning temp files might help unstick the installer (can you tell I loathe stray temp files?). What I found was that windows had arbitrarily assigned the zip drive to use letter C and the hard drive I was booting from was assigned Drive letter F. Priority interrupt! I went into disk manager and moved the zip drive over to drive G and then discovered that Windows will not allow you to reletter the partition you booted from.

It looked like I was going to be stuck with Drive F as my boot drive. Now, my brain started imagining the various circumstances I should expect to begin dealing with when things go wrong on this system. Not to mention my existing problem installing drivers. I decided to repartition the hard drive and reinstall windows. This time, I would do it without the zip drive connected thereby avoiding the problem.

I booted the system back up using the XP Pro CD, deleted the existing partition and recreated it for a fresh installation. After 40 minutes of watching Windows Installer do its thing without an IDE zip drive to confuse it, Windows did indeed assign letter C to my hard disk. Furthermore, the motherboard driver installation went beautifully and completed in under five minutes sailing in blissful ignorance past the formerly troublesome spot.

Since I had the system up and it looked stable, I went ahead and ran the activation sequence for Windows. This turned out to be a mistake. On my next reboot, I reconnected the zip drive before powering the system back up. At this point, Windows decided to inform me that I’ve made “substantial changes” to my operating hardware and I would have to redo the activation. Grrr!

Beyond that, the rest of the job went smoothly. I installed a bevy of applications and utilities and copied the contents of the old hard drive over to the new system and life is now good. I’ll deliver it on Tuesday and can now enjoy my Labor Day weekend.