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.

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?

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.