Long day.

Expect short shrift this week. I’m working a convention. I put in nearly 10 hours yesterday, what was supposed to be Saturday. I expect to do similar today, and I don’t expect much slowdown until Friday.
That’s good for the bank account, bad for the Web site.

I didn’t really pick up any new wisdom or knowledge yesterday. That’s a shame because I spent a good deal of time in the presence of some people who really know a lot of stuff. Hopefully today won’t be a wasted day.

One encouraging thing did come of yesterday. I had a fairly long conversation with a friend who’s having problems figuring out how to handle a situation. I’ve been struggling for the past couple of weeks with a very similar situation, unbeknownst to him. I was very flattered that he would come to me for advice; he’s about 15 years my senior and in a lot of ways he’s like the older brother I never had. He had to confront someone with an issue, and he started off talking about mutual respect and trust, then went in for the kill, and the other guy got ultra-defensive immediately.

So I asked him to imagine another situation. He has a daughter in her early teens. I don’t know if she’s started dating yet, but she’s close enough to that age that I’m sure he’s had to start thinking about how he’s going to deal with his oldest daughter dating. She’s one of those girls who can easily pass for someone much older–if someone had told me she was 17, I’d have certainly believed it.

So I told him to imagine her bringing home a new boyfriend, someone twice her age, maybe even three times her age. Then I raised the stakes. Not only is this guy old, he’s tattooed and pierced, and it’s pretty easy to see he’s only got one thing on his mind.

Obviously, I’ve just described every father’s worst nightmare. And of course if his daughter brought that home, he’d talk to her about it, and he’d start off by telling her how much he loves her and how much he wants the very best for her, then he’d try to talk about this creep. And she’d get really defensive and talk about how he just doesn’t understand. (In reality he does, because I’ve never met a male in my life who wasn’t absolutely capable of being the world’s biggest creep. And some day, she’d understand far better than she ever wanted to.)

But it just doesn’t matter that she’s wrong; she’s made up her mind about what she wants and she’s not going to see reality. And, well, a guy in his 60s can be blindsided like that too. Self-destructive behavior is self-destructive behavior, and it transcends gender and generational lines. It’ll just manifest itself in slightly different ways. Usually.

I know that didn’t help him solve the problem, but maybe it helped him see the other guy’s perspective a little better.

As for solving the problem? I’m clueless. But I feel better knowing that someone close to me that I really respect who’s seen about a decade and a half more life doesn’t have an answer either. An awful lot better. I haven’t felt hungry for the past couple of weeks. I ate, of course, because I knew I needed to. I ate about twice as much yesterday as I have been recently, and I still felt like I hadn’t eaten a thing all day. I think that’s a good sign.

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.

Building a Squid server

I’ve talked about Squid before. Squid is a caching Web proxy, designed to improve network speed and conserve bandwidth by caching Web content locally. How much it helps you depends on how you use the Web in that particular environment, but it’s usually worthwhile, seeing as the software is either free or costs next to nothing (it comes with most Linux distributions) and it doesn’t take much hardware to run it. Don’t use your Pentium-75, but you can deploy a standard desktop PC as a Squid server and it’ll work fabulously, unless you’ve got thousands of PCs hitting it. For a thousand bucks, you can seriously reduce your traffic and chances are it’ll pay for itself fairly quickly.
And ironically, Squid integrates beautifully with Internet Explorer 5.0 and newer.

Here’s what you do. Build up a minimal Linux server. For this, I prefer TurboLinux 6.01–it’s more lightweight than the current version, and you can still get patches for it that keep it from being h4x0r h34v3n. Pick the minimum base install, then add Squid and Apache. Yes, you need Apache. We’ll talk about that in a minute. I don’t like to have anything else on a Squid box, because Squid tends to be a big memory, CPU, and disk hog. Keep your computing resources as free as possible to accomodate Squid. (For that reason it would probably be better under a 2.4 kernel using ReiserFS-formatted partitions but I didn’t have time to test that.)

Once Squid is installed, modify /etc/squid/squid.conf. You’ll find a pair of lines that read “allow localhost” and “deny all.” That allows Squid to work only for the local machine, which isn’t what we want. Assuming you’re behind a firewall (you should be, and if you’re not, I’ll help you make a really big banner that says, “Welcome, l337 h4x0r5!”), change the “deny all” line to read “allow all.”

