Deciding Whether to Drop Anchor

One goal in the move to new software on Workbench is to salvage incoming links from other sites. When you break weblog entry permalinks, you break links on every site that referred to your entries. Because I use weblog archives as a research tool often in my programming, I don't want to hose permalinks switching from Radio UserLand to my hand-coded LAMP software.

I thought I could write a short PHP script to redirect each old Radio-style link to its new link -- just grab the anchor portion of the URL that follows the pound sign ("#"), make a MySQL database query to match the old anchor to the new one, then redirect the request to the proper resource.

No such luck.

The portion of a URL that follows "#" is called the fragment identifier. Radio finds an entry's internal ID number with this fragment -- for instance, #a1833 refers to entry 1833 in the weblogData.posts table.

Much to my surprise, fragment identifiers are not passed by a Web browser to a server as part of a URL request. Instead, they're used strictly by the Web browser, as described by the W3C:

Interpretation of the fragment identifier is performed solely by the agent that dereferences a URI; the fragment identifier is not passed to other systems during the process of retrieval. This means that some intermediaries in Web architecture (such as proxies) have no interaction with fragment identifiers and that redirection (in HTTP [RFC2616], for example) does not account for fragments.

When you request http://ekzemplo.com/view.html#note, the server only receives http://ekzemplo.com/view.html. The browser loads the page and jumps to the anchor named note.

Because the browser doesn't share the fragment identifier, there's no way for a Web application, Apache's mod_rewrite module, or anything else on the server to take action based on that part of the URL.

More details can be found in a proposed Internet draft about fragments and URL redirection.

To retain old permalinks, my new software puts two anchors in an old entry -- its Radio ID and new ID, as in this example:

Perhaps this is old news, but I'm amazed at the design implications of this fragment issue for entry-based publishing tools like Radio. Web servers never see the full permalink generated by the software (or my own, which also uses "#" links). I'm thinking about recoding to drop fragment identifiers in permalinks, but I can't figure out how without adopting a one-entry-per-page approach to archives, which I'd like to avoid.

No Debate Over Who Won

I almost skipped Thursday's presidential debate, expecting that Bush would be viewed as the winner regardless of what happened onstage in Miami. In any event where extemporaneous thinking is required, Bush benefits from the soft bigotry of low expectations -- one right-wing blogger declared him the winner because he referred to so many foreign leaders by name and got all of them correct.

Combine that with the relentless GOP spin machine and distrust of intellectualism among many voters, and there wasn't much opportunity for Sen. Kerry to win the debate.

But win he did.

Kerry shredded Bush, who spent the entire debate crouching behind his podium in a defensive Nixonian scowl, fumbling for words to defend his record in Iraq and the war on terror, two subjects that were supposed to be his strengths.

Bush's performance was so abysmal that many of his supporters have admitted that he got trounced, including a surprisingly candid Rush Limbaugh on his show Friday.

Writing for for the conservative National Review, Jay Nordlinger states:

If I were just a normal, fairly conservative, war-supporting guy: I would vote for Kerry. On the basis of that debate.

A former prosecutor, Kerry worked Bush like Sam Waterston patiently walking a defendant on Law and Order into a courtroom trap. "Of course I know Osama bin Laden attacked us," Bush interjected at one point. "I know that." The fact he felt it necessary to make that assertion shows how badly things were going for him.

Though some pundits believe that Bush's ire was a consequence of being forced to defend his policies, I think Kerry subtly provoked the president's infamous temper with two references to his father:

I'm proud that important military figures who are supporting me in this race: former Chairman of the Joint Chiefs of Staff John Shalikashvili; just yesterday, General Eisenhower's son, General John Eisenhower, endorsed me; General Admiral William Crown; General Tony McBeak, who ran the Air Force war so effectively for his father -- all believe I would make a stronger commander in chief. ...

I believe there's a better way to do this. You know, the president's father did not go into Iraq, into Baghdad, beyond Basra. And the reason he didn't is, he said -- he wrote in his book -- because there was no viable exit strategy. And he said our troops would be occupiers in a bitterly hostile land.

That's exactly where we find ourselves today.

Bush continues to have Oedipal issues with Poppy, a man he challenged to a "mano a mano" fistfight at age 30 and called "the wrong father to appeal to for advice" prior to the start of the war in Iraq. Writing in BusinessWeek, Ciro Scotti noted the familial aspect of the debate:

Bush found himself in a foreign-policy debate with a seasoned politician who was espousing the same sort of measured, internationalist approach to a dangerous world that was the hallmark of his father's Presidency. Debating the security and future of the nation on live national television isn't easy -- but debating your Dad is downright scary.

Whether this translates to a victory in 31 days remains to be seen, but it sure was must-see TV.

The Bench is Back

This entry represents the culmonation of several weeks of work moving Workbench from Radio UserLand to software that I am writing for myself on a LAMP platform (Linux, Apache, MySQL, and PHP).

This has been an eventful month. I was the first person to evacuate Florida for Hurricane Frances, taking my family all the way to Northern Virginia almost two full days before it made landfall. My excessive caution was rewarded by a drive home through South Carolina as the storm hit that state, spawning more tornados in one day than any storm in its history.

