Idol Hands:
Days in the Life of an Alpha Geek

Corey Ehmke’s home on the web since 1996, IdolHands.com features an alpha-geek blog covering topics in Mac OS X, software and web development (mainly Cocoa and Ruby on Rails), electronics, robotics, and other stuff important in the life of a technologist and tinkerer.

Ruby on Rails Resources

Posted by Corey Ehmke on October 5th, 2008 in Ruby on Rails | Permanent Link

If you check out the left-hand sidebar, you’ll see that I’ve added something new to the site. The Ruby on Rails Resources page presents a categorized list of Rails sites, screencasts, podcasts, and discussion groups that I have personally found useful in getting to know and love Rails.

So please check it out, and use the comment form on the page to suggest any other resources that I may have missed.

Obama is RESTful

Posted by Corey Ehmke on September 7th, 2008 in Personal | Permanent Link
Tags:

I spent some time this morning examining the technology policies of Barack Obama and John McCain. Policies aside, I was immediately struck by the differences between their web sites. So what do the two sites say about the candidates?

Two Different Platforms

The candidates’ platforms could not be more different: JohnMcCain(.com) relies on corporate backing for his web site, which runs on Microsoft Internet Information Server and uses ASP. Barack Obama, in contrast, relies on widespread contributions from the community, in the form of open-source web technologies (PHP and Apache).

Preparedness

Ask McCain’s site for something that it’s not expecting, and it gets very confused. It readily admits that it has no idea what just happened: maybe the page moved, or maybe you mistyped the URL. This could even be the fault of a third-party web site operator. There’s helpful information provided if you happen to be the sysadmin for johnmccain.com, but if you’re John Q. Webuser, you’re pretty much out of luck.

404 page from johnmccain.com

Obama’s site is more willing to admit that mistakes happen, and it’s not laying blame on anyone. Hell, it even injects a bit of humor into the thing. The fact that even his 404 page is polished and provides navigation options shows that despite the claims of right-wing rhetoric, Obama is more prepared in case of the unexpected.

404 page from barackobama.com

Document Types

Despite his carefully cultivated “maverick” image, McCain is playing it traditional and conservative by using HTML 4.01, the W3C spec from 1999.

John McCain's doctype

However, it’s clear that he’s not following through on his commitment to even this aging standard:

W3C validation errors for John McCain

Obama shows himself to be much more progressive, adopting the 21st century XHTML 1.0 transitional standard:

Obama's doctype

But alas, even Obama has trouble conforming to the standards.

W3C validation errors for Barack Obama

Maybe this is true of all politicians? And not to be an apologist here, but Obama is clearly more valid than McCain, and both are more valid than I am. But shouldn’t we hold public officials to a higher standard?

Transparency

Both candidates claim to support transparency in government, but only one clearly supports transparency (of the PNG variety) on his web site:

Obama's support for transparency

Obama is inclusive in his support for PNGs, accommodating even disadvantaged (Internet Explorer) users.

Navigating the Issues

Obama makes it easy to find out what his technology policies are:

Getting to Obama's technology policy page

John McCain does not provide a clear link to his technology policy:

Getting to McCain's technology policy page

Instead, you have to ignore the drop-down menu, click on Issues, scroll down near the bottom of the page, and follow a link that’s tucked in between talk about judicial policies and fighting crime. What’s more, take a look at how each candidate identifies his technology page:

McCain uses jargon