Next, make sure Apache and Squid are running. Go to /etc/rc.d/rc3.d and make sure there are scripts present that start Apache (httpd) and Squid. If there aren’t, go to /etc/rc.d/init.d and make copies of the Apache and Squid scripts. Give them a name that starts with S and a number, e.g. S50httpd.

Next, let Squid build and configure the directories and logs it needs with the command squid -NCd1. No, I don’t know what the -NCd1 means. I found it in a forum somewhere.

Now, go to your DNS and add an entry called wpad.yourdomainname. How you do this depends on the DNS you use. Someone else handles those duties at my job, so I just had him do it. Point that to your squid server.

Now, in /home/httpd/html (assuming TurboLinux–use the default Apache directory if you’re using a different distro), create two files, called proxy.pac and wpad.dat. They should both contain the following Javascript code:

function FindProxyForURL(url,host)
{
return “PROXY 192.168.10.50:3128”;
}

Substitute your Squid server’s IP address for 192.168.10.50.

What’s this do? Well, when IE is set to autodetect your Proxy settings, it goes looking for http://wpad.yourdomainname/wpad.dat, which tells it where to find the Proxy server. You could use any Web server you wanted; I just use the Squid server on the theory that if the Squid server is for whatever reason unavailable, a Web server running on the same machine is the most likely to also be unavailable, so IE won’t find it and won’t use a proxy, giving you a degree of failover.

The cool thing is, this combination of Apache and Squid works well, and can be quickly implemented with almost no work since Internet Explorer by default goes looking for a proxy and most people don’t uncheck that checkbox in the control panel.

We did this to reduce traffic on a T1 line for a short period of time (it saves us from needing to get multiple T1s) and so far we’re very impressed with the results. I recommend you try it.

Spammers must die… And it’s possible their enterprises will. With your help.

Hi. My name is Dave Rhodes.
Sorry, that’s not funny. Remember the good old days, when the closest thing we got to spam was the occasional Dave Rhodes chain letter? (I found a joke about him that I found amusing.)

But something great happened today. Besides finding that joke, I mean. I came up with a foolproof way to make buckets and buckets of money through UNSOCLICITED COMMERCIAL E-MAIL. Now, remember, UCE isn’t spam. Spam’s bad.

Here’s how it works. You don’t have to buy anything from me. I’m not going to sell you a CD-ROM full of three-year-old e-mail addresses harvested by some scriptkiddie’s code. You don’t need it. Making money from UCE doesn’t even require you to send out a single piece of e-mail! Not a one!

Believe it or not, your customers will come to you! About the only thing you have to do to build up your list of victims, I mean clients, is to get an e-mail address, then sit back and wait!

Best of all, this method is safe and completely legal! It hasn’t been approved by the Postmaster General. It does, however, have the blessings of the Federal Trade Commission and the legislatures of 17 U.S. states! (Dave Rhodes ain’t got nothin’ on me!)

Did you know that 17 states have laws regarding unsolicited commercial e-mail? Yes, those 17 states have very strict regulations and requirements. Certain types of spam are illegal in those states. So why don’t spam laws work? Because nobody uses them! And in the end, the loser is you!

You see, when a spammer violates those regulations, you can sue them! One attorney in Washington state sues spammers in small claims court and so far has collected more than $13,000! One Missouri resident, bombarded by unsolicited e-mail from a free webhosting service after he cancelled his account with them, sued in small claims court and received $2,525! That’s $500 per unsolicited message that didn’t meet with Missouri law, plus the spammer even had to pay his court costs of $25!

Just think… That unsolicited e-mail that annoys you could be worth thousands! But in order to cash in, you have to be, you know, in the know (wink wink), if you know what I mean. What’s that information worth to you? A hundred bucks? Two-fifty?

Who cares! Go to www.suespammers.org and check to see what your state’s laws on spam are. It’s free. You don’t even have to tell ’em I sent you. It won’t do any good to tell ’em I sent you anyway, because they don’t know me from Adam.


Man. I ought to be in infomercials. I sure know how to use italics and exclamation points. Though most of these creeps think quotation marks are for emphasis. That’s one of my biggest pet peeves.

Someone else e-mailed me at work and sent me a link to a link to a link that led me to this Brian Livingston column, which eventually led me to www.suespammers.org, where I learned that 17 states have anti-spam laws on the books. I looked into the laws, which are printed on the site. Surprisingly, Missouri is one of the more enlightened states. If a spammer sends e-mail to Missouri and fails to include an opt-out e-mail address or 800 number, you can sue the spammer for 500 smackers.

