How to get started in the IT industry

Someone asked me today what I do.
“You know those computers the size of a dorm fridge? I work on those,” I said. And yes, sometimes that means crawling around and sticking my head inside one, I added.

“Aren’t you afraid you’ll break something?”

“Oh, I break stuff all the time,” I said. “Then I fix it.”

And that reminded me of a story.

One day when I was about 17, my Dad came home one afternoon and found me in the basement, with our computer disassembled–completely–and sprawled out across his table. His eyes got really big. “You gonna be able to put that thing back together?” he asked, without much hope in his voice. “Sure!” I said. He watched me pry a ROM chip out with a screwdriver, pop in a new one, then reinstall all the drives, the power supply, and the expansion cards and replace the cover. I didn’t have any pieces left over, which I think he took as a good sign, and then he watched me plug it into the keyboard and monitor. I fired it up, and it worked perfectly.

I still had an awful lot to learn though. At work, you’re supposed to have pieces left over. What, you think employers actually buy their techs those great PCs on their desks? Ha! And a tip for you beginners: After the new system performs like swamp sump because you just swapped out all the good parts with parts from the old clunker on your desk, just blame the disappointing performance on Microsoft bloatware. Works every time.

(And when your boss starts asking how all these parts with Micron stickers on them ended up inside a Compaq server, just say, “Dan must have done it.” Who’s Dan? Who cares! He’s not you!)

Nobody knew that I knew how to do that. Every once in a while when I was the only one home, I’d take the computer apart. That afternoon, I just happened to get caught.

Dude… I put a CD-RW drive in a Dell!

Dude… Putting an aftermarket CD-RW drive in a Dell is a bigger deal than it should be.
I tried to put a Plextor 40X CD-RW in the Dell workstation at church we use for video editing like a month ago, and it scarred me for life. I can put a CD-RW in a Micron in five minutes in my sleep with one hand tied behind my back. And it’ll work.

I can do the same thing in an IBM or any whitebox PC.

As for my sleeping habits, don’t put it past me. I’ve done stranger things. One night at my aunt and uncle’s house, I woke up standing in the corner. And one morning this summer I woke up in my hallway. I’d gone to the closet, gotten out clean sheets and a pillow, and made myself a nice bed there. For me, that’s harder than installing a CD-RW drive.

But that Dell drove me sane. I think it’s an Optiplex 530, but I’m not sure. I’d say Dells are all the same, but they’re not, which makes for even bigger adventure sometimes.

This week, I revisited the revolting thing. And I conquered. It now has a working, living, breathing CD-RW drive.

Anyway, the first thing I did was remove the factory CD-ROM drive and look at its jumper settings. It was set to Cable Select, not master, not slave. I think Dell’s the only manufacturer who does that. OK, fine. I set the Plextor to Cable Select, plugged it into the other IDE connector on the chain, fired it up, hit F2 to go into Setup (and mutterred about why they can’t use F1 or delete like normal people), set the secondary slave drive to Auto, and… Unknown device. I let the system boot. Secondary slave failure. Oh bippity boppity.

So I ripped out the Plextor, set the settings to master, and connected the cable up to the empty, unused, primary IDE controller. I fired it back up, hit F2, set secondary slave to none, set primary master to auto, and… Unknown device.

Double plus ungood, and they weren’t even nice enough to put ice cream on top. But whatever it was they did put on top smelled rank.

Then I got an idea, and it didn’t involve a roof, or a pond, heavy blunt objects, explosives, or even any obscene words.

I powered the machine down. I waited 10 seconds. Then I powered back up. I hit F2 to go into Setup, and, boom-shakalaka, there it was! Primary master: CD-ROM Reader! I cursored over to it and hit Enter. Indeed, it was a Plextor 40-something device!

Theoretically, I could have switched the drive back to cable select, put it on the other chain, done that power-down-and-back-up thang, and it would have worked. I decided to just hang on to that theory and let it remain a theory. I had something that worked and I wasn’t gonna mess with it any more. So I made it all look pretty, put the system back together, and installed Easy CD Creator. And it worked.

