September 2009 Archives

Dumb Design: Microwaves

|

How many microwaves have you encountered which keep beeping for a set number of beeps even after you’ve opened the door?

You might think, “Well, it doesn’t know the door’s open.” Then you haven’t opened the door while it’s running. Try it. See what happens.

Any other objections?

Four Word Movie Review: The Fog of War

|

Fantastic, must-see documentary.

(My favorite visual of the movie is the “number bombing” in Lesson #4. Fantastic visual.)

I’m taking a break from reading the enormous, 1000-page healthcare reform bill in favor of watching The Fog of War. So far, so good.

Article here.

My favorite bit:

The reason is, Apple is not really a company — it’s a cult. Imagine what it might be like if the Church of Scientology went into the consumer electronics business, and you’d have a pretty good idea of how we operate.

Whew! They Don't Want Our Gravel

|

“Obama Rejects Race as Lead Cause of Criticism”, and in doing so, he proves that he’s not above playing the race card.

I can’t figure out who the idiots are who Obama thinks mistake his ruination of the country’s healthcare system for an issue of his race. Talk about narcissism.

Note that the claims of the company have been backed up by NREL.

If you're seeing a lot of this

Sep 15 19:26:03 shr-g5 org.clamav.freshclam[3087]: ERROR: Incorrect argument format for option <strike>-checks (</strike>c) Sep 15 19:26:03 shr-g5 org.clamav.freshclam[3087]: ERROR: Can't parse command line options Sep 15 19:26:03 shr-g5 com.apple.launchd[1] (org.clamav.freshclam[3087]): Exited with exit code: 1 Sep 15 19:26:03 shr-g5 com.apple.launchd[1] (org.clamav.freshclam): Throttling respawn: Will start in 10 seconds in your /var/log/system.log file, then it's because the file /System/Library/LaunchDaemons/org.clamav.freshclam.plist is somewhat hosed.1 If you Google the error, you'll come up dry. Examining the plist file doesn't yield any excitement. It looks like this: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Iterations</key> <integer>1</integer> <key>Label</key> <string>org.clamav.freshclam</string> <key>OnDemand</key> <false/> <key>Program</key> <string>/usr/bin/freshclam</string> <key>ProgramArguments</key> <array> <string>freshclam</string> <string>-d</string> <string>-c 4</string> </array> <key>ServiceIPC</key> <false/> <key>UserName</key> <string>_clamav</string> </dict> </plist> And, in fact, if you try executing /usr/freshclam -d -c 4, you will see, as I did, that there is nothing amiss. It works fine. So what gives?

I don't know what made me do it, but I used Lingon, a very wonderful but, alas, dead program to generate a launchd.plist file to compare this one against. There was one very subtle difference. The one that Lingon generated had this bit in it:

<array> <string>freshclam</string> <string>-d</string> <string>-c</string> <string>4</string> </array>

Didja' catch that? It's subtle, but it's apparently a killer. I don't know how XML is really supposed to work, but it seems that a string with "-c 4" in it doesn't get properly placed into the command line arguments for freshclam, but two strings, one with "-c" and the other with "4", get concatenated into the proper "-c 4". Go figure.

The other problem the file has, but which doesn't seem to be a real problem, is that the Iterations key seems to be unknown. I couldn't find it anywhere in the manpage for launchd.plist and launchd complains about it somewhere else in the logfile, so I took that key out.

So... give the command line a little sudo lovin', make these changes, unload the faulty plist and load up the new one, and you're good to go.

sudo emacs /System/Library/LaunchDaemons/org.clamav.freshclam.plist editing occurs sudo launchctl unload /System/Library/LaunchDaemons/org.clamav.freshclam.plist sudo launchctl load /System/Library/LaunchDaemons/org.clamav.freshclam.plist

Problem...

...solved.


1 I broke the lines strangely here because code blocks don't wrap, for one, and because I wanted Google to pick up on the error message in its entirety.

Server Security Update 2009-005 breaks PHP custom installations.

Apple installs PHP v5.2.10 over your custom PHP installation.

Here's what I did to alleviate the pain associated with the upgrade:

Before I upgraded, I backed up my configuration information (which I can use to reconfigure PHP if necessary) and current PHP installation so I can downgrade in a hurry if I can't rebuild the new PHP quickly:

php -i > ~/php-config-2009.10.15
sudo cp /usr/libexec/apache2/libphp5.so /usr/libexec/apache2/libphp5.so.old
sudo cp /usr/bin/php /usr/bin/php.old

I then did the update.

If I were very concerned that PHP weren't working correctly and quickly, I'd have swapped the newly-installed Apple PHP with the old one and set it to running while I rebuilt PHP. I didn't need to do that, though, so I just proceeded with rebuilding and reinstalling 5.2.10.

Once the update was done, I looked at what Apple used to configure php...

php -i

...and noticed that it wasn't all that unusual. I then backed up the Apple stuff...

sudo cp /usr/libexec/apache2/libphp5.so /usr/libexec/apache2/libphp5.so.apple
sudo cp /usr/bin/php /usr/bin/php.old

...and grabbed the 5.2.10 PHP tarball from PHP.net, php-ized GD, configured it, made it, and installed it. (Your configure command might look different, of course.)

tar xjfp php-5.2.10.tar.bz2

cd php-5.2.10/ext/gd

phpize

cd ../..

MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --disable-dependency-tracking --with-apxs2=/usr/sbin/apxs --with-ldap=/usr --with-kerberos=/usr --enable-cli --with-zlib-dir=/usr --enable-trans-sid --with-xml --enable-exif --enable-ftp --enable-mbstring --enable-mbregex --enable-dbx --enable-sockets --with-iodbc=/usr --with-curl=/usr --with-config-file-path=/etc --sysconfdir=/private/etc --with-mysql-sock=/var/mysql --with-mysqli=/usr/bin/mysql_config --with-mysql=/usr --with-openssl --with-xmlrpc --with-xsl=/usr --without-pear --with-freetype-dir=/usr/local/lib --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6 --with-gd --with-ttf --with-iconv=/usr/local/lib --enable-gd-imgstrttf --enable-gd-native-ttf

(That's all on one line, and note that I'm compiling a universal binary here for four architectures--why, I don't remember, exactly, but you probably won't need anything before "./configure" unless you're compiling for multiple architectures.)

make

make test

sudo make install

I then restarted Apache2 with Server Manager and PHP5 was happy again.

It dawned on me that I’ve made some very general statements about “the healthcare bill,” but (a) I don’t know jack about what it’s really called or “where” it is in the legislative process and (b) I haven’t read the 1000+ pages of the bill myself.

So, for your and my reading pleasure this weekend, I give you:

H.R.3200 - America’s Affordable Health Choices Act of 2009.

If you want to see it in a slightly more interesting format, check out the bill at OpenCongress.org, which has some really interesting features, including the ability to comment on each line of the darned thing.

I’ll have some thoughts on Monday, I’m sure, after I plow my way through this thing.

Yesterday’s “Back to School Event” speech (full text here) by President Obama was actually quite a good speech. (I didn’t watch it, but did read the text.) My liberal acquaintances on FaceBook were quick to point out that it was the best fourteen minutes of their lives they’d ever had, or something like that. The problem was that after each of these well-reasoned status updates would come the flurry of “What the heck were all those crazy right-wing conservative parents/morons/idiots worried about? That was a good speech full of great stuff and they’re dumb/ignorant to worry about it in the first place.” I condensed their comments to two sentences—their words, not mine.

As a “crazy parent” who is “nuts” and prefers to screen the messages being delivered to my children from someone whose values and messages have been, in my opinion, suspect, to say the least, I regretted that the dialog on this issue had fallen to the depths of name-calling. My opinion is just as valid as yours. I am not dumb because of my opinion; nor are you because of yours.

Everybody who thought we were objecting to his speech because we were afraid he’d tell our kids to do something ludicrous, such as “Take it easy in school. Don’t worry, the government will take care of you,” is just as nuts as you claim I am. However, we conservatives are somewhat jaded by his party’s historical pattern of rhetoric to the contrary. It was certainly reasonable to expect more of the same, just not perhaps stated overtly.

I certainly wanted to know what he was going to say if he were to have my kids’ undivided attention. I’m pretty sure that is called “responsible parenting” instead of “ignorance,” and it’s the same thing we do with movies, trusting in the MPAA rating instead of pre-screening most of the time.

So until I read the pre-release of his speech, you won’t be surprised to know that I wasn’t sure that he wasn’t going to get up in front of my kids and use the platform to promote his policies or do other things I might object to—seeing as how he doesn’t come with an MPAA rating. And whether or not you agree with his policies, I’m sure even you would have to admit that his doing so would be totally unacceptable and inexcusable.

Liberal name-callers and the media who whipped this thing to an overblown frenzy are missing the point. And the point is that some of us are not objecting to his obtaining a monopoly of our students’ attention as a knee-jerk reaction (though that was certainly my first thought). Instead, what we’re doing is the same thing they should be doing any time their children are exposed to something new: they should be checking it out for themselves to see if it’s appropriate for their children and for their family’s values.

That’s part of being a responsible parent, no matter your political affiliation or beliefs. Look into it.

In perusing my friends’ status updates, especially in recent days as they all argue for socialized medicine and rail against parents’ right to choose whether or not to allow their children to watch Obama’s “message,” I realized something else about conservatives.

We are lazy.

Yes, not only are we conservative, but we’re also lazy. L. A. Z. Y.

I am intrigued to see that my liberal friends are quick to jump up and down and holler and yell and scream that conservatives are “nuts” and “morons” and “crazy” in our beliefs.

Instead of taking the time to respond, we’re lazy. We’re content to sit back and say to ourselves in a smug sort of way, “I’m not worried. Other people will see that lunatic’s ravings and recognize them for what they are: lunatic ravings.” The problem is, that ain’t the case.

I’ve witnessed it firsthand on Facebook as others on the lunatic fringe join in the fray, take up the cry of battle, and echo a chorus of nonsense. And like the proverbial meatball, it rolls down the pile of spaghetti, picking up sauce on the way to the floor… and to a bigger mess.

Once again, people, I urge and implore you: when confronted, don’t roll over and take it. Respond, sensibly, and ensure that your opinion is heard among the noise, too.

C’mon, conservatives! Loosen up!

Or kiss your freedom goodbye.

After I published this rather lengthy entry on so-called healthcare “reform”, I expected the usual comments, i.e., none.

However, I got two comments back, one from my dad, one from my mom. And Mom was disappointed in some of my choice of language. Sigh.

Between them, though, they had some really good ideas. But while Dad, ever the engineer, focused on solutions and root causes, Mom, ever the Dean of Students, focused on how to deliver my opinions to my elected representatives, in person.

I had never thought of that. No, really, I had never thought to try to convey my opinion to my elected officials, face-to-face. And why not? Why should “big business” get all the face time? Why should only the rich and famous be heard? Aren’t my opinions (and yours) just as valid, just as important as anybody else’s?

Why, yes, they are!

So with this entry, I begin a new series entitled, appropriately enough, Mr. Bill Goes to Washington. I’ll chronicle every step of the way from figuring out whom I wish to see to making contact to making travel arrangements.

I hope.

Now, remember that this isn’t a full-time job for me. I have one of those “full-time job” things, and it’s not quite enough to pay all the bills as it is. So don’t get impatient. Don’t expect to see a new posting every day (two per week might be all I can get out on the matter). Hang in there with me, and know that I’m very passionate about this issue, and whether you agree or disagree with my opinion, I hope to entertain you, at the very least, and enlighten you as an added bonus.

So, until the next entry, insert clever tagline here.

I need more than just a clue. I need several clues.

First, I need to know who my representatives are. Second, I need to know what is in that monstrous piece of heathcare legislation.

And being a webslinger extraordinaire, I thought the best place to start would be Google.

But… that’s too easy. And I’m too much of a geek just to let… In order for me to be able to plow through The Monster, I’d have to have it with me 24/7, and that meant iPhone.

http://www.sunlightlabs.com/contests/appsforamerica/apps/

Long story short: the woman in question bought too much OTC cold meds and was arrested because Indiana’s laws make it illegal for her to do so… to prevent her from opening her own meth lab. The whole ludicrous story is here.1

I shoulda’/coulda’ been arrested myself about 9 months ago. We went to BJs where you can buy DayQuil and NyQuil in large boxes, and guess what? I wanted both! (Who wouldn’t?!) The automatic checkout line cash register refused to sell me the DayQuil after scanning the NyQuil, and only after I argued with it for a bit did someone come and explain the stupid law to me.

That’s when I gave up.

And made a second purchase consisting only of the DayQuil.

Book ‘em, Dan-O!


1Anybody wonder who’s busy tracking what this lady has bought? And how they’re storing that data? And who is getting that data? And what use they might put that data to? If I were a health insurance company, I’d love to get my hands on that data…

I know a pediatrician who employs five full-time people and one part-timer. The pediatrician, a woman, offers health insurance to anybody who wants it because she’s very nice that way. For the one lady whose family takes her up on it, she pays—the owner, that is—pays $30,000 per year. The employee pays a reasonable $750 per month or so (I think it is). Doctor or not, that pediatrician can’t afford to do that for everybody, though she would work twice as hard and bend over backwards to do so if she had to. She’s just that nice.

At least, I think so, because I married her.

So when you talk about health care and insurance costs, I do know something about them. And when you start talking about controlling the insurance companies, recognize that they are controlled by math, pure and simple. They are in the business to make money, but they can’t make money if they have to insure every Tom, Dick and Barak for peanuts for premiums. The figures just don’t work out.

But is Obama’s solution the right one? No way in hell. He, and everybody else on Capitol Hill, are missing the elephant in the room: They don’t understand the problem. They understand the symptoms, but not the problem.

I think everybody is missing the point because nobody has studied the root causes of high health care costs. Think about it for a moment. All you hear is how the government has to step in to offer a new form of taxpayer-subsidized insurance, when that won’t do anything to control costs—it’ll just shift them around a bit.

So why are costs so high? Here’s one idea: have you priced medical malpractice insurance recently? For pediatrics, it might be only $25,000 per year. OBGYN? $100,000+ isn’t uncommon, and in ten states at least, it was over $200,000 in 2005 (see this report). If an OBGYN sees 20 patients per day (that’s a 20 minute visit, more or less), five days per week, 52 weeks per year (no vacation), each patient already owes $38 just to cover that doc’s malpractice insurance. God help the OBGYNs (and their patients) who have been sued…

Wonder why malpractice costs are so high? So do I.

Frankly, any healthcare bill that doesn’t mention tort reform is a load of Band-Aids when the patient has cancer…

Solution? Caps are low-hanging fruit, and probably not a good idea. More likely eliminating or limiting contingency fees would be a better start. Limit the lawyer’s take to that of the public defender unless he or she wins. Make the plaintiff take a financial risk. I’m not sure.

But I’m sure that’s only one of the causes. And I’ll say it again, nobody is looking at the root causes for high costs. Not anywhere in that 1000+ page bill is controlling the costs that hospitals, doctors, nurses—everybody—have to pay to merely be a business (adequately protected from lawsuits, frivolous and deserved alike, among other things) mentioned.

Patent reform is part of it, too, I think. Think drug companies charge all they do because they need more money for marketing? Well, yes, they do. It’s because they have to make their money in the very short time left of the life of a 17-year patent after “first offered” (which is before clinical trials, and which starts the 17-year clock) to FDA approval. Since it takes years to bring a drug to market, there’s not a whole lot of time to recoup those costs, hence higher prices for you and me. Ick.

Then let’s also take a look at medical school costs. Guess which medical school in the whoooole country costs the most? Harvard? Yale? Baylor? Duke? Mayo?

Nope. That’d be the Medical University of South Carolina—a public institution—at $70K+, all inclusive for those of you not already paying taxes to the state of South Carolina. (Well-deserving of a “WTF?!” Be sure to look at both public and private schools if you look at the list, and it is worth the look, believe you, me.)

I’m an engineer. We look for the root cause of the problem and fix that cause instead of treating the symptoms. (That sounds vaguely medical!) I’m partial to fixing the problems of our healthcare system with major invasive surgery if necessary instead of telling the patient to take two aspirin and call me in the morning. Or, as the Obama administration proposes it, tell your neighbor to give you the aspirin and call your doctor as many times as you want, whenever you want, because you won’t worry about paying for those calls, now, will you?

Anyway, wonder how those medical school costs get paid? And did you ever wonder why those costs are so damned high? (I still wonder. I really have no clue.) Guess where those costs go? Yup. They eventually get passed on to the patients, seven to ten years after everybody else started earning money if they so chose. Think it’s possible for a UPS driver to earn more in a lifetime than a doctor? No? Think again. (I have checked his numbers. They’re right.)

Again, I’m sure I’ve only identified a few of what I perceive to be the real causes of the problem. And I wish I could do something about it. But our politicians are too short-sighted—all of them, party lines notwithstanding—to see beyond the ends of their noses and past the lobbyists and into the real world where, no, my wife wouldn’t be able to afford to put five families on her health insurance, thereby spoiling it for everybody…

Oh, one other thing: Why do we put so much into the end-of-life care and not into the beginning-of-life care? Who gets paid the most? Yup. Those responsible for fixing wrecks, self-induced and otherwise, instead of those responsible for preventing the wrecks in the first place. It’s the family practitioners and pediatricians who are the least paid, most-worked practitioners. It’s the heart surgeons who take Wednesdays off for a game of golf at the Club with Buffy and Mitch. Go figure. Seven figures, that is.

I hope that if we disagree, we disagree rationally. And I hope that where we agree, we will… will what? Suggestions, anyone? Letters to our representatives? Facebook posts?

And now I’m off to bed. I am going to head to the gym at 6am to exercise to remove some of this excess weight and do my own preventative healthcare.

At my expense, I might add. Obama? You got a grant for that?

;-)

Last night, I sent an E-mail to John Gruber, who writes daringfireball.net, a blog mostly about Apple-related stuff but which ventures into political and Stanly Kurbick-related content occasionally. Interesting, really, especially given that he has made writing Daring Fireball his full-time job, paid for only by sponsorships. Enviable, yet… not so much. I like my job. To each his own.

Anyway, I wrote saying that I posted an entry on my blog about some new features—refinements, really—in MacOS X 10.6, “Snow Leopard.” I’ve sent him occasional updates like this, and I’ve always secretly hoped that he’d mention my blog on his blog. That way, I could experience “fame” in my own little way. He never has before.

So when he did mention my posting, I was pleasantly surprised, and I got what is known as “Fireballed.” That’s when a server gets swamped by people who check his website, see his link to mine, and click! my server gets a hit.

What’s “getting Fireballed” like? Perhaps some statistics are in order. I hear geeks love statistics. (I am a geek.)

I average 1000 visitors to my website per month. And I average about 100 requests per day. Not a whole lotta’ traffic. I might get three comments on material per year.

After John posted, I initially got 100 requests per second! In the 24 hours since, I have had 16,000 unique visitors, and 17,000 pageviews. Furthermore, I went from four to six Google Reader subscribers.

And five… five! comments in 24 hours! Now that’s somethin’! (Two on non-MacOS X-related content. Nifty, even if I disagree with them both.)

For the geeks among us, there are some interesting things that happened. First, the server had no trouble keeping up with demand—it’s running MacOS X Server 10.5, and it’s a dual PPC G5 with aspirations of being an eight-core Mac Pro. But it was most likely not stretched because my pipe, a normal, garden-variety AT&T DSL line, was very full. Nevertheless, Apache was pretty busy, having 1020+ workers serving (“/usr/sbin/httpd -D FOREGROUND”) pretty constantly.

Graphs? Yep, I have those, too.

Here’s what it looked like just after John posted his link. The unit on the left is “requests per second.” Notice that his post went live about 8:45pm. That’s when I noticed that things were getting a bit… slower… on… my… internet… connection…

(Click on any picture for a larger version.)

Just_after_posting.jpg

Nearly 24 hours later, we notice that most of the traffic has died down. There are some peaks where we woke up or got home from work or class. Or that’s my theory anyway. I pretty much expect it to bottom out at about now, 24 hours after he posted.

24_hours_later.jpg

PowerPC G5’s or not, I noticed that it wasn’t even straining under the load (twin graphs on the right). Cool.

Not_working_too_hard.jpg

I also checked my Internet connection, but I don’t have a screenshot of it then. I do have one from now, though, and you can see what happens at about 8:45 last night. (I don’t ever try to explain these graphs. You have to figure them out for yourselves. Red, green, in, out…)

Funky_ipcop_graphs.jpg

Data transferred? Glad you asked! Here’s what AWStats has to say about things.

awstats_of_fireballing.jpg

7.5GB upstream at something not much more than 56kbps makes for some patient web viewers.

Now I’m going to send a link to this page to John for his info, but I think I’ll recommend that he not publish a link to it. :-)

Thanks to everybody who visited. And thanks to John Gruber for my 15ms of fame!