Most spammers include an opt-out Web page. That complies with the spirit of Missouri law, but not the letter of it. Maybe someone pointed out to lawmakers that it’s harder to implement an e-mail opt-out than a Web page opt-out. Who knows. The law is a stroke of genius, whether by design or accident. I don’t know if that’ll hold up in court, because that really is a technicality. But a lot of spam doesn’t provide any opt-out at all, which means they have no defense whatsoever.

This got me thinking. I get tons of spam. I might have $3,000 worth of spam in my inbox just from this week. I probably ought to check. I could make a decent living suing spammers until the laws change.

And this got me thinking some more. Who cares if 55 people buy stuff when they send out 100,000 messages? Fancy this possibility: What if every time a spammer sent out 100,000 messages, 55 of the recipients sued? The number of sales is irrelevant when you’re faced with that many lawsuits. And let’s face it. Most spammers are idiots trying to get rich quick working out of a spare bedroom. They don’t have a lot of resources. I know the type of individual who tries this crap because I’m related to one. (Fortunately for the world, there’s probably not enough left in his head for him to be able to operate a computer these days. But I’m pretty sure if he had my phone number he’d be calling me, asking me to hook him up. Don’t worry. If he ever gets my phone number, I’m changing it the next day.) This type of person is not well-equipped to handle a few dozen separate lawsuits, especially a few dozen lawsuits outside his home state. And he’s dead meat if multiple suits in different states happen to end up landing on the same court date, since generally if you’re not present you lose by default.

It makes no sense to fight a Missouri lawsuit. Unless you live in the same county as the plaintiff, you’ll probably spend more than $500 to defend yourself, and judges aren’t very sympathetic to the plight of a spammer because so many of them are con artists anyway. It’s much cheaper to just settle. The nature of the spammer is to just ignore it, which of course becomes even more costly. Getting on the wrong side of a judge is a lot more dangerous than getting on the wrong side of an ISP.

So, here’s what you and I need to start doing to really make a difference. Spam filters mostly work, yes, but why should we bother with that when we can sue the lowlives out of business and pick up a little extra cash? And no, my libertarian tendencies are against a federal anti-spam law, because it’s much harder to comply with 17 states’ varying laws than it is with one Federal law, which would probably be watered down anyway. And if more of the remaining 33 put laws on the books, it’ll be even tougher to comply. That would be a very good thing. Wouldn’t it be absolutely fantabulous if some state required a toll-free opt-out number? That would significantly raise the cost of doing business…

The Missouri law is good in that someone can make a lot of money by suing people who don’t comply, but the people who do comply can simply disregard the opt-out stuff. I’ve seen spammers use 800 opt-out numbers. I’ve even called. It’s funny how they never pick up the phone. Missouri laws will drive the less-crafty spammers out of business if enough people use them, but it’s the Washington laws that’ll really hurt. They’re stricter still. In Washington, the state holds the opt-out list, and if you spam an account on that opt-out list, you’re lawsuit bait. Period. And apparently, a printout of the e-mail is sufficient evidence. Sounds like some influential guy in Washington really doesn’t like spam.

The difficult part is tracking down the spammer so you can sue them. There’s a nice primer on decoding mail headers here and some more information here.

I know. It’s my journalistic responsibility to go nail one of these creeps and step you through the process. (And get 500 bucks to boot.) Maybe this weekend I’ll start walking down that road. Tracking down a physical address from a mail header so I can slap a guy with a lawsuit in St. Louis County ought to be interesting. But we journalists have ways of tracking down people who don’t want to be tracked down.

And then there’s this. Go here to read about a guy who set up a Paypal account, sent threatening notes to 15 spammers, and netted 300 bucks in 10 minutes. And his page makes it sound like you can go to a state with tougher spam laws and sue them there if you wish. Strange. You can sue somewhere other than in your hometown? Looks like I need the services of an attorney.

There’s a certain poetic justice to the idea that you can make more money off a spammer’s mass e-mailing than the spammer makes, isn’t there? I think we can fight and win this war.

A flair for the dramatic

Writing about baseball two days in a row? Hey, it’s my site.
We played a doubleheader last night and won both games. I caught the first game; the second game the manager shooed me over to first base. I haven’t played first since one inning in high school, which was a disaster. I last played semi-regularly when I was 12, and that was mostly as a joke. I could make the catches but I was just over five feet tall so I sure couldn’t stretch to get the ball a split second sooner.