Dude.

Dude! I’m getting a… Packard Bell!

Oh wait. No, I’m thinking of Steve. Although he and I did just get identical Dell Optiplex GX1 P2-450 workstations to use as Web servers. We learned a little bit about them too.
Read more

CSS and XHTML and standards

Our Unix/VMS admin popped his head over his cube the other day and asked me if I’d tried a particular site on our corporate intranet under Galeon in Linux. I hadn’t; I’d never had occasion to use the site. I was booted into Wintendo at the time, which is normal, since I’m basically an NT administrator. Personal beliefs about Windows aside, administering NT pays the bills, and computers are tools, not a religion.
But my workaday browser is K-Meleon, a lightweight browser based on the Mozilla project’s Gecko engine. It’s small, it’s fast, it’s standards-compliant, and it’s easy to tell it to ignore the JavaScript code that creates popups and popunders. So I tried visiting the site in question with K-Meleon.

Denied.

This made me mad. TCP/IP, HTTP, and HTML were all intended to be cross-platform. The first graphical Web browser was written on a NeXT, for crying out loud! NeXT! How many people today even know what NeXT was?

Of course, when you use Microsoft Web servers serving up pages using Microsoft tools, all the rules change. Microsoft doesn’t even care about previous versions of its own browser. Rule #1 of Web design, which most designers have sadly forgotten, is that you test your site with several different browsers, and preferably several versions of them. It’s easy to make multiple versions of Netscape happily coexist on a machine, but Microsoft has made it next to impossible for more than one version of IE to exist on a machine without resorting to multi-booting. With IE4, IE5, IE5.5, and IE6 all in widespread use and the wretched IE3 unfortunately not extinct, that’s a burden.

A couple of days later, the site’s administrator came back with a snippy response: Use the company standard Web browser.

This, to a Unix and VMS administrator. The only time he ever runs Windows is to fill out his timesheet, since we use a Windows-only app to do it. He’s got a beat-up Micron Pentium-166 in the back of his cube for that purpose. While he could do his job with a PC running Windows and a decent Telnet client, he’s much better off running Linux. He can develop shell scripts locally before sending them up to our big Digital Unix box. Running Linux makes him more productive.

But forget him being able to do his job. He needs to run Windows and Internet Exploiter so he can log into this Web site.

While we’re at it, forget that Internet Exploiter has security holes big enough to drive a truck through. Forget that keeping IIS patches up to date is a full-time job in and of itself. Let’s be Microsoft lackeys. All hail Gates and Ballmer.

I guess the few remaining Mac users at work are going to have to get PCs so they can use this intranet site as well. While I can think of reasons to replace Macs with something else, the inability to display a Web page isn’t among them.

Want to know why it’s a really bad idea to code for just one browser?

Internet Exploiter users can’t read this paragraph, so, those of you who, like me, use a real Web browser written by someone other than an imperialistic monopolist, can share in a dirty little secret. Want to know how to sabotage inept browsers and encourage the use of standards-compliant browsers like Opera and the Mozilla family? Use the tag. Simply nest something inside and , and those who have yet to be liberated from the Evil Empire won’t be able to read it. (Remove the leading and trailing spaces–I had to put those in because some browsers don’t interpret the less-than/greater-than sequences either. Hmm…)

If you want to really be nasty, code your pages so that the only thing visible outside of those tags are the words, “This site can only be viewed with something other than Internet Explorer.” You’ll hack a lot of people off, but you’ll make your point.

Quick question: What’s the first line of the paragraph immediately preceeding this one? If your answer is, “Want to know,” you’re running a Microsoft browser. If your answer is “Internet Exploiter users can’t read this paragraph,” you’re not. There are two paragraphs here nested in non-standard tags. Browsers not made in Redmond correctly ignore this tag and display the text.

There are plenty of sites on the Web that ignore non-IE browsers for no good reason, and who could easily support everything by just following industry standards.

