Friday, January 30, 2009

Local Area Man Spills Raw Quinoa All Over Kitchen

PHOENIX -- Disaster was not averted this Friday evening when a local area man spilled raw quinoa all over his kitchen. Shelves, countertops, refrigerator top, and floor were covered with a thin layer of the nutritious nuggets.

"It was total disaster. The quinoa was everywhere. Cleanup took minutes," the man told reporters after the incident.

The spillage was caused by a small dime-sized hole in a thin plastic bag containing the quinoa. The man unknowingly carried the bag throughout the kitchen, leaving behind a foot-wide trail of mess and mayhem.

No charges have been filed, but an investigation has been launched to determine the cause of the hole.

Cleanup was prompt and entailed use of a vacuum cleaner and much swearing. No noise complaints were filed by neighbors. A full kitchen recovery is likely, officials predict.

"This was bad, real bad, but it could have been worse," the man said. "I think it's safe to say that the worst is behind us, and, all in all, it wasn't as bad as the Slippery Spaghetti Scare of '08."

Wednesday, January 28, 2009

Reading Log

Surcharged with her emotion she turned to Brady with the intention of confiding in him, but at her first mention of Dick a hard-boiled sparkle in his eyes gave her to understand that he refused the fatherly office. In turn she was equally firm when he tried to monopolize her hand, so they talked shop or rather she listened while he talked shop, her polite eyes never leaving his face, but her mind was so definitely elsewhere that she felt he must guess the fact. Intermittently she caught the gist of his sentences and supplied the rest from her subconscious, as one picks up the striking of a clock in the middle with only the rhythm of the first uncounted strokes lingering in the mind.

F. Scott Fitzgerald
Tender Is the Night
Tender Is the Night I found to be simultaneously enjoyable and depressing. I enjoyed it because of its fine style and imaginative descriptions and storytelling. I found it depressing because of its realistic portrayal of the main character's self-destruction.

There are no villains here. The tragedy is free from exogenous factors and unlucky circumstances. This is a story about a successful man and his failure to cope with aging and his decreasing relevance. At least that's how I interpreted it.

I almost think Tender Is the Night is a little too good for its own good. If it had been a little less believable, a little less tragic, or a little more formulaic, then I probably would have found it easier to embrace. But the critics are made of sterner stuff and disagree with my assessment; this is #28 on Modern Library's list of the 100 greatest novels of the 20th century.

* * *
I don't have to tell you it goes without saying there are some things better left unsaid. I think that speaks for itself. The less said about it the better.

George Carlin
Brain Droppings
George Carlin is the Budweiser of comedy. He's crude yet passable and can give you a good buzz, and without fail he leaves a bad aftertaste.

Brain Droppings is entry-level cynicism. Like with that aluminum can of Bud, you're better off moving forward to something containing better flavor and more substance. Upgrade to a Philip Roth for a tangier bite and sharper edginess. Try a Kurt Vonnegut for a darker, richer cynicism. Or perhaps you're willing to pay the premium for an import, in which case you can't go wrong with a Douglas Adams or a Neil Gaiman.

Tuesday, January 27, 2009

a sample of beliefs, delights, fascinations... and some glue

Tonight I stayed up late playing with Graphviz, an open-source tool for creating graphs. Here is what I made.

Saturday, January 24, 2009

In Isaac I Trust

The Last Question will take you only about a half hour to read, and you'll be glad you did.

Thursday, January 22, 2009

Metaween

It's Metaween, a day in which I blog about my blog!

Today's Metaween Celebration is a short one. It's an announcement whereby I declare the floodgates to the sewers to be open and Just Enough Craig's comments to be open to the world's anonymous cowards as well as all within that other unfortunate group of individuals: people lacking names. Welcome!

A Paradox

Jack: Edward, hello!

Edward: Hello, Jack.

Jack: What serendipitous fortune meeting you here while on my run. What are you doing all alone on this park bench this morning? May I join you?

Edward: Field research and yes, certainly you may join me.

Jack: Field research?

Edward: Yes. I'm counting the bicyclists that pass through that intersection yonder [ -- points -- ] and counting how many come to a legal and full stop at the stop sign and how many roll through it. It's part of a pet project of mine to determine whether bicyclists are, as a group, traffic-law anarchists.

Jack: You're always up to something, Edward.

Edward: Ah, here now comes a bicyclist. Let's see whether he stops.

Jack: That young guy who appears to be in such a hurry? Surely he'll blow right through the stop sign.

