Monday, September 01, 2008
Ridin' Gustav
I've known Marcus for a few years. We met on a mailing list, and we finally met in person when he dropped off a kitten on his way from Texas to a wedding in Key West.
Shortly after that, he pretty much dropped out of sight, and while still a member of the mailing list, hasn't said much over the past four years. So it was rather surprising to find the following message from him:
- From
- "mliviusii" <XXXXXXXXXXXXXXXXXXX>
- To
- XXXXXXXXXXXXXXXXXXXXXXXXX
- Subject
- [daveworld] Riding Gustav…
- Date
- Sun, 31 Aug 2008 08:08:30 -0000
Hello folks.
Still alive after all these years. I've been happier about that fact, but so it goes.
I'm in Nawlins, and riding out Gustav. Decided to liveblog it, if anyone is interested.
Not much else to do, really–curfews are going into effect, and the neighborhood is deserted.
Guess I'll practice my hunkering.
http://ridingustav.blogspot.com/
Marcus
My initial thoughts were Oh my … but Marcus was a Marine in an earlier life, and besides, as he says:
First, I'm prepared. I've got food and water for weeks, batteries, and all the stuff you need.
Second, I'm in a good place, though in a bad location. Well-built multi- story house, cinder block ground level, (for twisters) three stories plus an attic, (for floods). The house took about five feet of water during Katrina. It'd take a 30 ft. flood, minimum, to drown me.
Third, I've ridden out storms before, most notably Allen in '80. I'm former Marine infantry, first aid instructor certified, blah-blah-blah, so I feel as though I can pretty much handle whatever could happen. Only real likely Bad Thing I can forsee getting me would be a tornado with no warning. I feel safer here with my gear as opposed to huddling in a shelter somewhere.
I'd rather be on hand to help with the immediate aftermath if it's bad. Think of me as an unofficial First Responder. Rather be a sheepdog than a sheep.
So, I figured while I'm here, I might as well post an eyewitness account of the festivities. I've got still and video cameras, and will post what I can for as long as the power, and then my UPS, holds out.
I'm concerned for him, but I think he'll pull through this okay.
Good luck, Marcus. See you on the other side … and I hope there's a New Orleans left.
Tuesday, September 02, 2008
The Company is changing its name—it is no longer known as The Company. The new name of The Company is The Company
So, The Company's name is changing. Smirk wants to let our customer base know of the change in name, so he decides upon a mass emailing. This will do two things:
- lets us check the validity of the customers' email contact address;
- test the capability of “Project: Leaflet.”
Yes, “Project: Leaflet” is a mass-emailing tool, but the designated use for this is a way for a company (like us) to easily send out an email to a large volume (for some unspecified value of “large”) of customers to inform them of new products, services or a change in name.
Stuff like that.
Anyway, Smirk did the first run last night.
Out of our large (for some unspecified value of “large”) customer base, only a few (for a very small value of “few”) emails actually got delivered. Smirk had me look into the situation.
Turns out “Project: Leaflet” was programmed to send, at most, ten emails. Guess I subconsciously hate spam so much, I deliberately limited “Project: Leaflet” (or didn't realize there was such a limit in place from the beginning).
Heh.
Wednesday, September 03, 2008
Owning more than you expect
A few years ago I set things up at The Company (formerly known as The Company) so that emails to
root
get sent to me, which means, I get all the emails the
servers automatically generate as they're running. Prior to that, all email
to root
was slowly being accumulated on the various servers
without being checked.
Needless to say, I get an inordinate amount of mail at work, I can scan
it quickly (which is the reason why I
switched to using mutt
) and generally keep on top of
things.
I've learned, for instance, that when I get an email like:
- From
- support@XXXXXXXXXXX
- To
- support@XXXXXXXXXXX
- Subject
- URGENT: MailQueueCleaner failure report
- Date
- Tue, 2 Sep 2008 19:37:45 -0400
This is a report generated by the hourly run of MailQueueCleaner. Some sites on this server have problems which prevent the processing of their email queues. UNTIL YOU RESOLVE THE PROBLEMS, THESE SITES WILL NOT BE ABLE TO RECEIVE EMAIL. A summary of the problems is included below.
XXXXXXXXXXXXXXXXXXXXXXXXX: over disk quota, usage: 648180K, quota: 614400K
I know that one of our customers has a catch-all email address that is never being checked and I can pretty much nuke emails to said address (actually, I don't—I empty the mailbox of all the emails, which are then backed up in case the customer actually does need them, but in the several years we've been doing this, the customer has never noticed nor asked to scan the email backups). This used to happen quite often, but since installing X-Grey this now happens rarely.
But for the past month now, I've been receiving a large amount of these emails all from the same account (in fact, the example above is one such email). When I first received it, I did what I always do in such situations, and yet, that didn't resolve the issue.
We've been poking into this, trying to find out where this customer's quota is going; it certainly isn't due to spam—their email is practically empty. Disk usage over their account shows nothing too outrageous and well within the limits.
Very puzzling indeed.
Until P did a very deep scan of the entire filesystem looking for files that might be owned by this customer, and found a metric-buttload of files in a rather unexpected location.
Earlier this year I wrote a Perl-wrapper to help track down some exploited sites. This Perl-wrapper records the script being run (it maintains a single copy), any files it may be using, and information about the script (which user is running it, working directory, environment, etc). And this happens for every Perl script on the system!
But when I wrote it, little did I realize that the files it created would be owned by the group the user that executed the script belonged to. And modern Linux usage tends to give each user their own private group.
Oh.
So that's what's blowing their quota.
Heh.
(Simple fix actually—change the user and group ownership of the files the Perl-wrapper creates to be something other than the user. In this case, that was two lines to fix the problem).
Thursday, September 04, 2008
Snippits from a conversation about the upcoming Presidential Election
“I hope they win with a landslide.”
“I just hope they win by more than twice the margin of error.”
A pathetic attempt at one of those Intarweb memes
I'm looking at the back of a cereal box (I will not mention which brand because I'm trying to beat the brand) and it has a list of “18 things to do before you're 18.”
I'm not sure if some of them are even possible before the age of 18, but it's a slow news day here, so I'm presenting the list with commentary.
Aw heck, since this is a pathetic attempt to start one of those Intarweb memes, I tag anyone and everyone to check off what they've done by age 18 …
Notes from a trip to an office store
I gave Wlofie a ride over to the local Office Depot as he needed a new office chair. Once there, I wandered off while Wlofie negotiated with one of the sales clerks wandering about the store.
In the laptop section, I spied a unit that claimed to have a wireless connection to the Internet. I fire up the only browser available, Internet Explorer, and I'm impressed at the security feature, which is preventing the Office Depot Web Site from doing nasty things to the laptop.
Nice to know that Office Depot, in conjunction with Internet Explorer, is keeping those dangerous Office Depot Web Sites from damaging the laptop for sale at Office Depot. Although viewing /. is A-OK. Nice to know.
My interests soon turn to seeing what garbage is being foisted off as keyboards this year, and yet again, I'm not disapointed, with over a dozen crappy keyboards that induced carpal tunnel syndrome the second my hands got near. There was one special keyboard though, that looked like a cheap metal tray with a cheap photograph of keys laminated on top that surprisingly enough, was not a cheap metal tray with a cheap photograph of keys laminated on top, but was in fact, a cheap metal tray with cheap plastic keys with about a millimeter of travel.
Having had my fill of pain-inducing keyboards, I then wandered over to the cell phone isle. Such tiny things they are now-a-days, and as I was examining a particularly small example, I noticed that the cell phone (which had no battery and a paper insert inside the screen poorly simulating a working phone) appeared to be attached to the display case via an actual phone cable, much like the type that goes from your phone (or base station if you have a cordless phone) to the wall.
How odd, I thought. I thought they locked these things down. I wonder if I can unplug this—
And yes, you can unplug the cord easily enough.
I wouldn't do it though, unless you enjoy listening to an ear-piercing alarm system blaring throughout the entire store which the employees blindly ignore because this is the umpteenth time this day it's gone off.
Thankfully, Wlofie was pretty much done with negotiations and we were able to leave the store without further incidents.
I hate Heisenbugs
I noticed some odd behavior with mod_blog
today. When I make editing changes to
entries (mostly spelling corrections) I usually regenerate the static pages
(the main page, the various feeds) by hand with the following command:
% ./boston.cgi --config boston.cnf --regen
But today I kept getting the dreaded “Segmentation fault (core dumped)” error. It's always worked before, and the timestamp on the executable was March 13th, so it's not like I made any recent changes to the program.
But, even odder, if I run:
% ./boston.cgi --config ./boston.cnf --regen
it runs without a hitch. Specify the config file without the leading “./” and the program crashes.
And now, fifteen minutes later, I can't reproduce the issue.
Aaaaaaaaaaaaaaaaaaaarg!
Friday, September 05, 2008
Yet even more stupid benchmarks
Yet another silly optimization problem. This time, from a silly coding challenge to find the number of integers expressible with unique digits (that is, no single digit repeats) in a base-10 representation up to the value 10,000,000,000 (there are 8,877,690 such numbers, by the way).
The neatest and fastest solution was final program on this page, written in C#. It generates only such numbers; it doesn't try to test each number. Since I don't use C#, I decided to translate the code in C to play around with it. Wasn't all that hard:
#include <stdio.h> #include <stdlib.h> int total = 0; const int pre[(1 << 10) + 1] /* = { ... } */ ; void generate2( int maxlen, int currentlen, int availabledigits, int currentvalue ) { int last = (currentlen == maxlen - 1); int x = availabledigits; while(x != 0) { int digit = pre[x ^ (x & (x - 1))]; x &= (x - 1); if (digit == 0 && currentvalue == 0) continue; if (last) ++total; else generate2( maxlen, currentlen + 1, availabledigits & ~(1 << digit), (currentvalue * 10) + digit ); } } int main(int argc,char *argv[]) { int len; for (len = 1 ; len <= 10 ; len++) generate2(len,0,0xFFF >> 2,0); printf("total: %d\n",total); return EXIT_SUCCESS; }
I pregenerated the pre[]
array since I wanted this to run as
fast as possible. The code used to generate the array:
for (i = 0 ; i <= 10 ; i++) pre[1 << i] = i;
Anyway, once written and compiled (gcc -O4 -fomit-frame-pointer
f.c
) it ran in about 0.2 seconds (average run) on a 2.6GHz machine. Fast, but I could go faster by
running it across the two CPUs in the box. I was expecting about half the runtime,
since this is easily parallelizable.
It ran in about 0.16 seconds, a rather disappointing ¾ time. I
commented out the code in generate2()
just to test the overhead
of threading and syncronization and that isn't a factor (program ran in
0.001 seconds).
Undaunted, I decided to try one of the quad-core boxes at The Office. Reworked the code a bit to split the load between four CPUs as evenly as possible, and ran some tests.
0.13 seconds on average. Still not quite half the speed.
Hmmm …
Saturday, September 06, 2008
Memoirs of a baggage handler
Today is my last day of work at the best job I ever had. I was a ramp worker for a major airline in Las Vegas. I am being laid off in the Great Purge of 2008: the massive airline cutbacks triggered by astronomical fuel prices.
Before you cry for me, I assure you that losing the best job I ever had is one of the best things that ever happened to me. One of the perks of working for an airline is that you get to fly free (or nearly free) wherever your airline goes. The only downer is that they also make you “work” on a regular schedule, which severely cuts into ones vacation time. Now, thanks to the negotiations of my union, I get to keep my basic flight benefits during my furlough period—for up to three years or until I am rehired—without the inconvenience of work. My only burden now is not having any money to travel with, but it still feels like I have won the lottery.
Zen and the Art of Baggage Handling
A long but interesting look at baggage handling and the perks of being on, and off, the job.
Monday, September 08, 2008
I wonder what's actually worse—going nuclear or going postal?
It was supposed to be a simple task. Take The Company (formerly known as The Company>) trouble ticket system, move it to a new server (so it's not running on the same server as the main website) and upgrade to the latest version of the trouble ticket system. The thing was—I already did this a few weeks ago, although it ended up on the same physical server as the new company website. I expected the whole operation to take maybe an hour at the most (which included installing and configuring a new server install).
Only it didn't go as expected. The simple operation of changing the IP address of support.XXXXXXXXXXXXXXXX
wasn't so simple. Of the approximately 1,000 domains we have, one one uses dynamic DNS. And of course it's the new Company domain, which uses a completely different mechanism for updating domain information. Our knowledge base wasn't quite clear on the whole process (it left out that as of then, you could only dynamically update the site from certain servers, which excludes the actual DNS server).
I ended up going quite nuclear, which isn't all that rare for me actually. It was just another case in a long line of cases where something which should be rather simple and straightforward wasn't and I get sidetracked on some wild goose chase solving issues that have little to do with what I was trying to do in the first place. It's that whole “for want of a nail we all died a horrible death” thing.
That was pretty much my Friday right there.
Fast forward to Sunday.
For no particular reason, other than “because I can” I decided to set up my webserver to authenticate users via signed certificates. This is something that is a bit more involved than just moving a website from one server to another. Let's see … I had to set up a certificate authority that could sign certificates, generate two certificates to be signed (one for the web server, another for me as a user), get them signed, and install the various signed certificates in the appropriate places (one for use by the web server, and one in Firefox).
The whole process took probably just as long as the mess on Friday, maybe even longer. It was more complex, as I had to reconcile the instructions in Network Security with OpenSSL with an online guide and had to start over several times, as well as revoke several certificates (hey, if I messed one up, why not learn how to revoke signed certificates while I'm at it?).
But not once did I go nuclear (and I got the user authentication via signed certificates working; I also learned how to install the certificate for my own certificate authority for Firefox, Lynx and Apache).
I think I finally realized why I didn't go nuclear—one, I had no time frame for this and I knew it would take several hours. I might not even get it working, so my mindset going in was I've never done this before, I have no idea what I'm doing, this might not be easy, and it might take a long time. And two, no one was relying upon my getting this done and consequently, there was little pressure to actually get this done. So even though I had setbacks and had to restart several times over, I felt no pressure and could “enjoy” the process.
Which, when I get right down to it, is another data point on the “Sean doesn't handle stress well at all” graph.
Another thing, mostly for Smirk, is that when I call in a panic that I can't get something done or something isn't working right, that I'm really just looking for a cardboard programmer who will just listen to my rantings ravings just long enough for me to realize the solution.
Oh, and to blow off steam when I'm going nuclear.
Notes on a conversation over the weekly grocery list
“Cookie dough?”
“Yes, about that. I put that on the list.”
“Cookie dough?”
“It's for The Younger. No, it's not for him! He wants to bake cookies for Ms. XXXXX.”
“And it's a special type of cookie dough—with mint chocolate chips!”
“Cookie dough?”
“Just get the cookie dough.”
Cookie dough? Cooooooookie dough? Coooooooooooookie dough.
Turns out the grocery store didn't have the cookie dough The Younger requested. Instead, I bought two boxes of Andes mints and froze them. They were then broken up and placed into home made cookie dough.
Store bought cookie dough indeed!
Tuesday, September 09, 2008
Confusion
When using my laptop to fix a switch, I don't know if I should be relieved or annoyed that it took longer to boot the laptop than it did to fix the issue.
Wednesday, September 10, 2008
Notes on an overseen Instant Message conversation wherein names have been changed to protect the guilty and to promote plausible deniability so no one (specifically the intrepid person reporting said Instant Message conversation) can be reprimanded
- (18:17:33) Bob
- hmmmm …
- (18:17:42) Alice
- hmmmmmmm?
- (18:17:57) Bob
- i will never begin to understand the minds of some of our users
- (18:18:02) Bob
- get this …
- (18:18:12) Alice
- I probably won't, but go ahead anyway
- (18:18:12) Bob
- kid you not …
- (18:18:21) Bob
- this is an email reply i received …
- (18:18:32) Bob
- Hi Bob,
Thank you … I did log in and change the password to XXXXXXXXXX to match the username.- (18:18:56) Bob
- WHY WOULD YOU WANT THE PASSWD TO MATCH THE USERNAME ?!?!?!?!?!?!?!?!?!
- (18:19:16) Bob
- doesn't that kind of defeat the idea of having a passwd?
- (18:19:37) Alice
- so that you speed up the password cracker. Heaven forbid it runs in .01 seconds when you can have it run for .001 seconds.
Monday, September 15, 2008
Notes on an overheard conversation on vampire slaying
“One way to kill a vampire is to drive a stake through its heart, then cut off its head and stuff the mouth with garlic.”
“And the reason for the decapitation and garlic dinner?”
“Because otherwise, if the stake comes out, the vampire comes back to life.”
“True, but not always. A stake made of hawthorne wood will kill a vampire, and can be removed without the vampire coming back to life.”
“Well, I never did like Hawthorne as an author, so I guess he makes a better stake.”
“Just because he's a bad author doesn't make him a bad cook.”
Tuesday, September 16, 2008
“The time has come. You know it in your soul.”
Back in the mid-1980s, young comics genius Frank Miller used a unique sort of mental alchemy to tell a story that would become legend.
The story of an aging warrior, dragging himself from a restful retirement to fight once more: possibly senile, definitely psychotic, obsessed with reclaiming past glories with no thought to the consequences.
Due to political pressure, Miller was forced to subvert his own dream, applying his astonishing sense of realpolitik to the debased literature of comic books.
We are proud to at last bring his staggering vision to full and revolutionary life.
…
A testament to the man and his times, McCain: Mavericking Maverick Mavericks More was a terrifying look at obsession—what happens when a man far past his prime is pushed far beyond his breaking point. It is a testament to Miller's consummate skill that life has, in the end, imitated his vision.
Via theferrett, McCain: The Mavericking Maverick Mavericks More
Visit the link and see how prophetic Frank Miller's words (from The Dark Knight Returns) are when applied to the current Presidential Campaign.
Chilling.
But I do have to wonder—could Batman be a Republican icon? It does seem to be popular meme these days …
Wednesday, September 17, 2008
Reason #13 I hate PHP
I'm making sure that the various branches of “Project: Leaflet” are consistent when I notice that
configuration.php
, which allows one to change various settings,
is not displaying at all. There are no errors, just a blank webpage.
Usually, I just run the page at the command line to see what might be
up:
[spc]XXXXXXXXX:~/projects/nlm/htdocs/nlm>php configuration.php Content-type: text/html X-Powered-By: PHP/4.3.9 [spc]XXXXXXXXX:~/projects/nlm/htdocs/nlm>
Okay, nothing there. Let's see if there's an option to PHP to tell me more:
[spc]XXXXXXXXX:~/projects/nlm/htdocs/nlm>php -h
Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>]
php <file> [args...]
-a Run interactively
-C Do not chdir to the script's directory
-c <path>|<file> Look for php.ini file in this directory
-n No php.ini file will be used
-d foo[=bar] Define INI entry foo with value 'bar'
-e Generate extended information for debugger/profiler
-f <file> Parse <file>. Implies '-q'
-h This help
-i PHP information
-l Syntax check only (lint)
-m Show compiled in modules
-q Quiet-mode. Suppress HTTP Header output.
-s Display colour syntax highlighted source.
-v Version number
-w Display source with stripped comments and whitespace.
-z <file> Load Zend extension <file>.
Hmm … that “lint” option seems promising. Let's try that.
[spc]XXXXXXXXX:~/projects/nlm/htdocs/nlm>php -l configuration.php Errors parsing configuration.php [spc]XXXXXXXXX:~/projects/nlm/htdocs/nlm>
Well, that was spectacularly informative. Why even bother with the option if you aren't going to give any useful information?
Sigh.
Sunday, September 21, 2008
Notes from a ★★★★★ restaurant …
I have this theory about gourmet food, which is partially derived from the book Class: A Guide Through the American Status System, and partially derived from watching countless episodes of Iron Chef America (“Today's secret ingredient … squid eyeballs!”).
The food in a four or five star restaurant is of course going to be the best example of whatever it is you are getting, whether its Beef Wellington or pan seared squid eyeballs in a lemon-butter sauce. If it weren't the best example it wouldn't be a four or five star restaurant, now would it?
Now, to frequent such a place, you have to either be rich, or have access to a fantastic expense account. And I'm sure that after your twelfth perfectly cooked Beef Wellington, you'll get bored. So maybe that pan seared squid eyeball in a lemon-butter sauce sounds interesting. I mean, it'll be the best squid eyeballs you've ever had because this is, you know, a four or five star restaurant. And there's only so much Beef Wellington you can eat.
And that is why I'm convinced that is the only reason chefs cook such odd dishes as squid eyeballs in a lemon-butter sauce, lest their clientele become bored with Black-and-white truffle pizza with Mozzarella di Bufala Campana, heirloom tomatoes and fresh lemon basil drizzled lightly with extra virgin olive oil from the Azienda Agricola Librandi region of Italy, again.
Back in November of 2000, I had Thanksgiving Dinner with John, the paper millionaire of a dot-com at his house in an exclusive neighborhood of Boca Raton, Florida. During dinner, we were served an acorn squash soup.
I hate squash. Doesn't matter which kind of squash, I hate squash (and pumpkins—can't stand pumpkin pie in fact). But since I was a gracious guest, I decided to at least try the acorn squash soup.
It was the best acorn squash soup I ever had. Sure, I hate squash but it was so good I wish I had seconds.
Yes, five star food is incredibly good, even if you don't like it (and yes, I still hate squash and squash soups).
But it's not everyday I get to dine at a four or five star restaurant.
Unlike today.
Today, Bunny and I dined at Chef Allen's, a five-star restaurant in Aventura. She had been invited to a retirement dinner for a friend, and Chef Allen happened to be this friend's brother-in-law.
Once inside, we found our seats and checked the menu for the night's dinner.
Zucchini & Ricotta Ravioli
Brown Butter and SpinachOr
Blue Crab Cake
Pineapple Tzatiki, Summer Kimchee******** ******** ********
Organic Green Salad
Herbs, Nuts and Berries******
Pan Seared Grouper
Giant Peruvian Lima Bean SofritoOr
Herb Grilled Medallion of Beef
Scallion Mashed Golden Yukons, Wild Mushroom Port Sauce
While I love crab cakes, I'm not a fan of sauerkraut (and by extension, kimchee, acorn squash soups aside), therefore I decided to try the ravioli. My only complaint about this dish was the toughness of the pasta, but I was advised by Bunny (and later on, by Wlofie) that the rather firm al dente I encountered was the proper way to serve pasta. Outside of that (and I will admit I tend to like my pasta a bit softer) it was very good; Bunny found the crab cake a bit on the hot (spicy) side (due, no doubt, to the kimchee) but still, very good.
This was followed by the salad. If there was a dressing, it was so light it wasn't noticeable, but even so, it was excellent (and I tend like dressing with a little bit of salad). The toasted walnuts may have been a bit too toasted for my liking, but at this point, even I will say I'm being too nitpicky.
This was followed by a small scoop of raspberry sorbet with a fresh mint leaf to cleanse the palate. I heard from some people around me that the raspberry sorbet was too tart, but the intent was to eat the sorbet and the mint leaf at the same time; the mint counter-balanced the tartness of the raspberry to make for a refreshing palate cleanser prior to the main course.
And it's here I think I've watched one too many episodes of Iron Chef America—“counter-balanced the tartness” indeed.
I'm not a real big fan of seafood, so I skipped the surf and went for the turf—the herb grilled medallion of beef, which was as tender as butter. The knife didn't so much as cut as it fell through effortlessly. I was relieved that the scallion mashed golden yukons were indeed, mashed and not the trendy “smashed” but again, that's a personal preference on my part. And they were delicious. So was the asparagus, crisp and not at all mushy.
The whole meal was excellent (personal preferences aside) but that's to be expected, because this is a five-star restaurant. Why wouldn't it be excellent?
Monday, September 22, 2008
“I can't see the forest! There's too many trees in the way!”
See Sean.
See Sean mad.
See Sean hit desk with head.
Bam.
Bam.
Bam.
See Sean fall over unconscious. Can you say “unconscious?” I knew you could.
Silliness aside, I just spent the past five hours trying to solve what ended up being a non-issue, and right now, being unconscious sounds appealling.
I was trying to install our second PostgreSQL version of “Project: Leaflet” and was not having an easy time of it. The MySQL version? Trivial, if only because every Linux distribution pretty much supports the LAMP stack and it Just Works™; not so much the LAPP stack.
In fact, our setup is rather custom in nature and was missing a key
ingredient—PHP support for PostgreSQL. Only after that was
installed did the five hour non-problem start. When installing “Project:
Leaflet” (by running install.php
) Smirk, P and I kept getting
the following error:
Error in query: CREATE TABLE leaflet_ban ( id serial not null, address varchar(50) NOT NULL default ”, note varchar(75) NOT NULL default ”, status smallint NOT NULL default '1', PRIMARY KEY (id, address) ); Table 'mmpro_ban' already exists (Error #: 1050)
Further compounding the issue—when I reinstalled over our working PostgreSQL version, it worked. Let's see—it works under PostgreSQL 8.2.4, but fails under PostgreSQL 8.2.9. That was the only difference (as it turned out) between the two systems. Apache and PHP were the same.
Only with Wlofie's help (or rather, he sat there as I ranted, and then asked a few pointed questions) did I realize what the problem was all along—when I installed the PHP/PostreSQL module, I forgot to restart the webserver.
D'oh!
Reason #√-1 I hate PHP
So Smirk has me installing the PayPal module for osCommerce on behalf of one of our customers. I download the appropriate archive, extract the files, and start reading on how to install this puppy. That's when I read:
To install this module, back up your existing installation to a safe place and then just copy the included catalog/ directory over your existing osCommerce files. This will replace the modified files and add the new files. However, if you have modified your osCommerce installation, you will need to manually compare the new files with your existing ones, and possible manually merge the changes.
Oh bloody hell.
This installation of osCommerce I'm installing into has been in production use for several years now. Of course it has been modified! You can't help but modify it if you want to change the layouts or the verbiage. There have been countless modules added over the course of several years. Heck, I hate touching the thing because it's 88,067 lines of PHP code across 999 source files in 154 directories.
And this module from Paypal? It's 39,765 lines of code across 199 source files in 29 directories.
And Paypal expects me to manually compare the new files with the existing files … heh. Heh. Heh. Heh heh heh. Oh! It is to laugh!
Thursday, September 25, 2008
THE INFOCAPALYPSE IS NIGH UPON YOU!
I swear, I want to take a clue-by-four to some of these so-called “computer network security consultants.”
One of our clients just received an audit from these people, and just like the last time (although last time it was some other company) this audit report is just inane, if not shorter (thankfully).
For instance, this lovely bit (not the full table):
Protocol | Port | Program | Status | Summary |
---|---|---|---|---|
ICMP | Ping | Accepting | Your computer is answering ping requests. Hackers use Ping to scan the Internet to see if computers will answer. If your computer answers then a hacker will know your computer exists and your computer could become a hacker target. You should install a firewall or turn off Ping requests. |
Really?
Hackers can use ping
to target my computer?
THIS IS A XXXXXXX WEBSERVER YOU MORONS! DISABLING
ping
WON'T “HIDE” THIS COMPUTER FROM HACKERS!
XXXXX XXXXXXX XXXXXX IS THIS STUPID!
Okay.
I'm calming down now.
And to be fair, it may be that these so called “computer network security consultants” had no idea what the computer was tasked to do and erred on the side of Armageddon.
But generally, I feel such reports are, at best, worthless and at worst, scaremongering tactics to extract a lot of money (link picked at random) for what you get, which is nothing more than a list of open ports that may “help a hacker to gather information about what is running on this machine and what kind of machine you have.” Have these people not heard that security through obscurity doesn't work? That if I have to hide what I'm actually using I've already lost? That a false sense of security is bad because you're deluding yourself that you are safe?
Sheesh.
In fact, the entire report can be boiled down to:
We found a computer at this IP address. This is bad because then “hackers” can break into the computer and do bad “hacker” things. Cut the network cable, yank the power cord, smash the computer to bits, embed in concrete, dump into the middle of the Pacific ocean, and nuke the site from orbit, just to make sure everything is secure.
“I'm refusing to run this program and you don't like it!”
And while I'm on the subject of security through annoyances, if you ever find yourself trying to use FastCGI under Apache using suEXEC, keep in mind that suEXEC is very fussy and won't run any program unless it passes a 20 point inspection test.
Friday, September 26, 2008
1973
In this video about our current economic crisis (via spin the cat) it's mentioned that legislation passed in 1995, in order to make “mortgages more affordable”, set us up for this major fall.
But just prior to viewing that, I read What (Really) Happened in 1995? (via New Mogul) which stated that in 1995, legislation was passed dropping the fractional reserve that banks have to keep on hand, while at the same time, Federal Reserve chairman Alan Greenspan dropped his previous course of setting the interest rate per the price of gold, possibly because another faction of the government was attempting to manipulate the gold market (read the paper, it's absolutely fascinating), thus setting up the entire fiasco we're in now.
Interesting …
I wonder what else happened in 1995 …
Monday, September 29, 2008
And best of all, it doesn't require a time machine
“You must try Alain Ducasse,” declared my editor. At first, I thought this was a cruel joke. The press was buzzing about the new restaurant from France's maestro-chef that boasts a $2 million interior, a $160 tasting menu, and a bill for four approaching $1,500. Although the phone lines weren't yet open, the word on the street was that the 65 seats a night were already booked for six months, with a 2,700-person waiting list. According to The New York Times, “Ordinary diners have less than a snowball's chance of landing a table at Ducasse.”
I was clearly in another league of exclusivity. Lay eaters wouldn't dream of trying to enter a restaurant where if you order verbena tea they bring the plant to your table and a white-gloved waiter snips the leaves with silver shears.
Still, I had no choice.
Via Hacker News Pocketful of Dough
The author explains a technique that will get you into exclusive restaurants quickly, even those that require a reservation. It isn't cheap, and takes a certain nerve to do, but amazingly, it does seem to work wonders.
I just wish I knew about this earlier, if only to ask Mom just how pervasive this technique was.
No wonder economics is called the “dismal science”
For starters, Fannie Mae and Freddie Mac are "government sponsored enterprises". Though technically privately owned, they have particular privileges granted by the government, they are overseen by Congress, and, most importantly, they have operated with a clear promise that if they failed, they would be bailed out. Hardly a "free market." All the players in the mortgage market knew this from early on. In the early 1990s, Congress eased Fannie and Freddie's lending requirements (to 1/4th the capital required by regular commercial banks) so as to increase their ability to lend to poor areas. Congress also created a regulatory agency to oversee them, but this agency also had to reapply to Congress for its budget each year (no other financial regulator must do so), assuring that it would tell Congress exactly what it wanted to hear: "things are fine." In 1995, Fannie and Freddie were given permission to enter the subprime market and regulators began to crack down on banks who were not lending enough to distressed areas. Several attempts were made to rein in Fannie and Freddie, but Congress didn't have the votes to do so, especially with both organizations making significant campaign contributions to members of both parties. Even the New York Times as far back as 1999 saw exactly what might happen thanks to this very unfree market, warning of a need to bailout Fannie and Freddie if the housing market dropped.
Complicating matters further was the 1994 renewal/revision of the Community Reinvestment Act of 1977. The CRA requires banks to to make a certain percentage of their loans within their local communities, especially when those communities are economically disadvantaged. In addition, Congress explicitly directed Fannie and Freddie to expand their lending to borrowers with marginal credit as a way of expanding homeownership. What all of these did together was to create an enormous profit and political incentives for banks and Fannie and Freddie to lend more to riskier low-income borrowers. However well-intentioned the attempts were to extend homeownership to more Americans, forcing banks to do so and artificially lowering the costs of doing so are a huge part of the problem we now find ourselves in.
An Open Letter to my Friends on the Left (emphasis added)
I want to quote the whole thing as this explains my thoughts behind the recent financial markets, but really, why should I quote the entire thing when I can just point to it and say “read the entire thing”?
So … read the entire thing already!