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 portable 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 the 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, Building 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.

Obligatory Picture

[Don't hate me for my sock monkey headphones.]

Obligatory Links

Obligatory Miscellaneous

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: http://boston.conman.org/, then add the date you are interested in, say 2000/08/01, so that would make the final URL:

http://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-2017 by Sean Conner. All Rights Reserved.