[Both Jack and Edward wait. The bicyclist approaches the intersection. On the cross-street to his right is a car approaching the same intersection. The bicyclist suddenly accelerates the final meters to arrive at the stop sign at the same time as the car, which he ignores, and rides without stopping through the intersection, prompting the motorist to honk his car's horn in a desperate attempt of civil justice.]

Jack: A-ha! Just like I said.

Edward: Tsk, tsk. I fear it's not looking too good for traffic-law obeisance this morning.

Jack: Well, I for one don't hold him in lower esteem for ignoring that stop sign. Breaking the law or not, he did no wrong.

Edward: How so?

Jack: Well, you see Edward, I'm a moral relativist.

Edward: Oh really?

Jack: Oh yes. I've decided that no action can be held to be of better or lesser moral standing than any other action.

Edward: That is one definition of the term.

Jack: Edward, I tell you, our world spins unanchored through a universe lacking absolutes, and, without those absolutes, who am I to condemn that bicyclist for running that stop sign? Who am I to condemn anyone for anything at all?

Edward: Such a belief system would save you much time, what not having to condemn much of anyone for much of anything.

Jack: Right you are.

Edward: As you know, I am a busy person, what with all my pet projects, and I could benefit from saving some time, and so I find myself intrigued by your moral relativism.

Jack: Well, it's not all about saving time.

[They pause to watch another bicyclist ride through the intersection without stopping.]

Jack: There goes another person doing neither good nor bad.

Edward: But I'm unsure I possess full understanding of this moral relativism of yours.

Jack: What about it do you find confusing?

Edward: It's not so much a matter of confusion as it is my needing some clarification.

Jack: What would you like clarified?

Edward: It's just a small matter, really.

Jack: Go on. Ask.

Edward: Well... You said that moral relativism is the idea that no action can be held to be of better or lesser moral standing than any other action.

Jack: Yes?

Edward: And, well, does holding a belief constitute an action?

Jack: Hmm... I suppose beliefs are acts of cognition, so yes, I suppose beliefs are a type of action.

Edward: I see.

Jack: You sound as if you're unsatisfied with my answer.

Edward: It's just another small matter, really.

Jack: Ask, please.

Edward: Well... I suppose that it then follows that no belief is to be held to be of better or lesser moral standing than any other belief?

Jack: Naturally.

Edward: Because you are a moral relativist?

Jack: Of course.

Edward: And you are not a moral absolutist?

Jack: Of course not.

Edward: And so it is that you think it's better to be a moral relativist than a moral absolutist?

Jack: Yes...

[There's an awkward silence for some time ranging between a few moments and a few minutes as both sit in quiet contemplation.]

Edward: Shucks! I was so wrapped up in your clarification of moral relativism that I forgot to watch the intersection, and I may have missed bicyclists passing through the intersection. My data will be incomplete and unreliable. Oh, how terrible.

Jack: Yes, that is a decidedly bad course of events.

[Jack stands and puts a finger to his neck for a few seconds to check his heart rate and then does a few quick stretches.]

Jack: Well, I'm off to continue my run. Fare you well, Edward.

Edward: Goodbye, Jack.

Tuesday, January 20, 2009

Memories of a Half-Marathon

  • Vaguely feeling regret before the start of the race for not having trained much.
  • Waiting in the corral wishing I had left my shirt in my gear bag.
  • Crossing the start line surrounded by enthusiasm and exuberance.
  • Weaving through the throng of runners. What happened to the wave start? Just a big mass of slower people as far as I can see.
  • Deciding to take it easy for a few miles to see how I feel.
  • Male spectator shouting "nice body!" as I run by shirtless in my bicycle shorts. Thanks, I guess.
  • Clumsily grabbing at a cup of water and pouring it over my face, some of the water going into my mouth. Choking and gasping, continuing anyway.
  • Passing the 1:45 pacer group at two or three miles. Feeling strong but reserving myself.
  • Passing, endlessly passing others. Picking up the pace a bit.
  • The eerie silence of runners pounding forward step by step through the morning city streets. Then coming up on any number of rock bands playing their set. People cheering and waving. Feeling the rush of the internal surge. Every blood vessel in my cranium swelling with each steady beat of my heart. Wanting to go, go, go, but always holding back, back, back. Curiously wondering what's it's like to be on EPO in a grand tour.
  • Guy feet few ahead of me suddenly stopping and getting an elbow. Stay out of my way.
  • Wasting breath to ask Spartan Guy to where he's headed. Persia. Not wasting breath to tell him not to muck it all up in the Peloponnesian War next century. He's too far behind by then anyway.
  • Passing mile 7. Or was that 8 or 9? Starting to feel tired in the legs but my lungs and heart feel fine.
  • Passing the 1:39 pacer group.
  • Stoic countenance becoming a permanent scowl.
  • Losing feeling in my legs. But they keep moving. It's all-out. Getting harder to pass people. Can't tell if that's because I'm slowing or because I caught up to better runners.
  • Final mile.
  • Crossing the Mill Ave. bridge.
  • Spectator shouting "only 400 yards to go!" The man is a liar or else doesn't play par 4s.
  • Sprinting the final 100 meters. The ugliest, slowest sprint of my life.
  • Pumping my fist in the air across the finish line. Kind of silly but who cares.
  • Legs quitting without being told.
  • Strongly feeling regret for not having trained much.

Saturday, January 17, 2009

Five Songs

I struggle when making top N lists. What are my N favorite books? favorite movies? music albums? and et cetera. First there's the problem that it's nearly impossible to consider at once all options and guarantee that the list is complete. Then there's the temporal issue, which is that today's list will not always be tomorrow's list.

Despite these limitations I'm today posting a list. But it's just a list and not The List. It consists of five songs that I really like. Some days they're my favorite, and some days they aren't.

* * *

Rush
The Camera Eye
Moving Pictures
1981
The buildings are lost
In their limitless rise
My feet catch the pulse
And the purposeful stride
Lyrically and musically The Camera Eye captures the excitement and vigor as well as the inhumanness and stupefaction of life in a large city. It's one of three songs from the Moving Pictures album that could have made this list, with Tom Sawyer and Red Barchetta being the other two. When I listen to the album, though, The Camera Eye is the song I most eagerly await.

I'm nagged with the thought that I should enjoy and appreciate Rush more than I do. Musically and ideologically they're progressive and complicated and subtle, and their lyrics exhibit a poetic quality that is beautiful in and of itself.

* * *

Yes
Close to the Edge
Close to the Edge
1973
Seasons will pass you by
I get up, I get down
This was the song that introduced me to progressive rock, and it's partly because of this historic fact that it's on this list.

Close to the Edge suffers something of a problem in that I can't appreciate it as something playing in the background; I must actively listen to it for full enjoyment, like a symphonic work. And it's eighteen minutes in length and so requires something of a commitment. Its third section, I Get Up, I Get Down, delivers by way of Rick Wakeman's organ solo a very awing moment.

* * *

The Beatles
A Day in the Life
Sgt Pepper's Lonely Hearts Club Band
1967
I read the news today, oh boy
Four thousand holes in Blackburn, Lancashire
And though the holes were rather small
They had to count them all
Now they know how many holes it takes to fill the Albert Hall
I'd love to turn you on
This is the one on this list that everyone knows, and it's not merely a token mainstream selection; A Day in the Life has an epic feel with its grippingly foreboding narrative and yet is compacted into five minutes. I can't imagine Sgt Pepper's ending any other way.

* * *

Genesis
The Cinema Show
Selling England by the Pound
1973
Take a little trip back with Father Tiresias
Listen to the Old One speak
Of all he has lived through
"I have crossed between the poles
For me there's no mystery
Once a man, like the sea I raged
Once a woman, like the earth I gave
And there is in fact more earth than sea"
There's the whole sex thing told through a short narrative involving Romeo and Juliet followed by that metaphysical trip with Tiresias and then, of course, the extended Moog solo, which I may say with certainty is my favorite rock keyboard solo of all time.

I wish I could unlisten to The Cinema Show so that I could listen to it for the first time again. And then a hundred times after that.

* * *

Dream Theater
Octavarium
Octavarium
2005
I feel the relapse -- can't break free
Eyes open but not getting through to me

Medicate me, infiltrate me
Side effects appear as my conscience slips away
Medicate me, science failing, conscience fading fast
Can't you stop what's happening?
My present employer has lost about one man-day because of Octavarium, which is the estimated amount of time that I've spent listening to the song while at work over the last two years. When this song starts I stop everything and just listen. And the song is twenty-four minutes long, so it's quite the interruption. I should remove it from my portable music player.

I like The Cinema Show more, but technically Octavarium is like an improved version of it. I think Octavarium's shortcoming lies, as is the case with most of Dream Theater's songs, with its lyrics. Dream Theater's lyrics often fail by belying the band's true nature, which is that of rock-virtuoso robots possessing a mechanical perfection that makes their lack of heart all the more apparent.

But what about Octavarium? Its narratives, including one about a doctor who is clearly Oliver Sacks, follow the theme that life passes through a repetition of cycles before the invariable tragedy of death. Midway through is an extended keyboard solo that could possibly be my second favorite rock keyboard solo of all-time, and, as one would expect of any Dream Theater work, there are countless time signature changes and other nuances that stagger the mind.

Tuesday, January 13, 2009

tapestry.c

#include "education.h"
#include "genotypic_limits.h"
#include "parenting.h"
#include "phenotypic_limits.h"
#include "social_influences.h"

/* This is set to true at some unknown time (i.e., when SIGTERM is received by
* the process). */
extern bool death_flag;

/* The source code that defines the pain-avoidance task has been lost! All we
* have is the binary and its interface. */
extern task_t pain_avoidance_task;

int main()
{
float pain_coefficient;
enum {
pain_avoidance,
pursuit_of_desire
} context;

/* Initialize this process. The order in which these sets of limitations are
* initialized must not be changed. */
initialize_genetypic_limits();
initialize_parenting();
initialize_education();
initialize_social_influences();
initialize_phenotypic_limits();

/* The initial context value is set to pain avoidance. This is an artifact of
* minor historic significance. It probably doesn't matter what it's set to
* because the process will adjust the value dynamically. */
context = pain_avoidance;

/* Stay alive until SIGTERM. (Hope for no SIGKILL so that we may exit
* gracefully.)
*
* This loop is a negative feedback loop that provides some level of
* homeostatic behavior for the process. Note that the loop is ultimately
* pain-driven. Experimental branch builds have been made in which this loop
* is modified to be desire-driven, but in doing so many bugs of seemingly
* non-deterministic origin are exposed throughout the system. The
* pain-driven model is well tested, and even though most developers don't
* like it, it works. So:
* DON'T MESS WITH THIS LOOP UNLESS YOU REALLY KNOW WHAT YOU'RE DOING.
* -CMB */
while (!death_flag) {

/* Get the current level of pain. Modify the system's behavior based on
* this one value. */
pain_coefficient = get_current_pain_level();
if (pain_coefficient >= TOLERABLE_PAIN_THRESHOLD &&
context != pain_avoidance) {

/* The pain coefficient has risen above its acceptable threshold.
* Suspend all tasks, and keep only the pain-avoidance task running.
*
* Merely increasing the priority of the pain avoidance task and
* decreasing the priorities of other tasks allows for insufficient
* system resources for the pain-avoidance task to result in a
* significant decrease in the pain-avoidance coefficient. All other
* tasks must be fully suspended to spare such system resources. */
suspend_all_tasks();
resume_task(pain_avoidance_task);
context = pain_avoidance;

} else if (pain_coefficient >= TOLERABLE_PAIN_THRESHOLD) {

/* The pain coefficient remains too high. Try decreasing the desire and
* vulnerability coefficients.
*
* Intuitively this seems harmless, but it's not exactly clear why this
* works. The desire and vulnerability coefficients should have no
* effect on the pain-avoidance task.
*
* TODO: Research this interdependency further, albeit in a protected
* sandbox. Testing this is dangerous and could cause the whole system
* to be blown away. */
decrement_desire_coefficient();
decrement_vulnerability_coefficient();

} else if (context != pursuit_of_desire) {

/* The pain coefficient has decreased below its acceptable threshold.
* Resume all tasks.

* Originally the behavior was to suspend the pain-avoidance task, but
* doing so caused the pain and desire coefficients to return quickly
* to intolerable values, so the pain-avoidance task is kept running.
* */
resume_all_tasks();
/* suspend_task(pain_avoidance_task); */
context = pursuit_of_desire;

} else {

/* The pain coefficient remains within its acceptable threshold.
* Increase the desire and vulnerability coefficients.
*
* FIXME: Incrementing the vulnerability coefficient seems to have no
* effect. This system cannot regain vulnerability once lost;
* vulnerability only decreases as the process ages. This is a major
* bug with no known workaround; there's a risk that other projects may
* by started/forked to create a new system without such a fundamental
* flaw if this bug cannot be fixed. This bug was introduced when the
* pain-avoidance task was set never to be suspended. The source code
* for the pain-avoidance task must be found/rewritten to
* analyze/implement a fix. */
increment_desire_coefficient();
increment_vulnerability_coefficient();
}

/* Relinquish the processor for other tasks to run for a while. */
yield_to_other_tasks();
}

/* The process exit value is a somewhat subjective. Other processes don't
* depend on it so just define it as success for now.
*
* TODO: It may someday be a useful feature to make the exit value determined
* dynamically. */
return EXIT_SUCCESS;
} /* main */

Saturday, January 10, 2009

Thoughts

This is a drawing I scanned from Douglas Hofstadter's book, Gödel, Escher, Bach. The drawing is done by the author himself, although its philosophically introspective quality is worthy of M.C. Escher. The caption at the bottom reads "The brain is rational; the mind may not be." For those of you too uninterested to click for a closer look: the "2 + 2 = 5" is composed of many dozens of correct arithmetic statements, such as "7 + 16 = 23" and "4 + 1 = 5".

Know that within the brain of even the most math-averse of individuals is a complex web of interconnected neurons, each acting like a reliable calculator for doing floating point sums. A human brain contains on the order one hundred billion neurons, and each neuron has on the order one thousand synaptic connections, and each synaptic connection is capable of signaling on the order ten times per second. This amounts to a quadrillion arithmetic operations per second, which is a speed that continues to trivialize the speed of today's fastest computer processors -- although very improbably for much longer -- and it happens in each of our brains. And yet each of us is all too capable of thinking that 2 + 2 = 5. The brain is rational; the mind may not be.

I love this drawing. There's the neurological interpretation, such as is briefly described in the previous paragraph, and there are additional interpretations. In the book the drawing plays into Hofstadter's theme of holism versus reductionism. Zoom in on the drawing so close that you can see only the details: the math is correct. Zoom out so that you see the big picture but not the details: the math is wrong. This drawing is a celebration of holistic thought.

Hofstadter wasn't aiming to pick a fight with reductionists. He was making the argument that even the simplest and most deterministic of automata can be combined to form a complexity that appears every bit non-deterministic and that possesses qualitatively new behavior. Indeed, sentience and consciousness are nothing but such synergistic aggregates of what is, when perceived reductionistically, rather simple hardware components. There's no magic going on with consciousness, or what we may then define as the soul, but there is a supremely beautiful wondrousness to it. And there's no reason then to suppose that an artificial consciousness cannot be created from rather simple man-made hardware components.

Thursday, January 8, 2009

One Evening in the Life of Craig

It was an obsessive-compulsive moment. Just after crossing 24th St. on my way to the library the thought dawned on me: did I turn off the oven in the apartment? I thought it over for a moment before determining that there was no way to be certain and that the half-mile walk back for verification was the prudent thing to do.

Six years and four apartments ago I almost burned down the place because I forgot I had left a pot of oil intended for making popcorn on the stove at the high setting. I remember lifting the pot's lid, and within a fraction of a second, or the amount of time for the pot to let loose with an eerie whooshing sound, I was staring with mouth agape at a flame that was licking the stove vent. This was the exact moment in my life in which I decided that Mom's technique of treating the stove control dial as a switch between off and high was not for me. I don't particularly care about apartment property because I'm a lowly renter with a lowly renter's attitude, but burning down my apartment would be tragic because it's where I keep my bicycles.

The aroma of well done sweet potatoes and the soft glow of the burners on the other side of the oven window signified to me from across the dark room that I did indeed forget to turn off the oven. I turned it off, took out the crispy potatoes, and half-wrapped the smaller of the two in foil to take with me like a to-go order on my continued walk back to the library. I closed and locked the front door, leaving behind on the kitchen counter a burning candle.

Tuesday, January 6, 2009

The world will never run out of oil.

This is a thought experiment I heard from Coworker Lee.

Imagine the following scenario. Take an Olympic-size swimming pool, drain the water and fill it with peanuts -- the kind still in the shell, like the overpriced ones you can buy at the ballpark. Invite the hungry and the needy to the pool to take with them a free meal of peanuts. But there's a catch: they must immediately shell the peanuts and return the empty shells to the pool.

On the first day the pool would be a peanut bonanza. To start all shells would contain edible parts within, and one could gather a meal's worth by stooping over the pool's lip and scooping a handful. Done. And for a while -- just how long depends on how many people are doing the peanut mining -- it would remain easy because the unshelled peanuts would be concentrated in spots. But over time you'd have to work harder by wading through empties to get to the non-empties farther away in the middle of the pool or buried a few feet beneath a surface of mostly picked over shells. But despite the increase in effort, you could still get a free meal of peanuts quickly.

The real difficulties would begin once all areas and depths of the pool have been picked over and the unopened shells remain scattered throughout. And as peanuts continue to be shelled and eaten and the pool filled with ever more empties, the job of gathering a full meal's worth of peanuts would require increasingly more effort and time. Indeed, the last peanut would never be found and never be eaten. Imagine searching for the last remaining peanut in an Olympic-size swimming pool -- even without a deep end!

The last peanut would never be found. And so wouldn't the second-to-last. Or the third-to-last. The question is: how many peanuts would remain uneaten simply because it was easier and faster to procure a meal somewhere else? When does the free lunch become too expensive?

The world will never run out of oil.