So, for security, what’s wrong with .htaccess files? They work, they’re easy to use, and they don’t tie you to any particular OS or browser on the client side. Especially on a corporate intranet, they’re great.

For layout, what’s wrong with sticking with standard XHTML and CSS? It’s easy to create beautiful pages that look beautiful in any modern browser (not just the one you happen to have installed on your machine), and remain perfectly readable in text browsers and ancient versions of the old standbys. Here’s a great tutorial on basic text styling, a more complete tutorial, some tips on converting existing content, and a site with several elegant layouts you can steal and adapt.

You can even do a cool trick to give your users a choice between your design and the preferences they set in browser setup.

It’s not incredbily difficult to make a layout that looks extremely good and is easy to navigate, plus is readable on all browsers, plus allows the user to gracefully resize it. The end result is files that are smaller than old-school HTML, so the pages download and render faster.

XHTML and CSS are all the rage now, with tutorials in the popular press, and with bloggers flocking to it. It goes a long way towards solving the complaints I had about HTML when I was learning it (let’s face it, when you’re used to designing in QuarkXPress, HTML 3.0 is just plain clunky) so talented designers can do some really impressive things with it.

I’m going to start moving in that direction. It’s time we all did. It’s time to take back the Web. Install Netscape 6.2 and Netscape 4.79 on your machine so you can check your pages in them. At the very least, install OffByOne to ensure your pages are viewable in a third-generation browser (it’s just 1.2 megs in size, so it won’t kill you).

XHTML and CSS are cool if you’re the artsy type, but they’re more than just cool. They’re the right thing to do. I hope I can find the time…

As as for that Intranet site at work? If using it ever becomes part of my job, I’ll re-code it and store it on an Apache server, protected by an htaccess file to show how easy it is to develop cross-platform apps on the Web. After all, it’s what it was designed for.

Not that I expect anyone to listen. It’s distressingly hard to find people who think for themselves, rather than just repeating everything that Microsoft tells them.

Full disclosure and integrity

I feel like I owe it to my readers to disclose a few things, due to the events of recent weeks raising a few questions in some people’s minds.

Read more

The penguins are coming!

The penguins are coming! Word came down from the corner office (the really big corner office) that he wants us to get really serious about Linux. He sees Linux as a cheap and reliable solution to some of the problems some outside clients are having. This is good. Really good.
My boss asked if it would be a capable answer to our needs, namely, for ISP-style e-mail and for Web caching. But of course. Then he asked if I was interested in pursuing it. Now that’s a silly question.

Now it could be that FreeBSD would be even better, but I know Linux. I don’t know FreeBSD all that well. I’ve installed it once and I was able to find my way around it, but I can fix Linux much more quickly. The two of us who are likely to be asked to administer this stuff both have much more Linux experience than we have BSD experience. Plus you can buy Linux support; I don’t know if you can buy FreeBSD support. I doubt we will, but in my experience, clients want to know (or at least think) that some big company is standing behind us. They’re more comfortable if we can buy support from IBM.

So maybe my days of Linux being a skunkworks project are over. The skunkworks Linux boxes were really cleverly disguised too–they were Macintoshes. They’re still useful for something I’m sure. I expect I’ll draft one of them for proof-of-concept duty, which will save us from having to pull a Compaq server from other duty.

I spent a good portion of the day installing Debian 3.0 on an old Micron Trek 2 laptop. It’s a Pentium II-300 with 64 megs of RAM. It boots fast, but current pigware apps tend to chew up the available memory pretty fast. I recompiled the kernel for the hardware actually in the machine and it helped some. It’s definitely useful for learning Linux, which is its intended use.

I’ve noticed a lot of people interested in Linux lately. One of our NT admins has been browsing my bookshelf, asking about books, and he borrowed one the other day. Our other NT admin wants to borrow it when he’s done with it. The Trek 2 I installed today is for our senior VMS admin, who wants a machine to learn with. My boss, who’s been experimenting with Linux for a couple of years, has been pushing it aggressively of late.

