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.

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 */.

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.

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:

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:

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

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.

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 threadsupport),
OpenMCL,
and Allegro Common
Lisp.

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).

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.

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).

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.

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.

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.

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).

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):

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.

Okay, so if sizeof() (akacount()) 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).

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.

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.

Sign up for a credit card that allows 0% APR for balance transfers for
at least a year or so.

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.

Pay the monthly minimum, but keeping the rest of the money in the
bank.

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.

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.

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.

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?

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.

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.”

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.

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.

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 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.

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.

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).

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.

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 .area51TLD became a very obvious janet (which is
still my firewall/NAT
system to this day).

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.”

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.

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).

<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.

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.

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.

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.

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.

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?

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.

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:

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.