Not only is John McCain promoting case-sensitive URLs, he also prefers to hide his page names behind meaningless jargon like `cbcd3a48-4b0e-4864-8be1-d04561c132ea.htm’.

Obama is obviously the more RESTful candidate. His URLs are readable by both machines and humans, easy to remember and type, and clearly communicate both the content and context of a specific resource.

Obama is RESTful

Which site will you support in November?

The choice is clear: a Microsoft-supported, business-as-usual site that clings to last decade’s HTML standards? Or an Open Source-powered site, that not only does a better job adhering to standards but embraces change, transparency, and clear communication?

Bizarre BBEdit 9 bug

Posted by Corey Ehmke on September 5th, 2008 in Development, Ruby on Rails | Permanent Link
Tags:

After upgrading to BBEdit 9, I’ve happily left TextMate behind and returned to my favorite bare-bones IDE for Rails development. (I’m planning to share some tips on this topic this weekend.)

I just came across a very strange bug that crashes BBEdit, and thought I’d share a workaround in case someone else has this problem. The bug report has already been filed.

Operating environment:
BBEdit version 9.0 (1320) of Wed, 27 Aug 2008
Mac OS X 10.5.4 Build 9E17

To reproduce:

  • Create a new file
  • Set its type to Ruby using the menu at the bottom of the window
  • Type (not paste) the following, exactly as you see it here:

    "tag-#

BBEdit will now invoke the spinning beach ball of death, start consuming massive CPU cycles, and never recover. Note that I have text completion triggers turned OFF, so that’s probably not the problem.

The workaround for this is (and any similar string that brings this on) is open the Scratchpad window (Window -> Show Scratchpad), type your string in there, and paste it back into your Ruby file.

I should point out that a couple of minor issues aside, I’m incredibly happy with this upgrade. And given my history with Bare Bones, I expect fixes to be forthcoming quickly.

Rewriting Kafka

Posted by Corey Ehmke on August 29th, 2008 in Personal | Permanent Link
Tags:

While cleaning up one of my old machines, I came across this little artifact.

My challenge was to re-write the opening paragraph of Franz Kafka’s The Metamorphosis as it may have been penned by other writers. So without further ado…


The Metamorphosis by H.P. Lovecraft

My name is Gregor Samsa, and if the world discovers this manuscript, then perhaps it can save others from the fate that even now confounds my reason and leaves me gibbering at the edge of sanity. One morning not long ago I awoke from troubled dreams filled with the otherworldly ululations of strange voices and the insistent piping of flutes from the swirling chaos at the very center of the universe, and found myself in my bed, horribly changed– dare I say it?– into an unspeakable, sanity-blasting form. I lay on what seemed to be an armour-like back, and as I lifted my head a little I could just see the brown, non-Euclidean curve of my brown belly, slightly domed and divided by arches into stiff sections. The bedding was hardly able to cover it and seemed ready to slide off any moment. My multitudinous legs, pitifully gaunt compared with the unnaturally bloated shape of the rest of my new and terrible form, waved about helplessly as I looked on in abject horror.


The Metamorphosis by Ernest Hemingway

It was morning. Gregor Samsa awoke. He had been transformed in his bed into a cockroach. He lay on his back. He could see his brown belly, domed and divided into stiff arches. The bedding barely covered it. His legs waved.


The Metamorphosis by Walt Whitman

I sing the body carapacious;
The sprawl and fullness of its shell,
Stiff domed arches engirth my belly, and I engirth them;
They will not let me off my back until I embrace them, accept them,
And discorrupt them, and charge them full with the charge of the Soul.

The expression of the face defies description;
But the expression of a man made a bug appears not only in his antennae;
It is in his many legs also, it is in the joints of his carapace,
It is in his crawl, the carriage of his thorax, the flex of his abdomen–
The bedsheets do not cover it;
The strong, thin legs he has strike through the bedding;
To see him conveys as much as seeing a cockroach, maybe more;
You linger to see him on his back, waving his legs at you.

O my Body! I dare not desert the likes of you in other men and women, nor the likes of parts of you;
Head, neck, hair, ears, eyes, mouth, tongue, lips, teeth, nose, cheeks, forehead, chin;
And not head, thorax, abdomen, carapace, mandibles, antennae, compound eyes!


The Metamorphosis by E. Allen Poe

Mr. S___ was in one of his fits — how else shall I term them? — of enthusiasm. His brother Gregor had in his sleep transformed into an unknown bivalve, and, more than this, he had been hunted down and secured; he was now clearly visible as a scarabaeus which was believed to be totally new, but in respect to which S___ wished to have my opinion on the morrow.

“And why not to-night?” I asked, rubbing my hands over the blaze, and wishing the whole tribe of scarabaei at the devil.

“Ah, if I had only known you were here!” said S___, “but it’s so long since I saw you; and how could I foresee that you would pay me a visit this very night of all others? As I was coming home I met Lieutenant Gentarme from the fort, and, very foolishly, I lent him the bug– that is to say, my brother; so it will be impossible for you to see him until the morning. Stay here to-night, and I will send down for him at sunrise. He is become the loveliest thing in creation!”


The Metamorphosis by Kahlil Gibran

And a man said, “Speak to us of metamorphosis.”

And he answered saying:

You would know what it is like to awaken, transformed, from a troubled dream.

You would gaze with compound eyes on the naked curve of your brown belly.

You would touch with your antennae the slight bedding that barely hides your form.

You would kick with your many legs and free yourself from the prone position you find yourself in.

But let there be no helpless waving and fearful scurrying from the light.

For like the soul, the insect is a creature boundless and beautiful.

Say not, “I have metamorphosized into a bug,” but rather, “The bug has metamorphosized into me.”

For the soul walks upon all paths, whether on two legs or six.


I don’t remember what initially inspired this, but I’m pretty sure that a combination of alcohol and IRC were involved.

Update: I submitted this to McSweeney’s and got a very nice rejection letter:

This is fun, but I’m afraid we’re not going to use it. We ran a piece about Kafka and another about Lovecraft not too long ago and we’re not quite ready to return to them. Thanks for giving us a shot, nonetheless.

I haven’t attempted to submit anything non-technical for publication since I was a teen, because I don’t handle rejection well, but hopefully I’m old enough now to deal with it. I’m going to try again sometime. For real.

BBEdit 9 and Subversion 1.5

Posted by Corey Ehmke on August 29th, 2008 in Development, Technology | Permanent Link
Tags: , , ,

About a month ago, I replaced my old SVN GUI client (svnX) with the excellent Versions SVN client from Pico. I won’t rave about it now; check it out for yourself and bask in the goodness.

One of the unfortunate side-effects of using Versions, however, was that after the mandatory upgrade of SVN from 1.4 (OS X default) to 1.5, BBEdit’s SVN support was broken. I kept getting the message “svn: This client is too old to work with working copy“. Grr.

I looked around in BBEdit’s preferences and even .plist files, to no avail. This morning I even filed a bug report with Bare Bones. Turns out that that was premature… BBEdit was doing the right thing all the time, using the system’s SVN. The problem was that I had multiple versions of SVN installed.

From the command line:

Cerberus:bin bantik$ which svn
/usr/local/bin/svn
Cerberus:bin bantik$ svn --version
svn, version 1.5.1 (r32289)
   compiled Jul 25 2008, 12:47:20
...

As expected. However, this was less than expected:

Cerberus:bin bantik$ find / -name "svn" -print | grep svn
/opt/subversion/bin/svn
/usr/bin/svn
/usr/local/bin/svn

OK, but maybe some of those are links?

Cerberus:bin bantik$ ls -al /opt/subversion/bin/svn
-rwxrwxr-x  1 admin  admin  788520 Jul 25 14:05 /opt/subversion/bin/svn
Cerberus:bin bantik$ ls -al /usr/bin/svn
lrwxr-xr-x  1 root  wheel  23 Jul 13 09:41 /usr/bin/svn
Cerberus:bin bantik$ ls -al /usr/local/bin/svn
lrwxr-xr-x  1 root  wheel  23 Aug  3 19:39 /usr/local/bin/svn
       -> /opt/subversion/bin/svn

Aha! I’ve got an old version of SVN at /usr/bin. So let’s replace that with a symbolic link to the new version:

Cerberus:bin bantik$ sudo rm /usr/bin/svn
Cerberus:bin bantik$ sudo ln -s /opt/subversion/bin/svn /usr/bin/svn

That should do it. I restarted BBEdit just to make sure, and now, like magic, Subversion integration works again.