I don’t know if this situation is unique, but it means something.

I spent a good part of the evening at the batting cages. I messed my timing up something fierce. I hit the first few pitches to the opposite field, some of them weakly, but soon I was hitting everything–and I mean everything–to the third-base side. So my bat speed came back pretty fast, and I was getting way out in front of a lot of the pitches. So I started waiting on the ball longer, hoping to start hitting the ball where it’s pitched. The end result was missing about a quarter of the time, slashing it foul to the third-base side a quarter of the time, hitting it weakly where it was pitched a quarter of the time, and hitting it solidly where it was pitched a quarter of the time. Good thing the season doesn’t start until June–I’ve got some work to do.

Afterward, I drove to my old high school, hoping to be able to run a lap or two around the track. I was hoping for two; realistically I knew I’d probably be doing well to manage one. There was something going on there, and I couldn’t tell if the track was in use or not, so I kept driving. Eventually I ended up at a park near my apartment. I parked my car, found a bit of straightaway, and ran back and forth until I was winded. It didn’t take long.

I can still run about as fast as I could when I was a teenager, but my endurance is gone. I’m hoping I can pick that back up a little bit. I was a catcher last season, filling in occasionally at first base and in left field. In the league I play in, we usually play girls at second and third base, and we’ve got a couple of guys who can really play shortstop, so I’ll probably never play short. When I was young I played mostly left field and second. I’d like to roam left field again. Not that I mind catching, but there’s a certain nostalgia about going back to my old position.

Desktop Linux and the truth about forking

Desktop Linux! I wanna talk a little more about how Linux runs on a Micron Transport LT. I chose Debian 2.2r3, the “Potato” release, because Debian installs almost no extras. I like that. What you need to know to run Linux on a Micron LT: the 3Com miniPCI NIC uses the 3C59x kernel module. The video chipset uses the ATI Mach64 X server (in XFree86 3.36; if you upgrade to 4.1 you’ll use plain old ATI). Older Debian releases gave this laptop trouble, but 2.2r3 runs fine.
I immediately updated parts of it to Debian Unstable, because I wanted to run Galeon and Nautilus and Evolution. I haven’t played with any GNOME apps in a long time. A couple of years ago when I did it, I wasn’t impressed. KDE was much more polished. I didn’t see any point in GNOME; I wished they’d just pour their efforts into making KDE better. I still wish that, and today KDE is still more polished as a whole, but GNOME has lots of cool apps. Nautilus has the most polish of any non-Mac app I’ve ever seen, and if other Linux apps rip off some of its code, Microsoft’s going to have problems. It’s not gaudy and overboard like Mac OS X is; it’s just plain elegant.

Galeon is the best Web browser I’ve ever seen. Use its tabs feature (go to File, New Tab) and see for yourself. It’s small and fast like Opera, compatible like Netscape, and has features I haven’t seen anywhere else. It also puts features like freezing GIF animation and disabling Java/JavaScript out where they belong: In a menu, easily accessible. And you can turn them off permanently, not just at that moment.

Evolution is a lot like Outlook. Its icons look a little nicer–not as nice as Nautilus, but nice–and its equivalent of Outlook Today displays news headlines and weather. Nice touch. And you can tell it what cities interest you and what publications’ headlines you want. As a mail reader, it’s very much like Outlook. I can’t tell you much about its PIM features, because I don’t use those heavily in Outlook either.

The first time I showed it to an Outlook user at work, her reaction was, “And when are we switching to that?”

If you need a newsreader, Pan does virtually everything Forte Agent or Microplanet Gravity will do, plus a few tricks they won’t. It’s slick, small, and free too.

In short, if I wanted to build–as those hip young whippersnappers say–a pimp-ass Internet computer, this would be it. Those apps, plus the Pan newsreader, give you better functionality than you’ll get for free on Windows or a Mac. For that matter, you could buy $400 worth of software on another platform and not get as much functionality.

Linux development explained. There seems to be some confusion over Linux, and the kernel forking, and all this other stuff. Here’s the real dope.