I did decent; I made 3, maybe four putouts. There were two bad throws, one I would have nabbed if I’d been six feet tall; the other I got the glove on but really awkwardly and I couldn’t keep control of it. I was pretty mad about that one. I’m a whole lot more comfortable in right or left field these days.

Enough about my reliving the glory days I never had. What about that All-Star game? Ripken has a great flair for the dramatic. First, A-Rod, elected to play short, shooed Ripken over to his old position and moved to third. And Ripken homered in his first at-bat.

That’s the story of Ripken’s career. Ripken had no business playing short at age 40. Ripken really had no business starting the game. But Ripken spent 14 years doing what he had no business doing. He was always too big and too immobile to play short, but he played it and played it well. Shortstops have no business playing uninterrupted for 14 years. Ripken did that.

And really, that’s what defines an All-Star. Yes, the numbers are a big, big part of it, but Ripken’s a star, whether he’s hitting .320 or .220, and Ripken’s a sure-fire first-ballot Hall of Famer whether he hits his way into winning his old job back (Ripken’s not even a regular on his own team anymore) or whether he goes hitless for the rest of the season.

And Commissioner Bud Selig made a total ass of himself, not knowing the difference between home runs and RBIs when talking about Cal Ripken’s achievements, and mispronouncing Honus Wagner’s name when talking about Tony Gwynn one-upping his impressive career batting stats.

It was tonight’s All-Star game that reminded me of what makes baseball such a great game. Baseball is full of great moments like that–great players, sometimes running on fumes, coming back and showing us one last time what made them great in the first place.

So what’s wrong with baseball? I honestly think baseball needs another Lyman Bostock. Lyman Bostock wasn’t a great player. He didn’t have time to become one, because he only played four seasons. But after making runs for the AL batting title in 1976 and 1977, Bostock signed with the California Angels, becaming one of the first of the high-priced free agents, and he immediately fell into a slump. He didn’t even hit his weight his first month, so he went to the owner of the team and tried to give back his salary, saying he hadn’t earned it. When the owner turned it down, he announced he was giving the money to charity instead. Thousands of requests came in, and Bostock went through them himself, wanting to determine who needed the money the most. Tragically, Bostock was shot and killed in Gary, Indiana, near the end of that season. He worked his tail off trying to get his batting average up over .300 by the end of the year. He was batting .296 when he died.

We’ve had tons of great stories since 1978. Ripken, of course. McGwire and Sosa’s friendly rivalry as they chased Roger Maris’ home run record. Orel Hershiser’s 59 consecutive scoreless innings. The emergence of Pedro Martinez and Greg Maddux when it appeared the era of truly, truly great pitchers was over.

But without another Lyman Bostock, they just look like a billionaire boys’ club. Emphasis on “boys.”

Baseball Mogul 2002 offers a glimpse of the future…

I have seen the future, and it crashes a lot. I’ve been playing Baseball Mogul 2002 like a fiend, and I love it. I love statistical baseball and I love financial simulations, so for people like me, this game might as well be heroin.
My big annoyance is that it crashes a lot. It seems to get through the first season just fine, but I haven’t gotten through a second season yet without a crash. That’s annoying. Playing games in a month’s batches seems to make it worse. I suggest you play week by week, saving at the end of each week.

I started off with the Kansas City Royals, of course, and pretty soon I realized what dire straits the team is in if the game doesn’t change. Without a bunch of trades for can’t-miss prospects, it’s virtually impossible to lift the team over the .500 mark, and with free spenders like Cleveland and Chicago in the division, third place is about as well as you’ll do. An out-of-this-world manager like the late (and very sorely missed) Dick Howser could probably improve matters a ton, but Baseball Mogul’s manegerial model is a bit clunky. You can change how your manager manages, but it’s with a bunch of sliders. There’s no way to model, say, a Dick Howser based on the tendencies he used in the dugout and save it. That’s a feature Earl Weaver baseball had way back in the early ’90s and I can’t believe modern sims don’t copy it.

After two seasons with the Royals, I got frustrated. I needed something easier, but not necessarily too easy. So I took on the Curse of the Bambino and took the helm of the Boston Red Sox. The Red Sox haven’t won a World Series since they sold Babe Ruth to the New York Yankees in 1920 for an astronomical $100,000. (Ruth was already a superstar and guided the Bosox to three World Championships, but with him gone, the Sox have been heartbreakers ever since, appearing in four Series and losing each in Game 7. The Yankees have just been scum.)