By the time that Jeanne became the fourth hurricane to bring Old Testament wrath to the Sunshine State this year, my fear of 110-mph winds was surpassed by my terror over the prospect of another long road trip with three young kids bored out of their skulls. So we rode the storm out in St. Augustine, experiencing a half-day power outage, devastating beach erosion, a few ominous tornado warnings, and a resort town full of great restaurants with immediate seating.

Every aspect of this site will be brought back in PHP/MySQL, including comments and trackback, and I'll be sharing the code under a public domain or open source license. I moved weblog data from three places into the MySQL database: Radio UserLand and my accounts on MetaFilter and SportsFilter. Since June 6, 2000, I have written 2,338 entries, a total that can only be interpreted as a desperate cry for help.

Buzzword.Com: Down But Not Out

Buzzword.Com has been experiencing server outages this week, but should be back online and fully operational.

I'm still learning about the care and feeding of a Manila server. For the most part, it looks after itself, even to the point of rebooting automatically after a crash. If you can't bring up a site on the server, check back in 10-15 minutes and it should be back online.

This wasn't the case earlier this week: A conflict between Microsoft Internet Information Server and Manila caused all sites to be inaccessible for more than a day. I wasn't aware of the problem until I got an e-mail from the publisher of Teardrop Times.

When I begin deleting the inactive weblogs that were never updated after the initial It Worked! post, I expect to see performance improvements to the server for active sites.

Anyone who needs to notify me about a future outage should send me an e-mail on Workbench. This weblog's on a separate server, so it should be available even when Buzzword.Com go boom.

Editing Blogroll Links in Manila

A joke from 2cents, a long dormant site hosted on Buzzword.Com:

An old fellow was snoozing away contentedly when he was startled awake by the doorbell. He staggered off the couch to make his way to the door. There stood a gorgeous young woman. "Oh my goodness," the pretty young thing exclaimed, "I'm at the wrong house." "Sweetheart, you're at the right house," the old guy assured her. "But you're forty years too late."

As this is being written, a UserTalk script is plodding slowly through the 3,025 weblogs on Buzzword.Com, adding four links to each site's blogroll: Workbench, Buzzword.Com, Scripting News, and UserLand. You can check this out by visiting 2Cents.

This is a one-time change and there's no requirement for users to keep the four sponsor links in order to enjoy free hosting. Here's how to remove links from a Manila site's blogroll:

  1. Log in to your weblog. The home page reloads with editing features turned on.
  2. Click the Edit button below the list of links. An Edit Navigation Links page opens with an editing form containing your blogroll, a feature that Manila calls navigation links. (screenshot)
  3. To remove a link, select its Delete checkbox and click the Update button.

The form also can be used to add new links and change the order in which they are displayed.

Blogroll links are the unit of currency in the attention economy of weblogs, forming communities around common interests. As soon as I solve a nagging bug, Buzzword News will publish links to the most popular and recently updated weblogs on the server.

I'm hoping this helps call attention to the server's weblogs, which may have been languishing in traffic due to a lack of Google PageRank. Since the move from Weblogs.Com, it appears that Google has yet to carry each site's old rank to its new address, so they still have a PageRank of 0.

Sportus interruptus

Sportus interruptus: Three miles from the finish, the leader in the men's marathon was knocked to the ground by a spectator and was subsequently passed by two runners. The attacker has attempted similar stunts at other events to promote his apocalyptic religious books.

I Kludge Therefore I Am

1608: A Roman law establishes that bakers who intend to sell vermicelli must belong to the Guild of Vermicellari.

I hacked together a FileMaker Pro 6 database application for Mac OS 9 this weekend with my wife M.C. Moewe. She began a job two weeks ago covering real estate and land development for the Florida Times-Union, and she'll be working on a weekly Pipeline feature that's better suited to a database than a word processor.

Pasta Verace di Cragnano Vermicelli BucatiThe application must output records as a word processing file with font formatting and bullet characters. I can't figure out how to accomplish this within FileMaker, so I'm looking at external solutions using AppleScript, Radio UserLand and UserTalk, or some kind of XML transformation.

I'm neither a Mac guy nor a FileMaker user, prior to today, which matches the lack of expertise I had in VBScript and Object Linking and Embedding prior to a project I did last week to print labels on a Dymo LabelWriter 330 in Internet Explorer.

Though I heart Java, I sometimes find it preferable to cobble together different technologies and programming languages in Rube Goldbergian fashion. I can verify that the programs work, through testing, but sometimes lack the expertise to understand why. Coding time is fast and ugly.

The FileMaker hack reminded me of Save the Hobbyist Programmer, a controversial essay in the February 2004 Visual Studio magazine by Kathleen Dollard. She argues that casual coders are being left behind by increasingly complicated Microsoft development tools, a problem viewed as a happy outcome by professional programmers such as Michael Flanakin:

If you get rid of all the people who aren't completely dedicated [to] software development, that would open a lot of jobs. Then, those people could focus on whatever domain their experience is from.

For job security reasons, I can understand why pros believe that software should only be created by themselves. All who sell vermicelli must belong to the Guild of Vermicellari.

On no other basis can Flanakin's position be defended. If someone with expertise outside of programming can make a task easier through a scripting hack or database kludge, isn't that exactly what computers are supposed to be for?