First off, the kernel has always had forks. Linus Torvalds has his branch, which at certain points in history is the official one. When Torvalds has a branch, Alan Cox almost always has his own branch. Even when Cox’s branch isn’t the official one, many Linux distributions derive their kernels from Cox’s branch. (They generally don’t use the official one either.) Now, Cox and Torvalds had a widely publicized spat over the virtual memory subsystem recently. For a while, the official branch and the -ac branch had different VMs. Words were exchanged, and misinterpreted. Both agreed the original 2.4 VM was broken. Cox tried to fix it. Torvalds replaced it with something else. Cox called Torvalds’ approach the unofficial kernel 2.5. But Torvalds won out in the end–the new VM worked well.

Now you can expect to see some other sub-branches. Noted kernel hackers like Andrea Archangeli occasionally do a release. Now that Marcelo Tosatti is maintaining the official 2.4 tree, you might even see a -ac release again occasionally. More likely, Cox and Torvalds will pour their efforts into 2.5, which should be considered alpha-quality code. Some people believe there will be no Linux 2.6; that 2.5 will eventually become Linux 3.0. It’s hard to know. But 2.5 is where the new and wonderful and experimental bits will go.

There’s more forking than just that going on though. The 2.0 and 2.2 kernels are still being maintained, largely for security reasons. But not long ago, someone even released a bugfix for an ancient 0.-something kernel. That way you can still keep your copy of Red Hat 5.2 secure and not risk breaking any low-level kernel module device drivers you might be loading (to support proprietary, closed hardware, for example). Kernels are generally upward compatible, but you don’t want to risk anything on a production server, and the kernel maintainers recognize and respect that.

As far as the end user is concerned, the kernel doesn’t do much. What 2.4 gave end users was better firewalling code and more filesystems and hopefully slightly better performance. As far as compatibility goes, the difference between an official kernel and an -ac kernel and an -aa kernel is minor. There’s more difference between Windows NT 4.0 SP2 and SP3 than there is between anyone’s Linux 2.4 kernel, and, for that matter, between 2.4 and any (as of Nov. 2001) 2.5 kernel. No one worries about Windows fragmenting, and when something Microsoft does breaks a some application, no one notices.

So recent events are much ado about nothing. The kernel will fragment, refragment, and reunite, just as it has always done, and eventually the best code will win. Maybe at some point a permanent fracture will happen, as happened in the BSD world. That won’t be an armageddon, even though Jesse Berst wants you to think it will be (he doesn’t have anything else to write about, after all, and he can’t be bothered with researching something non-Microsoft). OpenBSD and NetBSD are specialized distributions, and they know it. OpenBSD tries to be the most secure OS on the planet, period. Everything else is secondary. NetBSD tries to be the most portable OS on the planet, and everything else is secondary. If for some reason you need a Unix to run on an old router that’s no longer useful as a router and you’d like to turn it into a more general-purpose computer, NetBSD will probably run on it.

Linux will fragment if and when there is a need for a specialized fragment. And we’ll all be the better for it. Until someone comes up with a compelling reason to do so, history will just continue to repeat itself.

Back again….

That new job. I started my transition on Tuesday. Tuesday was my best single day at work in more than four years. For the record, I started my professional career in March 1997–so I haven’t been working much more than four years.
I picked up the laptop I’ll be using for my new job yesterday. It’s a Micron Transport LT, a short-lived lightweight. It was a good machine, but when Micron sold off its PC division, it got axed. Its replacement, the Micron Transport XT (a name that still makes me chuckle; old-timers will know why), is bigger and heavier. It has a bigger screen, which is worth the extra weight, but I like the small size of the LT. It’s a 700 MHz machine, so even though it’s about six months old, it’s no slouch.

I installed Windows 2000 and Debian 2.2 on it. Of course I quickly made Debian into a hybrid because I wanted to run packages like Galeon that aren’t available for 2.2. Yeah, so it hasn’t been deemed stable yet. The most bleeding-edge Linux distros I’ve ever seen are more stable than anything Microsoft’s ever slapped its name on, with the possible exception of MS-DOS 5.0. Even Debian-Unstable is more conservative than Mandrake, so having bits of Debian-Unstable on my PC doesn’t bother me in the least.