But how to take on the high-revenue, free-spending Yankees? The Bosox were a challenge unto themselves. Nomar Garciaparra, the greatest shortstop alive today, was injured at the beginning of the 2001 season, of course. MVP candidate Manny Ramirez’ presence in the lineup helped soften it, but I had a cripple playing first base (Brian Daubach was nowhere to be found, not that he has enough punch to really justify holding down that position). So I traded for Toronto’s Brad Fullmer, to get some protection for Ramirez. And Boston limped its way to the playoffs. It wasn’t exactly pretty. The Boston bats racked up tons of runs. Pedro Martinez was masterful, of course, but behind him I had four No. 4 starters: Frank Castillo, Bret Saberhagen (I was glad to see him come off the shelf, but he was the epitome of clutch pitcher, one of those guys who’d give up 9 runs if you didn’t have to win, but when the pennant was on the line, he’d pitch a shutout), David Cone (another ex-Royal, dumped unceremoniously for salary years ago, like Sabes), and Hideo Nomo. Fortunately the Bosox had a solid bullpen. We beat Cleveland in the first round of the playoffs, in five. Pedro had to pitch twice. Sabes won the other game. Of course we faced the Yankees in the ALCS. Boston won in 6, again behind Pedro and Sabes. It would have been poetic justice to have Cone face them in the series and win, but I had to go by the numbers rather than entirely by emotions. That brought us to Larry Walker’s and Mike Hampton’s Colorado for the World Series. Pedro won Game 1. Sabes won Game 2, of course. Castillo lost Game 3. Pedro pitched Game 4 on short rest and lost. I didn’t want to pitch 37-year-old Sabes on such short rest, so I pitched Cone instead. He lost. Sabes came back for Game 6 and won. A shutout, of course. Pedro came back strong and won Game 7.

The curse was lifted. Pedro, with a 19-6 regular season record and a 5-1 record in the postseason, took home the Cy Young award and an All-Star appearance. Manny Ramirez also brought in an All-Star appearance, but most importantly, the team brought in the World Championship.

The 2002 season was where things went nuts. The big-market teams started looking like Rotisserie Leagues thanks to free agency. I went and grabbed Anaheim’s Troy Glaus to play third base and Cleveland’s Kenny Lofton to play left field and bat leadoff. Then I grabbed Minnesota’s Eric Milton to give Pedro a legitimate #2 starter behind him. A couple of weeks into the season I noticed Houston’s Billy Wagner was still unsigned, so I nabbed him to give closer Derek Lowe some help in the bullpen. We rolled through to a 109-53 record, obliterating Oakland and New York in the playoffs. This time there wasn’t even any danger of Pedro’s arm falling off. (He went 27-1 in the regular season with a sparkling 1.53 ERA.)

Then I ran into the free-spending Braves. The Braves’ pitching staff was mostly unchanged from the real 2001 roster. (It was already an All-Star team.) But the lineup… Rafael Furcal, ss. Andruw Jones, cf. Chipper Jones, 3b. Barry Bonds, lf. Sammy Sosa, rf. Tony Clark, 1b. Quilvio Veras, 2b. Paul Bako, c. With the exception of the bottom three, they had arguably the best player in the league at each position. (The other three would be the second- or third-best player on a lot of teams.) Oh yeah. They also had superstar Moises Alou riding the bench. I took a look at Atlanta’s finances. Yep, they were bankrupting the team, deficit spending in hopes of pulling in a World Series. It came down to Game 7, Greg Maddux vs. Pedro Martinez, a showdown of the two greatest pitchers playing today (and arguably the two greatest pitchers alive). Maddux beat Martinez 2-1 in a heartbreaker. (Hey, you try shutting out that lineup!)

After facing that, I felt a little less guilty about running a Rotisserie-style team out of Boston. I’d passed on signing Kerry Wood as a free agent the season before for just that reason. No longer. Atlanta, unable to afford Maddux and Glavine for the next season, let both of them walk. I signed Maddux to a four-year deal, which pretty much guaranteed he’d get his 300th win in a Boston uniform. And between the two of them, I could pretty much count on getting at least three wins in a 7-game postseason. Throw in another clutch performance by Sabes (re-signed for purely emotional reasons–I was either going to get Sabes another World Series ring to go with the one he got with the Royals in ’85 and my fictional Bosox in 2001 or I was going to ship both Sabes and Cone back home to Kansas City, to finish their careers where they both belonged all along. But Cone retired so I opted to go for another ring.) and I’m pretty sure I’d be able to lift the Curse of the Bambino again.

