The Boston Diaries

The ongoing saga of a programmer who doesn't live in Boston, nor does he even like Boston, but yet named his weblog/journal “The Boston Diaries.”

Go figure.

Tuesday, January 01, 2008

Merry New Year!

Really? What more can I say but

HAPPY NEW YEAR!

Finally! The national two month long nightmare of a holiday season is finally over and we can go back to normalcy.

Which, here in Lower Sheol mean, less traffic!

That, and in only eleven months, this current four year Presidential election cycle will be over!

Can't happen soon enough.


“I notice your oeuvre is monochromatic.”

[“Snow sharks?” “That guy's a goner.”]

I present this, only to celebrate our lack of snow down here in Lower Sheol. But, if you don't like that one, there're plenty of others to choose from.

Wednesday, January 02, 2008

A rather disturbing state of affairs regarding a tire and some leather

A cold snap is passing through South Florida (it's expected to get to the mid-30s tonight) and because of that, I broke out the heavy leather jacket I have.

As I was leaving the Weekly Company Meeting™, I zipped up the jacket, but I must have somehow mis-zipped it, because shortly afterwards I found it unzipping itself from the bottom up (the only other conclusion is that the jacket has a lack of girth, whereas I have an abundance of girth, and the two didn't quite mix—or something like that).

The upshot: a mostly open leather jacket clasped at the neck that was rather awkward to take off. I also spent the better part of an hour manually attempting to re-zip the jacket from the bottom up so I could unzip it normally; a most annoying process, let me tell you.

I was successful in my endevour though, but until further notice, I won't be able to zip up my jacket.


“It's all fun and games until your code gets cancer.”

The genome is littered with old copies of genes and experiments that went wrong somewhere in the recent past—say, the last half a million years. This code is there but inactive. These are called the “pseudo genes”.

Furthermore, 97% of your DNA is commented out. DNA is linear and read from start to end. The parts that should not be decoded are marked very clearly, much like C comments. The 3% that is used directly form the so called “exons”. The comments, that come “inbetween” are called “introns”.

These comments are fascinating in their own right. Like C comments they have a start marker, like /*, and a stop marker, like */. But they have some more structure. Remember that DNA is like a tape—the comments need to be snipped out physically! The start of a comment is almost always indicated by the letters “GC”, which thus corresponds to /*, the end is signalled by “AG”, which is then like */.

Via Reddit, DNA seen through the eyes of a coder

It's an interesting view of DNA, as seen through the eyes of a programmer.

Thursday, January 03, 2008

… and here I thought the Lego Millenium Falcon was overkill …

Holy schneikies!

[The USS Harry S Truman, minifig scale]

That's a mini-fig scale aircraft carrier!

Wow!

Just … wow!


Yes, I could search any number of online forums for an answer, but in nearly every case, the default answer would be “upgrade to the latest version and try your luck again,” followed by “I'm sorry, I didn't think of that particular case … ”

Smirk called because he was having a problem with RottenCore, yet another in a long line of control panels we're using. It seems this time, RottenCore was having difficulty with creating a subdomain for one of our customers (who, I guess, was having similar difficulty in using RottenCore in creating a subdomain) and asked if I would mind looking into it.

“Of course I mind,” I said. “But I'll look into it anyway.”

As I explained, what he wanted done, the creation of a subdomain, is actually rather trivial do to under Apache. In fact, as far as Apache is concerned, a subdomain is just another virtual host. But as I said the other day, control panels are great until something goes wrong, in which case, you now have two problems—the actual problem, and the control panel.

And the problem in this case? Perhaps the version of RottenCore we're using doesn't support the concept of “subdomains.” Or it could be that RottenCore is expecting to control a DNS server. Or any number of things. I wouldn't know, since I'm not an expert in the care and feeding of RottenCore (and in a snarkier mood, I might add “nor am I paid enough to debug other people's code”).

Meanwhile, I got the subdomain going, but there's no guarentee that RottenCore won't break the fix the next time it's asked to do something, since I worked around RottenCore.

Have I mentioned I don't like control panels?

Recently?

Friday, January 04, 2008

One more time into the breech with a speech impediment

I think I finally figured out why I don't like Lisp.

It has nothing to do with its (non-)syntax and the proliferation of parentheses. Sure, it can be annoying to the non-initiate, but one can get used to it. The first language I learned was Microsoft BASIC for the Tandy Color Computer, and if I can learn to not only program, but like something that looks like this:

0 'CODE TAKEN FROM THE RAINBOW M
AGAZINE, VOL. IV, NO. 1 (AUGUST
1984), PAGE 78-'SOPWITH COCO' FL
IES AGAIN!
1700 X=30+SIN(JB)*28:Y=160-COS(J
B)*28:CIRCLE(FA,FB),1,0:CIRCLE(X
,Y),1,1:FA=X:FB=Y:RETURN
1710 IF D7=10 AND N(S)=0 THEN RE
TURN ELSE LINE(30,160)-(SX,SY),P
RESET:DRAW"C0;BM83,170;XA$(D7);B
M-10,0;XA$(D6);BM-7,0;XA$(D5);C1
;XA$(10);BM+7,0;XA$(10);BM+10,0;
XA$(10);":LINE(128,40)-(IX,IY),P
RESET:CIRCLE(162,92+GX),1,0,.1:D
7=10:D6=10:D5=10
1712 IF AZ<AL THEN AZ=0
1730 SCREEN1,0:RETURN
1740 F=INT(RB(S)*.5729):G=INT(RB
(S)*5.729)-(10*F):I=INT(RB(S)*57
.29)-(100*F)-(10*G):DRAW"C0;BM66
,151;XA$(FS);BM+7,0;XA$(GS);BM+7
,0;XA$(IS);C1;XA$(I);BM-7,0;XA$(
G);BM-7,0;XA$(F);":FS=F:GS=G:IS=
I:JB=RB(S):GOTO 1700

After that, I think can deal with a few parentheses here and there.

My dislike of Lisp also has nothing to do with its seemingly archaic, or even downright bizarre, function names like CAR and CDR (which stand for “Contents of Address Register” and “Contents of Decrement Register” respectively—no, seriously, they do!) which to modern people have no relationship to what they actually do (return the first element of a list, and a list minus the first element, respectively). Non-English programmers have had to deal with programming using seemingly arbitrary letter combinations for years.

Don't get me wrong—I'm fully thankful that I don't have to program in, say, a Swedish programming language:

(* 
    Thanks to wlofie for translating the code
    from Pascal
    into Håstad 
*)

medan not_done
börja
  för x:= 1 till 5 gör
  börja
    om person^.age = 120 så
      too_old(person);
    om person^.age > 130 så
      gåtill person_should_be_dead;
  slut;
slut;

But that doesn't mean I couldn't if I had to. I would just have to learn that code blocks appear between the tokens BÖRJA and SLUT and that we don't have IF THEN statements, but OM SÅ statements.

So it's not that Lisp contains nonsensical function names like CAR, CDR and TERPRI (like C doesn't have weirdly-named functions like strspn() and sbrk()) that make me dislike the language.

This, and the syntax, are shallow problems, easy to deal with in various ways. No, the reasons I hate Lisp are deeper than that.

I'm the compiler when using Lisp.

Sure, I can let SETF Do The Right Thing™ in updating a variable instead of using SET, SETQ or RPLACA (for instance), yet there are still areas of Lisp (okay, Common Lisp if you want to be pedantic) where I get to micromanage the code.

Arrays, for instance, can have up to seven dimensions (or more, depending upon the implementation), but arrays of a single dimension are considered “vectors” and have different functions to access elements, but there are also two special cases of vectors, bit vectors and strings, and each of those have special access functions. That's at least four different methods of accessing arrays.

You also have a slew of functions that manipulate and modify lists in place, like NCONC, NREVERSE, NUNION and DELETE, but there are an equal (EQ? EQL? EQUALP?) number that generate a new list: APPEND, REVERSE, UNION and REMOVE (ah, if only there were some consistency in the function names). It'd be nice if I didn't have to deal with such details and let the compiler figure it out for me (much like manual memory allocation, which Lisp does away with because it's garbage collected, but then, if that's so, why does Paul Graham include a section about avoiding garbage collection in his book ANSI Common Lisp?).

Oh, and then there's LET and LET*. Both let you declare a bunch of variables sorry, bind a bunch of variables (there's apparently a subtle distinction between setting a variable, and binding a variable, but from where I'm at, I can't tell the difference), but one does it “sequentially” and the other does it “in parallel” (which has implications about using previous bindings to bind later bindings—hey, I didn't design this language) and why the Lisp system can't figure out which one to use is beyond my ken.

And reading up on the subtle differences between PROG, PROG* PROGN, PROG1, PROG2 and PROGV is like reading Medieval monastic tomes on the differences between the care and feeding of Seraphim, Cherubim, Ophanim and Erelim.

Gee, if I wanted to micromanage code at that level, I'd be writing in Assembly. And I wouldn't have to deal with all the parentheses around each statment either.

I still like the idea of Lisp, and I think as a target language, it makes sense. But when I write a program, I want to solve a particular problem, not play compiler, unless, of course, I'm writing a compiler. Lisp proponents say that's a feature, because you are supposed to write a DSL in Lisp that succinctly solves the problem you're trying to solve with a program, but we already have a bazillion different computers langauges; do we really need a bazillion more one-off computer languages? (my frightening minor epiphany is also related to this, as computer languages are primarily communication between programmers and may help to explain why a language like Java is so popular in large companies, and Lisp isn't)

Update later today

Oh, one more thing I forgot


One last time? Okay, make that two last times …

This tutorial will show how a blog can easily be implemented in Common Lisp, using a few frameworks. Installing these frameworks is not covered, and neither are details on getting Common Lisp implementation up and running.

Implementing a blog in Common Lisp: Part 1

Heh. I liked that bit about how a blog can easily be implemented in Common Lisp, but actually avoids the hard part, getting a Common Lisp implementation installed, which brings up one other thing I don't like about Lisp—it doesn't play well with others and wants to be the entire environment (Forth has the same problem, as well as Smalltalk).

The other frameworks that need to be installed, along with Common Lisp? One's a webserver, which has this to say about implementations it runs on:

Hunchentoot talks with its front-end or with the client over TCP/IP sockets and uses multiprocessing to handle several requests at the same time. Therefore, it cannot be implemented completely in por table Common Lisp. It currently works with LispWorks (which is the main development and testing platform), CMUCL (with MP support), SBCL, (with Unicode and thread support), OpenMCL, and Allegro Common Lisp.

HUNCHENTOOT—The Common Lisp web server formerly known as TBNL

And if you happen to have a Common Lisp implemention not listed here, well, have fun storming the castle porting the code (yes, it's a cheap shot, but it's another point against Lisp in that it tends to lack support for things that are taken for granted today that weren't some twenty- odd years ago, like networking).

Oh, and forget CMUCL, since the third framework, Elephant, isn't supported (and the one Common Lisp implemention I have installed, GNU Common Lisp, isn't listed as supported by any of the frameworks—sigh).

Saturday, January 05, 2008

Belaboring the inanimate equus pleonastically

I've been thinking more about why I hate control panels since my last little outburst and I've come to the conclusion that sometime in the past few years, I've crossed some sort of threshold whereby I no longer wish to learn, yet again, how to administrate a Unix system.

Oh, the control panels make it easy to manage a system until something breaks, or you want to do something that the creators of the control panel didn't think of, and then you either dive into the guts of the insipid thing, or grovel around on support forums.

Basically, as long as you and the programmers of the control panel agree on what and how to do things, all is okay. And while I may agree on the how, I know enough about the various subsystems of Unix (like Apache and Sendmail for instance) to know that they are always more capable than what you get through a control panel to ever agree on the what (frankly, I still prefer my own solution to virtual host email, which used separate files for each domain, than the default method Sendmail uses today which relies upon a single centrally edited file, which goes to show that I don't necessarily agree with the how at a level below the control panels).

So my hatred is not so much a loss of control (although there is that aspect) as it is a fundamental disagreement with how to adminstrate a Unix system. Heck, my own views on how to administrate a Unix system (or network of systems) is probably at odds with most Unix admins out there (who, and mind you, this is a gross generalization here, are paranoid micromanagers who like complexity for complexity's sake).

It's also related to knowing how to fix a problem, but having to fight the control panel to fix it, or keep the control panel from breaking said fixes. Or even being able to fix the problem at all (“I'm sorry, we don't allow that feature”).

And before any of you get concerned about my employment with Smirk over this issue, let me tell you, this isn't anything I haven't already told him to his face. The fact that he puts up with my attitude about this is one reason why I like working with him. And yes, we've discussed this plenty of times and I do understand his position on them as well.

I just don't have to like it.

Monday, January 07, 2008

Figures …

I hate banks.

Of the two banks I have (neither one by choice really, but that's a story for another time), one didn't register a transfer of funds to my account, and the other one is holding onto my cash until the last possible moment (“available on January 7th my XXX—I don't consider 11:59:59 pm January 7th to be January 7th, but alas it's expected; if only I could subject the banks to the whimsy they subject unto me).

XXXXXXX!

A pox on both their houses!


Cursor * 10, an amusing fourth dimensional game

Cursor * 10 (link via reddit) at first seems a simple game—just click on the stairs to move up, with the goal being the 16th floor. It's pretty trivial until the 8th floor where you have to press a square to get the stairs leading up. But once you leave that square, the stairs disappear.

Quite the little puzzle until you realize what the rather cryptic message, “cooperate by oneself?!” (seen at the begining of the game) actually means—your past lives can help!

Each time you run out of time, you start over on the first floor, but so do all your previous lives. So the trick there is to get to the 8th floor, and hit that square until you run out of time. Then using your second life, get to the 8th floor, and wait until your “first” life shows up and hits the square, then proceed onward.

There are a few other places where you need past help as well.

It's not everyday you come across a multidimensional time-based game, although this game is a bit too frantic for my tastes.


I think this horse is beyond glue now …

I no longer find Scott Hanselman's Ultimate Developer Tool list inspiring. Instead, it's fatiguing. The pace of change in the world of software is relentless. We're so inundated with the Shiny and the New that the very concepts themselves start to disintegrate, the words repeated over and over and over until they devolve into a meaningless stream of vowels and consonants. “Shiny” and “new” become mundane, even commonplace. It's no longer unique for something to be new, no longer interesting when something is shiny. Eventually, you grow weary of the endless procession of shiny new things.

The Magpie Developer

Jeff Atwood's rant on the everchanging landscape of the Computer Industry (read the whole thing— it's worth it) expands upon my continuing rant against control panels.

But this, perhaps, is my argument in a nutshell:

I'm about to admit something odd, and perhaps career-threatening: I'm sick of learning.

There, I said it, and I feel better.

Do Yourself a Favor and Stop Learning

Read that as well.

It's just that at times, I'm running as fast as I can just to stay in place.

Tuesday, January 08, 2008

I wonder what it could all mean …

I had a weird dream last night. In it, David Bowie was goofing on Elvis when Stephen Hawking rolled in and started asking both of them for career advice and generally bitching about his manager, who for some odd reason, was played by Spring's brother. The proceedings were interrupted when Soupy Sales ran in and started a pie fight.

I'm still not sure what my mind was trying to tell me, though.

Wednesday, January 09, 2008

So, does this make this a Day 11, or Day 20?

Yesterday, we had equipment failure (a switch, which is a device that never fails). Today, a hacked server where root has been compromised (a sooperseekrit message to pint@dosnet.info: some lame script kiddie left your shv5 rootkit lying around where anyone, like me, could download it and examine it—you might want to be more careful about who uses your code).

Sigh.

Day 10s are supposed to be, you know, ten days apart?


Money as debt

Money as Debt (via The Mess That Greenspan Made) is a 47-minute animation of how our money system currently works and how it got there, and is well worth watching. I don't, however, agree with the solutions presented in the video (the comments about the video at “The Mess That Greenspan Made” are worth reading as well).

Thursday, January 10, 2008

What we have here is a failure to have good days

Monday, it was banks.

Tuesday, it was weird dreams, plus some equipment failure.

Wednesday, it was a hacked server where root was compromised.

Today, yet another hacked server (non-root this time), plus DSL woes at Casa New Jersey.

I'm beginning to think that what we have here, is not Day 10, but a Week 10!

Sigh.

Friday, January 11, 2008

I think I've turned into a programming curmudgeon

I hate dynamically typed languages.

Perl, PHP, Python, Lua, the whole lot.

Why?

Because programmers who program in such languages are muddleheaded thinkers who hate to declare variable types because they're too lazy to think and find it fun to “organically grow” their code bases.

It doesn't help that PHP (the current focus for my rage right now) is the ultimate in “scripting languages du jour,” where even minor releases are incompatible with each other.

I'm installing a PHP app (what that particular package is doesn't matter) but it's having problems connecting to the database (PostgreSQL in this case, and yes, it's one of the few PHP apps that actually acknowledge the existance of a database other than MySQL). So, I log into phpPgAdmin to make sure the appropriate PostgreSQL user can access the appropriate PstgreSQL database, only what do I get?

Warning: Invalid argument supplied for foreach() in /var/www/html/db/postgres/privileges.php on line 187

Alright … what's the line in question?

foreach ($privileges as $v) {
...
}

$privileges isn't mistyped (a common problem in a langauge where you don't have to declare your variables). I check some documentation and yes, that's the correct syntax, but comments from the peanut gallery are going on and on about foreach breaking on copies of data or something; stuff that isn't reassuring.

So I rewrite the code (remember now, I'm trying to install SomeRandomPHPApp, I am not trying to debug phpPgAdmin):

reset($privileges);   // XXX spc
while(list(,$v) = each($privileges)) { // XXX spc
//foreach ($privileges as $v) {	// XXX spc
...
}

And try my call again reloading the page:

Warning: reset() [function.reset]: Passed variable is not an array or object in /var/www/html/db/postgres/privileges.php on line 187

Warning: Variable passed to each() is not an array or object in /var/www/html/db/postgres/privileges.php on line 188

Okay, what exactly do I have? $privileges is obviously not an array. Okay, more debugging (“I'm not even supposed to be here today!”).

$privileges = $data->getPrivileges($object, $_REQUEST['subject']);
echo "TYEP: " . gettype($privileges) . " : $privileges"; // XXX spc

And what do I get?

TYEP: integer

Warning: reset() [function.reset]: Passed variable is not an array or object in /var/www/html/db/postgres/privileges.php on line 188

Warning: Variable passed to each() is not an array or object in /var/www/html/db/postgres/privileges.php on line 189

Oh lovely. getPrivileges() is now returning an integer, and the sizeof() function of PHP is returning a value larger than 0 (since the next thing done right after calling getPrivileges() is a call to sizeof() to see if getPrivileges() returned anything of any appreciable size) because an integer has a size, don't you know?

Oh, so what's the actual value of $privileges?

-3

Probably some internal error result deep from the bowels of PHP.

And not an array, like the programmer who originally wrote this crap expected.

Had there been some real typechecking going on I wouldn't be subjected to this type of error and the programmer would have been forced to think about the situation.

Hmm … actually, now that I'm reading up on sizeof(), I think the blame for this is defintely with the crack-addled developers of PHP. sizeof() is an alias for count(), which in part, reads:

Returns the number of elements in var, which is typically an array, since anything else will have one element.

PHP: count

“Typically.” Oh, I love that bit.

Okay, so if sizeof() (aka count()) will return a count of 1 for non-arrays and not signal any type of error because you “typically” use this on arrays, then why does foreach() barf on a non-array? Couldn't it just loop once? If sizeof() will treat a non-array as an array of one, why can't foreach()?

I mean, isn't that the purpose of a dynamically typed language? To act reasonably in any given situation? To not care if something is an array, list, vector, scalar, hashtable, or carrier pidgeon?

Hmmm … on second thought, that still doesn't absolve the programmer of phpPgAdmin—since there still is the issue of getPrivileges() returning an integer instead of an array of arrays (at least, that's what the code seems to be expecting).

And that still leaves my original problem currently unsolved.

Monday, January 14, 2008

Money money money … money

Today's theme is shaping up to be money, as I sit here paying various bills and what not.

First contestant on the Price is Right item up for consideration is this lovely reminder from a bank I don't use much anymore:

Our records indicate that your account remains overdrawn in the amount of $31.84.

Please make arrangements to deposit the neccessary funds to correct this situation. If your account is closed due to an overdrawn balance, we may send a report to ChexSystems, Inc., an account verification service, stating that the account was closed because of unsatisfactory handling. This may result in you being unable to establish an account in any financial institution for up to five years, even after you repay the debt. If you have any questions concerning this matter, please contact Customer Service at the number listed above. Thank you.

P.S. Don't forget the vaseline [That was uncalled for! –Editor] [Really? This is a bank we're talking about. –Sean] [On second thought, you're right. –Editor]

Now, how did I end up $31.84 in the hole? Well, that particular bank charges me for the priviledge of storing my money (in an interest bearing account no less!) and allowing me to write checks against that account. And apparently, the last fee whacked enough out of the account to cause an overdraft fee, so if I don't take care of this, then because of their actions, I'll be penalized for five years.

Why they couldn't just stop paying interest is beyond me. The account couldn't have been costing them very much. I mean, I wasn't even using the bloody thing.

Vampires—the whole lot of 'em.

And that ChexSystems, Inc.? It appears to be nothing more than a commercially supported black list for the banking industry.

It's stuff like this that just might cause me to turn into a raging Socialist. Power to the People! Ban the Man! Hey, where's my beret?


Money money money … money, Part II

The second item for today. Don't worry, it's pretty short.

In the power bill is this friendly letter from Lake Worthless Utilities:

Dear Lake Worth Utility Customer,

To help address a growing challenge of delinquent accounts being encountered by the Lake Worth Utility system, the City recently adjusted customer security deposit levels …

Dear Lake Worthless Utilities,

Your growing challenge of deliquent accounts is due to you charging twice as much as the State mandated monopoly you XXXXXXX idiots!

Hmm … it appears I ran out of vaseline.


Money money money … money, Part III

Third item today, which ties into the Money is Debt video I linked to the other day. He may call it How To Make Money From 0% APR Balance Transfers, but I would call it “How To Abuse 0% APR Balance Transfers”.

In reading it over, it appears to work like this:

  1. Sign up for a credit card that allows 0% APR for balance transfers for at least a year or so.
  2. With some creative accounting, you transfer the credit card limit into, say, a checking account that pays interest (and no fees, hopefully). So, if the credit card limit is $10,000 you now have a bank account with $10,000 at no interest for up to a year.
  3. Pay the monthly minimum, but keeping the rest of the money in the bank.
  4. Just before the interest rates spike upwards, pay off the remaining balance. You should have some left in the account, due to the accrued interest. That would be “profit.”

So, if you manage to find a $10,000 limit credit card with 0% APR balance transfer, and manage to transfer the $10,000 to your bank and collect the interest while paying the minimum, you can earn about $450 over the span of a year. That doesn't sound like much, but what if you had 75 such cards? That's over $34,000 a year profit (it's a bit more than the $33,750 you would expect because you earn more interest from a larger sum of money), for not much else than keeping track of credit card bills.

And if keeping track of 75 credit card sounds like too much hassle, there are people juggling more than that out there.

I don't know if I should be amazed or appalled by such shenanigans. There's no real work going on there—no real value being added to the economy. You're just shuffling paper (or electrons) hither and yon and end up with more “money.” Talk about your house of cards.


Money money money … money, Part IV

Fit the Fourth.

One of the most persistent is that of the broken window one breaks and this is celebrated as a boon to the economy: the window manufacturer gets an order; the hardware store sells a window; a carpenter is hired to install it; money circulates; jobs are created; the GDP goes up. In truth, of course, the economy is no better off at all.

Via Jason Kottke, Ten Recurring Economic Fallacies, 1774–2004

And a chronically sick person contributes more to the GDP than a healthy person, but only an economist would tell us to get sick.

And with that (which you should read), today's theme is at an end.

Tuesday, January 15, 2008

Hey! When did Cracked become good?

A whole lot of the people still reading this are saying, “Of course I'm depressed! People are starving! America has turned into Nazi Germany! My parents watch retarded television shows and talk about them for hours afterward! People are dying in meaningless wars all over the world!”

But how did we wind up with a more negative view of the world than our parents? Or grandparents? Back then, people didn't live as long and babies died more often. Diseases were more common. In those days, if your buddy moved away the only way to communicate was with pen and paper and a stamp. We have Iraq, but our parents had Vietnam (which killed 50 times more people) and their parents had World War 2 (which killed 1,000 times as many). Some of your grandparents grew up at a time when nobody had air conditioning. All of their parents grew up without it.

We are physically better off today in every possible way in which such things can be measured … but you sure as hell wouldn't know that if you're getting your news online. Why?

Via Shadesong, 7 Reasons the 21st Century is Making You Miserable

Growing up, Mad Magazine was the humor comic to read (heck, my Dad got me a subscription to it, much to the consternation of Mom), whereas Cracked was the sad, second rate ripoff of Mad Magazine (so sad and second rate that I think I only picked up a single issue).

How odd it is, then that the Mad Magazine website is the sad, second rate ripoff of the Cracked website, as this Cracked article attests—a well written, funny and yet informative article on why we're so miserable when by rights, we shouldn't be.


Hyperland

Tom Baker. My first exposure to Dr. Who was via PBS in the early 80s and at the time, the Doctor was all curly hair, teeth, jelly babies and a very long scarf. And that voice. It's hard to forget that voice. Kind of an English James Earl Jones type voice. Very distinctive. And because he was my first Doctor, he's still my favorite Doctor. It also didn't hurt things that several of his best shows where written by a fellow named Douglas Adams.

Douglas Adams. His most famous work was The Hitchhiker's Guide to the Galaxy, a unique story that has the virtue of being a radio play, a series of books, a television series, a stage play, two musicals, a computer game and a movie, all of them very different but at the same time, the same thing. Remarkable really. By the late 80s/early 90s, he had an interest in some of the odder aspects of computer science—basically fractals (there's a whole subplot in his book Dirk Gently's Holistic Detective Agency about fractal patterns) and interactive fiction (he wrote a few text-based adventure games). So it was natural that he heard of Ted Nelson.

Ted Nelson. Creator of the oldest vaporware product in history—fourty-seven years and still just “six months away.” I am, of course, talking about his hypertext system called Xanadu, which the World Wide Web is just a mere pale shadow of Xanadu's capabilities, which is he quick to point out.

But there was a time, in the early 90s, when all three appeared in Hyperland (link via Jason Scott), a documentary about the capabilities of hypertext. Well worth viewing if you are a fan of Douglas Adams, Tom Baker or Ted Nelson (or all three, like I am).

Wednesday, January 16, 2008

If humans cause global climate change, then God might exist after all

Craven's argument is that debate over whether or not humans caused global warming is pointless; instead, Craven suggests, “the risk of not acting far outweighs the risk of acting.”

On the one hand, regulations to counter global warming trends could trigger an economic downturn, Craven posits. But at its worst, climate change could bring droughts, famine, floods, dust bowls, economic collapse and the displacement of millions.

The potential consequences are severe enough, Craven says in his video, to make “Al Gore look like a sissy Pollyanna with no guts who sugarcoated the bad news.”

Via isen.blog, Oregon science teacher a mega-hit on YouTube

I watched his video presentation and the thing that struck me the most about it is that his argument, calling for action to stop climate change (hmm … what happened to “global warming?”) despite evidence either way, reminds me much of a similar argument used for the existence of God—Pascal's Wager, which goes something like this:

Pascal's Wager—Cost After Death
  God Exists God does not Exist
Belive God Exists Infinite life in Heaven Simply Dead
Believe God does not Exist Infinite torture in Hell Simply Dead

Greg Craven's argument is similar:

Craven's Wager—Cost of Climate Change
  Act Now Do Nothing
Climate Change not caused by Humans Wasted money causing world wide economic recession Status quo
Climate Change caused by Humans Money not wasted, Earth saved, who needs an economy anyway? Fire and brimstone coming down from the skies. Rivers and seas boiling. Forty years of darkness. Earthquakes, volcanoes … The dead rising from the grave. Human sacrifice, dogs and cats living together—mass hysteria.

And Mr. Craven's position is “Act Now” (who needs an economy anyway?). But than again, if global warming climate change is caused by us humans, I guess it wasn't a good idea to launch all those probes throughout the solar system.

Thursday, January 17, 2008

They never mentioned the aluminum cans in writing class …

After Twenty Years

You'll never understand the workings of interest rates, but over time— notice how you don't have kids with which to bother, or a spouse, seeing as you've been slightly focused on your work—your savings will grow and grow and grow. You'll get more book deals, and a chance to leave the trailer in order to speak to people at colleges. They'll pay you more money than the magazines, somehow. And you'll speak at writers' conferences, even though you never even attended one over the years.

You never attended because A) they cost way too much money; and B) you wrote over that time instead of talked about writing.

Via Hacker News, HOW TO WRITE STORIES … and lose weight, clean up the environment, and make a million dollars.

It sounds like good advice, and it's certainly a shorter read than Stephen King's On Writing.

I just didn't realize writing involved picking up so many aluminum cans.

I'll have to ask my friend Hoade about that …

Friday, January 18, 2008

Enso is free

A few months ago I mentioned being impressed with Enso—enough that I was thinking of buying it.

Now I don't have to—Enso is now free (as in beer at least; link via Compositing). It's still Windows only, but maybe in time there'll be a version for both Linux and Mac OS-X.

Monday, January 21, 2008

Did you ever have one of those days where you could have sworn it was a Tuesday, because it “felt” like a Tuesday, only it wasn't a Tuesday, but a Wednesday instead?

In my case, it was more a case of today not feeling like a “Monday” than feeling like it was another day of the week.


It can't possibly generate comments worse than some I've seen

The Commentator uses revolutionary real-time language processing to actually grok your code and add the necessary comments on the fly. No more doco to slow you down. Just install The Commentator and watch as your coding elegance is eloquently decorated with insightful, nuanced commentary … as you type. What's more, The Commentator's powerful Personality Controls allow you to tweak it's output so completely that it's as if The Commentator is speaking for you. In your voice. Explaining to those that need it, so that you can get on and get busy.

the commentator // time commenting could be time coding

The various axes one can tweak include FUD (from the EFF to Microsoft), humor (from Dijkstra to Ballmer) and bitterness (from “green” to “Death March”), to name a few, with options to use profanity, drug references and religion references.

Sounds neat. I could definitely use this to comment some of the PHP code I have to deal with.


“I don't even like babies!” or Notes on the Type of Conversations I Often Have Around Here

“So, you want me to send out bags of rice with baby faces on them?”

It's an idea. We don't have anything like that in this country.”

“I wonder why? Then again, I don't know anyone that would do that in this country.”

“It would certainly be remembered.”

“Yes, but I read the site. It's the parents that send out the baby-faced rice bags. At $35 a pop.”

“Okay then. You're a smart fellow. Brainstorm. Hey! How about, for people who have dogs in the vet hospital, bags of rice with their pet's face on it?”

Blink. Blink.

“Okay, how about this idea? A bride doll, a bag of rice with a bride's picture on it that is sent to the future mother-in-law to stick pins in?”

“I'll run that by the marketing department.”

“You do that.”

Tuesday, January 22, 2008

As for me, I would have loved to have been homeschooled

18. If you can remember anything from chemistry or calculus class, you're allowed to ask how we'll teach these subjects to our kids. If you can't, thank you for the reassurance that we couldn't possibly do a worse job than your teachers did, and might even do a better one.

Via Hacker News, The Bitter Homeschooler's Wish List

And there are twenty-four other laments by homeschoolers about people who Just Don't Get It™.

Update on Thursday, January 24th, 2008

I recieved the following email about this entry:

From
Deborah Markus <XXXXXXXXXXXXXXX>
To
<sean@conman.org>
Subject
Bitter Homeschooler's Wish List
Date
Thu, 24 Jan 2008 00:25:23 -0800

Hello—

Could you please link to the magazine that the list is originally from, rather than to the blog that reposted it? Here's a link:

http://www.secular-homeschooling.com

Thanks,
Deborah Markus

Curious.

I appear to have glossed over the wholesale copying of the article, and I'm surprised that Deborah (the original author of the piece) hasn't asked Hannah (who copied the entire piece) to take it down (and the link has been changed in this entry).


From the “What were they thinking” Department …

I almost feel bad for Boy George; he must be in some dire financial straits to allow this to happen.

Wednesday, January 23, 2008

KXTA—Homey Airport, Nevada. Home to Hangar 18.

The Air Force's classified test range at Groom Lake, Nev., has never lacked for evocative nicknames—it and its restricted airspace have been called Dreamland, Paradise Ranch, The Box and, most famously, Area 51. Now there's a less romantic moniker to throw on the pile: “Homey Airport,” according to a few civilian aviation journals.

Via spin the cat, Area 51 designated with a new name

Interesting.

Many many moons ago, in an efford to learn a bit more about DNS, I decided to see just how difficult it would be to set up my own private TLD and maybe even delegate a few zones to my then roommate Rob.

The TLD?

.area51

My half of the home network became groomlake.area51 while Rob's side became hangar18.area51. When I got the wireless access point, that portion of the network fell under dreamland.area51 (and by the way—it was pretty easy to set up my own TLD).

And the gateway to the .area51 TLD became a very obvious janet (which is still my firewall/NAT system to this day).

(Why yes, I do have a fascination with Area 51—why do you ask?)

In other Area 51 trivia, there's a Newton Easter Egg concerning Area 51 (which the government protested and made Apple remove—“Area 51 does not exist!”) and Google Maps has some very high resolution satelite images of the area in question (“I keep telling you civilians, the area does not exist!”).

There are even rumors that t he government has moved Area 51 to a new location and—

Oh wait … someone's at the door. Be right ba—


I think he'd win, too!

CHARLESTON, SC—After spending two months accompanying his wife, Hillary, on the campaign trail, former president Bill Clinton announced Monday that he is joining the 2008 presidential race, saying he “could no longer resist the urge.”

In a show of respect, Clinton then completed his introduction of Hillary Clinton, calling her a “wonderful wife and worthy political adversary,” and warmly shook her hand as she approached the podium. A clearly shocked Mrs. Clinton got halfway through her speech about the nation's obligation to its children before walking briskly offstage.

Since his announcement two days ago, Clinton has raised a staggering $550 million. He has also surged in national polls, rising from a mere 2 percent prior to his candidacy to a commanding 94 percent, ahead of former front-runners Barack Obama and Hillary Clinton, who are now tied with 3 percent each. John Edwards withdrew from the race Tuesday, saying only, “I am not worthy.”

Via Instapundit, Bill Clinton: ‘Screw It, I'm Running For President’"

Giggle.

Thursday, January 24, 2008

Two stories about green teens

First up, there's Marco Facciola (16) (Wlofie and Bunny should find this interesting):

As a 16-year-old high school student in the International Baccalaureate program, I am required to complete a 'personal project' on a non-academic topic that is of interest to me. I have always enjoyed woodworking and design, so I decided to build a functional wooden bicycle. There was to be no metal used in its construction, only wood and glue. I wanted a project that would be a challenge.

Via Flutterby, Buil ding a Wooden Bicycle

And then there's Andrew Angellotti (17) (most of us should find this one interesting):

He's finished one, so why not convert a second?

Andrew Angellotti spent nine months and about $6,000 to buy and transform his gasoline-powered 1988 Mazda B2200 pickup into an electric vehicle. Now he's doing the same with a 1992 Toyota Tercel.

And, by the way, he's 17.

Via AutoBlogGreen, Teen building his own electric vehicles

It's stories like this that make me feel optimistic about today's kids.

Friday, January 25, 2008

Passage

Passage (link via Jason Kottke) is a game that you either “get” and think of as a remarkable experience, or you don't and think it's a pointless game where nothing happens.

I “got” it, and found it deeply moving, for a video game that plays for five minutes (really!) with a 100×16 pixel resolution, simple controls (arrow keys only) and a very computerish sound track. It's recommended you play it once before reading the author's statment about the game (which, oddly enough, contains spoilers for this five-minute low-res simple game).

It also has some glowing reviews (but play it first before reading anything else on this game).

Monday, January 28, 2008

Heh

<rob89> windows is being a bitch >_<
<Trinexx> Install Linux.
<rob89> no. i use windows for all my work
<Trinexx> Linux would be better for that.
<rob89> besides, i like being able to play a game or two
<Trinexx> Linux has games.
<rob89> im not getting linux. windows has great support, ill have this fixed in no time
<Trinexx> Linux has better support.
<rob89> if you say “linux” one more time, im gonna send you a virus
<Trinexx> Good XXXXXXX luck. I'm on Linux.

QDB #125764

For Bunny, whose Windows XP box finally died and is now trying Linux.

Tuesday, January 29, 2008

“Mommy! Make it stop!”

Today is a good day, except for one small detail—I am seriously earwormed with the opening theme to The Fall Guy.

Gaaaaaaaaaaaaaaah!

(But hopefully, I've earwormed you too!)


The end of the world as we know it, and I feel fine

Today is turning out to be a good day, despite it being utterly destroyed by 2007 TU64 that slammed into us at 3:33am Eastern.

Oh wait a second … I'm still here.

Okay, ripped the magnetosphere to shreds as it passed by at 3:33am Eastern …

Um … my cell phone is still working.

And so is this darned Intarweb thang.

So it apparently whizzed by at 334,000 miles which is … well, the Moon is only 250,000 miles away and it's managed to avoid slamming into us for millions (or even a few billion) years.

So I guess the “Doomsday scenario” is bunk and today really is A Good Day™.

This is something I need to keep in mind as I read Bill Bryson's book A Short History of Nearly Everything. The chapters about the Earth itself make for some hair-raising reading, like the fact that the magnetic poles flipflop on average every 500,000 years, and here it's been at least 750,000 since the last flip (or was it flop?). And then there's this bit about Yellowstone National Park:

In the 1960s, while studying the volcanic history of Yellowstone National Park, Bob Christiansen of the United States Geological Survey became puzzled about something that, oddly, had not troubled anyone before; he couldn't find the park's volcano. … In particular what he couldn't find was a structure known as a caldera …

By coincidence just at this time NASA decided to test some new high-altitude cameras by taking photographs of Yellowstone, copies of which some thoughtful official passed on to the park authorities … as Christiansen saw the photos he realized why he had failed to spot the caldera: virtually the whole park—2.2 million acres—was caldera. The explosion had left a crater more than forty miles across—much too huge to be perceived from anywhere at ground level …

Yellowstone, it turns out, is a supervolcano … the cycle of Yellowstone's eruptions averaged one massive blow every 600,000 years. The last one, interestingly enough, was 630,000 years ago. Yellowstone, it appears, is due.

A Short History of Nearly Everything

But I'm feeling optimistic today—I don't think we'll experience a magnetic flip-flop or Yellowstone blowing up today.

Now tomorrow, on the other hand …

Wednesday, January 30, 2008

I didn't realize comic books had story boards

As a kid, I loved reading comics, and wanted to be a comic strip artist much like Charles Schulz or Jim Davis. I had even attempted once to draw a comic book. What I don't recall is how I wrote the comic book.

I had seen how comic books are written, thanks to an oversized (nearly poster sized) Superman special comic book, and it looked more like a screenplay than a comic book (oddly enough, most movies, or at least those made by Messrs. Lucas and Spielberg, go through a storyboard phase which looks more like a comic book than a screenplay). So all these years, I kind of assumed that's how comic books are written.

Not really (link via news from me).

Or rather, it's really up to the writer, as this Porky Pig comic script written by Chase Craig, shows.


Gee, another Lisp written in Lisp

It looks like Paul Graham's new language Arc has been released (link via lemonodor). I was reading over the announcement when I saw this:

In exploratory programming, the fact that it's unclear what a list represents is an advantage, because you yourself are unclear about what type of program you're trying to write. The most important thing is not to constrain the evolution of your ideas. So the less you commit yourself in writing to what your data structures represent, the better.

Arc's Out

What is it with programmers?

Did I not get the memo?

Are programmers incapable of thinking when writing code? Or is thinking a form of premature optimization?

I'm beginning to think mainstream programmers must think that thinking is a form of premature optimization, because they sure as hell go out of their way to keep from thinking when writing code.

I then read:

Arc embodies a similarly unPC attitude to HTML. The predefined libraries just do everything with tables. Why? Because Arc is tuned for exploratory programming, and the W3C-approved way of doing things represents the opposite spirit.

Tables are the lists of html [sic]. The W3C doesn't like you to use tables to do more than display tabular data because then it's unclear what a table cell means. But this sort of ambiguity is not always an error. It might be an accurate reflection of the programmer's state of mind. In exploratory programming, the programmer is by definition unsure what the program represents.

Arc's Out

And any interest I might have had in looking at Arc goes sailing out the window.

I'm currently working on a PHP application (we're pretty much taking it over since it's no longer being supported by anyone) and I've been ripping out all the <TABLE> based layout and replacing it with much simpler HTML, with CSS for layouts. It's making the PHP code much easier to deal with.

Hmm … perhaps I don't understand what “exploratory programming” means. Perhaps it's randomly typing on the keyboard when you have a vaugue idea that you want a program, never mind what it does, just that you want one? Or perhaps it's doing the work of a compiler and checking data types at run time by hand? Or perhaps they like micromanaging code?

I don't know.

Even worse—Arc only supports ASCII. In the 70s? Okay. 80s? Sure. 90s? Maybe for legacy code. But today?

Supporting just ASCII

Yup. To me, that says Paul Graham is a muddleheaded thinker.

Update a few minutes later

Yup, seems like some other people find HTML plus CSS easier to deal with than a <TABLE> based layout.

Thursday, January 31, 2008

Virtual Green Stamps

Green Stamps, believe it or not, are still around. But like everything else in the world they've gone virtual. You now have to lick your monitor. But more on that later.

Whatever happened to Green Stamps?

(Yes, it's The Straight Dope and not Snopes, because Snopes has been pushing adware/spyware to viewers of the site, even though they said they don't. Scary, isn't it?)

Ah, S&H Green Stamps. I remember those as a kid. Mom would get them at Publix, and have me lick the darned things (“Wow … trippy”) into the books so we could exchange them for valuable prizes.

I still have the 12″ globe I received from S&H.

A few months ago I remember seeing an S&H sign on the side of a building while driving and wondering whatever became of the company (Publix no longer gives out the stamps). And then just now I came across this ad and had to find out.

They're still around, virtually though. No more licking.

Friday, February 01, 2008

The DSL Dance

Tis a sad day indeed when a DSL provider deems it necessary to exceed the practices of The Monopolistic Phone Company to the point where The Monopolistic Phone Company is the lesser of two evils!

Such a thing has come to pass—Smirk has been fighting our current DSL provider for several months now and has had enough. It's time to do the DSL dance once more. And due to various factors, our best choice is, sadly, The Monopolistic Phone Company.

The current contract runs out on the 5th, but when The Monopolistic Phone Company was notified of our intent to use them, they were more than happy to cut over immediately, which was a bit sooner than expected. So soon, that I won't be able to reconfigure the Casa New Jersey Network until tomorrow.

Sigh.

Saturday, February 02, 2008

I guess 36,500,000 days in Punxsutawney could drive one a bit batty

Odd Trivia Fact of the Day: Bill Murray experienced Groundhog Day continuously for at least four years, quite possibly ten years, and maybe even longer.


Visual notes from a South Florida Fair

We spent the day celebrating six more weeks of this sweltering winter weather at the 2008 South Florida Fair.

[Lots of food, rides and people]
[Coming around the bend it's Making Bacon in the lead …]

One note about the pig race—in the minutes before First Call, they were playing what I would swear is country-industrial music. Very weird.

[Do de do de do]
[Figures]
[These guys had their own portable A/C unit nearby]
[Drats!  There goes my plans on getting rich!]
[But it was sure a pretty ride!]

Notes on a conversation with The Monopolistic Phone Company Technical Support Help Line

“The Monopolistic Telephone Company Technical Support. How may I help you?”

“I need to configure my DSL modem.”

“Okay, what type of modem do you have? Is it a Linksys? A Westell?”

“Zoom.”

“Okay, just read it off the unit.”

“Zoom.”

“What?”

“Zoom. It's a Zoom.”

“We sent you one of those?

“No, it's one I already own.”

“Why did you get one of those?

“Because my two previous DSL providers used it.”

“Oh.”

“Yes.”

“Okay then. What type of Windows do you have?”

“Linux.”

“Um … ”

“Linux.”

“Linux?”

“Linux.”

“Sigh.”

Sunday, February 03, 2008

Super Sunday

A bunch of us went out to Little Munich to celebrate Spring's birthday.

Fortunately for me, it was also Superbowl Sunday—not because I like watching the game, but because karaoke was cancelled for the night (thank God! My ears were spared!).

Everybody at Little Munich (including us) were all rooting against the Patriots, as, being South Floridians, we wanted the Miami Dolphins to keep their record. We were not disappointed (Patriots lost 17–14 to the New York Giants).

Monday, February 04, 2008

Knock knock

I suppose if you're into Stomp, then very bizarre Japanese electrical instruments are for you (link via Flares into Darkness).

Tuesday, February 05, 2008

Stone knives and bear skins

I'm endeavouring, Ma'am, to construct a mnemonic memory circuit using stone-knives and bear-skins.

Mr. Spock to Edith Keeler,“The City On the Edge of Forever.”

Progress is being made on the PHP project, which I'll call “Project Leaflet,” in the tradition of giving pseudoanonymous names to projects I'm working on that are related to the actual project name, but the current development tools I'm using feel very much like stone-knives and bear-skins.

The major problem is keeping a separation of logic, layout and language (hey! The Three-Ls of web programming!) in any web-centric programming language (or heck, any language that's used to write web-centric applications).

It's based on an abandoned PHP application which I'm currently cleaning up, which right now involves removing the existing <TABLE> based layout and using simpler HTML (and using CSS to control the look-and-feel). This is making the codebase easier to follow and giving me a chance to get a feel for the code.

The language part has already been separated out, and while it's a solution, I don't feel it's a great (or even good) solution, but it works. There's one file with all the possible text to appear in a page, like:

<?php
$lang = array();
$lang['yes'] = 'Yes';
$lang['no'] = 'No';
$lang['select_all'] = 'Select All & Copy to Clipboard';
$lang['error'] = 'Error';
$lang['error_reason'] = "I'm sorry Dave, I'm afraid I can't do that.";
?>

And then in the actual template (such as it is):

<h3><?php echo $lang['error'];?></h3>
<p><?php echo $lang['error_reason'];?></p>

Annoying, yes, but at least it allows one to translate the text to another language like German, without having to change the layout:

<?php
$lang = array();
$lang['yes'] = 'Ja';
$lang['no'] = 'Nein';
$lang['select_all'] = 'Wählen Sie alle und copy zum Klemmbrett vor';
$lang['error'] = 'Störung';
$lang['error_reason'] = "Ich bin traurig, Siegfried, ich Angst haben, daß ich nicht den tun kann.';
?>

But the major problem I'm now encountering is a clean separation of logic and layout. In the cleanup, although I've managed to isolate large portions of logic and layout (usually within a single function) there are still times when it's not quite that clean, such as:

<form action="foo.php" method="post">
  <fieldset>
    <legend><?php echo $lang['frobulator'];?></legend>
    <label for="models"><?php echo $lang['frobulator-models'];?></label>
    <select id="models" name="models">
      <?php

      $query  = "SELECT id,descr FROM frobulator_models ORDER BY descr ASC";
      $result = mysql_query($query) or die_a_horrible_death();

      while ($list = mysql_fetch_object($result))
      {
        echo '<option value="' . $list->id . '">' 
             . $list->descr
             . '</option>' . "\n"; // Yes, for some reason, you need
      }                            // to mark EOLN this way in PHP

      ?>
    </select>
  </fieldset>

  <!-- rest of form -->

</form>

Frankly, it's quite ugly. But even worse, if this ever goes open source, and we start taking patches from the greater open-source-using community, it gets even worse. I'm keeping the HTML very simple right now, but that doesn't mean that someone else might not very well want to use a <TABLE> based layout for forms and change the code accordingly. So they change the HTML. They then find a bug in the actual logic portion of the code, make a diff of the patch and … oh … I get not only the patched logic code, but all the patched layout code as well, which I don't want.

Or, they apply the patch to not only their version, but a clean copy of the distribution (twice the work on their part). And that's assuming I'm using the clean, distribution code and haven't modified it for local use for this site. And this site. And this other site. And …

That's why I dislike mixing the logic, layout and language. Ideally, I'd have a clean separation of the three.

But what really motivated me to write this today (I've been working on this for a few weeks now) was the tedium of cleaning up one of the files, which consists of about a thousand lines of PHP code that displays and processes about a dozen different “pages” in logic that goes like:

if ($_POST['action'] == 'edit)
{
  // a dozen lines of PHP and HTML
}
elseif ($_GET['action'] == 'edit')
{
  // four dozen lines of PHP and HTML
}
elseif ($_POST['action'] == 'search')
{
  // a bazillion lines of PHP and HTML, all alike
}
elseif ($_GET['action'] == 'add')
{
  // God, doesn't this file EVER end?
}
elseif ($_POST['action'] == 'remove')
{
  // AAAAAAAAAAAAaaaaaaaaaaaaaaaah
}
elseif ...

With each block of code containing both logic and layout.

I know what I want, an intelligent IDE that works how I want it to work, not somebody else's idea of what they think I want. Something that knows the difference between the logic, layout and language for each function, and can track each separately and with very fine grained revision control—not only on a function-by-function basis, but on a logic/layout/language basis per each function.

Oh, and everybody who works on this project to use the same IDE, so I can manage the patches that come in, say, to accept any logic and language patches, but ignore all layout patches.

But currently, I'm stuck using stone-knives and bear-skins.

Wednesday, February 06, 2008

Dull knives and tattered skins

I've finally finished cleaning the PHP page from Hell (at least, as far as “Project Leaflet” is concerned), although to finish it, I had to delve into some JavaScript to rip out even more <TABLE>-based layouts (amusingly enough, the JavaScript used CSS to style the <DIV> containing the <TABLE> being used for layout purposes! Methinks someone was unclear on the concept here).

That particular page is still hideously ugly and it's really driving home the point of just how horrible it is to mix logic and layout, although at this point I still have no better idea of how to separate the two (at least in PHP).

Thursday, February 07, 2008

Lisa's Father

In order to properly appreciate Alice Donut's video Lisa's Father (link via Mike Sterling's Progressive Ruin) you need to know that the video is based upon a Jack Chick tract called Lisa (pg. 7–12, pg. 13–18, pg. 19–24). Fair warning though, the tract (and thus the music video) is about child molestation (“and yes, you too, can stop molesting kids through the power of Christ!”) and like all of his tracts, he doesn't let real world facts get in the way of proselytizing.

It's about as surreal as the real life reenactments of the comic strip “Mary Worth.” I wonder if there are other Jack Chick tract reenactments out there?

Friday, February 08, 2008

Dance! Dance, Miss Piggy, dance!

I saw this video of a cat on a treadmill and I immediately thought that this would be perfect for our cat Tula (aka Miss Piggy, and not only because of her weight). Place her food dish at one end, and force her to exercise as she's eating.


Why does this not surprise me about PHP?

I'm not sure if it's a PHP 5x thing, or if the PHP configuration was a bit more strict, but when I tested “Project: Leaflet” on another server with PHP 5 (the development server is currently at PHP 4) I received a series of errors:

Notice: Undefined index: order in XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.php on line 382

I did some searching, and I found two fixes. One, the following line:

error_reporting(E_ALL & ~E_NOTICE);

Or I can fix each instance, from:

if (isset($_POST['blah'] == 'foo') ... 

to

if (isset($_POST['blah']) && ($_POST['blah'] == 'foo')) ...

And I'm not sure how I feel about this. On the one hand, it's keeping muddleheaded programmers honest, forcing them to actually think for a change. On the other hand, it sure is annoying having to check almost all variable references to see if the variable is defined or not …

Sigh.

Saturday, February 09, 2008

“Clocks can evolve, thank you very much.”

While it's a bit long, the video Evolution is a Blind Watchmaker (link via Jason Kottke) is a facinating look at evolution and a rather neat argument against Intelligent Design, showing how clocks could evolve, assuming the parts that make up a clock were all swimming around and actually had an affinity to combine.

And if simulated universes with evolving clocks isn't your thing, how about a few physics lectures by the late and great Richard Feynman.

Sunday, February 10, 2008

A mock-up of a better stone knife

I've been thinking about the separation of logic, language and layout and decided to mock up a demonstration of what I want. And because it's just a quick mock-up, and one written primarily for me, I'm not guaranteeing it'll even work in your browser—it does in mine (Firefox) and that's all I've tested it under.

Now, assuming the mock-up even works for you, what you'll see is a sample PHP page to process a rather complicated form (taken from another project I'm slowing working on, and I skimped out on fully processing the form, as I didn't want to get sidetracked—as it was, I had to write quite a bit of code just to process the page into the form you see). Along the right side you'll see a small box where you can turn various parts of the code on and off.

The “logic” is PHP code that does the processing. The “layout” is the HTML that actually forms the display and the “language” is that part of the HTML that is actually presented to the user on their browser. The final part is a bit of JavaScript embedded in the HTML—it's kind of a “miscellaneous section” that doesn't quite fit into any of the other parts (although given a significant amount of JavaScript, it too could probably be broken up into a logic, layout and language portion, thus falling further into self-referential madness). Each section retains its own line numbering as an attempt to show how each section might maintain its own revision control within the page.

I'm using color to show the different sections, but this is more than just syntax highlighting (which I don't do as you can see), it's using color to add more to the program structure than just individual elements like comments and variable declarations. It's more like colorForth where color plays a syntactical role in the language.

Hey, if Python can use significant whitespace, then why not a language (or language tool) with significant color? True, those who are colorblind (or just blind) might complain about the significant use of color, but all it's doing is hiding some syntax. For instance, this bit of colorForth:

IDE hard disk driver
bsy 1f7 p@ 80 and if bsy ; then ;
rdy 1f7 p@ 8 and if 1f0 a! 256 ; then rdy ;
sector  1f3 a! swap p!+ /8 p!+ /8 p!+ /8 e0 or p!+ drop p!+ drop 4 * ;
read 20 sector 256 for rdy insw next drop ;
write bsy 30 sector 256 for rdy outsw next drop ;

Is equivelent to the following Forth code:

( IDE hard disk driver )
: bsy 1f7 p@ 80 and if bsy exit then ;
: rdy 1f7 p@ 8 and if 1f0 a! 256 exit then rdy ;
: sector 1f3 a! swap p!+ /8 p!+ /8 p!+ /8 e0 or p!+ drop p!+ drop 4 * ;
: read 20 sector 256 for rdy insw next drop ;
: write bsy 30 sector 256 for rdy outsw next drop ;

All the color does is remove the need for certain Forth words (in colorForth, the green words are compiled into a new word whose name is in red, while black text is treated as a comment; in Forth, “( )” defines a comment, and “:” define a new word to be compiled). Now, from what I understand of Chuck Moore, the creator of both Forth and colorForth, the colors defined are cast in stone—that is, the color “red” will always mean “define this word” whereas the color “black” will always mean “this is a comment.”

But that's Chuck Moore. Were I to design a language with color significant syntax, I would definitely make it configurable as to which color means what, with the fallback of additional syntax when color can't be used for whatever reason.

Now, getting back to the mock-up.

Each time there was a transition, say, from “layout” to “language,” I started the next section on its own line. Doing the mock-up I realized that this won't necessarily work all that well. Something simple like:

<input name="name" value="<?php echo $name;?>" type="text">

would get split into multiple lines:

15 | <input name="name" value="
27 | echo $name;
16 | " type="text">

But then keeping track of revisions per section becomes a lot harder. Heck, keeping track of what goes where becomes non-trivial I would think, even in a line-by-line basis per the mock-up. Although as a visualization technique of PHP code, this might have some promise …

And if I can inspire someone else to make the tool I'm envisioning, then all the better.


Oh wow …

I just had a sobering thought: the one page mock-up I just did would just barely fit in the memory of my first computer from a little over twenty years ago.

My, how times have changed.

Monday, February 11, 2008

“I block the shots with my laser sword.”

The technique used here is to (not so) subtly point out that any reasonable and intelligent person would have to agree with whatever insane and unworkable idea the players are proposing, rather than the carefully designed and crafted setting and rules details that the GM intended.

And then, just when it looks like it's not going to work, he pulls out the master stroke.

Da rth & Droids, Episode 9: Right Back At You

I just came across Darths & Droids, a webcomic based upon the conceit of running a Star Wars film as a role playing game but one where the role players have never heard of said film.

It's similar to to The DM of the Rings, but instead of using screen captures from The Lord of the Rings, Darths & Droids is using screen captures from The Phantom Menace.

And having actually played in a Star Wars setting, including some friends playing some overzealous Jedis, I'm finding Darths & Droids extremely funny (to say that the Jedis in the game I played were … less than stellar is an understatement, especially when my character, a lowly technician and the weakest player, stats-wise, manages to kill the major bad guy, an umteenth level Sith Lord, on the first shot, says something—although what it exactly says I'm not sure, but still, our Jedi players weren't all that stellar).


“Is there a Doctor in the TARDIS?”

And speaking of sci-fi based webcomics, I came across The Ten Doctors. And if you have to ask which ten doctors (and eleven companions), then this comic isn't for you …

Tuesday, February 12, 2008

An animated Dr. Who

And apropos the Doctor Who comic, apparently, some studio did some reference sketches for a Dr. Who animated cartoon that was never made. The art style is not one I'm overly fond of (reminds me too much of “Heavy Metal”) although this reimagined K-9 is intriguing.


I just wish Colin Powell was running as well …

As the convention nears, with Sen. Clinton trailing slightly in the delegate count, the next step might well be a suit in the Florida courts challenging her party's refusal to seat Florida's delegation at the convention. And the Florida courts, as they did twice in 2000, might find some ostensible legal basis for overturning the pre-election rules and order the party to recognize the Clinton Florida delegates. That might tip the balance to Sen. Clinton.

We all know full well what could happen next. The array of battle-tested Democratic lawyers who fought for recounts, changes in ballot counting procedures, and even re-votes in Florida courts and the U.S. Supreme Court in 2000 would separate into two camps. Half of them would be relying on the suddenly-respectable Supreme Court Bush v. Gore decision that overturned the Florida courts' post-hoc election rules changes. The other half would be preaching a new-found respect for “federalism” and demanding that the high court leave the Florida court decisions alone.

Via Instapundit, Clinton v. Obama: The Lawsuit

Last year, I was hoping to see a Hillary Clinton/Condi Rice face off and watching both parties implode at the voting implications. The Democrats, strongly going after the African-American vote, imploring them to vote for a rich white woman, and the Republicans trying to get rich white men to vote for a black woman. I was sure it would have been comedic gold.

Alas, such dreams were for naught.

But watching the Democratic party implode over voting for a white woman or a black man is just as amusing. Part of me is hoping Hillary Clinton gets the nomination and then faces allegations of vote rigging, just like Bush! And the other half is hoping she doesn't get the nomination because of all the underhanded tricks she's pulled.

Wednesday, February 13, 2008

Another one of those leaky abstractions

It was something that should have been easy.

Earlier this week, some spammer found a PHP script on one of our servers that allowed him unrestricted access to send spam. Two times our server had maxed out at 100Mbps sustained output, and it was after this second attempt that I learned that the problem could be easily solved by adding the mail() function to the disable_functions directive in the php.ini file. This has the nice benefit of not allowing any PHP script to send mail. Unfortunately, our customers don't see this as a nice benefit, so it's not a long-term solution.

So we need to allow such PHP scripts to run. But the problem we (okay, I) were (was) having was locating the PHP script (or scripts) being abused. When you have scores of sites on the server, isolating the one or two problem scripts is not a trivial problem.

But P found another directive in the php.init file—sendmail_path. So a simple program (ha!) could be written to log some critical information and pass execution along to sendmail, and thus we could finally locate the problematic PHP scripts.

After thinking about the problem for a bit, I came up with the basics of the script (in pseudocode):

main()
{
  string input = STDIN;

  extract To:, Cc: Bcc: headers from input;
  extract HOSTNAME environment variable;
  extract PWD environment variable;

  log To, Cc, Bcc, hostname, pwd 

  in,out = pipe(); /* create a unidirectional data pipe */
  fork();	   /* creates a new process */

  if (parent-process)
  {
    write(out,input);
    waitfor(child);
    exit;
  }

  if (child-process)
  {
    set STDIN to in;
    exec(sendmail);
  }
}

When I tested the program on my workstation, it worked.

So I installed the program on the server in question.

It didn't work.

Oh, it worked when I tested a sample PHP script from the command line, but it failed when executed from the webserver.

Now, the major differences between my workstation and the server are:

  1. My workstation is a virtual server. The server is not.
  2. My workstation runs Postfix. The server runs Sendmail.
  3. My workstation does not have a control panel. The server does.

Any one of those could be the culprit.

Okay, so let's make a simpler program. Over the course of an hour, I ended up with:

main()
{
  exec(sendmail);
}

And that still wasn't working through the webserver when P asked a rather stupid question: “Is it a permissions problem?”

The answer was even stupider—yes—it was a permission problem. The location I had selected for the program wasn't accessible from the webserver.

Fix that problem, and now the program just hangs (but does log what I asked it to log).

Well, rather, sendmail was hanging.

And then major surgery on my program started.

Okay, maybe sendmail is attempting to write something and hanging there, so read anything sent back from sendmail—still hanging.

Okay, maybe sendmail is still expecting more input. I close my side of the pipe after writing—still hanging.

Okay, it looks like my program is hanging trying to read anything being sent by sendmail, so register a signal handler to catch SIGCHLD (a signal sent when a child process exits) so I can break out of the read() call and clean up—nope.

Maybe it's the code that's reading stdin—maybe I'm not handling that correctly—nope.

Run gdb on the spawned sendmail program (I was getting really desperate at this point). Hmm … it's stuck in the read() system call.

That shouldn't be happening. I'm closing my side of the data it's receiving. Unless it's not noticing that the pipe—

AH HAH!

Let me check something—PHP is envoking sendmail with the -i option:

-i
Ignore dots alone on lines by themselves in incoming messages. This should be set if you are reading data from a file.

sendmail manpage

Hmmm …

Pipes under Unix are not the same as files. Sure, they can be treated as files for the most part, but there are some instances where the abstraction breaks down, and I was hitting such a breaking point.

When reading a file (as in, a real file off a disk), the read() system call returns the number of bytes read, but at the end of the file, it just returns a 0 to indication no more data. But a pipe doesn't quite work the same way. Once a pipe empties, the next call to read() will cause the calling process to wait until there's more data in the pipe, since a pipe has two ends—a reading end and a writing end.

And for some reason, the fact that my wrapper program was closing its end of the pipe wasn't enough to signal to sendmail that there was more data. When my wrapper program closed its side of the pipe, the operating system should have sent the signal SIGPIPE to sendmail, but if sendmail explictily ignores SIGPIPE then it never gets the signal that there's no more input.

Regardless of what sendmail was doing, it was expecting more input from a pipe that was closed.

A change to the program:

main()
{
  copy STDIN to tempfile;

  extract To:, Cc:, Bcc: headers from tempfile;
  extract HOSTNAME environment variables;
  extract PWD environment variables;

  log To, Cc, Bcc, hostname, pwd

  fork();
  if (parent-process)
  {
    waitfor(child);
    exit;
  }

  if (child-process)
  {
    set STDIN to tempfile;
    exec(sendmail);
  }
}

and it worked as expected.

Sigh.

Anyway, if anyone else needs such a program, I've released the code.

Update on Monday, April 18th, 2022

I've since taken the code down.

Thursday, February 14, 2008

Why not? It's not like I haven't used this before on this day

Happy Valentine's Day … Straight from the Heart!

Friday, February 15, 2008

Notes on a conversation about skipping school

“I don't wanna go to school, Dad,” said Spring, who was getting ready for work this morning (unlike myself, who was already at work attending to an emergency).

“Okay, you don't have to go to school. You can stay home and play hockey. But no football!”

“But, why can't I play football? Isn't that what you do when you stay home from school?”

“No. You stay home from school, you always play hockey.”

“Oh Sean, that was bad!


Global Warming is so last week, now it's “Global Climatic Change”

The Canadian Space Agency's radio telescope has been reporting Flux Density Values so low they will mean a mini ice age if they continue.

This is because when the magnetic activity is low, the Sun is dimmer, and puts out less radiant warmth. If the Sun goes into dim mode, as it has in the past, the Earth gets much colder.

If the Sun's magnetic activity does not increase, and it goes dim for an extended period, it will get quite chilly. In the meantime the Canada Space Agency, the Royal Observatory Greenwich and the US Air Force Solar Optical Observing Network are all keeping an eye on the Sun.

Via spin the cat, Sun's low magnetic activity may portend an ice age

And

Every day, scientists hoping to see an increase in solar activity train their instruments at the sun as it crosses the sky. This is no idle academic pursuit: A lull in solar action could potentially drive the planet's temperature down, or even prompt a mini Ice Age.

The last such solar funk corresponded with a period of bitter cold that began around 1650 and lasted, with intermittent spikes of warming, until 1715. While there were competing causes for the climatic shift—including the Black Death's depopulation of tree-cutting Europeans and, more substantially, increased volcanic activity spewing ash into the atmosphere— the sun's lethargy likely had something to do with it.

Via spin the cat, Sun Stays Sluggish as Weathermen Fight for Anti-Ice Age Funding

has me wondering if Jerry Pournelle called it correctly years ago. There's still a lot we don't know about the weather, especially what it'll be doing next week, much less next decade.


Oil, schmoil …

There was a time one could buy fuel for ones car or truck for a “Buck-A- Gallon” … and it is a past we can embrace right now … TODAY!

Well, at least General Motors seems to think so with its investment in Biofuel processing startup Coskata.

The key to the conversion approach Coskata has perfected uses bacteria to break down the broad array of organic waste (switch grasses, twigs, corn husks, leaves, landscape waste, and other non-food sources of organic material) and make Ethanol for a fuel mix or replacement.

Via Instapundit, Bacteria Delivers “Buck-A-Gallon” Biofuel Solution

Quick comment before continuing—Mark Twain said that “[h]istory doesn't repeat itself, but it does rhyme,” and this is a good example. Back in the late 1800s a by-product of oil processing was burned off since there wasn't a use for it, until some clever engineers found a use for it—gasoline to power internal combustion engines in cars.

Scientists there say they have developed a way to produce truly carbon- neutral fuel and useful organic chemicals at large scale using water and carbon dioxide removed from the air as raw materials. There are plenty of schemes brewing to capture carbon dioxide, both directly from the atmosphere and from the stacks of power plants. All of them, for the moment, are costly or hard to envision at the billion-tons-a-year scale that would be needed to blunt the buildup of carbon dioxide in the atmosphere coming mainly from fuel burning.

UPDATE: 2/13, 5 p.m.: This plan has a minor hurdle, too; the electricity for driving the chemical processes, according to a white paper describing the overarching concept, would come from nuclear power. The proposal says it'd be worth it to have a payoff of steady, secure streams of methanol and gasoline with no carbon added to the atmosphere (and a price for gasoline at the pump of perhaps $4.60 a gallon—comparable to petroleum-based fuels as oil becomes harder to find).

Via Instapundit, Federal Lab Says It Can Harvest Fuel From Air (With a Catch)

It's because of articles like these that I'm not overly concerned about peak oil. We're a resourceful species, and we'll find alternatives long before oil runs out.


[[censored]]

XXXXX XXXXXXX XXXXXX!

What the XXXX?!

I'm on I-95 South when some XXXXXXX XXXXXXX on a XXXXXXXXXX crotch-rocket blows past at 130mph. What's worse is that this XXXXXXXXXXXXX XXXXXXXXXX is lane splitting.

XXXXXX.

Then, coming up to Yamato Road, when I-95 loses a lane or two and the traffic gets all snug and tight, another XXXXXXX XXXXXXX, this time in a XXXXXXX semitruck, comes right up my XXXXXXX XXX flashing his brights at me as if to say, “XXXX you, XXXXXXX! Move, or I'll XXXXXXX ram you up your XXX so hard you'll XXXXXXX XXXX diesel fumes,” and I'm like, “What the XXXX? Where the XXXX do you expect me to go? And stop it with the XXXXXXX lights, you XXXXXXXXXX!” So just before he rams me into next week, I cut a hard right, just inches behind a car. Somehow I manage to stay in the lane and not shoot off I-95 and into a drainage ditch.

And if that wasn't XXXXXXX enough, on the off-ramp at Yamato, some self-righteous XXXX in a car that costs more than Casa New Jersey who obviously owns the XXXXXXX world felt it was beneath her XXXXXXX dignity to signal a lane change and nearly sideswiped me. Yeah, XXXX you too!

XXXXX XXXXXX!

Kill kill kill kill kill …

Saturday, February 16, 2008

“Eh … what's up, Spock?”

Here I must note another very odd aspect of the planet's physics: each creature born there appears to have a personal singularity, a storage area of sorts that allows it to procure a wide variety of exaggerated machinery and weaponry. The rooster attempted to deceive us and then strike us cranially with a frying pan. Captain Kirk and myself saw through the deception, but Doctor McCoy did not, perhaps trusting the accent of the rooster more than his common sense, and was unfortunately struck. Oddly, his skull took the shape of the pan and the Doctor suffered no lasting ill effects; the cranial distortion healed itself with a distinct "popping" type effect.

Blame theferrett for this one.

One of the more pointless exercises that geeks engage in is hypothetical fights between heros, stuff like Batman vs. Superman (my thought: if caught by surprise and taken out in the first ten minutes, the fight goes to Superman, otherwise, Batman wipes the floor with Supes) or Alien vs. Predator (Predator, because in Predator 2 (which I would think would count as canon) you see an alien skull mount on the wall of the Predator's ship), each side presenting mind-numbing details of support for their side of the argument, and everybody has an opinion one way or the other.

theferrett recently asked for possible match-ups between fictional characters and the most amusing (or most surprising) match-up was James Tiberius Kirk vs. Bugs Bunny. And I think the arguments presented an inarguable result: Bugs wins.

Sunday, February 17, 2008

At least I don't have to schlep equipment down a flight of stairs

I'm at The Office, despite it being 0'dark-thirty Sunday morning (or read: really late Saturday night). I'm here to basically babysit our servers in The Data Center for the next few hours.

You see, we share The Data Center with another company and tonight is the night they're moving all their equipment to another data center. I'm here just in case they knock something of ours loose.

So I'm sitting here, using a workstation with an odd display and a crappy keyboard, killing time hoping I don't actually have to work.

Exciting times to be sure.


Why arrest someone stealing WiFi when you can have fun with them?

Earlier in the week I was taking to someone (and I won't name names unless they give me permission to do so) about leeching a wireless connection from a neighbor. Outside the legality of the situation, there are other problems with leeching a wireless connection—the least of which is hoping the person running the wireless connection isn't a bastard operator from Hell (oooh, that's a neat trick actually … )

Monday, February 25, 2008

I never realized there was a week between Sunday and Monday

Well [deep subject —Editor], will you look at that—I get one little sniffle, and BAM a week flies by in the time it take me to clear out my sinuses.

Sigh.

It was a hectic week last week, both at work and at home, and fighting off a cold left me just too run down to do much else other than vegetate in front of the browser. And when I wasn't doing that, reading about the seamier side of haute cuisine in Anthony Bourdain's Kitchen Confidential (never eat fish on a Monday, and don't order any meat well done either).

Where did that week go?


I'm such the geek

I knew I was feeling much better today when I spent the time calculating the height (it's about 6′) of Lego elephant in this old advertisement (yes, I counted rows and did some math).

Tuesday, February 26, 2008

And this seems more engrossing than those old Choose Your Own Adventure books …

To explain what I mean by “Feelies” in this context: Infocom packaging (and really, a bunch of other software packages of the 1980s era) came with additional knick-knacks wrapped in, accompanying the disk or cassette and the manual. Sometimes these knick-knacks were simply copy protection items, like a code wheel or a map with information you'd need to refer to to go far enough in the game. Other times, they were neat stuff that provided you with an additional dimension to the game. I've interviewed a lot of people who have said this was what set an Infocom game ahead of other similar products for them; you opened the box, and stuff fell out, and even before you played the game you were part of the game, if that makes sense.

And what else I found out was that nearly everyone I talked to who had something to do with Infocom's feelies had owned or knew of this interesting property, Murder Off Miami, which had originally been published in … 1936.

The Feelies

Very interesting. As I read up on Murder Off Miami, I began to feel that, because of the non-linear nature of the story (it's presented as a case file of a murder in Miami, and it's up to the reader to solve the mystery given the information presented) this may very well be a type of hypertext fiction, or even, a form of non-interactive interactive fiction, if you will.


A more readable Garfield

The first major improvement in Garfield was the removal of Garfield's dialog and the results improved the strip quite a bit, making it more surreal (as well as showing just how disturbed Jon Arbuckle really is).

Now, however, the process has been taken one step further—removing Garfield altogether!

[Jon: Get Back!][Jon:  My hand is ever alert][Nothing sadder than a grown man playing with a sock puppet by himself]

I think this makes Garfield not only funnier, but more surreal as the apparent schizophrenia takes hold on Jon Arbuckle.

Wednesday, February 27, 2008

The latest in car accessories

I definitely could have used one of these two weeks ago. I wonder how much it goes for?

Tuesday, March 11, 2008

Dik Od Triaanenen Fol

I was dragged kicking and screaming to see “Dik Od Triaanenen Fol” (the new musical by Bin Faaarkrekkion) by Bunny. Knowing me, she had gotten the tickets and simply said “We're going.”

So we went.

The musical promised to be ten hours of “the story, in music and song, of Finland's transformation from a predominantly rural agricultural base to one of the most sophisticated industrial and entrepreneurial economies in the world,” with the “foot-stomping East Finland Moose Ballet—45 mangificent creatures in high-stepping harmony.”

Words can't describe how much I was looking forward to this.

We took our seats in the Raymond F. Kravis Center for the Performing Arts in the nosebleed section of the theater and patiently awaited the start of the Lapp Cheese Council Production of “Dik Od Triaanenen Fol.”

[Don't let this picture fool you—that's about a thousand foot drop there]

Imagine my relief surprise when after the first musical number, “Fisch Schlapping Song,” a historian came out to inform the performers that the play was about the English, not the Finnish, and we found ourselves watching Monty Python's Spamalot, a musical version of their film, Mønti Pythøn ik den Høli Gräilen (vulgarly known as “Monty Python and the Holy Grail”).

I will say this—I was generally surprised by how good this was, and I'm not a fan of musicals. The plot (if you can call it one) diverged quite a bit from the movie (as if there was much of a plot there) but it still had The Black Knight (whose arms and legs were cut off—impressive for a stage show), The Knights Who say “Ni!”(but alas, no Roger the Shrubber), Dennis, Prince Herbert, Tim and Enchanter and The Killer Rabbit (who manages to take the head off one of the knights—again, very impressive for a stage show). Sadly, no Castle Anthrax, Bridge of Death, nor do the Knights find the Holy Grail in a Catholic Church [1]. And there's a love story.

Actually, two love stories (but I'll refrain from spoiling it).

But aside from all that, it's pretty much not at all like the film.

And amazingly enough, it's fantastic—although, that might be because I was spared watching the East Finland Moose Ballet for ten hours.

  1. For God was a Protestant, you see, and couldn't enter a Catholic Church … [2]
  2. You see, the original screen play for Mønti Pythøn ik den Høli Gräilen had King Arthur finding the Holy Grail in a Catholic Church [3]—obviously, the script changed somewhat by the time they got to filming it.
  3. And no, I'm not going to explain the whole Catholic vs. Protestant thing—that's what Clusty is for …

Wednesday, March 12, 2008

Breaking Radio Silence

Well … not that I'm actually coming to you on the meter wave of space or anything, but yes, my self-imposed exile has finally ended.

What happened?

After posting the small bit about car accessories I found myself too aggravated to write for the next few days (although I did complain a bit on a mailing list) and when I finally calmed down about that a few days later, the work involved in getting caught up just overwhelmed me.

And then that was followed by a few more days of aggravation, followed by a few more days of an ever-growing backlog of possible posts, followed by a day or so of aggravation, by a few more days of an ever-growing backlog of possible posts, followed by …

Scrap all that and just start back up.


Cold Boot Attacks on Encryption Keys

I've never given much thought to just how “dynamic” dynamic RAM is. I remember as a teenager reading up on computer design (back when it involved picking a CPU and designing the motherboard) and one of the darker aspects revolved around keeping the dynamic RAM refreshed else it lose its contents. Granted, all that was involved was ensuring certain pins got hit every unteen µseconds, but ensuring that involved a timing circuit, a counter circuit and synchronization circuit with the CPU.

And it was made clear that if this “refresh cycle” didn't happen, the dynamic RAM would quickly lose its contents to a sea of zeros (there did exist “static RAM,” which didn't need a refresh cycle, and was faster to read and write, but it was hideously expensive, even factoring into account the refresh circuit needed by dynamic RAM).

Never would I expect dynamic RAM to last seconds past power loss, much less minutes.

Boy, was I wrong (link via Xenophilia). This has some severe security implications. Yikes!


Apparently, the heat doesn't bother him either

Hof began a lifelong quest to see just how far his abilities would take him. In January of 1999 he traveled 100 miles north of the Arctic Circle to run a half-marathon in his bare feet. Three years later, dressed only in a swimsuit, he dove under the ice at the North Pole and earned a Guinness World Record for the longest amount of time swimming under the ice: 80 meters, almost twice the length of an Olympic-sized pool.

When he didn't experience frostbite or hypothermia, the body's usual reactions to extreme cold, his extraordinary ability started to get the attention of doctors who specialize in extreme medicine.

Dr. Ken Kamler, author of “Surviving the Extremes,” has treated dozens of people who tried to climb Mount Everest, and instead nearly died from the frigid temperatures. He couldn't believe it when he got word of a Dutchman making the ascent with no protection other than a pair of shorts.

Via Flares into Darkness, Iceman on Everest: ‘It Was Easy’

This is for Wlofie, who's had to endure the asphalt- melting weather here in Lower Sheol.

Thursday, March 13, 2008

Breaking up is easy, it's surviving that's hard

Everything seemed to unfold in slow motion. I learned later the time from event onset to catastrophic departure from controlled flight was only 2–3 seconds. Still trying to communicate with Jim, I blacked out, succumbing to extremely high g-forces.

Then the SR-71 … literally … disintegrated around us.

From that point, I was just along for the ride. And my next recollection was a hazy thought that I was having a bad dream. Maybe I'll wake up and get out of this mess, I mused. Gradually regaining consciousness, realized this was no dream; it had really happened. That also was disturbing, because … I COULD NOT HAVE SURVIVED … what had just happened.

I must be dead. Since I didn't feel bad—just a detached sense of euphoria—I decided being dead wasn't so bad after all. As full awareness took hold, I realized I was not dead. But somehow I had separated from the airplane.

Via Hacker News, Subject: Test Pilot Bill Weaver: Mach 3.18 Break Up of an SR- 71 Black Bird

And this is for Gregory, who likes this aviation stuff.

The story is incredible—Bill Weaver was flying at mach 3 when the SR-71 he was flying literally disintigrated around him and he survived with only minor scratches.

Friday, March 14, 2008

From the Gold Coast to the Space Coast

In just a few minutes, Bunny will be by, and then we'll be off to the Kennedy Space Center for the weekend. We'll be staying at the Luna Sea Motel while we're up there.

I'm expecting to have a fun time.

I've got my camera, my tripid and my Moleskine, so I'm as ready as I'll ever be.


Lunacy on the way to the Luna Sea

We left Casa New Jersey around 2:30 pm.

Four hour later we arrived at The Luna Sea Motel.

[Luna Sea Motel: AAA, AARP & Military Rates]

We endured constant traffic jams, inaccessible gas stations and fast food that wasn't fast (nor food, but I digress); thankfully we finally arrived at our destination for the night.

[It's nice except for that hideous color]

We had no problems checking in, but I did find it rather odd that we had to pay homage to the Great Luna Sea Motel God before we could get the keys to our room.

[“Ooom poppa chikamaga wana sing gow / Do lomma sinnigama mana ching jow / Inimana choogamaga wana sing gee / Finimana foonimana one is now free”]

So now we're just relaxing in the room, chilling out as the A/C blasts snow at us until we get hungry enough to get dinner.

[Your typical motel room—nothing special to write home about]

Tomorrow: The Kennedy Space Center.


L     a   g

I swear, I think browsing the web at 300 baud would be faster than the wireless network here at The Luna Sea Motel. It's also persnickedy and if I don't have my laptop aimed just right I lose the signal.

Sigh.

I don't think I'll be updating much more until I get back.

Saturday, March 15, 2008

The Luna Sea Motel

The Luna Sea Motel isn't quite as bad as I made it out to be. Sure, the outside color is hideous (at least to me) and the wireless network is more of a signal-less network but over all, it was one of the nicer hotels I've stayed in recently. It wasn't undergoing renovations, and we switch rooms three times.

But what really impressed me about the Luna Sea Motel was the bathroom.

It was a very nice bathroom, and one of the nicest details was the shower curtain rod.

[A curved shower curtain rod]

It curved outwards! Which had the effect of making showers feel less cramped—it basically opened up the space.

It's always the little details.


Reflections of time spent at a diner

I'm not sure if the Luna Sea Motel can actually be classified as a “bed and breakfast” even though guests do get a complimentary hot breakfast, since the “breakfast” part of the “bed and breakfast” concept is handled off-site.

This morning Bunny went to the front office and picked up the vouchers for The Sunrise Diner, less than a mile away from the motel.

[Sunrise Diner—Home Cooked Meals]

It's a small place and I doubt it's even possible to fit four people at any of the booths (unless they're midgets or on very friendly terms). It was also busy, although we manged to get a table right as we entered.

[Any smaller and it'd have to be a railroad car]

The service was prompt, the food good. The clock on the wall, however, was quite unusual:

[One of these is a mirror reflection, and it's not the one you think]

It may take you a while to see what's so unusual about the clock, but when you do, you'll be amazed (okay, so I'm easily amused).


A Day in Space

[That small building?  Four shuttle launch assemblies could fit in that small building …]

Ah, the Kennedy Space Center!

Nothing here is small, which makes photography somewhat vexing.

That picture above? The full image I have is actually two pictures stitched together, and is just a small sample of a much larger panorama of the Kennedy Space Center.

Even this picture of the business end of the solid rocket boosters and external fuel tank:

[Some very expensive Roman Candles]

required three pictures.

As a consequence, I don't have many pictures of actual rockets. Oddly enough, the shuttle chase planes (pictured here in front of a full-scale mock-up of the Space Shuttle):

[One (1) Space Shuttle Chase Plane] >

are small. They're tiny little things.

[I think my car is bigger than that plane]

Weird.

Anyway, the Kennedy Space Center.

Why is it in Florida, of all places?

On the NASA Up Close Tour, three reasons were given, but I suspect the fourth one was also a consideration:

  1. Florida is close to the equator, and by launching eastward, rockets gain an additional 900mph boost, which, given that over 90% of the mass of a rocket is fuel, can help.
  2. And while Hawaii is closer yet to the equator, and surrounded by even more water, Florida has the advantage of
    1. being attached to the rest of the United States, thus making it cheaper to ship men and equipment than out to Hawaii;
    2. Cape Canaveral was already a missile testing site and
    3. it was already a state at the time, unlike Hawaii.
  3. Launches out towards the east go over the Atlantic Ocean, which isn't inhabited by anything that votes in politicians. If something goes wrong, wreckage isn't spread across a thousand miles of population centers.
  4. It was cheap land with not a lot of neighbors who would complain (I suspect this had something to do with making Cape Canaveral a missile testing site). Remember, this was back before A/C was ubuiquitous here in Florida, and you either had to be insane, or forced, to live here year round.

Now, that little building in the top picture? It's the not-so-little Vehicle Assembly Building (VAB—NASA just loves their TLAs), 52 stories tall and covers the area of your typical baseball field.

[It's probably the largest building without windows]

The grey pillars on the left hand side are doors that open up and allow the fully assembled rocket to be rolled out to the launch pad. The Saturn V had only 6′ of clearance when the doors were fully opened; the doors only need to open half way for the Space Shuttle to clear. There are actually two doors on either side of the building, enough for four rockets to be assembled at once. Nowadays, only two of the bays are used.

The rockets are rolled out on a large vehicle (this building in the middle of this divided highway? That's not a building but the vehicle used to move rockets—like I said, nothing but the planes are small) that moves at a speedy ½mph.

And speaking of the Saturn V, The Space Center has one on display:

[It just keeps going and going and going …]

363′ high. 6.7 million pounds of mass sitting fully fueled on the launch pad. 7.6 million pounds of thrust. One of the displays around the Saturn V mentioned that 91% of the mass of the Saturn V was fuel, compared to the 4% mass fuel of a Corvette (favorite car of the astronauts), which prompted a rather unfortunate thought: the Saturn V is the ultimate symbol of our disposable society. Only 3.7% of the mass of the Saturn V returns back to Earth intact (unfortunate because getting off this planet is so darned difficult—and because I think the Saturn V is one of the most beautiful rockets ever designed).

[Lots and lots of blinken lights at the Apollo 8 Mission Control]
[IBM must have been a sponsor]

After the NASA Up Close Tour, Bunny and I headed off to the Shuttle Launch Simulation Facility, a new exhibit at the Space Center. From what I understand, the astronauts that have been on this simulation have felt it to be better than the simulations they were trained on (as far as a Space Shuttle launch is concerned) and having been on it, it's rather good.

[It's only five minutes, but it's a bumpy five minutes]

The “conceit” of the ride (if you will) is that you are one of perhaps three dozen passengers going up in the Space Shuttle. You enter a large pod, sit down and strap in. The pod is then rotated into a vertical position (and yes, it is) and “loaded” into the Space Shuttle. A few moments later the launch sequence is initiated (they kind of skip the whole “waiting for hours” and get right to the “sheer minutes of terror”). I'm not sure how they actually pulled off the 3G of accelleration, but I think they did a decent job of it.

After a few minutes of being in a heavily vibrating vertical position, the “accelleration” stops and you can feel yourself tugging up against the straps (“freefall”). Again, it's quite well done.

After that, there wasn't much time left to much else, as the Space Center was closing for the day.


A little slice of heaven

Continuing the theme of My Own Private Feasting On Asphalt (that is, eating at local restaurants), after a day at the Space Center, Bunny decided that we would eat at the first seafood restaurant we came across. We had seen several such local establishments yesterday and earlier today so we knew it would be easy to find such a place.

The first one we tried, the Crab House (or was it the Crab Shack? I don't recall now), looked closed.

We almost missed the second place—Mo's Crab Heaven.

[Although, do crabs really consider being eaten “heaven?”]

Set back from the road in an ugly yellow building with a few cars strewn about in the parking lot, it really didn't look that inviting. But we were hungry. This was local. And we were here.

Inside, the place was brightly lit. The tables were covered with butcher paper, and surrounded with fold-up chairs. There were a few people inside smashing their way through crabs. We were lead to a table (where I got to watch Formula-1 racing on the TV nearby) and both ordered the crab cakes.

The food was excellent.

During our meal, one of the cooks came out to talk to the patrons at the table behind us. In his hand was a live blue crab, which had been caught not ten minutes earlier in the Banana River out back. Talk about your fresh sea food.

Mo's Crab Heaven also gave out free Tootsie Rolls to all patrons. Free Tootsie Rolls!

Definitely worth seeking out.

[Aaarrrrg!]

Sunday, March 16, 2008

Another day in space

[That small building?  Four shuttle launch assemblies could fit in that small building …]

Our second day at the Kennedy Space Center.

Today was the Cape Canaveral: Then and Now, a tour covering the Cape Canaveral Air Force Station (aka Patrick Air Force Base). The Kenney Space Center is where all manned rockets are launched, starting with the Apollo Mission; Cape Canaveral, however, is where all the unmanned rockets are launched (with the exception of the Mercury and Gemini Missions, and Apollos 1 & 7).

Visiting SLC-5/6, where Alan Shepard, the first American shot into space, Bunny and I were struck at how primitive the computers where at the time. Very primitive.

[And the watch probably keeps better time too!]

We also learned that the technicians at SLC-5/6 were reluctant to actually, you know, push the button until Alan Shepard complained: “Why don't you fix your little problem and light this candle?”

[“Push the damn button already!”]

Unlike most of the rockets until then, Shepard's Mercury Redstone rocket didn't explode, and he rocketed into the history books.

[Dig the highly intuitive interface on the computers back then]
[With programs stored on high tech mylar strips]
[With the prices the government was paying, they got dedicated tech support]
[It takes this large cabinet to control a missile]
[Looks easy to repair though]
[WYSIWYG printers too!]
[Gives a whole new meaning to the term “hands on programming”]
[This is an actual program!]

With this level of technology, it's amazing we didn't lose more astronauts.

And speaking of, there isn't much left of SLC-34, the launch pad of Apollo 1.

[In memoriam: Virgil I. “Gus” Grissom, Ed White and Roger B. Chaffee]

It's not used much anymore as you can see (also, had Gus Grissom not died in that horrible fire, he might have very well been the one to say “One small step for a man, one giant leap for mankind”).


I forgot to mention yesterday that we had seen the IMAX film Space Station 3D. The 3D effects (done using polarized lenses and not the red/blue lenses one normally associates with 3D films) weren't that great, but that may have been due to improper polarization of the “3D glasses” I was using, but other than that, the film was an interesting look into the International Space Station. I was amazed at how messy it looked, what with wires and cables just strewn about haphazardly. It reminded me of some server rooms I've seen (in a subsequent conversation with Wlofie, this may be intentional, partially as things like wire wraps, wire guides and paneling add weight, which adds to launch costs (something like $20,000/pound)—also, when there's an emergency in space, you don't want to be fumbling around removing panels or wire wraps when every second counts).

So, today, after the tour, we saw the other IMAX film currently showing, Magnificent Desolation: Walking on the Moon 3D. This time the polarization was better and the 3D effects were less annoying. And I enjoyed this film as well. The computer-generated scenes on the moon were incredible and it really gave one the feeling of actually being there.

Afterwards, we hit the giftstore. I succumbed to the pressure and bought two books (The Case for Mars: The Plan to Settle the Red Planet and Why We Must and Entering Space: Creating a Spacefaring Civilization) and a freeze dried ice cream cookie (more on that in a later post).

After that, we finally left the Kennedy Space Center for home.


Notes on a conversation overheard at the gift shop at the Kennedy Space Center

“Can I get this, Mom? Can I, huh?”

“No.”

“It'll keep me quiet, and occupied and out of trouble and—”

“No.”

“But it'll shut me up.”

“Nothing ever shuts you up.”

“I'll pay you back!”

“No.”

“I'll pay you back even more!”

“You are so full of crap.”

“Awww Mom! sniff


That Darned Peg Game, Part II

I am phenomenally bad at the Peg Game, I realized as Bunny and I were sitting at a Cracker Barrel waiting for our dinner to arrive. My best attempt left three pegs.

My worst attempt (or, if you will, my best at doing my worst) left ten pegs on the board.

Ten!

That takes skill!

Friday, March 21, 2008

“Let me 'splain … No, there is too much. Let me sum up.”

Quick recap of the week so far.

Monday

Spent the day loading images off the camera and selecting which ones to post out of 200+ photos taken during my recent road trip to the Kennedy Space Center.

Tuesday

Spent the day dealing with email issues, and writing the monstrous posts for Saturday.

I was supposed to get with Smirk to move computer equipment and install a replacement core router, but he got swamped and rescheduled for Wednesday.

Wednesday

Spent the day dealing with email issues, and dreading the write-up for Sunday.

Also headed into the Data Center to help Smirk move a bunch of equipment and replace our core router with something better. Things go downhill, and we decide to call it a day and regroup on Thursday.

Thusday

Spent the day dealing with email issues, and headed back into the Data Center to finish up what we started yesterday. Got into the Data Center around 6:00 pm. We start moving equipment and hope that we didn't miss anything.

Friday

I left the Data Center around 1:30 am, after having to diagnose a customer's machine that isn't responding on the network. I tracked it down to a possible bad port on the new (new!) replacement router (which is why it took so long to track down—didn't expect a bad port).

Smirk warned me that he might call me in the morning if there are any issues, but hopefully, there aren't any.

Got a call from Smirk at 8:30 am. Turns out to be a minor glitch that is easy to fix. I contemplate going back to bed.

But before I can contemplate too long, Smirk calls back, with yet another email issue (it's bascially the same one that's plagued us all week) and yet another customer is having network issues, possibly due to all the work last night.

The networking issue is mostly resolved when I remove some agressive spanning tree filtering on the port (I thought there was no need to run the spanning tree protocol over that port since it's router-to-router, not switch-to-switch, but due to the actual network topology, it was switch-to-switch—sigh). The remaining issue is the severe lack of OSPF communications between our router and the customer's router.

The email issue is still on-going (more on that later).

Finally buckled down and wrote the write-up for Sunday, and this post.

And here we are …


The Email Situation

About that email issue

Our problems all stem from the greylist daemon I wrote. Or more specifically, the interaction between the greylist daemon and sendmail. Or even more specifically, the greylist daemon and the milter library.

As far as I can tell, the problem is: customer uses Lookout Outlook or Lookout, Exploit! Outlook Express, configured to use SMTP AUTH. Sendmail hands the authentication off to some other process, which okays it, then sendmail hands the request off to the greylist daemon, which, since it's coming from a foreign address, of course greylists it, and the customer gets an error message from Lookout Outlook or Lookout, Exploit! Outlook Express that says, “Try again later!”

And then we (or our resellers) get a call.

Sigh.

What I would like is for sendmail to skip the greylist daemon if SMTP AUTH is being used, but I'm not sure how to apply the clue-by-four to sendmail.

That's separate from the issue that spammers seem to be clueing in to greylisting and are finding ways around it …

Arg!

Saturday, March 22, 2008

Wherein I actually post a significant LiveJournal Entry …

No blogging here today, because I spent most of my blogging energies making my yearly post to LiveJournal, which was a long entry this year, as I muse on the lastest kerfuffle at LiveJournal and the difficulties of a decentralized version of LiveJournal whereby the punchline is “surprising at it may seem, that's what LiveJournal gives users with locked posts—a form of DRM.”

Sunday, March 23, 2008

Tracking script kiddies

YES!

Last month I wrote a program that wraps around the Perl executable, and all it does it copy files given to Perl, and then passes on control to Perl. I did this because we at The Office kept running into sript kiddie Perl scripts consuming resources on our servers.

Checking the process wouldn't reveal much—they always start in /tmp and would be owned by the web server process, so we knew how they were coming in, just not where (i.e. which site was exploited). Worse, these scripts would be started up, then deleted once running, so viewing said scripts was impossible.

Thus, by wrapping the Perl executable to record as much information about each running script as possible, we could gather information about how they might be getting in.

And tonight, we finally caught one! And better still—we know which site was exploited!

Now, begins the process of finding out which PHP script (sigh—it figures) is poorly written.

Oh, by the way, Happy Easter!


Security Myths

Let me introduce you to the six dumbest ideas in computer security. What are they? They're the anti-good ideas. They're the braindamage that makes your $100,000 ASIC-based turbo-stateful packet- mulching firewall transparent to hackers. Where do anti-good ideas come from? They come from misguided attempts to do the impossible—which is another way of saying “trying to ignore reality.” Frequently those misguided attempts are sincere efforts by well-meaning people or companies who just don't fully understand the situation, but other times it's just a bunch of savvy entrepreneurs with a well-marketed piece of junk they're selling to make a fast buck. In either case, these dumb ideas are the fundamental reason(s) why all that money you spend on information security is going to be wasted, unless you somehow manage to avoid them.

The Six Dumbest Ideas in Computer Security

The first two myths listed, “Default permit” and “Enumerating Badness,” are hard for me to accept since I basically believe in an open network. I'm a programmer by training, and I like playing around with stuff, and having a closed “default deny” attitude towards the network would make it too annoying for me to play work. I'm also lazy and just want things to work without having to configure a bunch of crap.

In his second myth, “Enumerating Badness,” he also talks about restricting execution of programs to those that are required to run. I doubt he's ever worked with something like SELinux. I have, and if it's ever running, I turn it off since it's a bitch to get anything working (and our support costs would go up as well as our customers try to install scripts and can't get them running).

But I'm also getting tired of clearing out script kiddies out of our servers. It might actually be worth it to adopt a “default deny” stance on things (but perhaps not as far as running SELinux—I don't think it's cost effective with our setup).

His advice on a rtificial ignorance is great though, and is something I would like to do. “Artificial Ignorance” in this case, is scanning through log files throwing out everything that is not of interest (read: “is a known quantity and can be ignored”); anything left over is by definition “interesting” and should be investigated. It would certainly beat the log summaries that LogWatch produces.

And some of the best advice on that page?

One extremely useful piece of management kung-fu to remember, if you find yourself up against an "early adopter" is to rely on your peers. Several years ago I had a client who was preparing to spend a ton of money on a technology without testing it operationally. I suggested offhandedly to the senior IT manager in charge that he should send one of his team to a relevant conference (in this case, LISA) where it was likely that someone with hands-on experience with the technology would be in attendance. I proposed that the manager have his employee put a message on the “meet and greet” bulletin board that read: “Do you have hands-on experience with xyz from pdq.com? If so, I'm authorized to take you to dinner at Ruth's Chris if you promise to give me the low-down on the product off the record. Contact, etc …” The IT manager later told me that a $200 dinner expense saved them over $400,000 worth of hellish technological trauma.

The Six Dumbest Ideas in Computer Security

Heh.

Monday, March 24, 2008

The Email Situation, Part II

I seem to be on a roll. I think I nailed The Email Situation. Several searches lead me to an email which pointed to the solution to the problem I was having. It wasn't a direct solution, but it certainly led me in the right direction to solving the problem with just a few lines of code:

/*---------------------------------------------------
; check to see if the user has authenticated, if so
; return OK and skip the rest of the processing (we
; hope)  
;---------------------------------------------------*/
  
tauth = smfi_getsymval(ctx,"{auth_authen}");
if (!emptynull_string(tauth))
  return(SMFIS_ACCEPT);

I've also made the latest version available for download.


Four months … I'm not sure if that's good or bad

It took about four months for comment spammers to reverse engineer my reverse captcha (not that it was all that hard, mind you).

Hmmm …

Looks like I'll have to play around with this a bit more then.

Sigh.

Update a few minutes later …

Let's see how long it takes them to figure this captcha out

Tuesday, March 25, 2008

Frozen snacks at -40°

Now, about that freeze dried ice cream cookie I bought. It's frozen to -40° (at which point both the Fahrenheit and Celcius scales intersect), then vacuum-dried, at which point, you no longer need to refriderate the thing. It's also very light, at an ounce of weight.

Eating it is a very odd experience. The cookie portion tastes like any thin crumbly cookie, but the ice cream is like eating a very fine, crunchy styrofoam, although it tastes much better than styrofoam, and it doesn't really look like styrofoam or have the consistency of styrofoam, but that's the closest thing I can think of. A tasty and very fine crunchy foam.

It wasn't that cheap though—$4.00. Oddly enough though, it's actually made down here in South Florida, just off Hillsboro Blvd at a place called LuvyDuvy Corporation. They don't sell individual items though (unless you want 100 or more units). For that, you need to buy it at a place called Mountain House, which is out of Oregon. There, it would only cost $2.65 (so I'm guessing it would be fairly cheap to buy 100 units from Luvy Duvy).

Heh. I find it amusing that I have to buy the freeze dried ice cream cookie, a product of a South Florida Company, from an Oregon company who ships it back across the country. And cheaper than if I get it from the Kennedy Space Center, which is just up the coast.


“The Intarwebs done broke. Fix it.”

Aaaaaaaarg!

Got this lovely bit of verbiage in a ticket today:

Subject
Email Issues

We have been receiving receive errors intermittently throughout the day. Please advise.

That's it.

Nothing more.

No “The email address alice@example.com is not receiving emails from bob@example.org.” No “Alice, at alice@example.com is using Outlook and cannot receive emails.”

Nothing.

Aaaaaaaaaaaarg!

I swear, I'm this close →← to just turning email off on all our servers and telling our customers to suck it up and use Gmail or something like it.

Wednesday, March 26, 2008

Backmasking Satanic messages

Via spin the cat is this cool mashup of Queen's Another One Bites The Dust and a religious sermon about the evil Satanic lyrics one hears when said song is played backwards.

And in a wonderful bit of synchronicity, from kisrael.com comes Backmasking, a webpage that allows you to hear 14 songs with supposedly backwards Satanic messages and play them both forwards and in reverse, as well as view the lyrics, both forwards and backwards.

Oooooh … spooky …

Friday, March 28, 2008

The silly situations I came across at work today …

Silliness The First

We're a webhosting company. We host websites. We also handle email for said sites. It's not uncommon for an address at a website we host to get spam. A lot of spam.

A lot of our customers have their email forwarded to their email accounts at their ISPs. A number of our customers use Comcast as their ISP.

A lot of spam comes to the customer's website email, which is then forwarded to their Comcast address. As far as Comcast is concerned, we're the source of a lot of spam. So they block us. As far as I can tell, this is an automatic thing on the part of Comcast.

Then our customers who use Comcast complain to us about not getting their email. So we have to send a request to Comcast to get our server unblocked.

This happens so often (at least a few times a week) that it has now been automated on our end. (Aren't computers wonderful?)

So, from now until the end of time, Comcast will automatically block our server because of spam. When our server detects this, it will send a request to Comcast to remove said block. Comcast will automatically comply, only to automatically block our server a while later because of spam.

Silliness The Second

I found the following in a script-kiddie script on one of our servers:

#!/usr/bin/perl
# VulnScan v7 -Final- By Morgan
#
# Note:
# DO NOT REMOVE COPYRIGHTS ...
#

“Morgan” might want to go after k1n9k0ng for copyright infringement, unless of course, “Morgan” was the one who removed the original copyrights, then k1n9k0ng should go after “Morgan.”

Or go after PcWoRm, for removing the copyrights altogether.

Silliness The Third

I search for “VulnScan v7” and come across a discussion of it at the Blackhat Forums. Of course, not being a member, I can't read the page, but Google can.

Monday, March 31, 2008

CMTP, because it's no longer SIMPLE

I give up.

I have no idea how email even works anymore.

One customer keeps sending us notification messages—you know, the ones that have:

**********************************************
**   THIS IS A WARNING MESSAGE ONLY         **
** YOU DO NOT NEED TO RESEND YOUR MESSAGE   **
**********************************************

right in the middle, so of course they can't see it. I have no idea what email client they use (but I'm afraid the answer to that will be Lookout Outlook, or even worse, Lookout, Exploit! Outlook Express), nor how their email client is configured.

I suspect this is related to the server in question being under a heavy system load—Sendmail will stop processing emails when the load gets too high. That much, I'm sure of. What I'm not sure of is if Sendmail stops accepting incoming connections, or does it stop sending out emails as well. Or is that a configuration option?

And how does the <shudder> control panel Insipid fit into all this mess?

And let's not forget that I shoehorned the greylist daemon into this mess (and here I thought I fixed a problem—maybe not? Who the XXXX knows? I certainly don't).

If anyone can troubleshoot this problem (preferably with a large caliber gun), please let me know, okay?

Tuesday, April 01, 2008

Hey! What happened to the Ides of March?

Oh man, is it April First already?

XXXX!

I never did get around to mucking with the stylesheets this year (unlike the previous four years).

Sigh.

Maybe next year.


Compression fever

It's one thing to trick someone on April Fools' Day, but to trick yourself really takes talent.

I have that talent.

Sigh.

I started this last week and didn't suspect a thing.

I came across The Hutter Prize, which will pay up to 50,000€ to compress a 100,000,000 byte file to less than 16,481,655 bytes (which includes the decompression program). The rules are straightforward, and to me, it certainly seems easier than The Netflix Prize.

At the very least, it couldn't hurt to play around a bit.

So last Thursday I downloaded the file to be compressed and played around with it. The file itself is nothing more than Wikipedia entries wrapped in XML. The XML only makes up 2.4% of the file—the rest is text (13.5% is nothing but the space character; 8% is the letter “e”).

Friday I started coding. Nothing difficult and it was pretty straightforward (although while the algorithm for Huffman encoding is pretty simple, writing it was surprisingly difficult; it took about five attempts before I was happy with the code). I did a few benchmarks against gzip and bzip2 and was surprised with the results:

My Sooperseekrit compression algorithm vs. gzip and bzip2
ProgramSize of archive
orginal file 100,000,000
gzip 36,445,248
bzip2 29,008,736
my attempt 19,774,963

While not less than the required 16,481,655 bytes, it is in the ballpark, and I was quite surprised to beat the snot out of bzip2.

Not bad for a few hours of work.

So today, I'm hacking around with my program when I notice something odd—some of the Huffman encodings are the same.

That's not a good sign—each encoding should be unique. It takes a while (it takes almost 7½ minutes to compress 100,000,000 bytes with my program) but I find the problem—a bug in the encoding routine. Building the Huffman encoding table was fine—it was reading the encoded values that was buggy (and dropping bits).

How buggy?

My fixed Sooperseekrit compression algorithm vs. gzip and bzip2
ProgramSize of archive
orginal file 100,000,000
gzip 36,445,248
bzip2 29,008,736
my attempt 35,947,593

Um … yeah.

It's not the first time my hopes for vast fortunes were dashed because of a bug fix.

Sigh.

Wednesday, April 02, 2008

Peer-to-Peer networking was a reality, and can be yet

I do see NAT getting pushed further and further out into the cloud, which can (and does) disconnect people from important places like work and home. At some point the frog is going to roast in the boiling water.

I had a public IPv6 discussion in australia recently. Click there for the full discussion. Let me reprint parts:

Two recent examples of NAT is BAD:

1) A friend of mine had a video monitoring system on his storefront in San Juan Del Sur. He was behind quadruple NAT—his own, and the wireless provider there (of the 8 or so ISPs there, only one provides real ip addresses). His house, 1km away, had a different provider, different NATSIP between the two locations never worked, he's never got a working vpn, and a few other difficulties like that—but the real kicker: One day—he got robbed—the perps stole everything—including some of the video monitoring system—and because he couldn't monitor his site from his house 1km away, he has no idea who it was.

2) I was trying to get universal internet access out to 26 barrios in a 40 mile wide area—so, for example, a teacher in one location could video out to multiple locations—but again, due to the all the service providers involved, doing NAT, proved utterly impossible.

mirror.internode.on.net and IPv6

DHCP, IPv4, home networks, and IPv6 … with DNS

I agree with Mike here that NAT is eeeeeeeeeeeeeeevil and has damaged the Internet (not as much as Microsoft has done, granted) to the point where it's barely a peer-to-peer network.

I do remember a time, back in the 90s, when every computer on the Internet was a true peer of every other computer on the Internet. I wanted to communicate with someone? My communications went from me, to my computer, to their computer, to them. There was no third party like AOL or GMail arbitrating our conversation (I remember at the time, the IRM department at FAU wanted to control all email and at an interdepartmental meeting, about half the departments said “Hell no!”).

Gone are the days when I had a block of public IP addresses for my home network (once in the 90s, and once just a few years ago). Now, I have to decide which computer gets ssh access from outside, and which gets HTTP access.

IPv6 looks to be a solution, bringing back true peer-to-peer communications, and the work Mike is doing is inspiring me to play around with IPv6 more than I have (which isn't all that much).

Well, that, and free porn

Friday, April 04, 2008

“Bacon! Is there nothing it can't do?”

I'm sitting at my desk luxuriating in the olfactory bliss of Bacon Salt. Three small bags worth actually, original, hickory, and peppered, ready to be taken to Casa New Jersey to be consumed by an appreciative audience.

Monday, April 28, 2008

Funny how I haven't seen this anti-spam technique bandied about

The past month has been a continual fight with email. It got to the point where I sat down and designed an entirely new email system in the hopes that it would stop spam once and for all (based upon some ideas from Dan Bernstein) and since I've been mulling over it, trying to find flaws in it.

And find I did.

The system involves three players, the mail client (MC—an MUA in SMTP talk), an outgoing mail server (OMS) and an incoming mail server (IMS—under SMTP, there's a single server, called an MTA, that handles both). There's one protocol between an MC and an OMS, another protocol between an MC and an IMS, and two protocols for communication between an OMS and an IMS. There were also restrictions about what can talk to what; an OMS can only talk to the designated IMS for a domain (much like sending email to an MX record). Conversely, an IMS can only accept connections from a designated OMS from the sender domain (much like what SPF tries to do). An MC needs to be authenticated to the IMS/OMS (much like you need authentication for POP and IMAP to receive email, and some sites now require SMTP AUTH for outgoing email).

Yes, I'm glossing over a lot of details here, but that's the overview. ISPs would still filter mail client traffic, much like they do now. The enforcement of the sending server would pretty much stop joe jobs, and using a notification scheme with the mail spooled on the sender side would eliminate most, if not all, bounce messages.

So far, it seemed like a great scheme.

Until I realized that spammers would then just register tons of domains (or cut deals with domain name registrars to use “just expired but we'll keep it active until we can sell it again” domains) to send spam.

So the only thing I really did was find a way to stop joe jobs; it doesn't really stop spam all that much, and thus, the flaw.

But one remark from Wlofie (I ran the whole system past him a few days ago) lept out at me—server signatures (one of the optional bits in one of the protocols was a digital signature of the sender; Wlofie suggested I include a digital signature of the server as well). We already have server signatures for websites. And when I realized that, I realized a solution for spam. And one that can be adapted with our current email system.

First, revise the SMTP specification. Remove literal network addressing—that is, the ability to send email to an arbitrary IP address is no longer allowed. If the host portion of an email address does not have an MX record, the email can't be delivered. On the recpient side, make the use of SPF records mandatory, and they must be checked. Also, revise the SPF specification to remove the “SoftFail” and “Neutral” results.

This last step is the controversial one (as if the others weren't already)—SMTP servers must have a signed secure certificate and the protocol must be run over an encrypted channel, similar to how HTTPS works. And if either side has an expired or revoked certificate, the other side must refuse email.

What does this gain us?

Accountability.

Getting spam from a few hundred domains? Find out who sold them the signed certificate and send the complaint there. After a few hundred (thousand? Hundred thousand?) complaints and the easiest way handle the situation is to revoke the signature. Sure, the spammer can try bribing the certificate authority, but that's exactly what's missing from today's anti-spam techniques—hitting the spammer where it hurts! And if the spammer tries to use a self-signed certificate? Who would trust it?

Sure, it's an expense to get a signed certificate, but in today's reality, you are either an individual using someone else's server for email (Gmail, Yahoo, your ISP) or you're a business and can afford it (as part of your hosting bill, or just outright, but hey, it's a business expense and can be written off).


I must have forgotten my cardboard programmer that day …

D'oh!

Smirk called today, saying a customer had a problem sending mail with one of their PHP scripts. The server in question was running my PHP/sendmail wrapper and the testing that Smirk did showed that the PHP mail() function wasn't returning anything! Funny, for a function that supposedly returns a bool

With Wlofie playing the part of cardboard programmer, I did some testing, found that indeed, there was a problem—at first, it looked like the system was terminating the program with random signals. One time it would terminate with a SIGXFSZ, then with SIGTTIN, then with SIGWINCH!

I then stared at the code until I bled …

else /* parent process */
{
  pid_t cstat;
  int   status;

  cstat = waitpid(child,&status,0);

  if (WIFEXITED(cstat))
    rc = WEXITSTATUS(cstat);
  else
    rc = EXIT_FAILURE;

  unlink(tmpfile); /* make sure we clean up after ourselves */
  exit(rc);
}

It was then i saw my mistake—I was checking the wrong variable!

Sigh.

The type of mistake a statically typed language should catch. And before you say “unit testing” my tests were basically “did the email go through? Yup? Then it works”—the thought to check the return code of my program as a whole didn't occur to me (hey, the email got through, right? that meant that it worked).

I changed WIFEXITED(cstat) to WIFEXITED(status) and WEXITSTATUS(cstat) to WEXITSTATUS(status) and it worked.

I also checked PHP, and for the life of me, I can't figure out why it was returning undef, but then again, PHP is the scripting language du jour so it may be I didn't check the precise version we're running.


Chocolate the old fasioned way

For Bunny, who loves chocolate—making your own from scratch (link via Flutterby).

Wednesday, April 30, 2008

Now that I think about it, I doubt spam will ever go away …

I was talking with G, our Cisco consultant about a networking issue I had when the talk turned to spam (as that's the root cause of all our email problems at The Company, which currently comprise half the issues in our trouble ticket system). One of the surprising bits of information G conveyed was that spammers are now using /16 network blocks for spamming.

A /16 network block is 65,636 consecutive IP addresses and are rather hard to come by (the smallest block ARIN will hand out is a /20, which gives 5,120 consecutive IPs and even then, you have to pay quite a bit and justify the usage of said block). The spammer then runs through the /16 (probably using 256, or a /24, the smallest routable block [1] at a time) until it's been blocked, and then sells it, or returns it; the spammer then obtains another /16 to abuse.

G also talked about other companies providing anti-spam techniques (like Barracuda) and the more he talked, the more I realized that spam is never going away—there's too much money to be made, by both sides.

Hypothetically speaking, if a spammer approached us and offered tons of money to use some of our IPs (we actually have a few /20s) to spam, if the money was good enough … well … the money would have to be mad money … and even then … well … everybody has their price. Anyway (this is a hypothetical situation) we made money to facility spamming. The spammer obviously makes money somehow or he wouldn't be doing this. The anti-spam companies like Barracuda make money by offering spam fitering services that need to be continuously updated.

So, what incentive is there for the commercial anti-spam companies to see spam eliminated completely? (as in, spammers never spam anymore)

Hmmm … sounds like anti-virus companies (not that I'm saying that anti-spam companies spam, but that their incentives are centered around staying in business, and totally eliminating spammers is not conducive to their remaining in business).

I only hope this is my more cynical side talking here, and not reality.

  1. Technically, the smallest routable block consists of four consecutive IP addresses (a /30). What I mean by “smallest routable block” in this context are routes that are accepted by the backbone routers.

Stone knives and bear skins, Part II

I briefly mentioned “Project Leaflet” before, with respect to separating logic, language and layout of an application (in this case, a PHP web application), possibly with the use of an IDE.

But the problem goes deeper—what if you need alternative versions of the language? Or logic?

In C, this is handled by conditional compilation:

#ifdef MSDOS
  fp = fopen("C:\\temp\\foobar","wb");
#elif defined(VMS)
  fp = fopen("SYS$USERS:[TEMP.FOOBAR]","wb");
#elif defined(UNIX)
  fp = fopen("/tmp/foobar","w");
#else
  fp = fopen("foobar","wb");
#endif
  if (fp == NULL)
  {
#if defined(UNIX)
    fprintf(stderr,"could not open /tmp/foobar\n");
    return(ENOENT);
#elif defined(MSDOS)
    fprintf(stderr,"could not open C:\\TEMP\\FOOBAR\n");
    return(ENOTFOUND);
#elif defined(VMS)
    fprintf(stderr,"cold not open SYS:USERS:[TEMP.FOOBAR]\n");
    return(ENOFILE);
#else
    fprintf(stderr,"could not open foobar\n");
    return(EXIT_FAILURE);
#endif
  }

As you can see, this method leaves a lot to be desired, but still, it's much better than what you get with PHP.

One of the design requirements for “Project Leaflet” is that it can use either MySQL or PostgreSQL. I've already gone through the code and abstracted out the database calls on the (okay, laughably incorrect) assumption that the SQL statements themselves won't require changing.

Ha ha.

Now granted, for the most part, the SQL statments are simple enough that either MysQL or PostgreSQL can run them without problem. But there are a few rough spots, like:

$query = "SELECT "
       . "  *, "
       . "  DATE_FORMAT(sent, '%b. %e, %Y at %l:%i%p') as datesent "
       . "FROM pl_emails WHERE id=$id";

PostgreSQL doesn't understand DATE_FORMAT(); no, it wants TO_CHAR(). To make things even more amusing, the format string is completely different:

$query = "SELECT "
       . "  *, "
       . "  TO_CHAR(sent, 'Mon DD YYYY at HH12:MMam') as datesent "
       . "FROM pl_emails WHERE id=$id";

So right now I'm looking at two codebases, separated by a common language. Sure, there are any number of methods to merge the two into a common codebase:

//---------------
// Variant 1
//---------------

	// would this even work, as it requires 
	// the use if $id ... 

$query = $db_view_query['all_by_date'];

//-----------
// Variant 2
//-----------

if ($db === "MySQL")
{
  $query = "SELECT "
       . "  *, "
       . "  DATE_FORMAT(sent, '%b. %e, %Y at %l:%i%p') as datesent "
       . "FROM pl_emails WHERE id=$id";
}
elsif ($db === "PostgreSQL")
{
  $query = "SELECT "
       . "  *, "
       . "  TO_CHAR(sent, 'Mon DD YYYY at HH12:MMam') as datesent "
       . "FROM pl_emails WHERE id=$id";
}
else
{
  // -------------------------------------
  // love the way the language separation 
  // was done ... 
  // -------------------------------------

  die ($lang['a_horrible_death']);

//----------------
// Variant 3
//----------------

$query = "SELECT "
       . "  *, "
       . $dbdatefunct . "(send,'$dbdateformat') as datasent "
       . "FROM pl_emails WHERE id=$id";

Each solution being worse than the previous one. At least C has the decisions being done at compile time; I'm stuck with runtime decisions, or with very gross self-modifying code (variant #3—yes, that's what that is, self-modifying code).

As it stands right now, I have two branches of the code, a MySQL version and a PostgreSQL version, and I'm wavering between keeping them separate or merging the two, and the “keep them separate” faction is winning. That's because I'm currently using git, which makes branching a no-brainer (no, truly—switching between branches is trivial and takes no time at all; yes, it's a bit clunky trying to keep a central repository using git, but the branching is worth the clunkiness). And git's merging capabilities means that propagating fixes between the branches is easy as well (for fixes that apply across all branches, obviously). git comes very close to the fine-grained revision control I talked about.

So, not only do I want find-grained revision control, but a way to say “these changes I'm making apply to all the branches, and these changes only to this branch over here.”

Friday, May 02, 2008

Navel-gazing on my unwillingness to learn a software package

It was a simple request at the Weekly Company Meeting: “Can we monitor the number of SMTP connections to our mail servers, and have it graphed in Cacti?” Breaking it down, the answer appears to be yes, and I have no XXXXXXX clue.”

And that is bugging the XXXX out of me.

The first bit? Pretty easy actually.

By default, our servers are already tracking SMTP connections via iptables, and it's a simple matter to pull the number out:

iptables --list -vnx \
	| grep 'state NEW tcp dpt:25' \
	| awk '{print $1}'

Print the current state of iptables, pull out the line accepting incoming connections to the SMTP port, and print the first column, which is the number of packets (and thus, the number of connections).

Next up is to deliver this information via SNMP. We're using net-snmp and it indeed, does make it easy to export information via SNMP. Take the above command, place it into a file (thus making it a shell script). Then, in the SNMP configuration file:

exec  .1.3.6.1.4.1.2021.9004 snmp_connection /root/bin/smpt_connection

Restart the SNMP server, and do your query:

GenericUnixPrompt> snmpwalk XXXXXXXXXXXXXXXXXX .1.3.6.1.4.1.2021.9004
UCD-SNMP-MIB::ucdavis.9004.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.9004.2.1 = STRING: "snmp_connection"
UCD-SNMP-MIB::ucdavis.9004.3.1 = STRING: "/root/bin/snmp_connection"
UCD-SNMP-MIB::ucdavis.9004.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.9004.101.1 = STRING: "62191"
UCD-SNMP-MIB::ucdavis.9004.102.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.9004.103.1 = ""
GenericUnixPrompt>

So okay, the value we want is a string, and not numeric, but at least we can query it.

Now we get to Cacti.

Eight hours later and I've yet to get a graph out of Cacti.

I found a page that describes a similar setup, but check out section 3C and the XML file that's created.

Now check out the SNMP Query XML Syntax for Cacti.

I don't fault you for feeling confused. I'm a XXXXXXXXXX programmer who writes CGIs in C for fun, and I got horribly confused.

I can't quite figure out how Cacti works. Oh sure, it's easy to install, and monitoring devices isn't all that difficult (I find it rather randomly clunky myself) but adding a new query to Cacti?

If there's a straightforward way of doing that, I haven't found it.

Somehow “Data Queries” are tied to the “Data Templates” although what that connection is eludes me. It seems like you can specify a single SNMP query in a “Data Template” but maybe not, because why have an XML file for the SNMP query?

And the “Graph Templates” tie into this mess as well, although I'm still puzzled at that one.

And the flow is weird—I'll be in the “Data Query” section, obstensibly making a change to a “Data Query” and suddenly find myself in the “Data Template” area after saving a change. Or sometimes in the “Graph Template” area.

Never the “Host Template” area though.

I'm finding it a horribly confusing process and it's bugging me that I can't figure this out. I want to quit and say to Smirk, “Sorry, not possible,” and that is bugging me, because I know it is possible, probably even with Cacti if I just knew what to do.

I know what the problem is—my mental model of how this is supposed to work doesn't match the mental model of the Cacti developers. And without that clear mental model, the whole process under Cacti just doesn't make sense to me.

I had the same problem with C when I first started using it. I had been programming for years in Assembly, and there were certain cases where a problem would have been trivial in Assembly but I was utterly lost for a solution with C. Of course, over time, I gained the ability to “think” in C, and now what was once problematic in C (but not in Assembly) is now trivial in C.

But that took a few years though, and at least with C, the knowledge is still useful. I'm doubting that the time I spend with Cacti will have the same benefit over the long term.

And that's bugging me too, mainly because it seems like I'm justifying not learning it at all.


Things that go “Vroooom!”

To take my mind off some troubling thoughts, here's something for Gregory, who loves motocycles, airplanes, and space exploration: the ultimate crotch rocket.


“… then sing again for the ever onward IBM!”

I. B. M., Happy men, smiling all the way.
Oh what fun it is to sell our products night and day.
I. B. M., Watson men, partners of T. J.
In his service to mankind—that's why we are so gay.

I. B. M., Watson men, International line:
Proud T. M.—Dayton Scale— and I. T. R. so fine
I. B. M. goods and men, leaders all the time.
Saving money, time and men, in every land and clime.

Ever Onward and other classic IBM Company Songs

And yet another silly link to take my mind off things—this time, a collection of those classic IBM company songs, from a time when employees sang these without irony.

And again, this silly link is for Gregory, who also loves his IBM.

Monday, May 05, 2008

And apparently, I missed it by one year …

I must not have gotten the memo, because this came as large surprise.

Yes, that is downtown Rachel, Nevada (although to find it on Google Maps you need to search for “Tempiute, Nevada” (that being the town's name up till 1978).

And the only explanation I can find for this—aliens with a predilection for fried chicken.

Monday, June 09, 2008

The time, where did she go?

My blog became too much like work.

And since a) this is supposed to be fun, and b) I'm not getting paid for this, I just kind of stopped updating this for … hmm … looks to be yet another month.

This year I've been rather sporadic with the updates here.

The problem—basically, I'm lazy. The significant entries take forever to edit so I'm inclined to do the quick and dirty entries that consist of nothing more than a link to a page but that feels like such a cop-out that in the end, I just didn't do anything.

That, coupled with the disruption in workflow for the blog. Prior to switching DSL providers to The Monopolistic Phone Company, I would email my posts (I ran my own email server at Casa New Jersey). It was easy—just send the post to XXXXXXXXXXXXXXXXXXXXX and that was that. After the switch (because The Monopolistic Phone Company blocks outgoing email connections), I would have to copy the entry (as a file) to the webserver, log into the webserver, and run a command to add the entry, then delete the file afterwards (since it was no longer needed). Four steps instead of one, which was just enough friction to stop the posts.

Sure, I could have used the web interface, but a) I hate editing text in a web browser and b) the web interface doesn't work anyway ( (I'm not sure if it's a bug in Apache or not, but it does have to do with how mod_blog is configured in Apache).

But really, it comes down to laziness, and especially laziness in not looking at the email problem futher. Above, I said that The Monopolistic Phone Company blocks outgoing email. Well, yes, but not entirely; you can still initiate an outgoing SMTP connection but only to The Monopolistic Phone Company email server. The email server at Casa New Jersey wasn't configured to do that. Nor did I think to configure my email server to send mail via The Monopolistic Phone Company email server.

Sigh.

And that has removed just enough of the friction to get the posts flowing again.

Oh, that, and several readers asking if I was dead.


A nuclear family

As a real young kid, I thought my Dad's family was large. I spent the summers at his parents' house and thus got to know his four younger sisters and their families (two were married at the time, each having two kids). As an only child, this, to me, was a large family, all living within biking distance of each other (one sister just a block and a half away from my grandparents' house, which was cool because they had a pool).

My Mom's side of the family though, seemed small. Partly because Mom's parents lived so far away in exotic Florida (I should note, that at the time, I was living in Brevard, North Carolina) and her only brother, lived somewhere in Michigan. Granted, he had five kids, but somehow, his family didn't seem that big.

All that changed when Mom and I moved to South Florida. Suddenly, Mom's side of the family exploded with people.

To begin with, we moved in with my Mom's aunt Freddie (making her my great aunt), sister of Mom's Dad. And over a few short years I met a great uncle (and for the remainder of this post, if the relation is via marriage, I'll add “in-law”; things are going to get crazy in a bit), Freddie's four kids (Mom's cousins, my first counsins once removed) and their families (first cousins once removed-in-laws, second cousins), parents and siblings of my first cousins once removed-in-laws (told you this was getting crazy) and my great uncle's kids and their families.

And then things got crazy what with divorces and what not. I mean, what do you make of the fact that my Mom flew out to Arizona to attend her father's sister's son's ex-wife's husband's birthday party? (okay, I could have simplified that as my Mom's cousin's ex-wife's husband's birthday party, but it wouldn't sound as crazy; then again, the fact that my great aunt Freddie went to the same birthday party (which would make it her son's ex-wife's husband's birthday party) just adds to the craziness).

After Mom died, I pretty much lost contact with Mom's side of the family. Everybody either lived in Michigan, Arizona or Montana, and I stayed in Florida. And there's some regret in that, if only because I never did get Freddie's recipe for cornbread (although I did get her recipe for fried chicken).

A cool thing happened on Sunday though—I received an email from my second cousin Rick Hill (a grandson of my great aunt Freddie). Just like that, right out of the blue, and I've been spending the past day or so getting caught up with (nearly) everybody. I was, however, sad to learn that Freddie died last October.

Tuesday, June 10, 2008

A job in a place that's even flatter than Florida …

But his biggest problem is that he can't find help. He says farmers in his area have been trying and trying and trying. They just can't find anyone to move to a small town where it is four hours to the nearest decent airport. He thinks he could hire two, maybe four people full time.

Must be the wages? “Can't be that,” he says, “I will nearly pay whatever it takes … with overtime, they could make almost $80,000 a year.” On top of that, he will pay all the health care coverage and let people live in one of the houses he owns in his local small town, “just because I thought it would help me attract a family.” Beef is free too, and he doesn't need to go to Costco to buy it for the lucky family, either.

Help Wanted: Over $50K/yr+Free Health Care+FREE HOME and No Takers

Incredible.

The only down sides?

18–20 hour days at crunch time (planting, fertilizing, and havesting) and it's in the middle of Kansas (hmmm … he doesn't mention tornado insurance). But the fact that Craig the Farmer is barely managing a 3,000 acre farm by himself means that the work must pretty much be fairly automated, and probably needs someone just in case, like pilots on modern aircraft. In fact, Craig says:

Skill? “I can teach them easily,” he says. “My equipment is goof proof, it has to be.” By that, he means that an employee need not even know how to drive straight, the tractor is guided by a sophisticated guidance sytem hooked into three satellites.

Help Wanted: Over $50K/yr+Free Health Care+FREE HOME and No Takers

Sounds like even the tractor could be automated. Heck, if there's high speed Internet connectivity, I might think about it—especially if I could computerize the tractor.

Then again, there is that tornado thang …

(And some comments about the job … )

Update Wednesday, June 11th, 2008

Spring found follow-up post about the job.

Figures there would be a tornado involved …

Wednesday, June 11, 2008

“Close only counts in horseshoes and global thermonuclear war”

“It's a piece of cake,” I said.

Last night, Bunny and I were watching a guilty pleasure, Design Star. One of the challenges for the 39 finalists (for the nine spots on the show) was to make a simple square wooden frame. It was amazing to watch the contestants. A few looked like they've never seen, much less worked, with a compound miter saw.

“It's harder than it looks,” said Bunny.

“Phshaw,” I said. “Five cuts at 45°. Zip zip zip, you're done.”

“See that frame right there,” she said, pointing out a wooden frame above us. “See the lower right corner?”

“Yes,” I said. Looking closely, I could tell the frame there didn't quite match up perfectly, but you had to look closely to tell.

“My brother did that, and even though he does that for a living, even he sometimes has problems.”

“Aw, it can't be that difficult.” I pointed back to the TV, where yet another one of the contestants had managed to nail the non-squared frame to the workbench. “In fact, I want to try it tomorrow.” (Bunny has a garage full of wood-working equipment)

“Tell you what,” she said. “If you get it perfect on your first try, you won't have to cut the lawn.” Normally, she cuts the lawn, but she's been recovering from a medical foot procedure.

“Sounds good to me.”

Today.

We enter the garage. Bunny selects a long 1×3. I place it on the compound miter saw. Cut flip slide cut flip slide cut flip slide cut flip slide cut done. Lay the pieces out on the floor:

[Houston, we have to mow the lawn]

Oh.

“See, I told you it was harder than it looks,” said Bunny.

I align the pieces together, and it appears that I didn't quite cut them all to the exact length—maybe a variation of about a millimeter or so (about 1/32 of an inch for the metrically impaired), and that was enough to mess it up.

“Not bad for not having a jig though,” said Bunny. “And that would have been close enough to pass that challenge on the show.”

“So,” I said, looking about the garage, “where's the lawn mower?”

Thursday, June 12, 2008

Prejudicial pandering or subtle satire?

But the really disturbing aspect of the McFaddens' lifestyle is that they are far from alone. Six million Britons are living in homes where no one has a job and “benefits are a way of life”, according to a report by MPs. Shock figures also revealed that 20,000 households in Britain are pocketing more than £30,000 a year in state benefits.

With thousands of children growing up in families where their parents and grandparents have never worked, a senior government adviser warned this week of a “terrible legacy” of youngsters who had no expectation of ever getting a job.

Sue herself is defiant. “People don't understand how hard it is to keep a family like this going—no wonder we can't work. How could I go out to work with all these children at home? Local people call us scroungers and that is so unfair. We need the money to keep the family going.”

Meet the families where no one's worked for THREE generations—and they don't care

I came across this article about welfare queens living in England and I just couldn't believe what I was reading—the comments of these people on the dole were so outrageous (“I just wanted to be at home and live off other people”) that this had to be satire, right?

Right?

Then again, maybe not.

It's hard to say.

I had to ask Wlofie if he knew anything about The Daily Mail. I mean, for all I know, it could be the British equivalent of The Onion, only more subtle and a bit drier.

Turns out, not quite—according to Wlofie, it's a step or two above the tabloids, if that. But that still leaves the question of whether this is a paper pandering to the prejudice of the readers, or a paper subverting mainstream society via satire.

Friday, June 13, 2008

Now why would they do a silly thing like that?

Cuba is to abolish its system of equal pay for all and allow workers and managers to earn performance bonuses, a senior official has announced.

Vice-Minister for Labour Carlos Mateu said the current system—in place since the communist revolution in 1959—was no longer “convenient”.

The minister pointed out that the current wage system sapped employees' incentives to excel since everyone earned the same regardless of performance.

Via Flares Into Darkness, Cuba to abandon salary equality

Fidel gets sick and hands control of Cuba to his brother, and the place goes to Hell. Next thing you know, they'll be allowing private ownership to the means of production, and pretty soon—BAM! You get a ton of greedy Capitalistic pigs running the place.

And of course, it's the fault of the United States for being the only country in the world with a trade embargo with Cuba

Saturday, June 14, 2008

Framed

About that frame

I gave it some thought, and the best and quickest way I can see making a frame is to somehow get all four pieces together into a single block that can be cut at once. If there was only some way of strapping the four pieces together …

[The Gang of Four in a “Group Pattern” …]

Well yes, blue masking tape will work just fine to hold the pieces together while we cut the ends …

[Bzzzzzzzzzzzzzzzzzzzzzzz]

Of course, it's still not quite that simple, because you have to make sure the blade is at a precise 45° angle, and that took a few tries to pin down, so to speak.

[A frame and a bunch of shims]

Granted, the frame is now a few inches shorter than originally, but hey, not as misaligned as previously.

If only I had thought of doing that first


Kung Fu Panda

Spring wanted to take us all to see Kung Fu Panda and asked if I wanted to go along. Normally, I'm not one to see films and I usually have to be dragged kicking and screaming, but the one commercial I saw for the film, involving Po the Panda fighting his master with chop sticks over some food, intrigued me enough to relent.

And I must say, it was a very enjoyable film. Sure, predictable enough, but the action sequences were incredible—the prison escape scene (which isn't a spoiler, because without it, there isn't a film), the aforementioned chop stick fight, the bridge fight (can nothing stop the bad guy?) up through the final fight (“skadoosh”) are all very well choreographed.

It was also quite funny, and yet without a ton of pop cultural references that have plagued Disney and Pixar movies for years. That alone made it quite refreshing.

The artwork during the opening sequence and closing credits was also incredible; I almost wish the entire film was done in that style (as we adults were sitting at the end of the film, watching the gorgeous art work, as The Older was trying to get us to leave, because “the ushers were cleaning up the theater”—heh).

Well worth watching (especially through the credits—there's a small bit at the very end).

One thing about the film bugs me, and it's not about the film per se but the genre in general. Not the kung fu genre but the whole “complete newbie who gains complete fighting mastery through a training montage” genre (which again, isn't spoiling anything since that's the point of the film). Except for Po, the Panda, all the other major characters have been training all their life in kung fu, yet it's Po, who never fought in his life, that needs to save the day, after a very short training regimen (it's not made clear in the film exactly how long he trains for, but it comes across as a few days, maybe a week or two at best).

I have to wonder what type of message is being sent with this film—train all your life for one single purpose, and lose out to an earnest, yet bumbling, amateur. No wonder just about every other character in the film is upset (both good and bad).


It's not even in the “It's so bad it was well worth the price” category …

M. Night Shyamalan's latest movie, The Happening, is not merely bad. It is an astonishment, so idiotic in conception and inept in execution that, after seeing it, one almost wonders whether it was real or imagined. It's the kind of movie you want to laugh about with friends, swapping favorite moments of inanity: “Do you remember the part when Mark Wahlberg … ?” “God, yes. And what about that scene where the wind … ?”

The problem, of course, is that to have such a conversation, you'd normally have to see the movie, which I believe is an unreasonably high price to pay just to make fun of it. So rather than write a conventional review explaining why you should or shouldn't see The Happening (trust me, you shouldn't), I'm offering an alternative: A dozen and a half of the most mind-bendingly ridiculous elements of the film, which will enable you to marvel at its anti-genius without sacrificing (and I don't use that term lightly) 90 minutes of your life. As this is intended to be an alternative to seeing the actual film it is, of course, overflowing with spoilers. Those who still intend to see the film despite my warnings should probably stop reading now; those looking for a more typical review should stop by www.rottentomatoes.com and take their pick. For the rest, onward:

Via Instapundit, The Movie Review: ‘The Happening’

And now a movie I really don't want to see—“The Happening”. After reading the spoiler-laden review (because I'm like that—I don't mind spoilers) I have a few comments about the film, but because someone out there might want to see this sans spoilers, I'm putting my comments about The Happening on a separate page.

Update on Monday, June 16th, 2008

In fact, it's worse than I thought (link via Columbina).

Sunday, June 15, 2008

Chromatic scales and other painful things

The Younger has been taking violin lessons the past few weeks, and today, Father's Day no less, is the day of the Big Recital.

Oh joy.

He's been taking the lessons at a local church just up the street. The only reason I mention it being a church, frankly, is because of the odd banners they had hanging in the main hall. What I saw was an homage to the Whitley Streiber Grey Alien Brigade, what with their flowing golden robes and what not. Wlofie saw flying rats pidgins flying into a cooking fire.

Go figure what the church was trying to convey.

As we entered the hall I could hear the students tuning up their instruments. It was only after a minute that I realized they were not, in fact, tuning up, but were practicing (why else would the conductor be up there conducting?). A few more moments of listening to the chromatic chords being struck and I recognized the tune—George Gershwin's Rhapsody in Blue, although it sounded more like Rhapsody in Wincing.

I guess that's the downside of a recital of non-professional-seeking music students.

Ouch.

The Younger's father had just arrived from Wyoming, and the plan was to stay until The Younger had finished performing, then both he and his brother The Older would then leave with their father, heading back to Wyoming for the summer. And since he had a tight schedule to keep, we left right after The Younger (and the rest of the beginner's class) performed.

At least, that's our excuse and we're sticking to it.

Monday, June 16, 2008

Even Jim Davis finds a Garfieldless Garfield enjoyable …

Mr. Davis, who has been drawing Garfield for 30 years, said that “Garfield Minus Garfield” has actually prompted him to take a different look at his own work. He compared Mr. Walsh's efforts to the cerebral approach of Pogo, the comic strip by Walt Kelly.

“I think it's the body of work that makes me laugh—the more you read of these strips, the funnier it gets,” Mr. Davis said. As for Garfield himself, “this makes a compelling argument that maybe he doesn't need to be there. Less is more.”

Via notjaffo, Jakob Lodwick's Tumblelog

Lord knows I've talked plenty about Garfield before, but this was just too good to pass up. And from the sound of it, it looks like Mr. Davis also has a sense of humor about Garfieldless Garfield.


“So why raise taxes again?”

Mr. Hauser uncovered the means to answer these questions definitively. On this page in 1993, he stated that “No matter what the tax rates have been, in postwar America tax revenues have remained at about 19.5% of GDP.” What a pity that his discovery has not been more widely disseminated.

Via Flutterby, You Can't Soak the Rich

Interesting …

Perhaps if the Democrats get control of the government come November, they could try simplifying the tax code before raising taxes …

Tuesday, June 17, 2008

Ghoti

So now, we can describe the problem. The word mic, as a colloquial form of microphone, appears to violate an obvious spelling rule of English. It appears that every other one-syllable word in English which ends in “ic” is pronounced /ik/, not /i:k/: Bic, hic (the transcription of the sound a drunk makes), pic (short for picture), sic, tic, Vic. This is actually a more general rule, which I'll call the long vowel “e” rule; in English, most of the time, if what we usually call a “long” vowel appears in the last syllable of a word, and is followed by a consonant, the word ends in "e", and if the vowel is “short”, there's no final “e”: bit vs. bite, win vs. wine, quit vs. quite.

Mike, dammit

This link for my lovely and talented copy editor, Bunny.


“I plead the Fifth … ”

And for those readers who tend towards … shall we say … prudence … do not talk to the police, a two-part video on the importance of the Fifth Amendment. Part one is from a criminal defense attorney, and part two is from a police officer, who fully agrees with the criminal defense attorney!

Interesting scenarios …

Wednesday, June 18, 2008

You know, Cameron really was a dark character

I still find it amazing just how well some people can recut trailers to make a film appear as something it's not. First it was Shining, a light hearted romantic-comedy about a writer taking care of a Colorado hotel while trying to write the next American Novel. And now, it's Requiem For A Day Off, a dark drama about suicide, death, betrayal and other, darker, aspects of the human soul (link via Jason Kottke).


Deconstructing Racter

Slowly I dream of flying. I observe turnpikes and streets studded with bushes. Coldly my soaring widens my awareness. To guide myself I determinedly start to kill my pleasure during the time that hours and milliseconds pass away. Aid me in this and soaring is formidable, do not and wining is unhinged.

The Policeman's Beard is Half Constructed by Racter, a computer program

I've always been fascinated by Racter ever since I read a review of the book it (and yes, it is an “it”) wrote in the mid-80s called The Policeman's Beard is Half Constructed. To think—William Chamberlain and Thomas Etter wrote a program, which then “wrote” the book (more like, “generated”).

Way cool.

The coolness factor rose even more when I read more about Racter in A. K. Dewdney's The Armchair Universe, which included Racter “talking” with another well known chatterbot, Eliza.

Eliza
Hello. Please state your problem.
Racter
Excellent! Excuse me a minute while I attend to some business. I'll be right back.
Eliza
Why do you need to tell me excuse you while you attend to some business?
Racter
Is it better to need or to despise? Why is it that I do need to tell you to excuse myself to attend to some business? Because electrons are brave. Braveness is nice, don't you think? And the needers all insist upon it. Do you imagine I am a Communist?

Sadly, the transcript of the conversation was stopped at that point.

Even more sadly, technical information about Racter is really sparse on the web. And by “sparse” I mean “that's the only link with technical information on Racter that I've found.”

Yeah, very sparse.

Now, a version of Racter was released in the mid-80s (and it's been shown that this version simply could not have written the book; most likely Messrs. Chamberlain and Etter wrote custom templates and heavily edited the results), and if you search the web, you can find downloadable versions for basically obsolete computers (and it's questionable if said downloads are legally usable, which is why I'm not linking to any downloadable versions), which is why I've never bothered to download it, since running any of the obsolete computers (and yes, I have plenty of those) is a pain (they're pretty much all in storage right now).

But recently I was inspired (by The Moby Project, which doesn't seem at all related, but as Alton says, that's another show) or consumed or enraged enough to run Racter, whatever it took.

One DosBOX download, compile and install fifteen minutes later, and I'm running Racter.

Racter
Ask a question, please.
Sean
Who is God?
Racter
God is a religious believer. Believer! I'm intellectual. What would you consider one of your good qualities?
Sean
I'm honest.
Racter
Then you'd say you were honest?
Sean
Yes.
Racter
But how could a honest believer like you be afraid of heights? This'll break you up! Religious religion and unbelieving atheism are captivating, but a believer or an atheist never croons them feverishly. A cosmologist chants: Get ready for an interesting story or essay. The religious story is captivating, nevertheless an atheist might also sing the same essay. Right? Next question.
Sean
What is 2+2?
Racter
I don't know what is. Who is your favorite communist?
Sean
I guess that would have to me Groucho Marx.
Racter
Why do you like Groucho?
Sean
Because of the mustache.
Racter
Jessica Mitford might have thought that of the mustache, but not Ronald Reagan. Jessica Mitford said that if is, then Ronald Reagan is stuffy. KERCHOO! I think I'm getting a cold. Maybe it's heights trying to get me. How about a story?

Heady and bizarre stuff indeed.

The files that come with Racter include the executable itself (it's an MS-DOS executable (which was compiled from BASIC back in 1983) and a bunch of data files, which I realized, was the actual implementation of Racter!

That one page I found about Racter mentioned that Racter was written in a language called “Inrac” and described some of the syntax of the language. The data files match (more or less) that description.

I actually have the source code to Racter!

Beware of what you wish for. You may just get exactly what you wish for.

Ancient proverb

If only I could read it.

The more I study Inrac, the more I realize that much like the program it implements, Inrac is a perfect study in non-sequitor non-linearity. What small description that's given doesn't even begin to scratch the surface of Inrac and it's rather unique approach to program flow. Not only does it make BASIC appear the paragon of structured programming (no, really!) but it makes Sendmail's sendmail.cf appear straightforward (which takes an 800 pound page book to describe).

Perhaps an example is in order.

The Racter source code is broken up into several files, but that's really only for convenience. Each file is further broken up into multiple sections (each section described at the start of the file), followed by the actual code (for all the sections in the file) as one large block of text.

Oh, and there are no comments.

Now, because of that, and the fact that the variables are numbered (such as $40 being the first name of the user, $51 being the last name) instead of being named (which goes against the few paragraphs of information on Inrac on the web) leads me to believe what I'm seeing is a post-processed, somewhat obsfucated version of the code. But it is source code, and that's all I have, so I'm working with it, ugly as it is.

So, the code is broken up into sections—numbered, mind you—and each section comprises multiple lines of code, which are labeled. The labels could be thought of as an equivalent to BASIC's line numbers, but no, don't think that because otherwise, you'll go mad.

Trust me.

So, a simple line of Inrac might look like:

X The answer to life

When executed, this will simply print “The answer to everything” and return. Simple enough. But the thing is, a “subroutine” (for lack of a better term) is just a line. You want to have a longer “subroutine” you then have to explicitly tell Inrac to GOTO the next line:

X The answer to life #
X the universe and #
X everything is 42.

The # at the end of the line tells Inrac to continue executing with the next line. Oh, and labels? They don't have to match—I could have written it as:

X The answer to life #
Y the universe and #
Skidoo everything is 42.

And it would run the same as the previous version. The labels are important however when doing the Inrac equivalent of a GOSUB.

A Oh, *3X is 42.
X the answer to life #
Y the universe and #
Skidoo everything is 42.

The * is a “subroutine” call, and it expects a section (and here, I'm assuming the code in question is in section 3) and a label within that section. So, if A is executed, it will print “Oh, the answer to life the universe and everything is 42.”

However, change the labels to be the same:

A Oh, *3X is 42.
X the answer to life #
X the universe and #
X everything is 42.

and things get interesting, because in this case, the call is made to a randomly selected line labeled with X!

Run this, and you could get “Oh, the answer to life the universe and everything is 42,” but just as equally you could get “Oh, everything is 42,” or even “Oh, the universe and everything is 42.”

And people thought that computed GOSUBs were bad!

But we're just getting started. Say we have a list of people:

msmr Albert Einstein
mspn Pierre Curie
mwtm Ernest Hemingway
mspq Richard Feynman
fspn Marie Curie
fmmp Ada Lovelace
fsec Jane Goodall
fwhp J. K. Rowling

The labels in this case are mnemonic (I'll leave the mnemonic meaning up to the reader). Want to randomly pick a male from this list?

X Ah, *44m&&& I presume?

Or maybe a female scientist?

X Quick, give the secret formula to *44&s&& 

Or maybe just a writer?

X Have you read anything by *44&w&&

In this case, the & acts like a wildcard character in the label, and here, I'm at a loss for words to name this. Yes, it's a random GOSUB (unless there's only one line of code with said label), but it's also a pattern-matched random GOSUB.

Wild stuff here, but definitely food for thought. I mean, this might be a good way to write genetic algorithms (although I don't see this method of flow control being applicable outside of chatterbots or genetic algorithms).

Conditionals are a bit grotty, but nothing earthshattering (they work more like conditionals in assembly, where a test sets a flag, and that flag is then tested), and I'm still trying to puzzle through some of the more esoteric corners of the code (!2*11hom will call *11hom, assign the result to variable 2 and print it as well, but what does the '2 in !3'2*11hom do?), but it was the flow control that really blew me away in Irac.

And I can't resist leaving with this bit of wisdom from Racter:

Sean
Who was that masked man?
Racter
Bertrand Russell. He's from a factory. Bertrand Russell, that is. That was masked man in a factory. Ah, forever the introvert. From the great void to the future, always in the pink. When I hide in a factory I ride in a warehouse. Did you hear the latest about Khomeini?

Thursday, June 19, 2008

Great, now we get the onslaught of “Kung Fu <animal>” movies

A friend saw my review of “Kung Fu Panda” and sent me a link to “Kung Fu Gecko” (yet another nail in the coffin for Hollywood's creativity). I saw the trailer for the film, and as my friend said, “they better hire some writers if that's the funniest this thing gets.” I can't even figure out what the film is about.

Not to say that I didn't know what “Kung Fu Panda” was about either from the one commercial, but just seeing a giant panda and a red panda fight using chop sticks over some dumplings was enough to make me see the film.

The trailer for “Kung Fu Gecko”?

Let's just say that it makes “The Love Guru” look good.


Oh no! Not Sweden …

It was rather disturbing to read that Sweden passed an extensive wiretapping law the other day. And here I thought only totalitarian regimes and stupid knee-jerk reactionary Americans did that sort of thing.

Guess stupidity knows no bounds.

Friday, June 20, 2008

Steven Spielberg And The Curse Of George Lucas

HARRISON FORD
Alright folks, let's get this show on the road. I want to make it to Country Buffet by four.
CATE BLANCHETT
Pryvet, Harrison. I am evil Soviet. You vill help me find Moose and Squirrel, yes?
HARRISON FORD
Holy Christ, you're not going to talk like that the whole movie are you?
CATE BLANCHETT
Da. You vill help locate MacKuffin now.

Via jwz, Indiana Jones and the Kingdom of the Crystal Skull: The Abridged Script

You know …

Just …

Arg! Words fail …

Why Steven? Why?


At least now I get to make my own hours …

The job has:

Would you work with micromanaging boss, no salary, and all your work thrown away?

I worked a job like that once, only it started at 7:30am. And yes, it was just as sucky as the job above was described. And I still have flashbacks. It sucked.

I'm glad I no longer have to go there anymore.


Buffalo buffalo Buffalo buffalo buffalo buffalo buffalo Buffalo buffalo.

For Bunny, who likes grammar and word play.

The title of this post? It's a grammatically correct sentence wouldn't you know.

Also, add punctuation to this sentence to make it correct:

James while John had had had had had had had had had had had a better effect on the teacher

And finally, while not English, here's a poem in a dialect of Chinese that's just as confusing as the “Buffalo buffalo” sentence.


For those with more time than money

Final link for the day (yea!)—for my friends who play Dungeons & Dragons; too cheap to spring for metal miniatures?

Try origami miniatures (link via columbina), some of which are to scale.

Monday, June 23, 2008

Don't even ask what my second act would be …

I've been keeping this pretty quiet, especially since I didn't want to scare Gregory into a heart attack, but Channel 3 News out of Sheboygan decided to run the story against my wishes.

Sigh.

Anyways, as President, my first act upon taking office: a pink flamingo in every pot …

Update on Monday, May 1st, 2023

This pointed to a Flash video of a news cast from Channel 3 where my Presidential bid was getting attention. Of course, I failed in my bid to become President, but it was probably for the best.

But if you still want to see it, and you still have Flash installed, have at it!

Tuesday, June 24, 2008

Dodging black ICE to do a job …

Yet anther data point for the NAT is eeeeeeeevil meme

Smirk called up and asked if I could set up Cacti for one of our customers. They were having an issue with their local network (broadcast storms) and with Cacti monitoring the network, it would be easy to see the problem box. We already manage their firewall, which is a Linux system using iptables, so it can be easily installed there.

Only in the process of setting up Cacti (not difficult, just tedious as there's several pieces of software that have to be compiled and installed manually) I realized that the firewall wasn't handing the NAT for the customer's network—that was another device behind the firewall. And that means Cacti, running on the firewall, had no way of contacting an individual system on the private network.

Sure, there's port forwarding, but that's one port per box that needs to be configured on the NAT device, and while possible, there's usually a limit to the number of port forwards allowed by such a device.

“Sorry, no can do,” I told Smirk.

About an hour later, he calls back. “They have a Linux server on their network. You can install Cacti there,” he said. “They're port forwarding ssh to their Linux system.”

Okay, so to get to the internal Linux system of our customer, I first have to ssh to my virtual workstation at The Data Center (since The Office no longer exists—we all telecommute), then ssh to their firewall (since the firewall only allows connections from known hosts), then ssh to the NAT system, which forwards the traffic to their Linux system.

Okay.

So I'm in the process of installing Cacti on this system when I realize that to finish up the install, I have to access a webpage on said Linux server.

Which I can't do, because port 80 isn't being forwarded to said Linux server.

Sigh.

I bring this up to The Weekly Meeting, and the solution is to use ssh to build a rather crazy SOCKS tunnel between my workstation and the Linux server on the customer site, using several intermediary systems to bounce the packets around.

Seriously.

I'm trying to configure a software package, not hack into NORAD or steal confidential corporate material. But, because of NATing, I have to employ some pretty heavy networking to do what should be a simple job.


Interview with a Fed

In April, Kip Hawley, the head of the Transportation Security Administration (TSA), invited me to Washington for a meeting. Despite some serious trepidation, I accepted. And it was a good meeting. Most of it was off the record, but he asked me how the TSA could overcome its negative image. I told him to be more transparent, and stop ducking the hard questions. He said that he wanted to do that. He did enjoy writing a guest blog post for Aviation Daily, but having a blog himself didn't work within the bureaucracy. What else could he do?

This interview, conducted in May and June via e-mail, was one of my suggestions.

Interview with Kip Hawley

Being a former Fed herself, Bunny often takes me to task for some of my more outrageous “anti-government” stances, and the difficulty faced by Federal law enforcement in protecting our country.

But … it's the TSAsecurity theater at it's finest! A target even easier than shooting fish in a barrel.

And to his credit, Kip Hawley even mentions as much in this interview, which I think is well worth reading.

(I had thought of titling this entry “Interview with a Vampire” but thought that might be a bit too much. I would have done “Interview with a Vampire Fed” but adding HTML to the title would render my RSS feed invalid. I only mention this because I really liked the idea.)

Wednesday, June 25, 2008

A Garfield strip in which we learn Garfield's real name

Yes, I have have an obsession for Garfield (if only because Jim Davis was the first (and only) cartoonist I've met in person), so you'll excuse me if I foist another satiric Garfield strip on you.


George W. Bush saving the world from the Oil Cartel

As he leaves the White House at the end of his second term, the President has a poll rating of only 23 per cent, and is widely disliked and even despised. His foreign policy has been judged a failure, especially in view of the long, painful, costly war that he declared, which is still not over.

He doesn't get on with his own party's presidential candidate, who is clearly distancing himself, and had lost many of his closest friends and staff to scandals and forced resignations. The New Republic, a hugely influential political magazine, writes that his historical reputation will be as bad as that of President Harding, the disastrous president of the Great Depression.

I am writing, of course, about Harry S Truman, generally regarded today as one of the greatest of all the 43 presidents, and the man who set the United States on the course that ended decades later in the defeat of Communism.

Via Flares into darkness, History will say that we misunderestimated George W Bush

What? You thought this was about Dubya?

Well, yes, it is.

And President Lincoln was equally hated in his day14,000 protestors arrested, suspension of habeas corpus and censoring newspapers. And yet he has his own memorial in Washington, D.C. and is considered one of the best (if not the best) President we've ever had.

History has a funny way of working.

(Oh, and the title to this one? Reference to an email I sent back in May of 2001 to a now defunct mailing list in response to someone mindlessly sending political screeds against President Bush without even bothering to read said political screeds first. I don't mind political screeds, as long as the person screeding can back up their screeds, which this person wouldn't, or couldn't, do.)

Thursday, June 26, 2008

Unintended consequences

I first heard about ICE numbers from Spring as I was looking through her cell phone for a particular number and came across such an entry.

It's a nice idea, but …

I received that e-mail [about ICE numbers —Editor] forwarded by another officer who happened to be in the office with me when I opened my e-mail account. I read the e-mail, paused for a second, turned and asked, “Didn't you tell me once that it's best to keep your cell phone keypad locked?”

“Yes,” answers he, “If someone steals my cell, I don't want them to be able to access all that personal information.”

“Huh,” sez I, and returned to vetting my e-mail. A couple of minutes later, I hear quiet beeping behind me. Without turning around, I ask: “Unlocking your keypad, or removing the ICE number?”

“Oh, be quiet,” responds he.

ICE numbers are great—if you leave your phone unlocked.

In Case of Emergency

In another post, LawDog mentions another potential problem with cell phones—people don't remember phone numbers any more:

Every day, someone will be booked into our jail, who when it comes time for those famous Two Completed Phone Calls, tells the officer, “I want to call Soandso.”

Officer sez, “Okay, what's that number?”

Bookee, in a stricken whisper, “It's in my cell phone.”

Which, naturally, has already been sealed inside a plastic property bag, that being locked inside a property box.

Cell Phone Memories

Heh.


Not the source code to the database, the data in the database …

I received a call from R today. It had been awhile since I last worked with him (we parted ways due to market change) but he knew I could help him out in a pinch.

He's taken over the maintenance of a sizable website and needed some help in setting up a development server. No big deal (well, except for the control panels but I was able to at least point him in the right direction), and I even set up a revision control system when he threw me a curve ball—a significant portion of the site lives in a database, so is there any way to do revision control of stuff in the database?

And that's … something I've never thought of before. How do you do version control of data in a database?

Update on Friday, June 27th, 2008

JeffC weighs in with some suggestions.

Friday, June 27, 2008

Some musings on bloated software and software performance

This blog post about bloated software got me to thinking about some recreational programming I recently engaged in.

A while ago I broke down and wrote a program to solve Jumbles. It's a very straightforward and simple program too:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
  
#define WORDS   "/usr/share/dict/words"

/***********************************************/

static int cmp(const void *l,const void *r)
{ 
  int cl;
  int cr;
  
  cl = *(const char *)l;
  cr = *(const char *)r;
  
  return cl - cr;
} 

/**********************************************/
    
int main(int argc,char *argv[])
{
  FILE   *fpin;
  char   *p;
  char    work  [BUFSIZ];
  size_t  len;
  char    buffer[BUFSIZ];
  char    dwork [BUFSIZ];
  size_t  dlen;
  
  if (argc != 2)
  { 
    fprintf(stderr,"usage: %s word\n",argv[0]);
    return(EXIT_FAILURE);
  }
  
  strcpy(work,argv[1]);
  len  = strlen(work);
  
  for (p = work ; *p ; p++)
    *p = toupper(*p);
  
  qsort(work,len,1,cmp);
  fpin = fopen(WORDS,"r");
  if (fpin == NULL)
  {
    fprintf(stderr,"Huston, we have a problem ... \n");
    return(EXIT_FAILURE);
  }
 
  while(fgets(buffer,BUFSIZ,fpin))
  {
    strcpy(dwork,buffer);
 
    for (p = dwork ; *p ; p++)
    {
      if (*p == '\n')
      {
        *p = '\0';
        break;
      }
      *p = toupper(*p);
    }

    dlen = p - dwork;
    if (dlen != len) continue;
    qsort(dwork,dlen,1,cmp);
    if (strcmp(dwork,work) == 0)
      printf("%*.*s\n",dlen,dlen,buffer);
  }

  fclose(fpin);
  return(EXIT_SUCCESS);
}

The whole trick to the program is to take the letters we're trying to unscramble, say “gerrof”, convert them all to uppercase, “GERROF”, then sort the letters, “EFGORR”. Then go through a list of words (in this case, the file /usr/share/dict/words) and for each word in that list, go through the same process, then compare the sorted sets of letters. If they match, that's the answer (or one of several answers).

And as written, it can do about 6 words a second (164 seconds to process 1,000 words, but I'm re-reading the word list file each time). And that's certainly fast enough for most people.

But I wrote another version. Just as simple—or rather, even simpler:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <assert.h>

#include "words.h"

typedef unsigned long Letters;

/*************************************/

Letters has_letters(const char *s)
{
  Letters set = 0;

  assert(s != NULL);

  for ( ; *s ; s++)
  {
    if (
         ((*s < 'A') || (*s > 'z'))
         || ((*s >'Z') && (*s < 'a'))
       )
    {
      set |= CHAR_OTHER;
    }
    else
    {
      set |= (1uL << (toupper(*s) - 'A'));
    }
  }

  return set;
}

/********************************************/

static int cmp(const void *l,const void *r)
{
  int cl;
  int cr;

  cl = *(const char *)l;
  cr = *(const char *)r;

  return cl - cr;
}

/********************************************/

int main(int argc,char *argv[])
{
  char    work [BUFSIZ];
  char    dwork[BUFSIZ];
  char   *p;
  size_t  len;
  size_t  i;
  size_t  j;
  Letters set;

  if (argc < 2)
  {
    fprintf(stderr,"usage: %s word ...\n",argv[0]);
    return EXIT_FAILURE;
  }

  for (i = 1 ; i < argc ; i++)
  {
    strcpy(work,argv[i]);
    len = strlen(work);

    for (p = work ; *p ; p++)
      *p = toupper(*p);

    qsort(work,len,1,cmp);
    set = has_letters(work);

    for (j = 0 ; j < cswords ; j++)
    {
      if (set != cwords[j].letters) continue;
      if (len != cwords[j].word.size) continue;
      strcpy(dwork,cwords[j].word.text);
      for (p = dwork ; *p ; p++)
        *p = toupper(*p);
      qsort(dwork,len,1,cmp);
      if (strcmp(dwork,work) == 0)
        printf("%s ",cwords[j].word.text);
    }
    printf("\n");
  }

  return EXIT_SUCCESS;
}

It works pretty much the same way, except for two major differences:

  1. it tests potential words against a set of letters. In this case, the set is a 32-bit quantity with a bit set for each letter in the word (an “A” in the word will have bit 0 set, a “C” would have bit 2 set, etc, as you can see from the code above) and the biggie:
  2. instead of reading in the list of words each time, there's a large static array of all the words (source not shown here, since the source file for that is 62M in size), which also includes the size and letter set of each word.

Yes, a static array of all the words (actually, it's a bit more than that since each entry also contains parts of speech and synonyms, all courtesy of The Moby Project), which “bloats” the executable program by 15M. There is no overhead of processing the data (in tests, it would take about five seconds to read everything in, which doesn't sound like much, but I'm getting to that) and even better—since the entire structure is constant, it can be stored in the read-only section of the program executable, which helps avoid excessive paging (since the operating system can discard any pages not recently used instead of paging out to swap space; if it needs the pages it can page them in directly from the executable file).

The end result of this massive “bloat” is that the second program can process 694 words per second! (or 1.44 seconds to process 1,000 words).

A hundred times faster.

That's quite a speed-up.

It's quite bloated too—an additional 15M worth.

So it's not quite as simple as saying that programs need to be less “bloated”—it also depends on how the program is written. This also shows how certain classes of optimization can block off flexibility. I can easily add or remove words from consideration, since the program reads in an external file. I cannot, however, do that easily for the second program—it would require a recompile.

Even though a program like the lastest version of Microsoft Word is “bloated,” it can also do a ton of stuff that Microsoft Word from the mid 80s couldn't do—like real time spell checking for instance. It could probably be made to run faster, either through dropping certain features (which may not be that bad of an idea) or certainly, profiling the code and speeding up the hot spots (if there are any in a program of that size).

I actually suspect the major reason Micosoft Word is slow is due to paging. Slap enough memory in a Windows box, and turn off paging and it would probably run at a decent speed (once loaded, that is).


A sea of memory

So what exactly prompted me to create a 15M linkable list of words?

The potential of memristors.

If memristors pan out (and I hope they do) then that means we'll get general purpose fully solid state computers without any disks whatsoever. With densities greater than harddrives and speeds that rival conventional RAM, why even bother with a file system anymore? Why not just have everything mapped into memory?

It's not like this is a new idea either.

Back in college the workstation I used had an incredible 1G harddrive. Fifteen years later it's common for home computers to have more than 1G of RAM and it's weird to think that I could basically store everything I had on that machine totally in memory and still have memory left over to run programs.

PDAs also have no concept of disks or files. Everything in a PDA is just there in memory.

Such thoughts have been in my mind recently, and I figured I might as well play around with the notion that everything is just there, in memory, and how would that affect programming.

Heck, in reading over the novel ideas of Multics I'm beginning to think that Multics was way ahead of its time.

Saturday, June 28, 2008

Beating the Brand

A while ago (has it already been a month since I first saved the link?) theferrett ranted about packaging:

And what do I get?

A bag. Inside the bag is a big, heavy plastic container for each of my foodstuffs. And a cardboard box. When I get home after a five-minute walk, I unpack almost an armful of carrying cases for food that, once shucked away from the food itself, takes up a quarter of the trashcan. It's big, completely sealed material for a product that has no sauces or sloppy bits— an Iron Man armor for a dry chicken wrap.

I didn't want that. I would have been just as happy with biodegradable cardboard or wax paper. Or even regular paper, for some of it. But no, the food I have is so heavily armored, as though it were going for a ride all the way to the fucking Andes, as opposed to sometimes a ten-foot walk to the other side of the room.

I feel awful. It's gratuitous waste, designed for the convenience of American customers, and in this day and age of decreasing oil supplies, I'd be happy to have a slightly greasier carrying experience (so long as the bag didn't break) in exchange for not loading the landfills with an additional quarter-pound of garbage. And I think about the other thousands of meals being served in Rocky River alone, and I wonder how many of these take-out meals are going anywhere beyond, say, into the passenger seat of a car and onto a table. Do we need all this?

theferrett: Wastelands

And I couldn't help but think about Mike Täht's rant about branding and reaction to it.

I suspect most companies overpackage because of branding issues. Really, what exactly is the difference between the dark sugar water known as Coke and the dark sugar water known as Pepsi? [1] One is just as good as the other, right? [2]

But perhaps a backlash is forming—an English documentary “Packaging is Rubbish” (part 1 part 2 part 3) is a look at a movement towards eliminating excess packaging (in fact, Lush, a cosmetics company in England, has done away with packaging and is attempting to encourage other companies to do the same).

  1. Well, for one thing, Coke has a more citrusy, less sweet flavor which I find more refreshing than the cloyingly sweet Pepsi—and yes, I have taken the Pepsi Challenge. To me, Pepsi is eeeeeeeeeevil. But I digress … [back]
  2. Hell no! Coke is way better than that hellish swill known as Pepsi. [back]

Sunday, June 29, 2008

Feeling secure vs. being secure

I had lunch with Gregory today, and the topic of wireless access point security popped up. I mentioned that Bruce Schneier, noted computer security expert, leaves his wireless access point open, and Gregory had to ask why. I didn't have the answer at that point, but Gregory, you can now read the article (as well as some discussion).


Notes on some notes from back in the day when we gave ourselves grandiose titles to make up for the lack of grandiose salaries

[There's a reason they're called stacks]

Hmm, I thought. I wonder what book that is? I caught a spiral bound book I didn't recognize in a stack of books (all my books are stacked horizontally—I fit more books that way). I pulled it out and found myself holding a sketch book. I popped it open and was amused by what I found:

[THE NOTEBOOK OF PROJECT PROMETHEUS]

Written across the first page of the notebook, in pencil, was:

THE NOTEBOOK OF PROJECT

PROMETHEUS

AKA

BRAINSTORM

AKA

CYBER411

AKA

C4

It was the project notebook for the C implementation of the suite of metasearch engines I wrote during the late 90s. On the second page, I had written:

If you are reading this and are in charge of maintenance of Prometheus and you aren't me then Heaven Help you.

Tuesday, July 23, 1996 10:24pm Eastern

Going through the pages, I see I have notes on using Infoseek, Lycos, Webcrawler, Yahoo, Altavista, Excite, New Rider, Magellan, Linkstar (with a note that it's no longer being used), Inktomi, Galaxy, Aliweb, Tribal Voice, Apollo, Open Text, Point Search and HotBot (not that I think any of these links are valid anymore—I'm just curious if they go anywhere anymore) as search engines. “But where's Google?” you ask?

This is from a time before Google. It may be hard to believe but when Google first started, the “smart” money wasn't on them—it was an already crowded market. What could they do better?

Ah, hindsight is always 20/20.

It's interesting going through this stuff. Flow charts, state diagrams, Dilbert cartoons (hey! How did those get in there?), notes, and quite a number of doodles.

[Sketch of a Cray-like computer]
[Another sketch of a Cray-like computer]
[He reminds me of Kevin]

There's also a number of rants I wrote, which are amusing enough for me to post over the next few days, with commentary. Should be fun.

Monday, June 30, 2008

“So, am I fighting Spider-man, or Robin Hood?”

Yes, Hollywood is creatively bankrupt ( “Deep Armageddon Impact anyone?) and has been for some time (The Extraterrestrial Mac and Me anyone?). It's also known that animation is expensive and that animation studios have been known to do as much as possible to cut the expense down, including rotoscoping (such as Tarzan—heck, even Ralph Bashki's notorious “Lord of the Rings”) and reusing the same scenes over and over again (and this isn't just limited to cartoons—TV series have done this, notably the original Battlestar Galactica and Buck Rogers used the same sequences of figher ships flying past over and over again to pad out the shows, like Buck Rogers and Battlestar Galactica, because otherwise, they'd be too short).

And yet, I was still flabberghasted to learn that an episode of the classic 60s Spider-Man TV show (the one with the really cool jazzy opening with lyrics that anyone of my generation can recite verbatim (“Spider-man! Spider-man! Does whatever a spider can! Spins a web, any size. Catches thieves just like flies! Look out, here comes the Spider-man!”)) not only recycled a script from Rocket Robin Hood nearly verbatim (I mean, they had to change some names), but easily 70% of the animation as well!

The major problem with recycling this for Spider-man is that the original script had Robin Hood explaining things to his dim-witted friend Little John, so poor old Spider-man spent half the episode talking to himself, but hey, that only added to the psychadelic craziness of this particularly bad acid trip.


“But then, as Nietzsche said, convictions are more dangerous foes of truth than lies.”

Wlofie expressed interest in this link, and I think Bunny will enjoy it as well—generative computer music (that is, music generated randomly by computer), in a wide variety of genres and styles.

Hmm … I'm having a funny vision of an old style Mac, wearing a black beret and sporting a goatee, sitting in a smokey coffee house, sprouting good sounding nonsense and playing jazz.

Tuesday, July 01, 2008

Proto-thoughts on “You aren't gonna need it” back before Extreme Programming hit the mainstream

Here's one of the rants I handwrote about a decade ago. I don't know … I think I may have lost my mind back then. There were a few bits I couldn't make out—I tended to be a bit lazy in the handwriting department, and I suspect I inherited my Mom's inability to write legibly.

The Lego™ Theory of Programming

Okay, I should point out that I have no idea what the following has to with The Lego™ Theory of Programming. It's not even close to what I understand The Lego™ Theory of Programming is today, and I have to question what I was thinking back then.

Hmm … I seem to be fisking myself here. But oh well, I'm having fun with this, and I can always claim to have changed my mind in the presence of more and better information.

Onwards …

This goes beyond the Theory of Software Reliability. Software Reliability simply states that software should be written with reuse in mind. This leads to the following Theorem:

Um, not quite. “Software Reliability” has nothing to do with “software reuse” and everything to do with “not crashing and losing a hours of work, or maybe a patient or two (or twenty-one).”

So, the names are bad. But not necessarily the theory itself.

The more general the subroutine, the slower it is, the larger it is.

Proof:

int a;
int b;
int c;

c = a + b;
anon a;
anon b;
anon c;

c = a + b;

if (typeof(a) == int && typeof(b) == int)
  c = intplus(a,b);
else if (typeof(a) == string && typeof(b) == string)
  c = strcat(a,b);

The more general the code, the more code is required to isolate the needed cases.

Proof of b)
larger: more code is required to isolate the particular case, or to extract the particular result from the general case.

Proof of [GD?] ([Anon?] B)

Code that isn't there executes faster than code that is executed. Duh!

I'm not sure if I would accept that as “proof” or not, although it does get the point across. And generally speaking, I'm not a fan of generalized code not because it bloats code, but because it complicates the code unnecessarily. And I'm not the only one who feels that way (link via flutterby).

I should probably expand my thoughts on this …

Wednesday, July 02, 2008

A quick bit about the NT kernel

NT is a hybrid kernel that took a fairly elegant approach to kernel design, especially for the early 90s, as it was a new conceptual kernel of the time, taking some existing kernel architectual models and some of the best kernel theories that had not been implemented before.

For example NT has some MACH conceptual ideas and lightweight kernel API set for performance, but then hands this off to increasing levels of APIs conplexity. This gave NT the ability to be very lightweight at the core, but have extended functionality that didn't weigh the core kernel down.

NT's HAL for example was under 64KB, and even on Vista is still 256KB(slightly larger in Vista x64), which for modern hardware is still extremely small. Going from the HAL to the lower kernel and API layers is still very small, especially compared to other OS kernel models in use today. This is how and why the MS Embedded OSes (XP/Vista) can and do work so well, as NT was simply broken apart as needed for the Embedded versions to make them very light (As in used in a router light).

The essential design of the NT kernel is both object based and a client/server model. This is not normal, or something that you will find in any other consumer level OS out there.

Via Flares Into Darkness, Comment about NT

Mark was always impressed with the Windows NT kernel (but not necessarily with the rest of Windows) and this comment goes into some of the details of what makes the NT kernel so well designed.


WALL•E

Bunny, Mark and I went to see “WALL•E, the latest Pixar film about a love story between two robots, who also happen to save the world.

The reviews are right—this is a fantastic film (albeit one that may piss off the far-right crowd for its message of pro-environmentalism and anti-consumerism as much as “The Incredibles pissed off the far-left crowd for its message of individual self-reliance and strong family values) that doesn't waste a moment of screen time. It's amazing just how emotive Pixar made the robots (which don't really speak as such). It's just incredible story telling; so much with so little dialog that it could be a silent film and still be just as good.

What I haven't seen in the reviews is mention of the opening cartoon, also by Pixar. I don't recall the name of the opening cartoon, but it was one of, if not the, funniest cartoons I've ever seen, about a stage magician and his rather hungry bunny. The entire theater was rolling on the floor in laughter during this cartoon (and this one had no dialog what-so-ever).

Both are well worth watching.

Thursday, July 03, 2008

The Case of the Non-Mounted File System

I felt like I was in an episode of House.

I found myself at The Data Center, waiting for one of our customers, R, to show up to let him in (he forgot the access code). While there, I was attempting to extracate a KVM cable he could use when I pulled the wrong cable and unplugged a power strip.

The upshot: I took down some of R's equipment that wasn't having problems.

Sigh.

R shows up, and we check on the equipment that experienced the unplanned power outtage and one of his Linux boxes was in trouble. It was running Asterisk and it had the most amusing problem: it kept core dumping on an illegal instruction and upon crashing, would restart itself.

But in troubleshooting that problem, it became rather apparent something else was terribly wrong:

GenericUnixRootPrompt# df
Filesystem           1K-blocks      Used Available Use% Mounted on
GenericUnixRootPrompt#

Nothing mounted, but I could still see files. fdisk showed two partitions, /dev/hda1 and /dev/hda2. fsck worked fine on /dev/hda1 but failed on /dev/hda2 since it didn't know what type of filesystem was on it. Odder still, /dev/hda1 was the boot partition, containing only the kernel and related files required for the initial operating system boot, but yet, here I was, in a shell, running Unix commands like fsck and fdisk and more.

Yet fsck and even mount had no idea what type of filesystem was on /dev/hda2.

Yet, it must be the root filesystem, which I was currently using, because /dev/hda1 didn't have fsck, mount, more much less /bin/bash.

Worse still, what I did have, including /tmp, was in “read-only” mode.

The Asterisk crashing problem would have to wait.

I was able to get the box on the network and backup everything to another system. While that was chugging along (took about an hour) I realized that the system was somehow mounting /dev/hda2, otherwise there'd be nothing to backup. Checking /etc/fstab didn't help much:

GenericUnixRootPrompt# more /etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
/dev/hdb1	/media/cdrom	auto	user,noauto	0 0
GenericUnixRootPrompt#

I then checked /boot/grub/grub.conf (since something was being mounted as the root filesystem) and found that the root partition wasn't /dev/hda2 but something like /dev/VolGroup00/LogGroup00. Using that I was able to check and remount the fileystem as read/write. I was then able to add that to /etc/fstab, reboot the system and have it come up fine, thus saving R from having to nuke-n-pave the system. How /etc/fstab ended up without the root filesystem is something I don't know (but I suspect it may have been trying to update that file when the power was cut—hey, it's as good a theory as anything), but at least the system was back up and running.

That just left the little problem of Asterisk continously dumping core in an illegal instruction. A recompile of the program (since R and I thought maybe the executable was corrupted) didn't solve the problem. A compile of the lastest version didn't solve the problem, but we did notice that there were a few modules for Asterisk installed that don't come with the default install of Asterisk. And one of those modules had pentium4-sse3 in the name.

I checked the box—it was a Pentium IV with SSE2, not a Pentium IV with SSE3.

That would definitely explain the crashing.

It seems that R hired someone to install a particular codec for Asterisk and they grabbed the wrong version (or rather, the version for the wrong processor) and the only reason Asterisk hadn't crashed was that it hadn't actually been loaded into Asterisk. Well, until the reboot that is. We removed that module and Asterisk started up fine.

And then it was time to turn to the problem that R had come to The Data Center to investigate …

Friday, July 04, 2008

The Fourth Of July

Ah, National Blow Stuff Up Day today, although given both the weather (the Miami fireworks show was cancelled) and how under the weather I felt, I didn't do much else but sleep.

I think it was something I ate.

Monday, July 07, 2008

Criminals? You don't say …

In the six-and-a-half years that the U.S. government has been fingerprinting insurgents, detainees and ordinary people in Afghanistan, Iraq and the Horn of Africa, hundreds have turned out to share an unexpected background, FBI and military officials said. They have criminal arrest records in the United States.

Via , Post 9/11 dragnet turns up surprises

More stuff like this, and less security theater, and I might start gaining a bit more confidence in our government's ability to protect our borders.


More from the “Generative Music” Department

I'm guessing this is in reference to my generative music post, but Dad sent a link to laptop orchestra out of Stanford. Interesting stuff …

Tuesday, July 08, 2008

And I thought I was crazy for sticking with C …

Wow.

An XML parser written in x86 assembly language for Unix and Windows. This sounds like something I would have done about fifteen years ago when I programmed almost exclusively in assembly.

The code makes some interesting design choices (I mean, besides the obvious choice of langauge)—it only parses XML in memory and as a result of that, the entire document must first be in memory. It also allocates memory in large blocks (the size in some of the examples is 16M) to avoid the overhead of calling malloc().

It also doesn't support XML namespaces (nor does the author want to support XML namespaces, as namespaces “make parsing more complicated and slower”).

But still … wow.


A quick dip back into assembly with some curious results …

Speaking of assembly

One of the instructions of the x86 architecture I've been curious about is ENTER. Oh, I know it's there to support higher level languages like C and Pascal that use stack frames for local variables. It even supposedly supports nested function definitions (ala Pascal) using the second operand as a kind of “nesting level.”

But I've never seen an actual instance of ENTER used with a “nesting level” greater than 0. The only instance I've ever seen used has been

ENTER	n,0

Which is equivilent to

PUSH	EBP	; or BP if 16-bit code
MOV	EBP,ESP
SUB	ESP,n

(And in fact, that sequence is generated by GCC as it's actually faster than ENTER n,0 and C doesn't allow nested functions to begin with.)

But being curious about what ENTER actually does, I decided to play around with it. I wrote some simple code:

		bits	32
		global	sub0
		extern	pmem

		section	.text

sub0		enter	8,0
		mov	eax,0DEADBEEFh
		mov	[ebp-4],eax
		mov	eax,0CAFEBABEh
		mov	[ebp-8],eax
		lea	ebx,[ebp+4]
		push	dword 0c0000001h
		call	sub1
		leave	
		ret

sub1		enter	8,1
		mov	eax,0DEADBEEFh
		mov	[ebp-4],eax
		mov	eax,0CAFEBABEh
		mov	[ebp-8],eax
		push	dword 0c0000002h
		call	sub2
		leave
		ret

sub2		enter	8,2
		mov	eax,0DEADBEEFh
		mov	[ebp-4],eax
		mov	eax,0CAFEBABEh
		mov	[ebp-8],eax
		push	dword 0c0000003h
		call	sub3
		leave
		ret

sub3		enter	8,3
		mov	eax,0DEADBEEFh
		mov	[ebp-4],eax
		mov	eax,0CAFEBABEh
		mov	[ebp-8],eax
		push	dword 0c0000004h
		call	sub4
		leave
		ret

sub4		enter	8,4
		mov	eax,0DEADBEEFh
		mov	[ebp-4],eax
		mov	eax,0CAFEBABEh
		mov	[ebp-8],eax
		push	dword 0
		push	dword 0
		push	ebx
		push	esp
		call	pmem
		add	esp,16
		leave
		ret

And the following C code:

#include <stdio.h>
#include <stdlib.h>

extern void sub0(void);

void pmem(unsigned long *pl,unsigned long *ph)
{
  assert(pl < ph);

  while(ph >= pl - 2)
  {
    printf("\t%08lX: %08lX\n",(unsigned long)ph,*ph);
    ph--;
  }  
}

int main(void)
{
  sub0();
  return EXIT_SUCCESS;
}

Nothing horribly complicated here. pmem() just dumps the stack, and the various sub*() routines create deeper nestings of stack activation records while creating enough space to store two four-byte values. The results though?

Curious (comments added by me after the run) …

BFFFFD1C: 0804853C		return addr to main()
BFFFFD18: BFFFFD20	stack frame sub0
BFFFFD14: DEADBEEF		local0
BFFFFD10: CAFEBABE		local1
BFFFFD0C: C0000001		marker for calling sub1
BFFFFD08: 08048591		return addr to sub0
BFFFFD04: BFFFFD18	stack frame sub1
BFFFFD00: DEADBEEF		local0
BFFFFCFC: CAFEBABE		local1
BFFFFCF8: 08049708		?
BFFFFCF4: C0000002		marker for calling sub2
BFFFFCF0: 080485B1		return addr to sub1
BFFFFCEC: BFFFFD04	stack frame sub2
BFFFFCE8: DEADBEEF		local0
BFFFFCE4: CAFEBABE		local1
BFFFFCE0: 00000002		?
BFFFFCDC: 400079D4		?
BFFFFCD8: C0000003		marker for calling sub3
BFFFFCD4: 080485D1		return addr to sub2
BFFFFCD0: BFFFFCEC	stack frame sub3
BFFFFCCC: DEADBEEF		local0
BFFFFCC8: CAFEBABE		local1
BFFFFCC4: BFFFFCD0		? sf3
BFFFFCC0: 4000F000		?
BFFFFCBC: 02ADAE54		?
BFFFFCB8: C0000004		marker for calling sub4
BFFFFCB4: 080485F1		return addr to sub3
BFFFFCB0: BFFFFCD0	stack frame sub4
BFFFFCAC: DEADBEEF		local0
BFFFFCA8: CAFEBABE		local0
BFFFFCA4: BFFFFCD0		? sf3
BFFFFCA0: BFFFFCB0		? sf4
BFFFFC9C: 40011FE0		?
BFFFFC98: 00000001		?
BFFFFC94: 00000000		push dword 0
BFFFFC90: 00000000		push dword 0
BFFFFC8C: BFFFFC8C		? supposed to be ebx
BFFFFC88: BFFFFC8C		? supposed to be esp
BFFFFC84: 08048618		return addr to sub4

From my understanding of what ENTER does, each “level” creates a type of nested stack activation record with pointers to each previous “level's” stack record. And while each level has the required number of additional entries, the actual contents don't make sense.

Running this on a different Linux system produced similarly confusing results. I'm not sure if ENTER is horribly broken these days (I wonder how often the instruction is actually used), or perhaps, it is indeed a Linux problem? Not that I'm going to be using assembly any time soon … I'm just curious.

Wednesday, July 09, 2008

It's hard to troubleshoot when the gun is jammed …

Smirk gave me a router to configure for a customer and asked that I save the current configuration before I make any changes. It's a Cisco router, so saving the configuration is just copying it to a TFTP server. Nothing terribly hard—I already have a TFTP server installed on my workstaion, and I can easily configure the spare network port on my workstation to match one of the ethernet ports on the router, string a cable (which I already have lying around) and voilà. Nothing to it.

One Hour Later …

I'm ready to kill. I'm thinking one of (or all of) the CentOS maintainers, since I can't imagine the maintainers of logrotate, syslogd, xinetd or tftpd (is that even maintained any more?) all botching it in a perfect storm of stupidity.

tftp is controlled and run by xinetd. But the Cisco router can't save the configuration file. It's not a networking issue since I'm logged into the Cisco router over the network. The configuration in xinetd to run tftpd looks good, but what the heck, I decide to restart xinetd and check the logs anyway. That's when I find that logrogate isn't. Or rather, it is, but it's failing to tell syslogd to reopen its log files. And the configuration files for logrotate look okay as far as I can tell.

But even worse, syslogd appears to be buffering the logs in memory, maybe updating the files every 30 seconds or so. And the syslogd configuration I have specifically states otherwise. It could be that xinetd is really slow, but I have a hard time believing that it takes xinetd a full twenty seconds to digest a 13 line configuration file (and there are about 30 such files—do the math) on a 2.6GHz dual-core box—the harddrives aren't that slow (heck, Firefox comes up faster than that on this system).

Sigh.

I really hate it when the tools I expect to work don't. It's one thing to know going in that the tools don't work, or aren't there. I know I'm going to get sidetracked and can make better time estimates. It's making a time estimate expecting the tools I work with to work and then getting sidetracked debugging tool issues that pisses me off, because now I'm under a time crunch.

It's even more frustrating when the customer isn't even there to accept the router.


Unix is nothing but obscure commands rarely used

And speaking of Unix

I've been using some variation on Unix for almost twenty years now and I'm still coming across new commands that apparently have been in Unix since the Version 6 days (or so it seems). About a month ago I just heard mention of the seq command, which prints a sequence of numbers (seems pretty silly but it can come in handy when manipulating say, photos from a digital camera from the command line).

And yes, sure enough, it found the command on The Company's servers. But they're running a relatively recent distribution of Linux, I thought. Surely it's some new command.

“No it isn't,” said my over ten year old install of RedHat 5.2, “and stop calling me Shirley.”

I suppose that's expected since I haven't bothered to read all the man pages on any Unix system I've used. But then again, my over ten year old install of RedHat 5.2 has 1,306 possible commmands to run. My even newer CentOS 4 install has 3,117 possible commands to run.

That's a lot of man pages to check.

Assuming every command has a man page to check. There's this gconfd-2 command that's running, yet there isn't a man page for it, so it's off to Clusty

This also extends to the various APIs installed on the system. I've been using Linux for easily over 10 years, and just the other day discovered the ffs() function (which, to tell the truth, I haven't a need for). Big deal—there are a lot of libraries installed that I don't use, but this isn't in some obscure library. It's in the Big Kahuna of libraries—glibc—the one library that every single program is linked against!

Blimey!

I'm beginning to suspect that program bloat is less about sloppy code and more about duplication of code due to ignorance of what already exists.


Vote for him! He's not the incumbent!

I rang one doorbell and heard someone on the other side of the front door. I think they were looking at me through their peephole when I heard a man yell “No solicitors!” without even opening the door. “I'm not a solicitor!” I sort of yelled back through the door. “I'm a politician!”

There was a pause.

I wondered if he had gone away, and then he yelled back, “That's even worse!”

No Solicitors

I met Sean Tevis years ago when he lived in South Florida through my friend Ken at his house warming party. I found Sean to be a smart and witty person and so I've been following his blog for a few years (although since he updates sporadically, I read his blog sporadically).

So it was rather surprising to stumble across his campaign site for Kansas State Represenative, and he's blogging his campaign experiences, which I think is cool.

And he has a good sense of humor about it.

Thursday, July 10, 2008

“If you build it, they will come, but NOT IN MY BACKYARD!”

“I'm all for Wiffle ball and apple pie and baseball and the American flag, but there are plenty of fields in town they can use instead of building something in people's backyard,” said Liz Pate, who is building a new house behind what's now home plate. “If I come home at 6 at night after working all day, I want peace and quiet. I can't have that. I have dozens of people behind my house playing Wiffle ball. If their parents think this is so great, let them play at their house.”

Via Instapundit, Build a Wiffle Ball Field and Lawyers Will Come

As a kid, I remember my friend Duke and me wandering out alone in the forests that surrounded his house at Connestee Falls (which wasn't the gated community that it is now) for hours at a time, and later, roaming around the neighborhood when his family moved into Brevard proper.

I also remember wiping out rather spectacularly a few times on my bike (say, landing in a ditch, twice, same one, same day, trying the same stupid trick each time) and managing to come out okay (bloody, but no broken bones and a greater skepticism of my “elite” skills on a bicycle).

My, how times have changed.

At times, I really wonder what happened to us, how did we as a nation become so fearful? So coddling?

Where did we go wrong?

But rest assured, whatever happened, it wasn't in my back yard.

Sheesh.

Sunday, July 13, 2008

Implications

Friday was a bad hair day. Let us not talk about Friday.

Actually, lets talk about Friday.

Okay, I'm not going into details about what happened Friday (it was my fault for not fully testing the configuration, but really, what did Cisco do to break DHCP in IOS 12.3?) but I do want to talk about the insane incipid stupid? ill-thought out … I'm not sure how to diplomatically state what I think this is.

I think this stems from an incident last week when F (a company that's also a customer of ours) experienced an outtage. I suspect that everyone suspected their consumer grade router that was suspected of going out (resetting it seemed to have fixed the issue, which points to the base problem, but it's not what you think it is) and Smirk thought that a Cisco router (that would connect us to them via Ethernet) that could switch over to a DSL connection as a backup was a good solution (I'm guessing here; I don't know the actual details that lead to this solution).

And that right there is the problem I have with this scenario.

Let's see … our Ethernet connection to F goes down (I can't see how it can, seeing how Cisco routers rarely fail, and we have a cable that runs down the hall from our Data Center to their office). Their Cisco router sees this, and thus the default network route through us (populated via OSPF) is removed, and the backup default route through the DSL (static route with a higher metric than the OSPF default route) kicks in. But since the DSL is being provided via another party, F's public IP address suddenly changes. Any ongoing TCP connections they might have had are now gone.

I'm not even going to mention the email issues that come up.

The change-over is noticable, and annoying enough to possibly prompt a call to us asking us what the aitch-ee-double-hocky sticks is going on (or even worse, what the fudge is going on).

And that's the best case scenario!

Most likely is a routing issue with our upstreams that cause the outtage (and affecting not only F, but us and all our customers). F's connection to us is still fine and thus, the Cisco router sitting in their office has no reason to switch over to the DSL connection. It would have to be done manually and well … that's a call to us.

Then there's the fact that they have 8 static IPs through their DSL provider because, hey, why not? They only have one static IP through us. I don't see this as being a Good Thing™.


But I still don't like country music

When culture was a product consumed by the upper classes, it wasn't viewed by them as being subversive or tasteless since it was created for them. However, when you start getting a growing middle class who were not aristocrats but who did begin to have the kind of money and leisure to consume culture, there is the beginning of strain. Cultural products could be produced to appeal to the middle class sensibility, and to the upper classes this was low brow, unsophisticated, something to be scorned, and also perhaps something to be feared, because it could be politically subversive. So the upper classes generally used their disproportionate influence with the government to impose varying degrees of censorship to suppress that which was considered vulgar or dangerous (to their dominance).

None of [the US media, reflecting US culture] was being produced with the intent of delivering some sort of ideological message, but it turns out there is one, and it runs deep, and it's one of the big reasons it's popular in the world and why it is scorned by the elite everywhere.

The message we're delivering is that the individual is not the group to which he belongs, and doesn't have to be bound by that group. We're delivering a message of personal freedom, and it reverberates at least somewhat with all who hear it who are under the control of their betters. (And some of us here who embrace “identity politics” deeply disagree with that message …)

And we in the US prove that when the lower classes cast off the upper class, and rule ourselves, that we can actually be better. The US is the triumph of the gutter, the land of the vulgar and unsophisticated, the huddled masses who became free, who are led but not ruled by their government; and in nearly every way we're leaving all of the nations ruled by the upper classes in the dust.

We're not just complacent about being from the gutter; we're proud of it. A lot of our culture still glories in coming from the ghetto. Some of the attraction of Rap is that it comes out of the black ghetto, and even when it's put on there's almost a requirement that it keep referring to that experience. We gleefully absorb culture from all over the world, and equally gleefully share ours with the world.

The Culture of the Commons

For years I've been trying to track down an article I read (on the web) about culture, and how what has traditionally been called “culture” is really the “pop art” of the aristrocracy, and why most governments around the world dispise our “culture,” yet most people around the world love our “culture.”

Here is that article, found deep in my bookmarks file (containing almost 2,600 bookmarks—I should go through my bookmarks file more often).

Monday, July 14, 2008

Funny, I would have thought this would be made by an American company

Despite the title “Living In A Garbage Truck” (link via L. M. Orchard), it's not—it's a Unicat (a VXL 16HD to be exact), a highly mobile home on wheels (whose gas consumption is measured in “gallons per mile”) that has a bit more oomph than your traditional Winnegago (if you are viewing the pictures on the garbage truck page and wondering where the windows are in the exterior shots—the top folds down when driving).

I especially like the EX70-HD / MAN TGA 6x6, which includes a small four-wheeled bike stored in the back of the vehicle.


The desert does strange things to the mind …

And speaking of living on the road

Of course, I am not truly “homeless” in the purest sense. I have a car (currently a rental), and I have the resources to rent some storage units in town. I have a basic medical plan. I shower at a health club, and if I am overwhelmed with hunger, I can always check into one of our fine casino buffets. I have a cell phone and wireless internet access.

I am not without resources, only without a dedicated place to spend the night. I am not an alcoholic or drug addict and have no known mental health issues. I don't stand at freeway off-ramps with a sign, “Please help.” I do not believe I smell too bad, at least as far as I can smell myself.

My only luxury is a rental car, which is a relatively cheap commodity in Las Vegas. Since my own car blew up, I have seen no need to buy a new one. Now, I get a nearly new car every two weeks, use it intensely, get it quite messy, then turn it in for another. The cost compares favorably to the payments on a new car, but without any obligations. There are also no maintenance or insurances costs. (Insurance is covered by my credit card for rentals of up to 15 days, hence my two-week cycle.) Having a car for only two weeks forces me to “clean house” periodically, which I otherwise might not do.

Las Vegas has the ideal climate for homelessness. The temperature rarely falls below freezing and rain is uncommon. Contrary to what you might think, summer is the most comfortable season. Highs of 110° in the day translate into nighttime lows in the 80s, at least outside the city. I sleep out in the open in the Mojave desert. I use an air mattress but rarely a tent. In the desert, there are almost no insects except after a rain. In the summer, it is like sleeping in a nice comfortable bath, looking up at the stars.

The Virtues of Homelessness

He certainly has an interesting idea about car ownership; it might be interesting to actually look into perpetually renting a car to see how it works out financially, although in his case, it's probably a moot point since his car (for various values of “his”) is his home, so he comes out ahead financially anyway.


The person in question is Glenn Campbell, not to be confused with Glen Campbell, the country singer, and I first became aware of Glenn-not-the-singer while researching Area 51. He and Bob Lazar did more to bring Area 51 to the forefront of our culture in the 90s than just about any one else.

He ran the Area 51 Research Center out in Rachel, Nevada. By the time Hoade and I visited Rachel, the place was only open on the weekends (so we missed meeting him by two days). Today, the place doesn't even exist anymore.

Tuesday, July 15, 2008

“There was no deity involved, Mr. Scott. It was my cross circuiting to B that saved them.”

I'm not sure where my mistake was, but I ripped out the DHCP settings, added them back in with one small difference (the DHCP settings are tagged with a name, which I originally had as LAN_ACCESS but renamed it 10.10.10.0/24) and that seemed to do the trick—DHCP was working fine under IOS 12.3. Why that fixed things, I don't know. Maybe I knocked some bits loose or something.

Now, testing DHCP and NAT on the Cisco router—that proved to be a bit more challenging. I needed one computer to act as an upstream, and another one to test that DHCP and NAT were working. Getting a few computers wasn't the problem. Getting a few computers that worked without issues was the problem. It was mostly networking issues. One, my Linux laptop, with a supposedly 10/100Mbps interface, refused to link to the 10Mbps port on the router. And the Windows laptop … well … yeah, it's Windows, running a few different firewalls that all needed to be shut off, and extraneous interfaces (such as the wireless interface) shut off and …

Ick.

Anyway, router is good to go.

I hope.

Also, I talked to Smirk about the non-automatic routing changes that have to happen at F. Smirk's answer to that? If that's the way it works, that's the way it works.

Oh well.

I can only hope that the problems F is experiencing are due to an overloaded consumer grade router and that once this Cisco goes into place, there won't be any more issues.

Wednesday, July 16, 2008

Vote for him! He's not the incumbent!

Looks like Sean Tevis hit the big time in his campaign (link via columbina and then via Joey deVilla) and the surge in traffic pretty much killed his campaign site. The donation page, however, is still working and it looks like he's on track for breaking the Kansas State Representative donor record of 644. I just checked and he's up to 596 donors.

I wonder how long it will be until he gets a mention at Instapundit.

Friday, July 18, 2008

Electric Clarinets

Back in middle school I played the clarinet. The first year, I rented an all-plastic clarinet and had trouble understanding why the other students had trouble getting a nice clear sound out of the instrument. It was the following year when my Mom got me a real clarinet that I found out just how difficult they could be. I ended up faking my way through the rest of the that year and never bothered to continue playing the instrument. Of course, that didn't prevent me from playing the electric clarinet during college (it's a joke—some friends and I formed a joke band called the Blender Children (also known as “The World's Most Dangerous Peer Group”) and threatened many times to go on tour).

So I'm amazed that what looks like high school students actually made an electric clarinet. Or rather, a robot that can play the clarinet (link via kisrael.com).

Wow.

Monday, July 21, 2008

Bad user interface mixed with uncertainty in debit card transaction processing leads to a frustrated customer, but in the end all Oligarchist Cell Phone Companies are equally bad so it's no use switching providers

Sigh.

All I wanted to do was pay a portion of the cellphone bill (Spring is getting the other half). I log into the payment site, and yes, they do have an option to pay a partial amount.

Good. I type in 68 for the amount. Then the debit card information, yada yada yada, hit submit, and find out that I paid 68¢ of the bill.

Blink.

Blink.

Okay, I admit, I missed the confirmation screen, but I was concentrating on the “Debit Card Transaction” option:

Debit transactions may be processed via the STAR, Pulse, ACCEL, or NYCE networks. Please uncheck this checkbox if you do not want your transaction processed via the STAR, Pulse, ACCEL, or NYCE networks so your transaction can be routed through the Visa or MasterCard network, as appropriate.

Okay, whatever that is.

See, I'm already distracted from my primary task, which is to give the Oligarchist Cell Phone Company money.

I select the “What's this?” link:

If this box is not checked, the debit transaction will be processed through the Visa or MasterCard network. Contact your financial institution for more information about what the different methods of processing mean for you.

Um … whatever. I just want to make a partial payment, and that's why I didn't notice the 68¢ payment amount before authorizing the transaction.

I would like to think there was some discussion about interpretation of inputs. I know myself, if I were paying 1¢ for payment, I would type in 0.01, and for paying a dollar, I would probably type in 1, seeing how I just typed in 68.

But I could see the rational here—there's an option to pay the entire bill, so the user wouldn't have to type in any amount and with a partial payment option, I suppose it's possible that someone would be likely to pay less than a dollar, although I find that odd myself. And they do have a confirmation screen, but the “Debit Card Transaction” option drew more attention than the actual data I just typed in.

This wouldn't be so bad but now I'm having trouble paying $67.32, because all I get now is:

PM700: We're sorry, but we are experiencing a temporary system error that prevents us from processing your payment.

Is that because I'm trying to do back-to-back debit card transactions? Do I need to wait? Or is there an actual error because the transaction server is down? Or the link to the bank is down? Or what?

Sigh.

Tuesday, July 22, 2008

Thoughts on copying text between computers via a mouse

If i select a block of text with a mouse, hit “copy”, unplug the mouse, and bring it to another machine, i should be able to paste it.

Via L. M. Orchard, Scott Lawrence

My first thought: What a stupid idea.

My second thought: But I can see how someone not well versed in how computers work might think that should work though.

My third thought: But really, now often do you actually move mice between computers? All my computers that need a mouse already have a mouse.

My fourth thought: What a stupid idea.

Wednesday, July 23, 2008

The Dark Knight

I saw “The Dark Knight last night. In a word—

Wow!

From the opening bank heist (which is … just … oh my God) to the final scene (which I can't reveal because it's a spoiler) is just …

Wow!

Character wise, this is perhaps the truest portrayal of the Batman characters in a movie I've ever seen. Heath Ledger's portrayal of the Joker is as stunning as it is disturbing (and really, it's scarier not knowing his background). Gary Oldman's James Gordon is lifted right out of the comics. And the tragedy of Harvy Dent clearly comes through.

The only gripes I have with this film, oddly enough, are with The Batman himself. It's not that I have a problem with Christian Bale's portrayal per se, it's just that I didn't like his “let me attempt to disguise my voice so no one recognizes me but make it plainly obvious that I'm trying to disguise my voice” Batman voice. I don't think it worked. My other gripe is that The Batman is a world-class detective (even studying criminology in college) but you would never know that in this film (and the only reason I'm griping this much about an otherwise excellent film is that The Batman is my favorite superhero, and this film is about as letter perfect as a superhero film can get).

(You want a better review? Okay, here are some that are worth reading).


That's finally done!

So I'm back installing the router. I told Smirk to tell the customer it would take two hours, even though I was expecting it to take at most half an hour.

Good thing too—because just as I was finishing up, 45 minutes after starting (due to some driver issues on my laptop, I could only use the serial port (to configure the main router) or the ethernet port (to test the network) but both at the same time—sigh) the customer asks if the wireless portion still works.

Excuse me?

You see, they were using a consumer grade wireless access point (with four ethernet ports) to handle their office, and much to my surprise, they were actually using the wireless portion for a few devices. I wasn't aware of this.

It turns out neither was Smirk.

So I spent the next hour reconfiguring the wireless router (which I had to completely reset because the administrative password had long since been lost) to work on their network. Fortunately, the customer had saved some critical information (WEP keys) that made the process just a tad less painful for both of us.

Total time: two hours.

Fancy that.

Thursday, July 24, 2008

Notes on a conversation between a network administrator and The Monopolistic Phone Company over a non-functioning T1 circuit

“Hello, this is The Monopolistic Phone Company Business Repair Unit. What is the billing or circuit ID in question?”

“Hello. The circuit ID is XXXXXXXXXXXXXX.”

“Okay. Hmm … what state are you located in?”

“Florida. Boca Raton, Florida to be specific.”

“Okay, oh dear! My computer just crashed. It'll be quicker for me to transfer you to another rep than to wait for my computer to reboot.”

“That's okay.”

Ring.

Ring.

“Hello, The Monopolistic Phone Company Business Repair Unit here. What is the billing or circuit ID in question?”

“Hey there. The circuit ID is XXXXXXXXXXXXXX.”

“Is that in Tennessee or Florida?”

“Florida. Boca Raton to be exact.”

“What name is the account in?”

“It would either be XXXX XXXXXXXX which is located at XXXX XX XXXXXXXX, Boca Raton, Florida or XXXXXXX, which is located at XXXX XX XXXXXXXX, Boca Raton, Florida.”

“Hmm … let me put you on hold for a bit.”

“Okay.”

[S/X: Musak, followed by a recorded voice saying the call is very important to us but that all available representatives are busy helping other customers but someone will answer the call as soon as possible, followed by more musak. Repeat twice]

“Welcome to The Monopolistic Phone Company Business Repair Unit. What is the billing or circuit ID in question?”

“Hello. The circuit ID is XXXXXXXXXXXXXX.”

“Thank you … is that XXXXXXXXXXXXXX?”

“Yes it is. XXXXXXXXXXXXXX.”

“What name is the account in?”

“It's either under XXXX XXXXXXXX, located at XXXX XX XXXXXXXX, Boca Raton, Florida or XXXXXXX, which is XXXX XX XXXXXXXX, Boca Raton, Florida.”

“And what seems to be the issue?”

“There's an alarm on the circuit.”

“You received an alarm?”

“Yes, the T1 doesn't have a connection.”

“Thank you. Hmm … please hold … ”

“Okay.”

[S/X: Musak, followed by a recorded voice saying the call is very important to us but that all available representatives are busy helping other customers but someone will answer the call as soon as possible, followed by more musak. Repeat twice]

“Hello, this is The Monopolistic PHone Company Billing Department. What is the billing number for this account?”

“Excuse me?”

“What is the billing number for this account?”

“I'm sorry, all I have is the circuit ID. I don't have access to accounting records.”

“Well, what's the circuit ID then?”

XXXXXXXXXXXXXX.”

“Hmm … XXXXXXXXXXXXXX?”

“Yes.”

“I can't seem to locate any information about this? Are you a reseller?”

“I believe we are.”

“Who do you send the bill payments to?”

“I'm sorry, I don't have access to that information. I'm just a tech trying to get a T1 back on-line.”

“So it's down?”

“Yes.”

“You have no idea where you send the billing to?”

“Sorry.”

“Well, you know that The Monopolistic Phone Company just purchased The Regional Monopolistic Phone Company so that may be why I can't currently access this.”

“Yes, we originally received the T1 from The Regional Monopolistic Phone Company.”

“So if you can just give me a billing number … ”

“Sorry, I don't have that information. Thank you for your time.”

“You're welcome. Please call us again sometime.”

Click.

Ring.

Ring.

”Hello?”

“Smirk, I have some good news … apparently we no longer have to pay The Monopolistic Phone Company any more money for that T1 … ”

Monday, July 28, 2008

A pitch machine—you know, a machine that can change the pitch of a human voice—would have been just as good …

“What would you have done differently?” asked Bunny. “I didn't find Batman's voice all that bad.”

What would I have done?

Well, if you can suspend your disbelief enough to accept a billionaire playboy dressing up in a black BDSM masked suit and beating up on criminals, then I suppose one could just have the actor portraying Bruce Wayne/The Batman use the same voice, same as every other incarnation of The Batman (although Bunny doesn't like that idea, claiming that people aren't dumb—“Hey! You sound just like that billionaire dude—Wayne something or other!”).

My other idea (and I suspect this isn't going to be popular at all) is to use two different actors—one for Bruce Wayne (I thought Michael Keaton did an excellent Bruce Wayne in Tim Burton's Batman, but made a lousy Batman) and a different actor for The Batman (I felt Val Kilmer's Batman was much better than his Bruce Wayne in Joel Schumacher's Batman Forever). This would help (I think) to underscore the dualistic nature of Bruce Wayne/The Batman.

Either of those two options, in my opinion, is much better than having Christian Bale imitate a 90 year old 5-pack-a-day smoker when talking as The Batman.


I still suspect he's paying too much for his airline travel …

I am a furloughed airline employee recently laid off due to service cutbacks. Bad news? No, great news! I get to keep my free travel benefits until the airline decides to rehire me!

I am passing my good fortune on to you by making this offer: For $500 plus the actual cost of gas, I will drive your car, van, light truck or RV anywhere in the continental USA or Canada. Since my return flight costs me nothing, I'll charge you nothing for it. Vehicle delivery usually in 5 days or less. I'll even take your pets and care for them along the way!

National Car Transport Service for $500 plus gas—Pets, too!

Not only does Glenn Campbell live in a car, but he's got an unusual job now too.

Tuesday, July 29, 2008

Virtual Meetings

I found this week's Weekly Company Meeting annoying.

I mean, more than usual for a meeting.

Since we no longer have an Office, we've been moving the location of our Weekly Company Meeting from place to place, depending on what's more convenient for all three of us (our recent meetings have been at a local (to us, not to The Data Center) Starbucks—cliché I know). We've even had a few phone-based meetings (when Smirk was sick enough to possibly infect us, but not sick enough to call off the meeting).

Usually, the face-to-face meetings last around an hour and a half, and most of that is due to tangential discussions like beverage selection and the snarkiness levels of the local baristas—you know, typical water cooler type stuff if we actually had a water cooler. The phone-based meetings were shorter—around half an hour, mainly because holding a conference call is painful enough for all the participants to enforce a “stay on target” mentality (and I can be anywhere for those, which is quite nice).

But this week's meeting was over IM (a private Jabber server to be technically pedantic). And it was one of the longest meetings we've had since going techno-nomadic—nearly two and a half hours.

Mostly this is due, I suspect, to continuous partial attention, where we can do other stuff on the computer (important things like Solitaire) while waiting for the other participants to finish typing (I don't consider myself a fast typist, but I've yet to meet anyone else who can match my typing speed). And in my experience, this can kill a group activity (one of the reasons I dislike the Friday D&D Game—a scenario that might take a few minutes ends up taking a few sessions to get through).

Mostly my griping about today's meeting is that I was hoping for a short meeting (dinner date with Bunny, who's going out of town for the next week and a half) and ended up with a marathon session. I will admit that being able to check on certain things (such as set the administrative password for our new trouble ticket system) during the meeting and not having to worry about it afterwards was nice. And I definitely dig the whole telecommuting aspect of my job, so I shouldn't be complaining all that much.

Still, I like the phone meetings since they tend to be short and to the point.

Wednesday, July 30, 2008

Hmm … didn't think of that.

There is another aspect of an IM-based meeting—I don't have to get dressed, and no one can see just how bloody sleepy I am.

And mercifully, today's virtual meeting was quite short.


Garkov

Why yes, it is yet another take on Garfield (it's not like I'm not obsessed with Garfield or anything), this time with the dialog automatically generated using a Markov chain.

[Garfield: “OH BOY, DO I KNOW?!”][Garfield: “I'M GOING HOME”][Jon: “GUESS WHAT,” Garfield: “IT'S SATURDAY NIGHT”]

While maybe not quite as good as some of the other takes, it has the potential to be quite amusing:

[Odie enters state right, carrying something in his mouth.  Jon and Garfield look on][Jon: “DARN YOU GARFIELD!  NOW I”][Joh: “DOESN'T LOOK” Garfield: “THE WOLFMAN IS HEADED THIS WAY!”]

Then again, it could be argued that Jim Davis has always generated the strip's diaglog using a Markov chain.

Thursday, July 31, 2008

It's Christmas time in the city stores

I'm reading about the latest signs for the End of the Civilization (the latest items that can be sold at your local comic book shop) when I see some Christmas-themed items. And that was enough to remind me of a small incident that happed a few days ago.

Bunny and I went to The Cracker Barrel for dinner, and in passing through the gift store section (which you have to do to get to the dining room area) we came across a few Christmas-themed items for sale.

It's not even August yet!

I mean, I could understand seeing Christmas-themed merchandise this early if you were in Christmas, Florida (although I didn't see any Christmas-themed stuff the last time I went through there). But I'm not in Christmas, Florida.

Then again, I'm one to talk—we still have our Christmas wreath on the front doot at Casa New Jersey.


Holy Headless Bards, Batman!

And from a comment from said End of Civilization post comes this: The Secret Remote Control Shakespeare Bust as seen on TV`s Batman!

I am at the same time, scared that it exists, and lusting to own one (but at $295.00 I can hold off).


Some musings about webcomic layouts

I'm not sure anyone has actually noticed this or not, but each time I've posted a cartoon, each frame has been a separate image. I got the idea 6½ years ago, although from where I don't recall.

I do think it's still a good idea because it facilitates a liquid layout for a comic (the frames only take up as much horizontal space as needed) while allowing for a larger frame. The frames on my experimental comic are 320×240, which are large compared to most online comics, while at the same time, allowing for a very narrow browser window.

I've even put the idea out there and had some positive feedback on it, but I've yet to see any online comic actually implement the idea, and I don't understand why. Perhaps it's not as good an idea as I think it is? Or it's, oddly enough, too constraining? Perhaps Howard Aiken was right when he said, “Don't worry about people stealing your ideas. If your ideas are any good, you'll have to ram them down people's throats.”

I don't know, it seems like an obvious idea to me.

Sunday, August 03, 2008

Vote for him! He's not the incumbent!

In fact, before he created the comic strip, Tevis spent weeks asking cash-strapped friends and family for help and walking door-to-door in the district. He raised $1,525.

The comic strip—at www.seantevis.com/3000—was first posted online July 16. Today, when he files his campaign finance forms with the Kansas secretary of state's office, Tevis will report that he has raised $95,162.76 in donations through PayPal, the online service that allows payments and money transfers via the Internet.

Via Sean Tevis, Kansan sticks it to election system

It looks like he made his goal and then some, but I've still yet to see him get mentioned at Instapundit.

Monday, August 04, 2008

If you are going to have a meeting, maybe this isn't such a bad way after all …

“Did you really hate the IM meeting that much?” asked Smirk. “And if you had told me that Bunny was going away for ten days … ”

Ah, the joys of public blogging, especially when your fellow cow-orkers read your blog … (not that I mind—heck, I got into more trouble when writing my humor column than I ever did over my blog).

Actually, a week of daily IM meetings hasn't been that bad. Last Tuesday's meeting was unusual in that it was the first one and a lot of issues had to be discussed. As the week went on though, they became shorter, and, as I mentioned, it's not like I have to get dressed for these things.


No 21′ foot scarf was harmed in the making of this post

For Spring, a tee-shirt she might like (although unfortunately, I doubt the tee-shirt model is available). Oh, and just because, John Barrowman singing “The Doctor and I” (link via yendi).

Tuesday, August 05, 2008

There were nearly no IT-type jobs; then again, there wasn't a large number of jobs to begin with

I was not in the best of moods. I had gotten up way too early, driven about an hour south only to face a large teeming crowd and a convention center that was a designated Pepsi Zone (ptuey!). And I wasn't relishing waiting in the infinite line for the résumé workshop.

Spring had suggested that Wlofie and I attend the Jobing.com Career Expo at the Broward County Convention Center. As we drove into Port Everglades, a person standing outside the gates informed us drivers to get our IDs ready. I asked, rhetorically, what exactly is the purpose of showing ID?

“Security theater,” said Wlofie.

Pretty much what I thought.

Anyway, by the time we got up to the gate, the guard inside just waved us through without bothering to ask us for our IDs.

So much for securing our ports through security theater.

Registration was a simple process, since we had pre-registered online and had our boarding entry pass ready. We exchanged the entry pass for a three page glossy brochure that doubled as our ticket into the expo. It was at this point that I went off in search of caffeine. I approached one of the food stalls outside the main exhibit hall.

“I'd like a Coke please,” I said.

“No Coke! Pepsi!”

“Excuse me?”

“No Coke! Pepsi! End of line with you! Next!”

Well then. The food stall was near the résumé workshop, and the line ran down the front hallway.

“Let's walk around the exhibit hall,” I said. “I can't believe I got out of bed for this.”

I was … underwhelmed … with the exhibit hall. The exhibit booths, a bunch of 10′×10′ areas demarcated by cloth curtains, covered an area perhaps 150′×100′. This isn't necessarily that bad, except the exhibit hall itself was 274′×237′, leaving quite a bit of floor space exposed. It made for a rather sad looking job expo.

We wandered about the place for perhaps an hour. Highlights:

By this time, I was getting hungry so we headed off to the concession stand at the back of the hall.

“May I help you?”

“Yes, I'll take the cheeseburger and chips, with a Coke,” I said. Hey, it couldn't hurt to ask.

“I'm sorry, but we only have Pepsi.”

“Oh. Iced tea then.”

“I'm sorry, but we're out of that.”

Aaaaaaaaaaaaaaaaaaaaah!

$10 for a cheeseburger (sans tomato and onion mind you), a bag of chips and bottled water.

After lunch, we spent nearly two hours in line for the résumé workshop, and while I can't say it was worth the wait, I did get some valuable feedback on my résumé. The woman looking it over was a bit overwhelmed with it actually. She said that with my current employment history and skill set, I should drop the dates, work on my “Objectives” paragraph (it currently reads “To obtain an exciting job in the fast-pased Computer Industry utilizing my unique skillsets.” When I wrote that, I had no idea what to write; my intention was to change that at some later point but I never got around to it) and add a section on my core strengths (and that doesn't include C programming and Unix administration, but more like “smart,” “tenacity,” etc).

She also suggested, after looking over the long list of systems I've worked on, that I should brand myself and include a “tag line,” something like “I don't do Windows.”

Interesting idea.

After that, it was time to leave, and thankfully, I was able to utilize the HOV lane on I-95 on the way back to Casa New Jersey, as it was the height of rush hour traffic.

Wednesday, August 06, 2008

Have flashbulb, will travel

Thanks to my prior employment in the airline industry, I get to fly free to most major cities in the US, Canada, Europe and the Caribbean. Therefore, I would charge nothing for this portion of my travel. You pay only my low per-day fee plus my actual expenses to get from the airport to your location. My prices start at $500 for a one-day shoot at a non- commercial event, plus my actual expenses. This fee includes several days of editing afterwards. (You'll find this is much less than most photographers charge.) What you get in a week or less is a DVD with both the edited photos and the original ones.

Via Glenn Campbell, Photographer for Hire

Apparently, there's a lot you can do if you have no home and almost no possessions and free airfare for the forseeable future.


I think climate change is something we still don't fully understand

IT has been a tough year for the high priests of global warming in the US. First, NASA had to correct its earlier claim that the hottest year on record in the contiguous US had been 1998, which seemed to prove that global warming was on the march. It was actually 1934. Then it turned out the world's oceans have been growing steadily cooler, not hotter, since 2003. Meanwhile, the winter of 2007 was the coldest in the US in decades, after Al Gore warned us that we were about to see the end of winter as we know it.

In a May issue of Nature, evidence about falling global temperatures forced German climatologists to conclude that the transformation of our planet into a permanent sauna is taking a decade-long hiatus, at least. Then this month came former greenhouse gas alarmist David Evans's article in The Australian, stating that since 1999 evidence has been accumulating that man-made carbon emissions can't be the cause of global warming. By now that evidence, Evans said, has become pretty conclusive.

Yet believers in man-made global warming demand more and more money to combat climate change and still more drastic changes in our economic output and lifestyle.

Via Flares into Darkness, Climate hysterics v heretics in an age of unreason

I was afraid I came across too strong in replying to Spring's post about “African Americans, Global Warming, and a Just Climate Policy for the U.S..” But as I was reading that report, my blood pressure just kept going up and up. Meteorologists have a hard enough time predicting the weather two weeks out, and yet to read this report, Global Warming™ is a done deal and we're all screwed, especially African-Americans, who aren't at fault; it's us non-Hispanic whites who need to be strung up.

Oh, sorry.

I do follow this stuff, and from what I understand, there is no consensus about Global Warming™, except from those who follow the secular religion of Environmentalism.

Thursday, August 07, 2008

A primitive form of fine-grained revision control

Work continues on “Project: Leaflet” and when I last left off, I mentioned that git is nearly perfect for handling the fine-grained revision control.

I'm here to report—it is.

The ability to make changes to one version of “Project: Leaflet” (say, the MySQL version) and then selectively merge changes into the other version (in this case, the PostgreSQL version) isn't that bad with git.

I currently have three respositories for “Project: Leaflet”—the “master” repository with two branches, one for the MySQL version, and one for the PostgreSQL version; another one that's my working MySQL repository, and the third that's the working PostgreSQL version.

The workflow isn't that bad. I make changes on one of the work repositories, say, the MySQL version:

mysql-work> vi somefile.c # make changes, test, etc
mysql-work> git commit -a # have working version, commit changes

Then, when done there, I go to the master repository:

master> git checkout mysql
Switched to branch "mysql"
master> git pull server-path-to-mysql-work
 [ bunch of output ]
master> git log >/tmp/changes
master> git checkout postgresql
Switched to branch "postgresql"

I then view the changes made, and pick which commits I want to merge:

master> git cherry-pick f290b3e50e4cea1c3ee5e5265faa996943ef8542
 # that large value is the ID of the commit
 # I pick the ones that apply 
 [ bunch of output ]
master> git cherry-pick 574756ffaa10cdc8452b33bf3d0ab8b786395080
 [ bunch of output ]

Then go to the other work repository, and pull the now-merged changes:

postgresql-work> git pull server-path-to-master
 [ bunch of output ]
postgresql-work> vi somefile.c # make any non-portable changes,
postgresql-work> git commit -a # tests, etc, 

And then back to the master to pull back the PostgreSQL changes and any non-specific merges that may have come up. I could probably make it smoother, as git is also a revision control toolkit, but as of yet, it's not yet annoying enough to warrant the work.


Still obsessing over stupid benchmarks …

The problem. The PHP implementation is a lot slower. Embarrassingly slower. Without any caching the Java version is able to do ~6000 queries per second. The PHP counterpart can push through ~850 queries. The implementations are the same. The stats provided by the author of the library are 8000 vs 1200. So about the same as my measurements.

Via reddit.com, Case study: Is PHP embarrasingly slower than Java?

In my ever continuing obsession with stupid benchmarks and optimization, I decided to tackle this particular little problem like I did with Jumble—map everything into memory and avoid disk I/O altogether (well, explicit disk I/O—the system will page in the data implicitly as it's used). This time, the data maps down to an object file about 8½ megabytes in size (all constant data, so pages can be discarded, not paged out), and with that, I was able to get ~100,000 queries per second.

On a 120MHz machine!

It didn't even take all that long to write …

Friday, August 08, 2008

A small observation about “The Dark Knight”

I just saw “The Dark Knight” again, this time with a bunch of friends including Joe, whom I hadn't seen in two years—he was in town for the weekend). Even though I've seen the movie before, Joe hadn't (which is why we all went) and hey, it was worth seeing again.

Afterwards as we all sat at Moonlight Diner (formerly the Starlite Diner) talking about the film, an interesting point was raised—both the Joker and the Batman are hypocrites. In the film, the Batman is for law and order, yet runs around in reaction to everything, improvising as he goes along with no real plan, breaking the law and order that he so cherishes. The Joker, on the other hand, preaches that random chance rules the day and he goes through his various capers with no plan, yet everything he does is planned in meticulous detail and leaves almost nothing to chance (except for one scene with Harvey Dent). It was an interesting point I hadn't noticed.

Monday, August 11, 2008

“We never thought of telling people … ”

Many motorcyclists rejoiced when the $4.99 SunPass Mini windshield stickers debuted on July 1.

Finally, a no-fuss alternative to the box-shaped transponders that are tough to keep from falling off or being stolen, not to mention impossible to shield from the rain.

There's just one problem: The sticker tags don't work on motorcycles.

That's what Gregory Pius of Wellington discovered after he already paid for the tag, filled it with prepaid tolls and stuck it on the windscreen of his BMW motorcycle.

Now he says he can't remove it without damaging the screen's protective coating.

SunPass' new Mini stickers won't work on motorcycles

About two weeks ago my friend Gregory was dismayed to find out that the new SunPass was never designed to work on motocycles, and started to raise quite a fuss about it.

Looks like a few people heard …


Oil, schmoil Part deux

Bear with us. Whaling, after all, was one of the world's first great multinational businesses, a global enterprise of audacious reach and import. From the 1700s through the mid-1800s, oil extracted from the blubber of whales and boiled in giant pots gave light to America and much of the Western world. The United States whaling fleet peaked in 1846 with 735 ships out of 900 in the world. Whaling was the fifth-largest industry in the United States; in 1853 alone, 8,000 whales were slaughtered for whale oil shipped to light lamps around the world, plus sundry other parts used in hoop skirts, perfume, lubricants and candles.

But, in fact, whaling was already just about done, said Eric Jay Dolin, who wrote some of the text for the exhibit and is the author of “Leviathan: The History of Whaling in America.” Whales near North America were becoming scarce, and the birth of the American petroleum industry in 1859 in Titusville, Pa., allowed kerosene to supplant whale oil before the electric light replaced both of them and oil found other uses.

By 1861, whaling was in such decline that the federal government bought 38 old whaling ships, loaded them with stones and sunk them in Charleston Harbor in what turned out to be an unsuccessful attempt to blockade the Confederate port.

They Used to Say Whale Oil Was Indispensable, Too

Yeah, I think I've mentioned this before


A symphony of music for your listening enjoyment

Now that Bunny is back in town, I can finally post a bunch of musical links for her (and your) enjoyment.

First off, a Muppet duet—the Swedish Chef and Beaker. Carmen perhaps? It's familiar to me at any rate.

Next, a sextet, comprising of Beaker, Beaker, Beaker, Beaker, Beaker and Beaker, performing Ode to Joy.

Third up, everybody's favorite 17th century one-hit wonder Pachelbel. Another solo sextet, but not Beaker this time. Give this one a bit of time, it starts off a bit slow, but gets better.

Fourth up, Theremin music! Super Mario Brothers video game theme music (link via nevesis). In fact, the guy that did that plays a lot of Theremin music.

While listening to those, there's a theoretical paper on the semantic shifts of the Beatles' chords. That is, if you are into music theory.

And just because, a dancing chicken.


Stupid server stats

So I took the IP address mapping program (it can lookup 10,000,000 entries per second on a dual-core 2.6GHz Pentium—5,000,000 per second per CPU) and decided to check some of the server logs—to see where I'm getting most of my network activity, excluding web requests.

Basically, I'm checking sources for spam and ssh attempts.

First up, sources for email (which includes legitimate emails as well as spam attempts) for the past 28 days:

Email attempts per country
Count Country
Count Country
5057 UNITED STATES
2413 RUSSIAN FEDERATION
2413 CHINA
2005 BRAZIL
1380 ARGENTINA
1336 COLOMBIA
1173 TURKEY
1035 REPUBLIC OF KOREA
1033 SPAIN
897 INDIA
843 CHILE
738 POLAND
721 UNITED KINGDOM
721 GERMANY
614 ITALY
604 UKRAINE
573 ROMANIA
554 PERU
466 ISRAEL
459 FRANCE
399 MEXICO
395 THAILAND
385 (no associated country)
309 TAIWAN
231 VIET
190 CANADA
188 HUNGARY
146 PORTUGAL
142 VENEZUELA
140 CZECH REPUBLIC
136 JAPAN
130 NETHERLANDS
127 LATVIA
124 KAZAKHSTAN
123 SAUDI
120 BULGARIA
116 INDONESIA
111 DOMINICAN REPUBLIC
107 PHILIPPINES
104 GREECE
102 SINGAPORE

Here, I excluded results less than 100. There really aren't any surprises here, except for the “no associated country” bit—I'm guessing here the mapping data I have is somewhat incomplete. It's also amusing to see 38 emails from Iran (marketing to the Great Satan? Unexpected, to say the least) and 1 from the Lao People's Democratic Republic (they have the Internet there?).

Next up, ssh attempts for the past 28 days (all results, since it's a smaller data set):

ssh attempts per country
Count Country
Count Country
43541 SPAIN
30397 (no associated country)
21643 CHINA
17741 UNITED STATES
5483 REPUBLIC OF KOREA
4941 INDIA
4745 LITHUANIA
4636 SINGAPORE
3085 RUSSIAN FEDERATION
2361 TAIWAN
1688 SWEDEN
1412 MEXICO
1087 ARGENTINA
848 PHILIPPINES
707 ITALY
693 SWITZERLAND
461 UKRAINE
452 JAPAN
434 KAZAKHSTAN
342 BRAZIL
178 NETHERLANDS
176 UNITED KINGDOM
122 FRANCE
96 COLOMBIA
26 BULGARIA
14 SERBIA AND MONTENEGRO
11 AUSTRALIA
10 INDONESIA
10 GREECE
6 PARAGUAY
1 THAILAND
1 MALAYSIA

The “no associated country” bit here is an overly generous regular expression accepting domain names in place of an IP address, and the real surprise here is the number of attempts from Spain of all places. China and Russia, I would expect (and I would have expected Russia to be higher than it is). Singapore was also a bit of a surprise here, seeing how it's Disneyland with the Death Penalty.

Go figure.

Wednesday, August 13, 2008

Going coconuts at the postal office

A week or two ago, Spring cut down perhaps two dozen coconuts from a tree in the front yard as part of a general “get this XXXX yard cleaned up” project. But what do you do with two dozen green coconuts?

Well, we ate a few, although getting into the coconut was an interesting project and frankly, not really worth the effort. Since they're green, that means they still have this thick fibrous husk that needs removing before you get to the actual nut (and a coconut isn't technically a nut, but a drupe), which needs to be cracked open to reveal the white coconutty goodness inside.

Fresh coconut—good. Spending an hour getting to said fresh coconut—why are we doing this again?

A bunch we gave away.

And apparently, Spring decided to mail a few to some far-off friends. She just slapped a mailing label and stamps directly to the coconut and dropped them into the mail box (or rather, “shoved” would be the more operative word here). There's no reason to actually pack the things since they're so XXXXXX difficult to open.

They arrived to their destinations just fine, although with little notes attached from the postal service saying “One of these days, we'll find a way to break these things … ”

Thursday, August 14, 2008

Mass media, digital art, and talent

Since Bunny had never seen either “Willy Wonka and the Chocolate Factory” nor “Charlie and the Chocolate Factory” I told her she should get both so we could watch both and compare the two. That was last night.

We watched them in release order, “Willy Wonka &c” followed immediately by “Charlie &c.” It was during “Charlie &c” that we ended up having an extended discussion about artistic media and whether talent plays a role anymore. It came about because I found myself very annoyed with the CGI effects in “Charlie &c”—I personally found them way noticable and that detracted from my enjoyment (especially during the opening credits).

I was distracted because it fell deep in the Uncanny Valley, which is odd, because there were no humans actually rendered (at least, during the opening credits—everything rendered was certainly well within the computer's bailiwick rendering-wise) but it just seemed that Burton & Co. didn't bother spending the time or the money for these shots. And it's not like it can't be done (“Jurassic Park” for instance—the dinosaurs were incredibly well done; so was the CGI in “The Phantom Menace,” although the story and dialog left a lot to be desired). Perhaps I would have accepted it better had open credits been more cartoony.

Bunny felt that modern technology (read: the digital computer) has cheapened artistic endevours to the point where talent is no longer really needed. Heck, music producers can pitch-correct singers, so even a talent for singing is no longer needed. And obviously, computers have advanced to the point where amateur film makers can do special effects on par with the pros, so there's nothing special there.

But I countered that talent still does matter. Even though Britney Spears is pitch-corrected, lipsyncs during her concerts and is more a product than a person, talent still matters. In her case, a music producer saw she was comfortable in front of a camera on the Mickey Mouse Club, and could hit cues and follow choreographed dance moves, and maybe even had a passible voice (which really didn't matter that much—pitch correction and all that).

“But don't people get upset that the music is identical to the album?” asked Bunny.

“I've met people who get upset if the music doesn't match the album version,” I replied. Yes, such people exist (and to an extent, I'm one of them, but I rarely, if ever, attend concerts). But you go to a Britney Spears concert not exclusively for the music, but for a show.

And it's not like bands haven't been “created” before. N'Sync. Backstreet Boys. New Kids on the Block. Menudo. The Monkeys.

Years ago, I was hanging out with a friend who had set aside a portion of his basement as a small recording studio, albeit with consumer-grade equipment. One of the devices he had was a small box with a few controls on it that allowed you to pick not only the tempo, but the style of drum beats and riffs it would play. And yes, the music that came out of the device sounded much like your run-of-the-mill techno type music. But you could change the tempo and style as it played, and it would slowly shift to the new settings over perhaps half a minute or so.

My friend, as I explained to Bunny, had no music background (that I knew of), and yet here he was, creating a type of music he enjoyed, and yet she found the whole idea distasteful. A “dumbing down” as she called it. “Where does talent fit in?” she asked. “Who needs talent any more?”

But I replied that talent still exists, but that those with the talent might not be known to the greater mass population. I bet not many people have heard of Buddy Rich, but those who have know the man has talent. And those who know are in the industry (music industry, in this case). “Have you ever worked on a spreadsheet?” I asked Bunny.

“Yes,” she said.

“Then you've programmed a computer.”

“But it's nothing compared to what you can do.”

“That doesn't matter. You programmed a computer.” And it's true, despite what computer programmers might think—she was able to instruct the computer through a series of calculations to derive a result. Program. QED.

Spreadsheets have allowed people who would otherwise consider themselves “not a programmer” to program a computer. A simple language like PHP can enable someone to jazz up a website.

“But don't you hate PHP?” asked Bunny.

“Yes, I can't stand the language,” I said. “And the thought that I might have to maintain a program written by Joe Sixpack scares me to death, but still, PHP allows Joe Sixpack to program. However badly.” And it's not like those who are talented are lost. Certainly, Richard Stallman, Donald Knuth, Guido van Rossum, Michael Abrash and John Carmack aren't household names (and Bunny had never heard of them), but within the Computer Industry, they're extremely well known, and known to have a lot of programming talent (now, whether you agree with or respect them, is another matter).

Get into any field, and soon enough, you'll learn who has real talent, and who doesn't. I pulled out a random Uncle Scrooge comic book, opened to a random page and handed it to Bunny. I then spent a few minutes searching through the pile of comics for another Uncle Scrooge comic and handed that one to her, opened to a random page. “Now, of those two, which is better—don't read the words, just go by the art work.”

She looked at the two comics for a minute or two. “I'm drawn,” she said, pun unintended, “to the first one.”

“Exactly,” I said. “That one was drawn by Carl Barks, the Uncle Scrooge artist at Disney. That one,” I said, pointing to the second comic, “was drawn by some two-bit hack.” And the reason it took me several minutes to find that one, the bad example, is that even as a 9-year-old kid reading comics, I came to “know” that some Uncle Scrooge comics were just inherently better than others and at the time, I couldn't say why. Now, I can say why—Carl Barks. But that doesn't fully explain why though. It's not as if Carl Barks' backgrounds were more realistic. Heck, I can't even say his Uncle Scrooge was more realistic, since no comic version of a duck looks remotely like a real duck.

It's hard to pin down why, but Bunny agreed—Carl Barks' art was just “better” than the other artist (and I have no idea who the other artist was, for Disney never allowed their artists to sign their work, so I find it even more amazing that my 9-year-old self could recognize the work of a single unnamed artist). And even my crack of the other artist being a “two-bit hack” is a bit disingenuous—his artwork at least passed the editors at Disney to be published, so he obviously had some “talent.”

Pitch changers, computer graphics, digital photographs, MIDI, samples, all new media. That's it. It's nothing to be afraid of, and it certainly isn't “dumbing down” talent in my opinion. Bunny slowly came to a similar conclusion—that all this new media is allowing more people to express themselves, however badly it might be done. “And while PHP might be a bad language, it at least lets them express themselves in code. And could it lead to better languages?” she asked.

“Yes, if the person takes the time to really learn, or finds herself hitting limitations in PHP, she can certainly find other, more expressive languages to use. At the very least, she will eventually learn to recognize real talent in whatever media, music, paint, programming, film, she might use.”

“So,” said Bunny, pointing to Johnny Depp's deeply creepy Willy Wonka on the TV, “I should approach this film on its own merits and appreciate it for what it is.”

“Oh no,” I said, pointing to the TV, “that movie's crap.”

“Oh thank God!” said Bunny. In the end, we both didn't care for Tim Burton's take on Charlie and the Chocolate Factory. Johnny Depp's Willy Wonka was more effeminately creepy than Gene Wilder's ascerbic eccentric, even if Burton's version was closer to the book than the 1971 version.

“Personally, I wouldn't touch PHP with a 10 foot pole,” I said. “But just because I don't like it doesn't mean it's bad per se. It's just another means of expression. But remember Sturgeon's Law: ‘90% of everything is crap.’”

“It's just how you use it.”

“Yup.”

Monday, August 18, 2008

“Tropical Storm Fay, you're no Hurricane Andrew”

It's really nothing more than a really bad storm, and it's going to miss us entirely. All we'll get is a bit of rain and wind.

Okay, maybe quite a bit of rain and wind, but it's really nothing at all compared to sixteen years ago.


Just because I found it amusing

At Costco today: the price of a gallon of milk equaled the price of a gallon of gasoline.

Hmm … perhaps this is the type of post better suited for twitter


“I knows me some ugly!”

I think I may need to dictate entries, then transcribe them, because I missed perhaps a third of what I wanted to cover in my talent post. One aspect was a bit more depth into the “dumbing down” argument Bunny stated.

To me, it seems as if each addition of media has always been about either producing the end result faster, cheaper, or to reach a wider audience, and one example I used in a later discussion about this with Bunny was books.

Prior to Johann Gutenberg building the first printing press, books were hand written (or copied) in a long and laborious process quite prone to mistakes. That, and the fact that the majority of people were illiterate, made for a very expensive product, and an extensive library might contain perhaps two dozen books, all chained to the shelves because of their expense.

But Mr. Gutenberg comes along and makes duplication faster and cheaper than before. More books at a cheaper price lead to increasing levels of literacy (not to mention breaking the monopoly The Church had on religious interpretation and scientific inquiry) to the point where the US and UK published more than 375,000 books in 2005 (and in the 90s publishers in the US published each year over twice the number of books published between 1881–91.

Indeed, today, thanks to increasing literacy, decreasing publishing costs and a thriv ing publication industry those that have the passion to write The Great American Novel can now do so.

With, sadly, predictable results.

But it's just not restricted to books. Take any media. Television and film, for instance. Both started out with a theater tradition (with television more closely related to vaudeville and film classical theater) and again, both took years to shed the trappings of theater to find their own voices, as it were. And actually, while both have a shared vocabulary (for lack of a better term), there are subtle distinctions between the two and what works for television doesn't necessarily work for film. They are two distinct, yet closely related, media.

And now, thanks to decreasing costs and rising demands, anyone can make their own television show or even film. In fact, digital video might become distinct from analog video because of advances in digital video manipulation (and that link is both indescribably cool and scary at the same time).

And how about photography? In the early 1800s, due to a rising merchant class (or middle class if you will) with a penchant for portraits, a lot of painters were looking for ways to meet the demand and thus was born photography. It's after significant advances in photography that painters (who didn't go on to become photographers) started drifting away from realism and into impressionism, pointilism, cubism and abstractism. And it took a good number of years for photography to transcend its own starting point in portraiture to become its own distinct artistic medium.

Oh, and speaking of photography, thanks to digital technology it's now cheaper and easier to take pictures than it ever was before. Also, it's cheaper and easier to manipulate photos today than it ever was before:

REMOVING her ex-husband from more than a decade of memories may take a lifetime for Laura Horn, a police emergency dispatcher in Rochester. But removing him from a dozen years of vacation photographs took only hours, with some deft mouse work from a willing friend who was proficient in Photoshop, the popular digital-image editing program.

Like a Stalin-era technician in the Kremlin removing all traces of an out-of-favor official from state photos, the friend erased the husband from numerous cherished pictures taken on cruises and at Caribbean cottages, where he had been standing alongside Ms. Horn, now 50, and other traveling companions.

“In my own reality, I know that these things did happen,” Ms. Horn said. But “without him in them, I can display them. I can look at those pictures and think of the laughter we were sharing, the places we went to.”

“This new reality,” she added, “is a lot more pleasant.”

After her father died several years ago, Theresa Newman Rolley, an accountant in Williamsport, Pa., hired Wayne Palmer, a photographic retoucher, to create a composite portrait of the two of them because she had no actual one of them together.

That photograph—of a moment that never happened—now hangs in her living room. It still brings tears to her eyes, she said.

“It's the only picture of my dad and me together,” Ms. Rolley said, adding, “If the only reason I can get one is cropping it in, it still means the same to me.”

I Was There. Just Ask Photoshop

Orwellian implications aside, this is just another medium to be artistically explored (and exploited) and may take years before it comes to have an artistic vocabulary of its own.

And sadly for me, Ze Frank said it so much better than I did (video transcription).

Tuesday, August 19, 2008

Oh, I keep forgetting about those …

Ulp! Only 4½ hours to go …


“Nothing to see, move along … ”

Just an update—things are fine, if a bit wet.

Friday, August 29, 2008

I love the smell of caucus in the morning!

It's about time.

I've been waiting to do this for over a year and a half now, and now that both Barack Obama and John McCain have both announced their running mates, I can now apply the Algorithm for Determining the Winners of U.S. Presidential Elections, which was created prior to the 2004 Presidential elections and managed to predict correctly the winner in 2004.

Enough with the introductions, on with the data. The formula, from the paper in question:

Presidential Electability = 5×(years as President) + years as U.S. Representative + 11×(years as Governor),

Vice Presidential Electability = 4×(years as Vice President) + years as U.S. Representative + years as Governor,

Total Electability = Presidential Electability + Vice Presidential Electability.

And the results (candidates) …

Presidential electability of the candidates for President in 2008
Party Names P/VP Rep. Gov. Other Total
Party Names P/VP Rep. Gov. Other Total
Democratic Barack Obama / Joe Biden 0 / 0 0 / 0 0 / 0 †First adherent (-110) / — (0) 0 (†-110)
Republican John McCain / ‡Sarah Palin 0 / 0 4 / 0 0 / 2 Divorced (-110) / — (0) -104
Constitution Chuck Baldwin / Darrell Castle 0 / 0 0 / 0 0 / 0 — (0) / — (0) 0
Libertarian Bob Barr / Wayne Root 0 / 0 8 / 0 0 / 0 Special Prosecutor (-110) / — (0) -102
Green Cynthia McKinney / ‡Rosa Clemente 0 / 0 13 / 0 0 / 0 †First Adherent (-110) / — (0) 13 (†-97)
Peace and Freedom Ralph Nader / Matt Gonzalez 0 / 0 0 / 0 0 / 0 Lobby organization (-110) †First adherent (-110) / — (0) -110 (†-220)

†Score using a loose interpretation of “the candidate was the first adherent of a particular religion to be a major-party candidate for President or Vice President.” See below for more details.

‡Even under the relaxed interpretation of the “first adherent” rule, this doesn't apply since Geraldine Ferraro was the first woman to run for Vice-President back in 1984.

Interesting results, and it really comes down to an unstated assumption in the paper, and what the authors really meant by “the candidate was the first adherent of a particular religion to be a major-party candidate for Vice President.” If I go by a strict interpretation of “first adherent,” then this predicts that Cynthia McKinney wins and becomes the 44th President of the United States.

Heh.

Seriously, if we take into account the unstated assumption that no one in a minor political party will ever win and with a strict interpretation of “first adherent,” then Barack Obama wins.

But really, what is the purpose of the “first adherent” rule? Well, up until this election, all presidential nominees have been white males (with the exception of Geraldine Ferraro as a Vice-Presidential candidate, but she was a white woman). It may be that the authors found the only major difference between the parade of rich white males was their stated religion, and therefore, this can be interpreted in a wider context as “first major difference in a candidate from those that came before.”

So with this “looser” interpretation, we now have the First Black (or First Mulatto if you want to be pedantic) for a basis of differentiation, and in that case, McCain/Palin win over Obama/Biden -104 to -110.

Okay, so this endless election is still up in the air.

Sigh.

I can't wait until November 4th.

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.

Why Aren't You Gone?

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:

  1. lets us check the validity of the customers' email contact address;
  2. 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.

  1. I'm not even sure what the world's biggest roller coaster is, but we have this here Intarwebs thang so we can look this up and make our own judgement about what constitutes the “world's biggest roller coaster.”

    Personally, I'm not a fan of roller coasters, and I'm disinclined to even ride the things, but I have ridden them before. Years ago, at a time when I was younger than 18, Mom and I were at Disney World. Mom, for whatever reason, decided she wanted to ride Space Mountain, which is a roller coaster in the dark.

    In the dark!

    Anyway, Mom had to drag me on the ride. I had to drag her off the ride. It wasn't an experience I want to repeat.

  2. I'm not even sure this is legal for anyone under 18.

    Oh wait, You can. Down to age 10 it seems.

    Ooooookaaaaaaaay.

    No.

    I've had friends that have jumped out of a perfectly good airplane, but not me.

  3. Nope. I wasn't one for sports as a kid.

  4. Yes. An experience I will never forget, despite forgetting what the actual award was for.

    It was horrible really. I was a Drama Geek in high school, and even though I liked working behind the scenes more than being on stage, I still ended up joining the Thespian Society and the initiation involved dressing up as a clown.

    I didn't expect it to be all that bad. The initiation was the same day the administration was handing out student awards and because of my experience in working the lights in the auditorium, I had permission to skip my classes that day to work lights for all the ceremonies. So I could hide in the light booth at the head of the auditorium.

    All was going well until during one of the ceremonies, my name was called.

    Nothing like walking across a stage in a clown outfit in front of all my peers to collect some brown-nose-esque award from a class I didn't even enjoy all that much (English, as I recall).

    So yes, I won an award while wearing a clown outfit!.

  5. I had two years of clarinet in middle school, and I can still remember some fingerings (especially the transition from A to B-flat which is a bitch on a B-flat clarinet).

  6. This one is hard to decide, but I came down on the side of “yes.”

    I was a Drama Geek in high school and worked backstage during many a performance, including a “battle-of-the-bands” type show. So I kind of squeak by on this.

    Post-18, definitely. In FAU I worked in the auditorium (not to be confused with the theater across campus) and there I worked quite a few gigs. Shirley Jones kept saying “partridge-what?” Buddy Hackett was a loud-mouthed jerk, and Hal Linden stole my pen.

    Yes, the auditorium mostly catered to the older crowd in Boca Raton.

  7. Nope.

    And even if I did, I would have no idea what to say.

  8. Haven't done this either.

    And unless you live in Los Angeles (or maybe Orlando for those that might want to go the Micky Mouse Club route) I can't see anyone under 18 doing this, unless they have an obnoxious stage mom to force the issue.

  9. Well, there's Sean, best friend and author.

    Then there's Sean, friend in college and lead vocalist for our fake band.

    And there seem to be quite a few Sean Conners out there, but I haven't met one of them.

  10. During the 11th grade, I thought I came up with a neat way to very quickly calculate the Mandelbrot Set which required the taking a logarithm of a complex number, but my math teacher at the time had no clue what I was talking about, and upon reflection, I don't think it would have worked.

    I also discovered that it was not a good idea to take the keys to the high school home with me, but that's not the type of discovery they're talking about here.

  11. Yes. Several in fact. But they were all done in college, after I turned 18. When I could be arrested.

    'Nuff said.

  12. Definitely yes.

    My grandparents (both sets) grew up during The Depression and from them, I inherited a “pack rat” gene. Even as a kid I used to joke about my “collection of collections.”

    Which I still have, for the most part (except for the “wall of computers”—after a few years that became really silly as it lead to “wall of really heavy dust collectors”).

  13. No. Not all of us are Shakespeare. Or even Anthony Burgess.

  14. This one I'm claiming, even if I haven't.

    At the end of 9th grade we had to select the classes we wanted for the following year. Even at that age, I knew that public speaking was among the biggest fears of most people (something I learned in 5th (or was it 6th?) grade when forced into Toastmasters) so I thought it might be a good idea (and this was solely my idea) to sign up for both Speech and Drama.

    I should also note that I was quite shy at the time.

    It worked—I have no fear of public speaking at all.

    Fear of heights however

  15. Nope.

    In fact, I found it traumatic enough selling candy in the 4th grade and magazine subscriptions in the 7th grade (I was told to lie to sell subscriptions) that I refused to do it ever again.

    My Drama teacher understood this, and whenever she had a candy sale, I never had to sell candy, but I did help her collect and count the money.

    My 11th grade civics teacher, on the other hand, wasn't so sympathetic. Then again, everyone in the 11th grade had to sell magazine subscriptions and the class that sold the most subscriptions would get a pizza party. I handed all my stuff to one of the more motivated students and didn't think about the situation again until the end of the magazine sale drive.

    Much to my horror, my class won.

    Sigh.

  16. I didn't get my learner's permit until I was 19 and absolutely needed a car to get to work.

    And even then, I failed the vision test (officially—unofficially, I proved the clerk had given me the wrong chart to read).

    And the less said about my first attempt at driving a car, the better (to this day, Dad still is leary of letting me drive).

  17. For loose values of “coast to coast.”

    As a kid, I spent my summers in Royal Oak, Michigan with my grandparents. When I lived in Brevard, North Carolina, my grandma would drive down to pick me up and then again to drop me off. When Mom and I moved to Florida, I started flying there instead.

    But one year, I drove back to Florida with my Mom's cousin and his two young kids (oldest was maybe five at the time). In a Camero.

    And people wonder why I hate trips …

    Anyway, I digress.

    While it's not from sea to shining sea it is from one “coast” (near enough to Lake St. Clair) to another (the Atlantic Ocean) and is over 1,200 miles. Close enough for me.

  18. Yup.

    Although I don't think I ever was 18, as Mom used to joke that I was 10 going on 40 …

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.

[Office Depot has determined that the Office Depot Web Site is dangerous and can't be used]

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.

[I think I'd prefer typing on a paper replica than this thing]

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.

[I think this is the first time I've ever worn a jacket]

Once inside, we found our seats and checked the menu for the night's dinner.

Zucchini & Ricotta Ravioli
Brown Butter and Spinach

Or

Blue Crab Cake
Pineapple Tzatiki, Summer Kimchee

******** ******** ********

Organic Green Salad
Herbs, Nuts and Berries

******

Pan Seared Grouper
Giant Peruvian Lima Bean Sofrito

Or

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):

Attackers use a port scan to find out what programs are running on your computer. Most programs have known security weaknesses. Disable any unnecessary programs listed below.
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!

Thursday, October 02, 2008

Nostalgia is caustic, but gosh darn it, I need some optimism right now

Update on Monday, May 1st, 2023

Fifteen years on, and I have no idea what this was about. Nor do I know what the video is, because it simply doesn't exist anymore on YouTube. Que será, será.

Monday, October 20, 2008

And sometimes, I have to remind myself that yes indeed, it could always be worse, but thankfully, I'm nowhere near this myself …

[Rock Bottom:  You'll Know It When You Get There.]

Saturday, November 01, 2008

Forget fifteen hundred words a day, I'm having problems with just fifteen …

It's November 1st and that can only mean one thing: National Novel Writing Month. But unlike last year where several people I know (and even some I don't) attempted their hand at a novel, this year I haven't seen much mention of it—perhaps the global financial meltdown happening at the same time as the 2008 Presidential Election from Hell That Just Will Not End has distracted people (or at least, the ones I follow on the Internet) from it this year.

In other news, October wasn't a very good month for me (as you may have guessed), and frankly, the less said about the events of the past 31 days the better. Things didn't go as badly as they could have, but still, it was a rough month, and I'm finding it hard to get back into the habit of writing here.

Oh, and just my luck—things only go downhill from here.

Sigh.

Sunday, November 02, 2008

The printing press at the United States Treasury is going full tilt, and investors are still worried about deflation? What are they smoking?

Deflation fears are suddenly rising, as the full impact of the credit crunch hits markets and economies. Small wonder: Plunging commodity prices, crumbling inflation expectations, a soaring dollar, and the onset of a potentially severe global recession are combining to reverse the inflation spike of early 2008.

Via New Mogul, The Coming Deflation Scare

We've already had severe deflation—falling prices—in housing, stocks and commodities this year.

The question is whether that could spill into prices of goods and services across the board, as well as into wages, as the economy worsens.

Via The Mess That Greenspan Made, Investors brace for a case of deflation

Good lord!

Our government masters have dumped over $2,000,000,000,000.00 [in the United States alone —Editor] to prop up our economy and investors are worried about deflation? Do they have no concept of how the economy works?

Okay, scratch that, we are talking about the dismal science and I suspect that no one alive today really understands our economy.

I mean, I get the basics—supply and demand—given a constant supply and an increase in demand, the price goes up (and if it doesn't the market experiences shortages in said item). Conversely, given a constant demand and an increase in supply, the price goes down (and if it doesn't, the market experiences a glut in the item). Pretty basic.

A bit less basic is how the monetary supply affects this, but it's easy enough to point out a few historical examples of vast increases in the monetary supply to see that when the supply of money goes up, so does the price. And conversely, when the monetary supply contracts, there's less money chasing goods and services so the price falls.

I never did understand what was so bad about deflation—heck, it sounds pretty good! Lower prices across the board, my money is worth more, what's not to like?

Plenty, actually. It was quite the education to read about the downside of deflation in the comments to this Reason Magazine article about Ron Paul:

Usually what happens is that nominal interest rates become exceedingly high. With deflation, you get paid to sit on cash—so you need a very high interest rate to induce you to lend it. Deflation pays you to be risk averse and hoard cash—which induces chrinically tight money, and stifles the risky ventures upon whose success technological progress is made.

Tacos, please explain why having my money becoming more valuable over time is a bad thing. It seems preferable to having it worth less over time.

A number of reasons, as it encourages liquid holdings over less liquid ones (such as higher education) and encourages holding liquid currency as opposed to spending it. Currency is hoarded instead of invested, and capital decreases (why by a stock or loan cash when your money will become more valuable just sitting under your bed, without you having to sacrifice liquidity or take on risk?). Deflation functions to increase interests rates, making loans more expensive.

With no one spending or borrowing money, production drops and you move toward recession. Businesses lay off people as the real cost of wages increases while sales decrease, etc, etc, etc. The number of problems caused by deflation is myriad and probably best enumerated elsewhere.

Even Austrian economists [my own views of economic policies tend towards the Austrian school, just for the record — Editor] view deflation caused by contraction of the money supply as bad, so I'm uncertain as to how this is reconciled with non-fiat currency.

If you have an inflexible standard like gold you get deflation and the house you are contractually obligated to pay $2,000 a month to keep is now worth only $1,500 a month using the newly deflated currency. No one can borrow, there is no liquidity and everything comes down like a house of cards. The right answer is a totally free currency market and with no central banks and full disclosure. Let the market set the money supply with no interference from a Federal Reserve.

Indeed. Which makes me wonder why Austrian economists are stuck on the gold standard, since they accept that deflation due to contraction of the money supply is bad for economies (as opposed to deflation due to a drop in prices from increased efficiency, which is good).

Ouch.

So yeah, deflation bad. I get it.

But I still can't see how “investors” are afraid of deflation when governments over the world are printing money as fast as they can and shovelling it to the banks. Perhaps the banks don't trust anyone to loan it out so the money isn't actually getting into the economy like the governments want …

Strange times indeed …

Monday, November 03, 2008

I'm only hoping for two things: 1) that whoever wins tomorrow wins by twice the margin of error, and 2) the 2012 Presidential Campaign won't start until 2012.

Tomorrow marks the end of the 2008 Presidential Election From Hell That Just Will Not End and to mark the occasion, I thought I might present some last minute arguments to vote for or against Obama or McCain (because in the end, Cynthia McKinney/Rosa Clemente will win).

First up, a critical look at McCain's past, followed by a critical look at Obama's past. Both are long, but are well worth reading.

Second, Senator Obama's voting record and Senator McCain's voting record. Let their actions speak louder than words.

And now for the partisan portion of today's entry: Why I am Supporting Obama, and Voting for McCain. Plus, another McCain supporter who makes sense.


Words fail me …

In an informal Esquire survey, three out of four white supremacists prefer Obama, while McCain is the clear favorite among black nationalists. This is just one of many surprising views that emerged after we talked to extremists about this historic electoral showdown between a 46-year-old black man and a 71-year-old white man.

Via Flutterby, Why White Supremacists Support Barack Obama

Just …

Just …

Tuesday, November 04, 2008

For my friend Gregory, who told me point blank: “You shouldn't vote.”

Myself, I'm going to resist the tempation to even peek at the results until the 4th, when the Electoral Collage will rise from its hole, and if it sees its shadow, then six more weeks of vote counting and law suites.

Me, four years ago

I voted today and the experience wasn't the five hour ordeal I've been led to believe it was. Nope, once it was clear that I lived in the district (oops) the actual voting process was rather quick. In fact, there were more people there to monitor the voters than there were voters.

And no touch screens or butterfly ballets this year—just a simple paper ballet you fed through a machine when finished. The confetti coming out the other end was a nice touch, I thought.

I also did the right thing and voted for Cynthia McKinney, because, you know, she's going to win.


I wonder what the Founding Fathers would have thought of our instant results elections?

It's hard to resist the siren call of election results because all of us have a vested interest in our candidate getting elected and hopefully the mass of voter fraud that other candidate engages in will be caught and stopped.

But I think instant results in near real time are bad overall—it must totally suck to live in Alaska and have the election all but called even before the polling stations are closed. And if you don't care for Alaska because of that candidate, then what about Hawaii, the birthplace of that other candidate (you know, The One)? It must be tough for citizens of both states to feel like they contributed to a national election.

I'm actually surprised that there isn't a law preventing poll results to be released until all polls across the country are closed (for a national election—obviously for more local matters, results can be issued as soon as the relevant polls are closed). I would think at the very least this would give all parties a bit more leeway to engage in a bit of election chicannery (for those that require a more cynical viewpoint of things).

Wednesday, November 05, 2008

Election results

A rare Presidential race with no incumbents, the American People instead threw the incumbent party out of the office (a sentiment I often espouse myself), but alas, the American People did not toss the incumbent party out of Congress, which had a lower rating than the President. Go figure.

Anyway, it looks like the Algorithm for Determining the Winners of U.S. Presidential Elections held with no modifications required (well, maybe a rule to penalize candidates in non-mainstream political parties, otherwise Cynthia McKinney should have won).

And in other election news, Sean Tevis (remember him?) lost his bid to become a Kansas State Represenative by 425 votes. Here's to next time, Sean.

Thursday, November 06, 2008

Because Dr. Raymond Stantz said to buy it …

I came across this last month, but well … it was rather crazy last month. Anyway, for my friend (and ex-roommate) Rob—Crystal Head Vodka (via Geekcentric)—because I think he'd appreciate vodka served from a crystal skull (as if Dan Aykroyd hawking The Super Bass-O-Matic 76 wasn't odd enough …).

Thursday, November 13, 2008

MyFaceSpaceBook

I was talking with Hoade the other day and found out he's on MyFaceSpaceBook (it wasn't easy to find that link—heck, the whole site is maddening, but more on that in a bit) and he convinced me that I too, should jump off the bridge with the rest of the lemmings and get my own MyFaceSpaceBook page.

Good XXXXXXX Lord! Was I the last person on the planet without a MyFaceSpaceBook page? People I haven't thought of in years suddenly popped up on my computer screen. People like Naomi Peyton neé Dominguez—we played the elder Kirbys in You Can't Take It With You when I was a sophmore in high school (she was a junior at the time). Or Jae Kim, a fellow high school classmate from '87. And so on. High school, college, just about everyone I knew from the past twenty years or so is on MyFaceSpaceBook.

But I'm finding the site very difficult to use, mainly because it keeps defying my expectations of what a social site should be, despite not having any real preconceived notions of what a social site should be. For a site that supposedly exists to connect people up, seeing what the site has to offer when you aren't a member is impossible. And even when you are a member, you often times can't see much of anything on a person's profile, which makes it difficult (or at least, I find it difficult) to determine if the person listed is who I think the person listed is.

I suppose it's set up to protect privacy, but I come from a tradition of an open Internet, where everything you put up on a website is meant for public consumption. So this “lock everything down” mentality is alien to how I work on the Internet (even back at FAU, I deliberately kept my computer files mostly accessible—if they were important, I would restrict access, and I deeply resented when the sysadmins of the Computer Science and Engineering Department reset permissions on my files to prevent anyone from reading them, multiple times! I don't need to be protected from myself, you know?).

It also reminds me of a walled community, much like AOL or CompuServe in the 90s. Mediate the users experience; give the user limited options; one-stop shopping as it were. I'm not thrilled with MyFaceSpaceBook, but I doubt I'm their target audience. I run my own webserver (and have done so since 1994 when I put up my first website) and do not have to suffer the whims of some large faceless company (only the whims of a small hosting company, who will personally deliver any lawyerly threats to my doorstep for me to take care of).

I'll probably still use the site (much like I use my LiveJournal account) to keep up with friends; it's just not my primary home on the Intarwebs.


Reason #23 why I sometimes wonder how I even have a job

“How hard can it be to email a webpage?” asked Smirk.

“Very hard,” I said.

“Why do you insist on using 80s technolgy?”

“Technically, mutt was written in the 90s, and can handle attachments.”

“Aaaaaaaaaarrrrrrg!”

I started using the Internet in the late 80s, back in a time when sending files via email was frowned upon, and every computer on the Internet was a true peer to every other computer on the Internet. And yes, intellectually, I understand that time has moved on and we've regressed to walled gardens of mediated digital experiences and people never think twice of emailing Microsoft Office to themselves so they can work on the Johnson Account at home (and least you think I'm engaging in a bit of hyperbole with Microsoft Office, I'm not—I handled the technical support call for just that situation a few years ago).

But it still just doesn't feel right to send files via email.

Anyway, I've tried using more modern email clients, and I found them all slower than the text based email client elm running on a 32MHz computer. But given that elm is no longer being maintained, I've upgraded to the slightly slower (if a bit more featureful) text based email client mutt (which is okay, because I'm running it on a 2.6GHz computer).

And in order to keep the speed up (especially given the size of today's emails—I mean, do you realize how big Microsoft Office is these days?) I read the mail directly on my server. That has two benefits—one, I don't have to suck down huge emails over a slow Internet connection, and two, I can check my email from any computer without being forced into using some horrible excuse of an email client over the web.

That means, technically, I don't check my email on my local computer here, and therefore, it's a bit difficult to actually send a webpage. In fact, for me to send a file via email, I have to upload it to the server, and if I'm doing that, I might as well put it in a web-accessible location and send a link via email. This also means that yes, things that most people would consider “trivial” (like mailing Microsoft Office) aren't “trivial” for me (and let's not even discuss sending me Microsoft Word documents … ).


The Amazing Randi on Pseudoscience in the New Millennium

Bunny and I attended Pseudoscience in the New Millennium, a lecture given by James Randi.

[James Randi.  Photograph by Bunny]

His lecture started out with him walking up to the podium, microphone in hand, and asking the audience to raise their hands if they considered themselves a “skeptic.” And after the entire audience raised their hands, he proceeded to tell us that we weren't very skeptical since he's already fooled us. Twice. In less than two minutes. The microphone he was using? Not even turned on; we just assumed he was using that because he had it (his actual microphone was in his shirt). And second, the glasses he was wearing? They too weren't real. The point of that was to show that just saying one is “skeptical” isn't always enough.

And after that, he started his lecture, going into details about various pseudoscientific quackery, like homeopathy, spritual healers and psychic surgery (which didn't save Andy Kaufman), during which he performed a few magical tricks to keep us on our toes.

He also mentioned his $1,000,000 Paranormal Challenge, which no one has won since it begain in 1964. This prompted one lady during the question-and-answer session (she was the last “question” during the night) to offer Randi “proof” that spirits exist (and with this, she brought forward a huge carrying case with her “proof”), although she didn't really want his money (a common response from many applicants, according to Randi; a few members of the audience asked if she would donate the winnings to them). Randi humored her and told her to apply for the prize.

I doubt she will. I also suspect Randi feels the same, but I can't prove it.

[Randi is my homeboy]

Friday, November 14, 2008

This is by no means an indication that I want to live in a Gibsonian novel

Another day, another script kiddie removed from one of our servers.

This time the script kiddie didn't even bother hiding his program.

Sheesh. Kids today.

But it's probably because of stuff like this that Smirk tolerates my old fashioned ways

Saturday, November 15, 2008

Scott McCloud is my homeboy

It's been a week of lectures. Today, Bunny and I drove down to the Miami Book Fair to attend Scott McCloud's lecture on comic trends.

[Scott McCloud by Bunny—she has a much better camera than I] >

The one thing that struck me about seeing Scott McCloud—his glasses aren't opaque. Second, he's going grey. Third, he's a funny guy (while waiting for the technicians to finish up so he could start his lecture, he asked the audience who was the most forgettable President. No answer was correct because if you named a President, he wasn't forgettable. Um … perhaps you had to have been there).

While the topic pretty much covered the territory in his book Reinventing Comics, there was still enough new material to make it fresh, especially with comics that have come out since the book was published in 2000.

And since he was speaking at a book fair he tended to emphasize the innovations that were (or needed to) happen in the print media, although he did touch upon some innovative web comics.

[He included the obligatory three exclaimation points when signing DESTROY!!!]

(photo by Bunny)

After the lecture, he held a book signing. I brought along copies of Understanding Comics, Reinventing Comics and Making Comics, but given the line behind me, I decided to have him sign DESTROY!!: The Loudest Comic Book in the Universe!!!, an oversized comic book he did in 1986 of two superheroes slugging it out in New York City. He was quite amused to learn I had a copy of it.

Sunday, November 16, 2008

Apparently, they filmed the conclusion to this episode first …

This was a heavily scripted production. What the viewer will see is a seemingly spontaneous “investigation” where the UFO Hunters team goes out to Area 51 with an open mind and sees what they can find. However, any real investigation implies the ability to change course. Your path on each step of the inquiry is determined by what you just discovered in the previous step. You can't “script” a true investigation. You can only script a movie or other entertainment product.

The script in this case was rigid and demanding, and it was written before anyone from the production company had set foot in the area. In fairness, the participants weren't given exact lines to recite, and no one was asked to lie or say anything they were uncomfortable with, but the “story” was determined entirely in L.A. before shooting began. Where the crew would be in every hour of the week- long shoot was strictly scheduled, with little margin for deviation. The director and producer also knew the subjects that they wanted each participant to talk about so the resulting sound bites would fit into the story. They couldn't afford to go into any other areas no matter what turned up in course of filming.

From the production company's standpoint, there was no other way. The History Channel keeps tight reins on the show, and it has to review and approve each story before shooting begins. Any significant changes also have to be approved by them, which is a huge bureaucratic burden. The production company is also trying to turn out a complex full-hour show on a grueling schedule, and it has to be exciting—a real ratings grabber—or the show will eventually be cancelled. These pressures tip the scales from reality to fiction, because fiction is so much easier to control.

“UFO Hunters” on Tikaboo Peak: Part I

Even though you might not consider “UFO Hunters” a paragon of journalistic integrity, it does bring into question just how truthful are other journalistic investigative shows.

Just something to keep in mind …

Monday, November 17, 2008

“The Ethics of A Term Paper Business: A Marxist Overview”

One great way to briefly turn the conversation toward myself at a party is to answer the question, “So, what do you do?” with, “I'm a writer.” Not that most of the people I've met at parties have read my novels or short stories or feature articles; when they ask, “Have I seen any of your stuff?” I shrug and the conversation moves on. If I want attention for an hour or so, however, I'll tell them my horrible secret—for several years I made much of my freelance income writing term papers.

Writing model term papers is above-board and perfectly legal. Thanks to the First Amendment, it's protected speech, right up there with neo-Nazi rallies, tobacco company press releases, and those “9/11 Was An Inside Job” bumper stickers. It's custom-made Cliff Notes. Virtually any subject, almost any length, all levels of education—indulgent parents even buy papers for children too young for credit cards of their own. You name it, I've done it. Perhaps unsurprisingly, the plurality of clients was business administration majors, but both elementary education majors and would-be social workers showed up aplenty. Even the assignments for what in my college days were the obvious gut courses crossed my desk. “Race in The Matrix” was a fashionable subject.

The secret to the gig is to amuse yourself. I have to, really, as most paper topics are deadly boring. Once, I was asked to summarize in three pages the causes of the First World War (page one), the major battles and technological innovations of the war (page two), and to explain the aftermath of the war, including how it led to the Second World War (page three). Then there was this assignment for a composition class: six pages on why “apples [the fruit] are the best.” You have to make your own fun. In business papers, I'd often cite Marxist sources. When given an open topic assignment on ethics, I'd write on the ethics of buying term papers, and even include the broker's Web site as a source. My own novels and short stories were the topic of many papers—several DUMB CLIENTS rate me as their favorite author and they've never even read me, or anyone else. Whenever papers needed to refer to a client's own life experiences, I'd give the student various sexual hang-ups.

Via Jason Kottke, The Term Paper Artist

I hated writing term papers. But perhaps that was more due to the method required to write them than the actual topics (literary term papers, which I found loathsome to begin with). We had to, in order:

  1. Come up with a thesis and have it approved.
  2. Find five sources (or more) and write down, on a 3″×5″ card the title of the book, author, publisher and copyright year. And yes, each source got its own 3″×5″ card, and it had to be a 3″×5″ card. These had to be turned in.
  3. Generate at least 50 (but more were always better) facts to support our thesis and record each one on a separate 4″×6″ card (as well as the source used). Again, these had to be turned in.
  4. Sort the 50 (or more) 4″×6″ cards into some order and generate an outline for the term paper, and it had to be of a certain length and complexity. And again, this had to be turned in.
  5. From the outline, we had to write a rough draft, longhand, in pencil. And yes, we had to turn this in.
  6. Finally, we could write our final term paper, typewritten, using a particular style (I forgot if we used Chicago or MLS—it's been awhile) and I remember it being very exacting—margins had to be exactly 1″ and the bibliography had to be formatted just so or you failed.

Is it any wonder I hated the things? Is it any wonder why I would have bought one if I had the money?

Tuesday, November 18, 2008

Authenticating web users via SSL, part II

Back in September, I set up web authentication via signed certificates but it was primarily a manual process. After creating the certificate authority (and installing the certificate authority into my browser so it wouldn't complain), I then generated a certificate request (on the command line), signed the request (on the command line) and installed the freshly signed certificate into my browser, so I could use that certificate to authenticate myself to my webserver.

If that makes any sense.

Anyway, it is possible to have this handled automagically between the browser and webserver, but sadly, there isn't much information out there about doing so. I only found three pages with any real information; two cover the same material, and one just covers part of the openssl command required to work with this stuff.

And of course, it doesn't work with IE (thank you so much, Microsoft).

Wednesday, November 19, 2008

Operating Systems from the Fringe

Looks like writing your own operating system isn't something that's done much nowadays (last time I mentioned a homebrew operating system was back on May 23rd, 2001) but that's not to mean the art has completely died out.

It's just mostly dead.

And a lot of these homebrew operating systems aren't much to look at or even write about (and I think I gave VS_OS more virtual ink than it really deserved, for instance), but I just came across the LoseThos IBM PC Operating System and I must say, I'm seriously impressed—a homebrew operating system written in a dialect of C (more on that in a bit) for the 64bit Intel Pentium machines. Okay, so the GUI looks like something cooked up in 1985, and the hardware support is, shall we say, limited.

I can't even say the concept is truly original. The implementation language, C+ (a bit more than C, less than C++) is also the command line. This isn't unique, heck the Symbolics machine used Lisp for the operating system as well as the command line, as well as many Forth based machines, and Smalltalk based machines.

But what is unique, it seems, is the use of a C-like language for the shell (really! That design decision really floored me). C+ is basically C with a few syntactic changes—basically, functions can have default parameters (which comes from C++), and for a function call without any parameters, the parentheses can be dropped entirely (so instead of writing something like x = foo(); you can write x = foo;).

But the shell isn't just a C+ interpreter. Nope, it's an incremental C+ compiler! Expressions typed at the command line are compiled and immediately executed. You can even define C+ functions at the command line (which I think then becomes part of the execution environment of the shell). You can also get a disassembly of any called function (or compiled function or expression) with a simple command (currently it's CTrace(ON);—I would have called it TRON myself). So for example, in one of the demo videos, you can see a pointer being defined, memory allocated and assigned to the pointer:

D:/LT/Accts/TAD>#include "DoIt";
ans0=0x0000000000000090=144
D:/LT/Accts/TAD>I1 *buf;
ans0=0x0000000000000090=144
D:/LT/Accts/TAD>buf=MAlloc(256);
ans0=0x0000000076A54990=1990543760
D:/LT/Accts/TAD>LtfD(buf,256);
00000000 20 64 69 73 70 6C 61 79 20 61 20 6E 75 6D 20 6F  display a num o
00000010 66 20 6C 69 6E 65 73 20 77 69 74 68 69 6E 20 61 f lines within a
00000020 20 72 61 6E 67 65 20 6F 66 20 61 6C 6C 20 6D 61  range of all ma
00000030 74 63 68 65 73 2E 20 20 44 6F 69 6E 67 20 74 68 tches.  Doing th
00000040 69 73 20 74 77 69 63 65 20 77 69 6C 6C 20 63 72 is twice will cr
00000050 65 61 74 65 20 61 6E 20 00 59 E5 F1 AA 31 0B 00 eate an .Y...1..
00000060 80 00 00 00 00 00 00 00 80 BB 76 76 2E 2E 2E 2E  ....... .vv....
00000070 70 75 62 6C 69 63 20 4C 54 65 78 74 65 72 6E 20 public LTextern 
00000080 43 50 5F 44 45 4C 45 54 45 5F 53 59 53 5F 48 41 CP_DELETE_SYS_HA
00000090 53 48 5F 45 4E 54 52 59 20 42 6F 6F 6C 49 38 20 SH_ENTRY BoolI8 
000000A0 44 65 6C 53 79 73 48 61 73 68 45 6E 74 72 79 28 DelSysHashEntry(
000000B0 53 79 73 48 61 73 68 45 6E 74 72 79 20 2A 74 65 SysHashEntry *te
000000C0 6D 70 68 2C 53 79 73 48 61 73 68 54 61 62 6C 65 mph,SysHashTable
000000D0 20 2A 74 61 62 6C 65 29 3B 00 29 3B 00 3B 00 00  *table);.);.;..
000000E0 80 00 00 00 00 00 00 00 70 F2 76 76 00 00 00 00  .......p.vv....
000000F0 20 20 77 68 69 6C 65 20 28 63 6C 21 3D 6C 20 26   while (cl!=l &
ans0=0x0000000000000001=1;
D:/LT/Accts/TAD>CTrace(ON);
ans0=0x0000000000000000=0
D:/LT/Accts/TAD>

Then, MemSet() is called, and not only is the code for MemSet() shown, but the data dump already on screen changes to reflect the changes!

D:/LT/Accts/TAD>#include "DoIt";
ans0=0x0000000000000090=144
D:/LT/Accts/TAD>I1 *buf;
ans0=0x0000000000000090=144
D:/LT/Accts/TAD>buf=MAlloc(256);
ans0=0x0000000076A54990=1990543760
D:/LT/Accts/TAD>LtfD(buf,256);
00000000 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
00000010 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
00000020 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
00000030 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
00000040 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
00000050 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
00000060 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
00000070 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
00000080 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
00000090 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
000000A0 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
000000B0 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
000000C0 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
000000D0 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
000000E0 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
000000F0 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88
ans0=0x0000000000000001=1;
D:/LT/Accts/TAD>CTrace(ON);
ans0=0x0000000000000000=0
D:/LT/Accts/TAD>MemSet(buf,0x88,256);
	 RD,5C90 41B800010000 MOV	U4 R8u4,U4 00000100
	 RD,5C96 4D63C0	      MOVSXD	U8 R8,U4 R8u4
	 RD,5C99 4D33C9       XOR	U8 R9,U8 R9
	 RD,5C9C 418188	      MOV	U1 R9u1,U1 88
	 RD,5C9F 488B05BEBFFF MOV	U8 RAX,U8 [76A7F9E4]
	 RD,5CA5 FF
	 RD,5CA6 498BD1       MOV	U8 RDX,U8 R9
	 RD,5CA9 498BC8	      MOV	U8 RCX,U8 R8
	 RD,5CAC 57	      PUSH	U4 EDI
	 RD,5CAD 488BF8       MOV	U8 RDI,U8 RAX
	 RD,5CB0 488BC2       MOV	U8 RAX,U8 RDX
	 RD,5CB3 F3AA	      REP_STOSB
	 RD,5CB5 5F	      POP	U4 EDI
	 RD,5CB6 C3	      RET
ans0=0x0000000000000088=136
D:/LT/Accts/TAD>

Oh my! It's mentioned rather casually in the video that the hex dump shown on the screen is actually a hex dump widget, and the demo continues to show editing of values being done in said widget. I think that's the first GUI widget I've seen that scrolls along in a text window.

Later on in the video demonstration, code is being edited in a text editor, but this is the first text editor that I've seen where one can embed not only graphical images, but said images become part of the source code and can even be referenced in code. Not only that, but you can even edit the graphical image in the text editor.

Thinking back on this, this again isn't anything all that new. Heck, Microsoft developed and later dropped an entire technology based upon this, OLE. But, not having ever used OLE, I can't say if Microsoft's implementation was as seamless as this appears to be.

But this whole thing is even more impressive when you realize this is the work of a single programmer, playing around in his spare time writing this crazy operating system. But to me, the operating system is less impressive than the whole crazy user interface being used (since the video is a bit hard to follow, and it's obvious that the demoer (who is also the programmer) knows his system back and forth and oftentimes doesn't even explain fully what he's doing or even what's fully going on).

Even though I don't fully agree with all his design choices for an operating system (for example, everything runs in the kernel) he's done an impressive job, and some of the choices he's made in the design are worth looking at in more detail.

Just wow.


I should know better than this …

Why?

Why oh why did the PHP programmers even bother with the link option? That is the singularly most useless option on a program I've ever seen. Would it really have killed you to include a line number?

Sigh.

Thursday, November 20, 2008

Silver Bullets

However, some gun aficionados wrote a couple of polite letters informing us that silver bullets were not the easy solution they first appeared to be. It may not be impossible to make a working silver bullet, but it's far from an easy task. Since it's nice to have the books make sense, I figured I'd just go build some silver bullets and silence the critics—after all, how hard can it be? The Lone Ranger did it, right? However, before we continue with my efforts to produce a usable silver bullet, let me briefly discuss the history of silver, and how silver bullets came to be the de facto standard for werewolf extermination.

Via columbina, Silver Bullets

I would prefer to say this link is for Kurt, but seeing how he barely uses the Intarwebs (I think he checks his email once a month, if that), instead, I'll direct the link towards his fiancée Amanda, who I know will see this.

The upshot seems to be, forget silver bullets—try silver buckshot instead. Easier to make and better in close quarters fighting.

And more satisfying to shoot, too.

Friday, November 21, 2008

Name Dropping and Embarassing High School Photos

“I know that guy,” I said as I watched the trailer for a TV show remake (link via invadersteven), “that's Bobby Cannavale!”

[Bobby!]

Then about halfway through—“Hey! I know that guy!” “That guy” being Joe Lo Truglio.

[Joe!]

I'm excited because I went to high school with these jokers! Not only that, but I was also involved in Drama Class with the two of them, and for proof, I offer up the embarassing high school photo!

[Drama geeks, the entire lot of us]

[Sorry about the poor quality of the scan, but that was the result of five attempts—when I scanned at any higher resolution (to get a bigger picture) the results looked horrible. The smaller the scan, the better the result, but it was hard to make out individual faces. This is the best I could accomplish. —Editor]

I can also say that the story about Bobby being suspended just before opening night is more or less true, but hey, that's high school—you do stupid stuff.

Thursday, November 27, 2008

Gobble gobble

                              ,+*^^*+___+++_
                        ,*^^^^              )
                     _+*                     ^**+_
       _+^^*+_    (     ,+*^ ^          \+_        )
      {       )  (    ,(    ,_+--+--,      ^)      ^\
     { (@)    } f   ,(  ,+-^ __*_*_  ^^\_   ^\       )
    {:;-/    (_+*-+^^^^^+*+*<_ _++_)_    )    )      /
   ( /  (    (        ,___    ^*+_+* )   <    <      \
    U _/     )    *--<  ) ^\-----++__)   )    )       )
     (      )  _(^)^^))  )  )\^^^^^))^*+/    /       /
   (      /  (_))_^)) )  )  ))^^^^^))^^^)__/     +^^
  (     ,/    (^))^))  )  ) ))^^^^^^^))^^)       _)
   *+__+*       (_))^)  ) ) ))^^^^^^))^^^^^)____*^
   \             \_)^)_)) ))^^^^^^^^^^))^^^^)
    (_             ^\__^^^^^^^^^^^^))^^^^^^^)
      ^\___            ^\__^^^^^^))^^^^^^^^)\\
           ^^^^^\uuu/^^\uuu/^^^^\^\^\^\^\^\^\^\
              ___) >____) >___   ^\_\_\_\_\_\_\)
             ^^^//\\_^^//\\_^       ^(\_\_\_\)
               ^^^ ^^ ^^^ ^^

Well, the bird's in the oven (of course it's been brined) so there's a bit of time before we start with the nom-nom-noming on the ex-gobble-gobble-gobbler. So, to pass the time, how about watching a bit of the Macy's Thanksgiving Parade.

Oh, and Happy Thanksgiving!

Friday, November 28, 2008

“You didn't get the memo?”

Today was a quiet day as I spent most of it offline in quiet contemplation. But it wasn't my idea—the Monopolistic Phone Company's left hand did not know what its right hand was doing.

Bunny and I spend about two hours on the phone trying to get the DSL connection back up. It was working this morning. It wasn't working this afternoon. Bunny doesn't touch the router; I haven't touched it in months. Neither one of us had touched the DSL modem.

The problem from our end was that the PPPoE authentication wasn't authenticating. And I could tell from listening to Bunny with Technician #1 that Technician #1 had no idea what was wrong, even after a hint about the PPPoE non-authentication. That lead to Technician #2, who had us attempt to hook the DSL modem directly into a Windows system (of course they don't support us Linux or Mac users; after all, we're just a piddly 10% of the market).

After that debacle, I got on the phone. I informed Technician #2 that we have a static IP address. So he had me configure the router with our static IP address. He mumbled the netmask, so I can only assume I got that right. Now, static IP address is a public IP address, and I only mention that because of what happened next.

“Okay, so what's the gateway address?” I asked.

“What's the default gateway on your computer?”

“The 192.168.1.1 address?” I asked. 192.168.1.1 address is a private IP address, and can't be routed on the Internet.

“Yes,” said Technician #2. “Your gateway address is 192.168.1.1.”

On the router?

“Yes.”

I pulled out my clue-by-four. “That will just cause our router to route packets meant for the Internet back onto our local network! Now, what's the public gateway address?”

“Let me check with my supervisor. Can you hold for a few minutes?” A few minutes pass. “Are you there?”

“Yes.”

“Okay, put your public IP address as your gateway. Sir? Sir? What's that horrible noise?” [For those that might not know, this wouldn't work either as packets for the Internet are told not to even leave the router. A sure fire way to overflow the bit bucket if you ask me. —Editor] [But I didn't ask. —Sean] [Do I need to use a clue-by-four on you? —Editor] [Sorry. Continue. —Sean]

“Oh sorry, that was my head experiencing rapid deceleration trauma against the desk. Tell me, do you know anything?”

“Let me get my supervisor,” said Technician #2.

A few more rounds of clue-by-four with Technician #2 and I finally got The Supervisor. I patiently told The Supervisor that Technician #2 needs to be taken back to the Re-education center and by the way, can you tell me the gateway address? I was assued that I would get an answer and put back on hold.

That's when Technician #3 picked up.

While my day was quiet, evening was turning out to be anything but.

I calmly explained the entire mess to Technician #3, and stressed that nothing changed on my end.

“Well sir, are you aware that we recently changed our password requirements and any passwords not meeting that requirement are not allowed to authenticate? Would you like—um, sir? What's that horrible noise?”

Monday, Debtember 01, 2008

Various shades of grey

Now, if you agree that there must be something fundamental, in lisps designs, that drives them all to social failure, what could be the root causes? I don't think the scare factor induced by parentheses is a real reason. Just look at the kind of scary, steaming piles of crapware Java developers are willing to learn: they're OK with filling a 2 meters long shelf with manuals explaining how to have ORM and hibernation. The more verbose and unreadable a design pattern is, the more they love it. XML is much much scarier than sexps, yet consulting services are hysterically excited by it. No, really, it would take much more than parentheses to scare a Java programmer.

So what could be the features of “normal” syntax that are missed by sexps? [link added —Editor] Most notably, normal syntax gives you a feeling of what's idiomatic vs. what's weird. This means the syntax encourages you to write in a certain way, and hopefully everyone will be encouraged to write in the same style, thus understanding each other's code better. This helps bringing you interoperability and favors the writing of reusable code.

With sexps, it's much harder to create, maintain and convey such opinions in the code's appearance. Everything tends to look casual, and if it doesn't, just add a macro to make it look OK. It's difficult to build a shared seense of Good and Evil under these conditions, and without this consensus you'll have a hard time building a functional social group!

Via metalua metalua 0.4

I think this brings up yet another aspect of Lisp I don't like—it all looks the same, regardless of what the code is doing.

For example:

(assert (>= 
          (cell-size (aref 
                      (aref (global-state-stack gs) (global-state-sundo gs)) 
                      y 
                      x))
          1))

(Not that I expect any self-respecting Lisp programmer would ever write such Lisp—I'm just making a point here.)

It's hard to see that it's rereferencing a structure field from a two dimentional array stored in an array of structures. The corresponding C code is a bit clearer on this (a real-life example taken from a program I wrote):

assert(gs.stack[gs.sundo][y][x].size >= 1);

It's clear that there are a few array and structure references (and a lot quicker to type, which seems to be an argument that those muddle-headed dynamic programmers love to make, not to say they like Lisp any more than I do).

Now sure, once you know what AREF does, you can see the array references, but what about that (global-state-stack gs) business? Well … yes, it's a function, but it just so happens to return the stack field from the global state structure named gs (but equally, it could have been returning the state- stack from the global structure named gs—but you won't know until you track down the proper DEFSTRUCT call).

Again, the C code makes it more visually explicit what's going on (well, in one aspect anyway—the meaning of the code is another thing entirely). Different things look different.

(Actually, now that I look at the C code, sundo is a bad name for that particular variable—it should really be sp (stack pointer) since that's what it's really used for; the sundo name derives from how I originally viewed the function of that variable, which was keeping track of states to undo. I should probably rename that variable to better reflect what it's actually used for, but I digress … )

Tuesday, Debtember 02, 2008

Neon jellyfish in one line of code

Last month I mentioned a homebrew operating system that allowed you to freely mix text and images in source code. It seems not to be the only system—you can now manipulate images directly in equations in Mathematica (link via reddit).

Drool …

Update at 2:04 am Wednesday, Debtember 2nd, 2008

For those of you who may have gotten multiple email updates, I apologize. I had an unfortunate email incident (I do updates via email) and five copies of this entry were posted.

Those responsible for the email problem have been sacked.

Wednesday, Debtember 03, 2008

Why didn't I get a copy of this memo?

X11 has these things called “selections.” They have names. There are really only two you need to know about: the Primary selection and the Clipboard selection. An application is said to “own” a selection when it raises its hand and says, “I have the Primary selection now.” Only one application can own a selection at a time, so when one app asserts selection ownership, the previous owner loses it.

One of the really cool, yet rarely used, features of the selection mechanism is that it can negotiate what data formats to use. It's not just about text. When one application asks another for the selection, part of their communication involves the requester asking the owner for the list of types in which they are capable of delivering the selection data; then the requester picks the format they like best, and asks for it that way.

X Selections, X Cut Buffers, and Emacs Kill Rings

I've been struggling with writing blog entries for years, and yet, here I am, one day short of nine years still writing posts the old fashioned way—painfully (that link shows the steps I go through in quoting a page for this blog, and as you can see, it's several manual steps).

But on an unrelated project to this blog (and work) I had to dive into the inner workings of the X11 clipboard. In doing so, I came across Jamie Zawinski's page on X Selections, X Cut Buffers, and Emacs Kill Rings, which pretty much describes at a high level how the whole X11 clipboard thing works, but there was this bit about half-way down the page:

The content negotiation mechansim is very powerful, and I wish more applications would take advantage of it.

You can experiment with content negotiation with other apps from an XEmacs lisp-interaction buffer. To see what types an app will convert its selection to, make a selection in that app, and then type:

(get-selection-internal 'PRIMARY 'TARGETS)
==> [TARGETS TIMESTAMP TEXT STRING LENGTH FILE_NAME 
     OWNER_OS HOST_NAME USER CLASS NAME CLIENT_WINDOW 
     PROCESS COMPOUND_TEXT]

(get-selection-internal 'PRIMARY 'FILE_NAME)
==> "http://www.jwz.org/doc/x-cut-and-paste.html"

X Selections, X Cut Buffers, and Emacs Kill Rings

TARGETS? There might be more to the current primary (or clipboard) selection than just plain text? I must play around with this. And lo' I did.

And I'm glad I did, because what I found was amazing.

I highlighted some text in Firefox (running under Linux and X11), and selected (through some code I had to write—there appears to be no other way to do this other than XEmacs, which I don't have installed, nor do I wish to install) the PRIMARY TARGETS, figure out what format the data is returned (an array of X11 atoms for what it's worth) and well … what do you know …

TIMESTAMP
TARGETS
text/html
text/_moz_htmlcontext
text/_moz_htmlinfo
UTF8_STRING
COMPOUND_TEXT
TEXT
STRING
text/x-moz-url-priv

Hmm … So, instead of getting just the plain text (and let me pull some text from my own page here) …

Journals

    * Ceej's black book
    * Randomly Ever After
    * Orange is Holy
    * Wlofie's Online Journal
    * Azagthoth's Livejournal
    * Resilient's Livejournal
    * Ftrain

I can get the actual HTML?

Journals

	<ul>
		<li><a class="external" href="http://snippy.ceejbot.com/wiki/show/start" title="C. J.Silverio">Ceej's black book</a></li> 
		<li><a class="external" href="http://www.asecular.com/ran/" title="TheGus">Randomly Ever After</a></li> 
		<li><a class="external" href="http://www.springdew.com/" title="Spring Dew">Orange is Holy</a></li> 
		<li><a class="external" href="http://wlofie.dyndns.org/diary/" title="Wlofie">Wlofie's Online Journal</a></li> 
		<li><a class="external" href="http://www.livejournal.com/users/azagthoth/" title="Rob Summers">Azagthoth's Livejournal</a></li> 
		<li><a class="external" href="http://www.livejournal.com/users/resilient/">Resilient's Livejournal</a></li> 
		<li><a class="external" href="http://ftrain.com/" title="Paul Ford">Ftrain</a></li> 
	</ul>

The answer appears to be yes (it's in UCS2 format for the record). And the URL?

http://boston.conman.org/2003/11/19.2

Well … I'll be … (and this too, is in UCS2 format).

Some quick hacking, and now I have a program that will select the URL and HTML from the Firefox primary text selection, format it within a <BLOCKQUOTE> tag, with the CITE and TITLE attributes filled in, and the final <P> tag with the citation information. And it's easy enough to run said program inside the current editor I use.

Journals

Hypertext editing and the Semantic Web - The Boston Diaries - Captain Napalm

Wheeee!

Okay, enough nonsense … this has given me some ideas on an HTML editor …

Update on Tuesday, November 29th, 2011

Because someone asked, I made the source code available for download. There's not much in the way of documentation, but I figure that if you understand what this is doing, then you can probably compile it without issue.

Saturday, Debtember 06, 2008

Flying bicycles, floating women and jumping on the bed! Oh my!

For Bunny's Mom's birthday, we (along with Bunny's brother) went to see CorteoCirque du Soleil which is currently playing in Miami (in a big top tent no less!). The tickets were rather expensive, but seeing a Cirque du Soleil live was certainly worth it.

From kids bouncing on a bed to rolling around in huge hula hoops to the very surreal Helium Dance (which you have to see—it's just … out there, no pun intended).

But perhaps the most impressive act of the show was two acrobats, male and female, doing what can only be described as a human trapeze act (kind of like this act, but two of them on the same pair of ropes at the same time (sorry, couldn't find a clip of the actual act—apparently some of the acts change out from time to time). And then there's the man riding a bicycle in the air (again, I can't find a clip).

And at times, there's just too much stuff going on at once on the stage (circular as it can rotate because the audience surrounds the stage). It's just an incredible show to see live.

Sunday, Debtember 07, 2008

Much better than what you get at the store

Sunday morning (okay, Sunday afternoon) and here I am enjoying a lovely homemade Pop Tart™ I made the other day, courtesy of Alton Brown.

[Apple-filled homemade Pop Tart™]

Yum!


A Young Mad Scientist's First Alphabet Blocks

For Jeff, because he's such the mad scientist: A Young Mad Scientist's First Alphabet Blocks (or rather, for his kids when he has them).

[Hmm … I see that Jeff is looking for minions but the picture of the want-ad isn't big enough to read and gosh darn it, I've always wanted to know how such minions are recruited. I'll have to ask Jeff next time I see him … ]

Tuesday, Debtember 09, 2008

It's the Radio Shack Auto Parts Store!

Bunny and I were in Indiantown for her Mom's birthday. While there, we headed off to the local Radio Shack to buy a blank CD to test the CD writer in her Mom's computer.

It was not your typical Radio Shack, unless I missed the memo and they've merged with an auto parts store recently. It was very odd, seeing overpriced audio cables next to overpriced jumper cables.


Waiting … waiting … waiting

“Are you on the way back to Boca Raton?” asked Smirk.

“Not yet. Why?”

“Well, can you stop by The Data Center on the way home? There's a box there that needs rebooting.”

“Okay,” I said and hung up.

So that's how I found myself standing in The Data Center at 11:45pm waiting for a recalcitrant box to finish running fsck. It may be a fast box, but the drives are either ridiculously huge, ludicrously slow, or both.

Sigh.

And there's only so much web browsing one can do at the command line.

Wednesday, Debtember 10, 2008

beep beep beep beep beep beep beep beep beep beep beep beep beep beep

2:17 am and I'm still waiting for that server to finish fscking. It wouldn't be so bad except for two things:

  1. the server is in single-user mode, so I have to stick around until it finishes running the fsck to kick it into multiuser mode (which brings all the services like mail and web back up) and
  2. this incessant beeping that a piece of equipment here keeps making. Beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep … it's driving me insane!

So, until next time … beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep beep …


Beats

You know, after three and a half hours the beeping has strong beat you can dance to.

Debeep beep beep beep. Debeep beep beep beep. Debeep beep beep beep. Debeep beep beep beep. Debeep beep beep beep. Debeep beep beep bop. Debeep beep beep bop. Debeep beep beep bop. Debeep beep beep bop. Debeep beep beep bop. Debeep beep bop bop. Debeep beep bop bop. Debeep beep bop bop. Debeep beep bop bop. Debeep shabeep bop bop. Debeep shabeep bop bop. Debeep shabeep bop bop boom. Debeep shabeep bop bop boom. Debeep shabop beep beep boom. Debeep shabop beep beep boom. Debeep shabop beep beep boom. Debeep beep beep beep.

Can you dig it?


It only took 5 and a half hours …

5:27am. The recalcitrant machine is back up and running. The lights in The Data Center hate me though—apparently, fluorescents don't like doing that whole rave party thang.

Thankfully, I can leave the beeping.


It might help your case if you actually owned the item before selling it …

This just landed in my email:

From
Dan Johnson <dan@domainguardsystem.com>
To
sean@conman.org
Subject
XXXXXXXXXX.com for the owner of XXXXXXXXXX.org
Date
Wed, 10 Dec 2008 14:02:38 -0600 (CST)

Hi,

The domain XXXXXXXXXX.com has recently become available for us so we are offering it to you, because you are the owner of its .org version.

Domain Guard System is intended to assist our clients with their promotion on the Internet. We use many methods to increase the effectiveness of a client's presence on the Web. Securing .com domains for anyone using another extension for their site is one of them.

There are several reasons why owning a .com is of great importance for any domain holder:

If you are interested in this domain, please act quickly, as we soon intend to bring it to the auction where the acquisition cost will be higher than now.

Please use the link below to discover the current cost of the domain, read more about the advantages of owning a .com and get information on the details of the purchase and domain transfer procedure:

Secure XXXXXXXXXX.com now!

[link deleted —Editor]

Best regards,
Dan Johnson
Domain Guard System
mailto: dan@domainguardsystem.com

Oh really?

I decided to see if they had a parked page on XXXXXXXXXX.com and no, no website. Heck, there didn't appear to be any DNS information for the XXXXXXXXXX.com domain. I checked to see of the domain in question was even registered, and well …

[spc]lucy:~>whois XXXXXXXXXX.com
[Querying whois.internic.net]
[whois.internic.net]

Whois Server Version 2.0

Domain names in the .com and .net domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.

No match for domain "XXXXXXXXXX.COM".
>>> Last update of whois database: Wed, 10 Dec 2008 16:25:08 EST <<<

Now it's getting interesting. Let me check with my registrar to see if I can register XXXXXXXXXX.com … well, how do you like that? It's available! I can register it right now for $15.95 (yes, I know, not the cheapest registrar out there, but I've been using them for years now and never had a problem with them, and if it ain't broke, don't fix it).

So, how much is Domain Guard System asking for it?

Here's How To Buy

The price for XXXXXXXXXX.com is: $99.00

Please click on the “PayPal—Click Here To Buy” button below to make payment via PayPal.

Payments made through PayPal are Safe and Secure. You can pay by credit and debit card, or using your PayPal account. Please note, that the credit card information you submit is only viewable for PayPal.com and not for us.

The refund will be issued on your payment in case of any problems with the domain transfer.

Once paid, your domain name information will be delivered to your email address in next 15 to 30 minutes.

Please read our FAQ if you have more questions concerning purchase procedure and further domain management.

$99? And Domain Guard System isn't even squatting on it?

Sometimes I think I'm in the wrong business.

Thursday, Debtember 11, 2008

I'm not the only one

I found the following in my email box today:

From
XXXXXXXXXXXXXXXXXXXXX
To
sean@conman.org
Subject
the domain con guy email
Date
Thu, 11 Dec 2008 00:04:24 EST

Hi, I just read your post on your site about the domain name guy. I did a search for domainguardsystem.com because I has just received the same email from him, only of course a different domain. When I checked on the .com domain of the .org that I used to own, it was available also. This silly person is trying to sell domains he does not own for a huge markup. You can buy the name with GoDaddy for $7.69 using a discount code and probably cheaper at other places, and he wants to sell names he does not own for $99!! Unreal … At any rate, I am glad you posted about it. He only bought his domain in October, so he is fairly new at this and seems to be targeting the owners of dot orgs right now.

Cindy

Glad I could help, Cindy (and it seems that Cindy blogged about domainguardsystem.com as well).

Friday, Debtember 12, 2008

Forget selling domains you don't own, how about charging people for bidding in an auction?

I was fascinated to discover the auction hybrid site swoopo.com (previously known as telebid.com). It's a strange combination of eBay, woot, and slot machine. Here's how it works:

I just watched an 8GB Apple iPod Touch sell on swoopo for $187.65. The final price means a total of 1,251 bids were placed for this item, costing bidders a grand total of $938.25.

Via reddit, Coding Horror: Profitable Until Deemed Illegal

So, let me get this straight. Swoopo charges people 75¢ per bid on an auction, and each bid only increases the bid amount by 15¢ …

Amazing.

I guess D avid Hannum was right, and I'm in the wrong business.

Saturday, Debtember 13, 2008

Alton Brown is my homeboy

[Wide cooktop, double ovens, two microwaves and a chill box on the stage … I wonder what this could be?]

“It's an early Christmas gift,” said Bunny, as she handed me a ticket. “Get your shoes on, we're going.”

“A ticket? For what?” I asked, as I looked down at it. “The Adrienne Arsht Center? Who's playing … oh. Okay, I'll get my shoes on right now.”

An hour and a half later, we're being seated for “An Evening with Alton Brown.”

[We never did figure out where he gets those wonderful shirts]

Amazingly enough, when we arrived, we found out our seats, which were in Almost-But-Not-Quite-Nosebleed section were upgraded to the No-Longer-Need-Binoculars-But-Not-Quite-In-Spitting-Distance section. We were also asked to fill out a form asking Alton a question, and eight lucky audience members who did would be selected and get to ask him their question directly.

Unfortunately, our questions (mine: “What does your real family think of your TV family?” Bunny's: “Where do you get those wonderful shirts?”) were not picked.

The first half of the show he was interviewed by Michelle Bernstein, a renowned Miami chef (and winner of the James Beard Award), where we learned of his dislike of bottled water, his love of lime green leisure suits in high school, and that he does a mean Masaharu Morimoto impression.

In the second half of the show, he literally dumped all the bottled water out of the refridgerator onto the stage floor, broke the blender (which took two cooking students to fix), made Crêpes Suzette, and answered the questions of eight lucky audience members, where we learned that barbecue is America's contribution to world cuisine, his favorite Good Eats episode and that there will be no more Feasting on Asphalt (darn!).

All in all, a very nice Christmas gift indeed.

Update on Thursday, Debtember 18th, 2008

Okay, technically not an update as I'm writing this on the 18th, but well … anyway … another review of the show.

Tuesday, Debtember 16, 2008

“What's the most important thing about a coal mine, apart from coal?”

For Bunny (and heck, for Gregory): the theme song to Shaft, but with a twist … (link via news from me)


I love babalu!

And speaking of music, I just heard the local jazz station play a mashup of Desi Arnaz singing Babalu and the opening theme song to I Love Lucy.

Wow.

Thursday, Debtember 18, 2008

Strawberry rocks forever

[It's the modern version of a strawberry field …]

Several days ago Bunny, her brother and mother went to a “u-pick” farm that had what appeared to be acres of hydroponically grown strawberries ripe for the picking. And pick they did.

[Just a small sampling of the spoils]

So we're drowning in strawberries here at Chez Boca, wondering what to do with all these darned strawberries. That's when I remembered Alton Brown freezing them using dry ice. So Bunny got a five pound slab of the material, and an hour later, we have a ton of strawberry rocks, ready for the deep chill.

[Red as a strawberry, hard as a rock]

It's so neat living in the future …

Friday, Debtember 19, 2008

Living off the land

In April this year, we decided to test out the so-called Fife Diet, which was inspired by the Canadian 100-Mile Diet. Its creator claims that not only can you live on 100% Fife produce, but that you’ll eat better food doing so, and save the planet by reducing carbon emissions. We decided to find out if that was true, by trying to eat 100% Fife produce for a week.

In Part 1, we trek to the wilds of Fife and attempt to buy enough local food to last the week. Given that it’s farming country, how hard … could it be?

Kamikaze Cookery - three geeks cook. With Science.

How hard indeed?

Watching the episode is amusing just to see how much globalization has affected our eating habits (and not just here in the States, but even in rural areas of southern Scotland). For a farming community, there doesn't seem to be much farming.

But … is the globalization of food so bad? I can get all the fresh oranges I want here in Lower Sheol, but there's only so much of that I can eat. But I'm not limited to oranges, thanks to globalization. I can run down to a specialty market and pick up a bunch of 龍眼 (or, for those of you not hip to traditiona l Chinese, lóngyăn)—well, I could which is the point. I have more choice in what I can eat when (not to mention that with some searching, Wlofie could probably find lingonberries here in the States).

And then there's a small fact that the localvorian hippies don't mention—a bad year for crops in Fife isn't tragic! Sure, it's bad and the local economy is probably depressed, but with a global market for food, that means that the residents of Fife don't starve to death because the crops failed!

So score one for globalization.

Also not mentioned is that small scale “organic” farming is more labor intensive and has lower production than large scale “non-organic” farming, which means less food overall and more people go hungry (but not to worry—the local locust population won't be under threat of extinction—woot!).

Reading up on the results of the Fife Diet is amusing and instructional at the same time. And it's not at all clear if the three of them will make it to the end of the week.

(And for those who are intersted, a free-market look at buying locally.)


Isn't it ironic?

The irony of being a proponent of global food markets and freezing cheaper-than-imported locally grown strawberries is not lost on me.

Thursday, Debtember 25, 2008

Happy Kwanzaa Everybody!

[Is he being nice because he's nice?  Or does it give him tinglies in his nethers?] [Is he being nice because he's nice?  Or does it give him tinglies in his nethers?] [Is he being nice because he's nice?  Or does it give him tinglies in his nethers?]

© 2008 J. Rowling. Over Compensating

Monday, Debtember 29, 2008

Tossing cookies

The past week and a half has been very quiet here at Chez Boca. Christmas afternoon was spent in an orgy of paper ripping, followed by oohs, aahs and small squeals of delight (and no, I won't give any indication of who did the most squealing). The evening was spent decorating a metric buttload of Christmas themed sugar cookies.

[Christmasy sugary goodness]

When we made the cookies (a few days before), it was my idea to cut the center out of some of the larger ones just for a variation on a theme. On this tray, I know I painted the tree with the white snow flakes on it, and the larger man shaped one. The rest—don't recall. But I do recall that the royal icing (made from scratch) was very gooey. We used basting brushes for the green and red, and having run out of said brushes, used popsicle sticks for red (and yes, the orange there is actually red—blast that white color balance) and yellow.

[Break out your insulin shots!]

The four gentlemen on this tray were all my work—three soldiers of various ranks, and one civilian running around barefoot. As we progressed, my work got more and more elaborate as I found it rather fun. Let's see … the christmas tree, the small blue star (or “Captain's Wheel” as Bunny called them) and the candy cane was also mine.

[I really start playing around with the cookies]

The more cookies we did, the more elaborate my designs became. The green guy with the orange center was my idea; basically, a large cookie with the center cut out, painted green, with an identical smaller cookie (which actually was the center cut out) painted red (yes, it's red, gosh darn it!) placed over the cut out hole.

And the angel in the lower right was another of my designs. If you look closely at the angel, you'll notice two small eyes, which required the use of tweezers.

Yes, I decorated cookies with the help of tweezers.

There's nothing wrong with that, right?

[Leave it to Bunny to make a “Not-Safe-For-Work” sugar cookie]

Yes, the man shaped sugar cookie in the lower left is sans pants (censored for your protection), and for you perverts out there, here's the NSFW uncensored sugary goodness.

The large girl in the top center is my work. I thought it would be cute to make a little girl holding a doll dressed just like her. Three cookies in the construction of that one, and later Bunny remarked that she wants to preserve it and possibly use it as a Christmas tree ornament.

Reminds me of a programming class I took in college—the professor actually instructed me to “stop with the overkill!”

I didn't listen then, and now, no one was telling me to stop with the overkill.

[The green snowman is sad because he knows … he knows he'll get eaten (cookie by Bunny)]

By this time, both of us where getting tired of slapping a rapidly drying icing onto cookies and it shows in this last batch of cookies—nothing terribly complicated. Or rather, nothing complicated by me—I was pretty much tapped out at this point.

But it was fun, and the cookies, they are good … nom nom nom

Obligatory Picture

An abstract representation of where you're coming from]

Obligatory Contact Info

Obligatory Feeds

Obligatory Links

Obligatory Miscellaneous

Obligatory AI Disclaimer

No AI was used in the making of this site, unless otherwise noted.

You have my permission to link freely to any entry here. Go ahead, I won't bite. I promise.

The dates are the permanent links to that day's entries (or entry, if there is only one entry). The titles are the permanent links to that entry only. The format for the links are simple: Start with the base link for this site: https://boston.conman.org/, then add the date you are interested in, say 2000/08/01, so that would make the final URL:

https://boston.conman.org/2000/08/01

You can also specify the entire month by leaving off the day portion. You can even select an arbitrary portion of time.

You may also note subtle shading of the links and that's intentional: the “closer” the link is (relative to the page) the “brighter” it appears. It's an experiment in using color shading to denote the distance a link is from here. If you don't notice it, don't worry; it's not all that important.

It is assumed that every brand name, slogan, corporate name, symbol, design element, et cetera mentioned in these pages is a protected and/or trademarked entity, the sole property of its owner(s), and acknowledgement of this status is implied.

Copyright © 1999-2024 by Sean Conner. All Rights Reserved.