I got to dabble in my new position yesterday, even though I was officially doing my old job. There was a server to deploy, and I was reasonably idle, so naturally I worked on the server.

They should be ashamed of themselves. After the Sept. 11 attacks, the president of my church body, Dr. Jerry Kieschnick, and the president of the Atlantic district, Dr. David Benke, committed the unpardonable sin of praying with people who are members of church bodies other than the LCMS. They now face expulsion from the church body.

This account from a St. Louis television station is a fair summary of the events.

What that account doesn’t tell you is that the First Vice President of the LCMS, who would take office if the presidency were vacated, was widely considered a political enemy of Dr. Kieschnick before the two of them took office early this fall. Dr. Kieschnick is considered a progressive, while his would-be successor is a hard-line conservative. I don’t know anything about Oberdieck, but I do know that Lebanon, Mo. isn’t exactly a hotbed of progressivism.

KSDK oversimplified Oberdieck’s reasoning slightly. Oberdieck believes that Drs. Kieschnick and Benke’s actions imply that all religions are equal, and he objects to that implication. However, if you talk to Dr. Kieschnick, the last thing he’ll tell you is that all religions are equal. He’ll agree wholeheartedly with Oberdieck’s statement that there’s only one way to God–that’s Jesus Christ, in case you’re wondering what I’m talking about–and that it should be followed strictly. The motivation behind the two mens’ actions in NYC in September was to extend a hand, to tell people that the LCMS cares about what happens to them and wants to help them.

The overwhelming majority of Lutherans in this country know and understand that.

This is a political play, pure and simple. It’s just like what the Republicans tried to do to Clinton with Whitewater and what the Democrats tried to do with Gingrich after he became speaker.

And it may undermine the current president’s credibility. What it certainly will do is leave a bad taste in people’s mouth. In a month or two months or five years, people won’t remember these specifics anymore. What they will remember is having a bad taste in their mouth about the LCMS, or worse yet, about Christianity as a whole. The immortal Someone Else will have to work hard to overcome those feelings. Sometimes Someone Else will succeed. Inevitably, sometimes Someone Else will fail, and the hurt will continue. But that doesn’t matter, because it’s Someone Else’s problem, not theirs.

I hope Oberdieck and his allies are happy.

Thirteen hours! Woo hoo!

It’s a beautiful day in the virushood, it’s a beautiful day for a virus, would you be my, could you be my…
Yes, today we hunted down and killed a couple of live Nimda specimens. I actually didn’t find any viruses whatsoever, but I found a number of PCs that I really liked. I kept trying to bet one of my coworkers they would float. Of course, that’s just my diabolical scheme, usually reserved for cantankerous Macintoshes. You get someone to bet you 10 bucks the thing doesn’t float, then throw it in the pond and see what happens. If it sinks, you’re out a problem. And if it floats? Well, that’s just proof that it’s a witch. And what do we do with witches? We build a bridge out of them! No, wait. That’s something else. Burn them!

Victim #1 was a P166 built by a local outfit called Intek. Intek is one of those clone shops that builds PCs out of the cheapest parts you can buy (including stuff even Packard Bell wouldn’t have touched) then sells for the price of a Dell or a Micron. But since it has an Intel processor in it and the place promises same-day service (which doesn’t always happen), CIOs fall for it. Anyway, I’ve seen 486DX2-66s that outperform this P166. And when I put the current version of Norton AntiVirus on it, it quit booting.

Personally, I think it’s time to just take the machine, slap a second NIC in it, and install a minimal Linux on it and make it a network bridge to keep a chatty Mac segment from killing the rest of the network, because that’s about all that PC is ever going to be good for in this day and age. But it’s not my decision.