The game even fabricates newspaper accounts of the season’s big games. The picture is almost always the same, and you can usually tell the story was computer-generated rather than written by an intelligent human being, but it adds an element of drama to it.

I also noticed the injury model is fairly realistic. Keeping Pedro Martinez healthy for a full season is virtually impossible, both in this game and in real life. But there are players who will tough themselves through their injuries. Mike Sweeney suffers about one serious injury per year, an injury that would knock most players out of action for a couple of weeks, maybe a month. In Baseball Mogul, Sweeney sits. In real life, Sween tapes himself up and keeps going until he either gets better or the injury hampers his play so severely that even he realizes the Royals are better off with his backup playing. That doesn’t happen often.

The other glaring drawback is that you can’t watch the games. I’d love to watch the All-Star game and at least the World Series.

So. We’ve got a baseball simulation that crashes a lot, doesn’t let you watch the key games (or any of them, for that matter), where injuries are all or nothing, and the managerial model is more crude than I’d like.

Those are serious shortcomings. But the rest of the game is so fabulous that I can mostly overlook them.

Now, the question is, who pitches Opening Day 2003? Martinez or Maddux?

Setting up Freesco for port forwarding

It’s a little late, but here’s how Gatermann and I got a Web server running behind a Freesco-based router. Freesco, despite the name, is a micro-distribution of Linux (based on the 2.0.x kernel) that offers firewalling, NAT, caching DNS, port forwarding, a lightweight Web server, and print services on a single floppy. Requirements are minimal; it’d run on a 386 with 8 megs of RAM, a floppy drive, and a pair of NE2000 NICs. For performance and ease of setup, I recommend a P75 (or faster, but a P75’s overkill; the main reason to use it is to get PCI) with a pair of PCI NICs and 8 megs.
What NICs do I recommend? Avoid the new Netgear FA311. The older FA310 worked fabulously, but Freesco doesn’t provide a module for the FA311’s NatSemi chipset, at least not yet. (The source code for a module is available at scyld.com and it’s compatible with the 2.0.x kernel, but compiling a kernel module isn’t a trivial operation for most of Freesco’s audience.) I’d probably go with a Realtek 8139-based card like a D-Link DFE-530TX+, a recent 3Com PCI card, or a PCI NE2000 clone. There’s a modules archive you can download that supports most other common NICs. A pair of D-Links, a P75 board, a floppy and this disk ought to give you nearly plug-and-play operation.

Enough of that. Here are the answers to the questions Freesco asked, in order.

Boot off the floppy. When it asks what you want to make with it, select ethernet router. Hostname doesn’t matter. Accept default for domain name, unless you’ve registered a domain for your LAN.

Don’t detect modems. Select two network cards. If you are using PCI cards, answer 0 to next four questions (IRQ, I/O). If you’re using ISA cards, enter the addresses and IRQs the cards use. DHCP? Depends on your ISP.

The first card’s name is eth0. (This is the card for your cable/dsl modem). Don’t use dhcp logging. Don’t update DNS by DHCP. Second card is eth1. Give it an IP address (10.x.x.x is fine, which is Freesco’s default; normally I use 192.168.1.x network and put my router on 192.168.1.1). Network mask will almost always be 255.255.255.0. I don’t configure for DHCP, so I don’t give it an IP range. if you want one, tell it the range of addresses you want to reserve. The fewer the better, for memory purposes, especially if you’ve only got 8 MB of RAM in the box.

Caching DNS? Answer S (secure). Don’t log.

Enable DHCP? Depends. If you don’t want to configure your LAN manually, DHCP is nice. If your LAN is already configured, DHCP is probably more trouble than it’s worth.

Public HTTP server. Answer Y. Default is S. Port 80. (You might be able to get away with answering N here, and you’ll save a little memory. DO NOT answer S–you’ll never forward port 80 if you do.)

Time server via HTTP? No.

Print server. No.

Telnet server. no.

Screensaver/spindown? 5 min is fine.

Swap file–0 if you have 8 mb or more. I suppose you could run Freesco on some tiny machines if you put in a small hard drive and enabled the swap file, but as cheap as a P75 with a pair of 4-meg SIMMs is these days, I wouldn’t bother.

Extra modules/programs? No.

Log: take defaults.

Host gateway–depends on ISP. Check one of your other PCs and use it.

Primary/secondary DNS. Use your ISP’s. Proxy, probably none. Check your ISP.

Export services? YES. This is the magic forwarding formula.

Now, assuming your web server is on 10.42.42.3, you’d use this line in config:

t,80,10.42.42.3/80

If you want to export other services, like, say, IMAP on port 143, add additional lines, subbing in the appropriate port and IP address. (HTTP is port 80.)

Pick a root password and web admin password, save configuration and reboot. You’re up and going.

Now, to configure your Windows boxes to get their Internet connection through your lovely what-was-old-is-new-again Freesco router, just open your TCP/IP settings, give it an IP address on the same subnet as your Freesco router if it doesn’t already have one, and set your gateway and DNS to the address you gave your Freesco router.

Voila. Configure your system’s BIOS for keyboardless operation if it has such an option, then take the keyboard and monitor away, write-protect the floppy and make a backup of it just in case (or burn it to a bootable CD if the machine is capable of booting off CD and you have an old drive to put in it) stick the box in a corner somewhere, and forget about it. If you have a power failure, it’ll reboot and happily start itself up again. As for stability, I find Freesco, in combination with decent hardware, is more stable than the hardware routers that are popular these days. Since it has a caching DNS, it’ll usually give you better performance too. And since you can probably build one with parts you have laying around, it’s cheaper.

Who is GenX?

Bible Study last night. My buddy Sean and I led the discussion, using “Too much [whatever], not enough God” as our topic. We prepared like mad dogs–I’ll bet we each put more than five hours into preparation for this thing–and yet I still looked every bit as disorganized as I do when I prepare an hour beforehand. So it goes. I think when I speak in front of a group I’m always going to look a bit disorganized and a bit eccentric and it’s probably just part of me. People seem to like it anyway. One of our regulars brought a couple of friends, and one of the friends came up to me afterwards and asked if I was on the radio, because I seemed to have the voice and charisma for it. That was odd. I’ve never been complimented on my voice before. And the charisma is easily explained. There wasn’t anyone there tonight I was trying to impress. (Which ought to teach me something, but I’m digressing.)
At one point, the subject of Generation X came up. I think it was because the other friend (the one who didn’t compliment me on my voice) talked about how he never plans anything in advance. It just happens and that’s how he likes it. Of course I’m exactly the same way–Sean and I made up two thirds of the sadly defunct Bastions of Decisiveness, and believe me, it was a sarcastic nickname–and one of the girls piped up, “You…. I know you! You’re a GenXer! I read a book about you!” Of course she was laughing as she said it.

And that’s a hot topic for me. Churches fret over how to reach GenX and what they have to do differently. As far as I can tell, churches didn’t operate too differently when I was young from how they operated when my parents were young. And there was a point in their lives when they didn’t have much to do with any church. But they came back, as much for the sake of my sister and me as anything else. They may not have always liked the church, but they trusted the institution for whatever reason.

Now we GenXers are growing up and having kids of our own. Some of us are coming back. Most of us aren’t. And on average, we’re waiting longer to have kids, so there are buckets of us out there who have nothing to do with a church and don’t really care to. Meanwhile, churches’ ranks are dwindling as their members age, and our generation is a large, mostly untapped resource.

What gives? I think one of my ex-girlfriends put it very well. We were talking about gifts and abilities, and I told her sincerity was all I’ve got. She rolled her eyes, as she often did with me, and said, “Sincerity is everything.” I’ve forgotten a lot of things she said to me, but I’ll probably carry that to my grave. In fact, I was talking to someone else a couple of weeks ago and I said that sincerity is usually more important than good intentions.

What else about GenX? I don’t think we like hypocrisy all that much. Bill Clinton didn’t alienate my generation at all. He was as old as some of our parents, but as a demographic group, we dug him. You can say a lot of things about Bill Clinton, and I certainly have because I can’t stand the sorry excuse for a man, but you can’t say he was a hypocrite. But our generation has great disdain for people like Jimmy Swaggart, who said not to do one thing and then did it.

I think the biggest difference between GenX and the previous generation is that the previous generation accepted that hypocrisy exists and you can’t get away from it, and that sincerity is nice but you won’t always find it. GenX isn’t tolerant of that. If you’re insincere, talk to the hand. If you’re a hypocrite, don’t let the door hit your backside on the way out.

And, yes, I’ll say it. It’s easier to find insincerity and hypocrisy in a church than almost anywhere else.

So… I help organize this group of GenXers who meet on Friday nights to read the Bible, of all things. That’s prime party time. But, consistently, 15-20 people come. Most churches don’t have 15-20 GenXers in the sanctuary on Sundays. What’s the secret?