We had one PC infected with PrettyPark. Of course, NAV deleted Files32.vxd but left all the registry entries behind, so the PC would no longer run any .exe files. I downloaded Symantec’s PrettyPark fix, but it looked, found no Files32.vxd, and pronounced the system clean. But thanks to the registry entries pointing to files32.vxd, no executable would run. So I faked it out. copy con: c:winntsystemfiles32.vxd, type some gobbledygook, then hit ctrl-z. Then, copy con: c:winntsystem32files32.vxd, type more gobbledygook, then hit ctrl-z. Run the fix again. Aha! We’re infected. Shall I clean you up? Why, thank you for asking, please do, kind sir.

Seeing as this PC sits on the desk of the head of the accounting department, I figured it’d be best to have it in working order for him this morning.

So. I’ve now worked something like 51 hours this week. And it’s Thursday. I have no social life. But once that paycheck comes in, I’ll be able to afford to have a very nice social life for a little while…

So I came home about 10:15, after stopping off at a gas station for a tank of gas (I was on E) and a beer. I very rarely drink, but I’ve been so tightly wound this week I figured I could use a little help unwinding. I threw in a microwave pizza, popped a beer, sat down, and wrote this. Now the pizza’s gone and the beer’s empty, and I’m not just tired, I’m also a little drowsy. That’s good. Hopefully that means I’m in for a good night, for the first time this week since Sunday.

And that was the last building that needed scanning. So now I can concentrate on my job. Currently I have about 25 trouble tickets open. Normally I have about four open at once. On any given day, four new ones should come in. On a good day I can close between five and eight. So now that the virus scanning’s done, I think the tickets will stop coming in faster than I can close them, but I’ve got a long road ahead to get caught up. Next week won’t be a 60-hour week, but it won’t be a 40 either.

Solving a perplexing slowdown problem

Fixing an unexplainable slowdown. You may never see this. Yesterday I struggled for about 5 hours on a Win98 laptop that was incredibly sluggish. It would just pause for several minutes in the middle of anything, for no good reason. Open up Control Panel and wait. And wait. And wait. Finally the icons would show up. Open a new browser window, same thing. And almost any time an application had to open a new dialog box, you’d have to hurry up and wait.
I couldn’t find anything especially wrong with the configuration. I made some tweaks, sure–I always do–and that improved speed during those non-idle times, but it would still go catatonic on me. I downloaded WinTop and ran it so I could see what the CPU was doing. I found nothing unusual. The CPU was mostly idle.

“Gotta be a network problem,” I told our networking guy. So he went and grabbed his ultimate l337 h4x0r tool, a Micron laptop loaded down with Linux and packet sniffers and analyzers. He ran Ethereal and just watched. There was no weird network activity, and nothing particularly heavy. But we noticed the laptop was chatting away an awful lot with a server two T-1s and two routers away on our WAN, and sometimes it didn’t get a response. I pulled all of the shares on that server and every other reference I could find, but they just kept chattering.

Finally, on a reboot, I watched autoexec.bat roll by (I had the Windows splash screen turned off) and I noticed the suspicious path–that server’s UNC was in the path statement! And futhermore, C:Windows, C:WindowsSystem, and C:WindowsCommand were not! No wonder the system was running like garbage–it was looking for stuff two routers away before it looked in its own system directories!

When I removed that line and pulled a desktop shortcut that referred to that server, all was well.

One of the server-hosted apps we run requires that directory be in the path. If you have to do that sort of thing in a WAN environment, rather than adding lines to autoexec.bat, you’re much better off writing a batch file that does this:

path c:windows;c:windowssystem;c:windowscommand;[path to application on server] [command to execute application]

Then put that batch file on the desktop, instead of a shortcut directly to the app. That way, when your laptop road warriors are away, those changes won’t slow their laptops to a crawl. And the laptop won’t start trolling the network until after they’ve run that application once that day. Since networks are an order of magnitude slower than local hard drives, the system will run slightly better in the office as well. And remember when you construct your path statements, always put the system directories first, and application directories last, with local applications taking precedence over apps on network drives.