Here’s the secret. There’s no bull with me. I am what I am. At one point tonight it looked like I got choked up and someone commented, asked if I needed Kleenex. Actually I wasn’t choked up. I just lost my place. But I don’t try to hide anything. I’ve got an expressive face, so I’m easy to read. They’ve never seen me get choked up at the beginning like that, but it wouldn’t be out of character. You want sincerity? I’ve got it and so do the other people who lead.

As for hypocrisy, we’ve all been around the block, some of us more times than others, but we don’t try to hide it. And when I say, “Here’s how to overcome this problem,” I’m generally not talking from experience. When I talk about the problem itself, I usually am. But I look to see what God says about solving a particular problem, because when it comes to life’s problems, I sure haven’t solved very many, and I’m not afraid to talk about those failures. Neither are the others who lead.

OK. So we’ve taken care of the sincerity and hypocrisy. That’s not enough to bring people back. What is?

I think it was Mark Twain who said God gave us two ears and one mouth for a reason. We listen. At least I listen. I listen to the questions people ask and the prayer requests they give. You can tell what’s bothering a person based on those things. And what’s bothering one person is usually bothering more than one. You can tell that from looking at those things. If you see a pattern, you go for it. Go find what God has to say about it. The Bible’s not a short book. Name any life experience, and chances are the Bible’s got something to say about it.

No one ever comes and feels like they wasted their time. Sometimes they have other reasons for not coming back, but that’s never it. We have deep and challenging discussions. But they’re not academic. It’s stuff that we’ll spend the next couple of weeks applying to our lives.

So here’s the secret formula. Check hypocrisy and insincerity at the door. Listen. Care. Then go where that leads. Interestingly enough, it usually leads to relevance.

So much for me ever writing a book about ministering to my lost generation–it’s not a subject long and complex enough to be worthy of a book. But if the sales of my last book are any indication, that’s probably just as well.

Two vendors you can count on

Vendors. I’ve been trying to get out of the build-PCs-for-friends business and for the most part I’ve succeeded. My reasons for getting out are twofold: time and support. It takes some time to spec and build one, and if something goes wrong, I’ve got some responsibility for it. It’s something I don’t understand, because the systems I’ve built for myself have been reliable (I had a system appear dead that turned out just to be a corrupt MBR–I can live with that now that I know how to fix it, and it wasn’t the hardware’s fault) but the last two PCs I’ve built for friends have been horrendous.
One of those up and died last week, so we ordered replacement parts. I didn’t get around to placing the order until after close of business Friday, so the orders didn’t get processed until Monday.

I ordered a Gigabyte 7IX-E4 motherboard from Newegg.com. Newegg rakes you over the coals on shipping sometimes, but sometimes they run specials, and this board’s shipping was 5 bucks. Often they’ll charge 10 bucks to ship a CPU, which is ridiculous. Five bucks to ship a motherboard isn’t bad. And their pricing is first-rate–they’re obviously making their profit margins on shipping. But I’ll forgive Newegg’s shipping prices because the package arrived yesterday, even with the holiday Wednesday.

So, if you’re in the market for a motherboard, CPU, video card or hard drive, those guys are worth a first look. Figure out what you want, check the shipping, then check elsewhere and see if they still beat it. I’ll be doing business with them again.

I ordered the CPU, case, and fan (along with another case and video card for me) from Directron.com. Directron’s shipping prices are about as good as you’ll find, and the order is promised today. When Steve DeLassus ordered a batch of stuff from them it arrived promptly, so I trust them. Directron’s pricing is a bit spotty, but their shipping often makes up for it (they wanted $10 more for the CPU, but after shipping they ended up being cheaper than anywhere else I looked) and they’ve got the best case selection I’ve ever seen. Shipping for two cases, a video card, a CPU and CPU fan ended up being about $20, which isn’t bad at all.

Switchboxes. Gatermann’s Linksys KVM switchbox was a disappointment, but I thought to have him try connecting the extension cable directly to his monitor cable to see what that did to the image. I had a hunch that the problem might be the cabling, because I remembered yesterday morning that I’ve seen extension cables cause precisely the effects he was seeing. Sure enough, when he connected the cable (a Belkin, incidentally) to his monitor, the picture quality degraded–worse than it had been with the switchbox in the equation. So I’m going to dig up a couple of other types of cables (I use Fellowes cables on mine) and see if that makes a difference.