Archive for September, 2003

Aarrr!

Avast there, maties! Yer sailin’ in treacherous waters! For today do be International Talk Like A Pirate Day! Aarrr!

In fact, me hearties, this entire blog do be rendered in pirate-speak for the day! Rob Hague, a scurvy bilge-rat if ever there was one, produced a Blosxom plugin, blog-like-a-pirate, to handle this automagically. Raise a mug o’ grog in his honor, Arrr!

I extended his bit o’ magic with a spot o’ my own… I added support for a meta tag, ‘meta-aarg’. If it be present, and if it be ‘false’, no translation be done. This be so that I can write a post in pirate-speak without a double-dose of “Aaarr!”. That way this here post can remain pirate-friendly even after the rest o’ the blog do be back to normal.

Need for Speed, Part 1

I was thinking about speed today. Feeding this site into the free analyzer at WebSiteOptimization.com reminded me of a couple of facts I had already figured out. First, the blog is growing too long.

Blosxom has a configuration variable called $num_entries to help with this. It allows you to limit how many blog entries appear at once. By default its set to 40; I’ve now lowered it to 10. This has had some unanticipated side effects. The comment for $num_entries is:

# How many entries should I show on the home page?

This seems to indicate that the limit is only imposed on the ‘home page’, or root category. In fact, it limits all category views. This is probably good, because eventually the categories will get full. However, there is no provision for browsing further back within a category. This may be a job for a new plugin.

The other thing the analyzer reminded me of is the need for gzip compression on the site. I looked breifly into this before, without much luck. My host, iPowerWeb, has no documentation about using mod_gzip on their support site, so I assume it isn’t implemented. I looked into the gzip plugin for blosxom, but haven’t figured out how to get the required Compress::Zlib module to work from the $plugin_dir/lib dir. It uses AutoLoader, requiring a make step. I did this, but couldn’t get it to work on my Mac. Today I submitted a support request to iPowerWeb asking for mod_gzip support. I’ll post the response when it comes.

To the Happy Couple

I was away to Vancouver, British Columbia this past weekend, to serve as best man in the wedding of my best friend Sean and his wonderful bride, Marlene.

To save some time, and money, I flew direct from Philadelphia to Seattle, and drove nearly 3 hours to Vancouver. All in all, a wonderful trip. Seattle looked fantastic at sunset. The drive up was relaxing. Vancouver was gorgeous. I had two days of perfect weather… which is nearly 50% of the annual alotment, according to the locals.

As nice as the places were, the people were even better. Marlene is from a large family. Sean is from a small family. Both families, and many friends, were there, and everyone made me feel like family. It isn’t often you meet 50+ people for the first time and immediately feel like you belong.

The ceremony was Sunday evening, in front of a gazebo, surrounded by fishponds and the setting sun. The father of the bride was very noble, escorting his daughter down the aisle. The father of the groom beamed, pride in his eyes. The mothers cried. Everyone watched, and smiled.

The bride was radiant, smiling, confident. The groom, calm all day, was suddenly nervous. His voice broke once or twice, his eyes filled up. I love that part. Reminded me of my own wedding… I could barely speak.

When the cemermony ended, we ascended to the reception. An evening of talking, dining and dancing with friends and family. A perfect end to a perfect day. I was honored to be there.

To the Happy Couple: Godspeed, and God Bless.

I Remember

I remember my pager going off during a meeting. “CALL HOME ASAP.” My wife never pages me. I left the meeting. It was a little past 9am.

I remember finding an empty office and calling home. I was in Manhattan only for the day, 52nd Street. My wife was upset. “Two planes just crashed into the World Trade Center. Are you there?” We live two hours away - she didn’t know anything about New York City, just that I was there. “I’m five miles away, hon. I’m fine.”

I remember getting off the phone after several minutes of assuring my wife I’d find out how to get home and call her back. The meeting was still in progress.

I remember wondering how I could go tell a room full of New Yorkers what had happened. I remember my relief when a moment later, the meeting room opened up and everyone poured out. Someone else had already told them.

I remember wandering down a few floors, looking for a television. I passed someone I didn’t know. “They blew up the Pentagon,” he said. My stomach turned to ice. How far would this go?

I remember talking to my wife again. I had to call someone back in my office, over a dedicated line, and get him to conference us. Long distance and cell phones were completely tied up. “I promise I’ll try to get home today,” I told her. She was trying not to be hysterical. So was I.

I remember leaving the building with four other people from my office, all visiting for the day. Someone had come up over the weekend, and had a car parked in Brooklyn. The 3:30 streets were empty. Subways, the ones that were running, were nearly empty. We walked a long time, away from the smoke. I looked over my shoulder at it so many times I lost count.

I remember riding out of Brooklyn over the Verazanno Narrows bridge several hours later. Looking back at the column of smoke, larger than belief. I will never forget that image as long as I live.

I remember arriving home. Hugging my children. Holding my wife. Calling friends and loved ones, assuring them I was home. Crying. Praying for the families of those who were lost.

On September 11, 2001, over three thousand people lost their lives. At the World Trade 2,972 people were lost. At the Pentagon, 184 people were lost. In a field in Pennsylvania, 40 people were lost. I was fortunate… I didn’t lose anyone. But I remember.

Rose Colored Glasses

Some people see the world through rose-colored glasses. Now you can see this site through them. New style in the the Style boxlet.

Also, the original styles have been tweaked for better viewing across multiple platforms (read: so they don’t look like crap on Windows, even though they looked great on my Mac).

Home Sweet Homepage

This website finally has a homepage. Previously, http://jclark.org displayed only a “comming soon” message. I had planned to setup Apache to use 304 redirects to send such traffic straight to the weblog. Upon further consideration, I decided that it was better to allow search engines to index a home page as well as the weblog… after all, the weblog is at /weblog and not / just incase I ever want other content on my home page.

On Editing Online

I author (and edit) my blog entries using the wikieditish plugin for Blosxom. I write nearly all of my content using the textile plugin. While this arrangement works, it isn’t perfect. For example, to show an example xml , I have to escape the < character as & lt; xml /> in the editor. If I need to edit the entry after it is posted, however, encoded characters are unencoded in the textarea of the edit form. This means I have to remember to re-encode such things.

This, and other desired features, is leading me to consider building a new editing plugin for Blosxom. Features I want:

  • Play nice with other plugins, such as textile, wikiwordish, smartypants, others
  • render exactly what’s in the disk file to the edit box, handling escaping on the way.
  • option (checkbox, metatag?) to mark article as being interpolate-fancy exempt; causes auto-escaping of <'s, making it easier to post sample xml text, etc.
  • Preview feature. Saves post with alternate extension, then runs the article through Blosxom in some way that recongnizes the extention, letting you see the post in context of your flavour template(s), without posting to the world; while viewing you can return to re-edit or elect to post. This means seeing content via your standard template, PLUS seeing some kind of editing interface. Perhaps a popup, or frame, or maybe edit plugin fiddles your flavour template directly?
  • Checkboxes (maybe even backed by server- or client-cookie- based preferences) for auto-inserting commonly used meta-tags like meta-markup:textile.
  • This may just be a matter of flavor templating the editing form (a la wikieditish), but I want to see hints for the plugins I use, like textile, etc.
  • more secure passwording than wikieditish
  • would-be-nice-needs-more-thought: ability to accept posts
    via the nAtom API

I’m just pushing the thoughts around inside my head at the moment. If you have additional features you’d like to see in an editing plugin, click the comment link below.

Well Fed

The RSS Feed for this weblog has been updated to RSS2.0. I‘m currently using a shortened , and including the full text as . It’s valid,
but my current aggregator (NetNewsWire Lite) is only showing the short description. I’d like to try NewsMonster, but the OS X version is not ready.

Feed & Validation badges and links added to the right hand area of the page… which needs a name. It’s more than just a navbar. Suggestions welcome.

Uncommonly Good

This weblog is now published under a Creative Commons Attribution-ShareAlike Licence. Badge and link added to the right hand side of the page; auto-discovery RDF included in the XHTML source.

Storystate 0+1i

My very first published plugin for Blosxom. You can download it here.

Storystate provides a number of convenience variables for use with the interpolate_fancy plugin by Blosxom author Rael Dornfest. It was designed to be especially useful with writeback. Storystate also allows presence of a meta-writeback tag to control if writebacks are open or closed. It’s basically useless without interpolate_fancy.

NOTE: best if used with interpolate_fancy version 2003-09-07 or later.

Excerpt from the POD docs:

Just drop it in your $plugin_dir. Optionally, you can adjust the values of the configuration variables at the top of the file. There are covered later.

Most of the variables are simple boolean indicators, using undef for false. This allows them to be used with interpolate_fancy’s and constructs. Some variables are story specific, (updated for each story), while others are based on the request url and are valid in the head and foot as well.

The request flag variables are:

  • $permalink true if request url is a subdir permalink, e.g. /this/that/story.html
  • $datepermalink true if request url is a date permalink, e.g. /2003/09/07/story.html
  • $anypermalink true if request url is either of above
  • $blogroot true if request is for blog’s root e.g. / or /index.html
  • $archive true if request if date style, e.g. /2003/09
  • $category true if request is subdir style, e.g. /this/that

The story-specific flag variables are:

  • $writeback_closed true if writebacks are closed for story (see below)
  • $permalink_wbopen true if !$writeback_closed and $permalink
  • $permalink_wbclosed true if $writeback_closed and $permalink

The idea of closing writebacks is that you are no longer accepting comments for a given story. Just add meta-writeback: on or meta-writeback: off to the header of the story. If no meta-writeback header is found, the value of the config variable $writeback_default is used instead. Values are on (writebacks open) and off (writebacks closed). This is of course dependant upon you implementing checks against these variables in our story template, see the example below.

There is also a story-specific text variable:

  • $writeback_message description of writeback state for story

This is useful for links to your writeback page. It returns (by default):

  • ‘Add the first comment’ If writebacks are open for story and no comments exist
  • ‘No Comments’ if writebacks are close and no comments exist
  • ‘1 comment’ if only one comment
  • ‘n comments’ if >1 comment, n=$writeback::count

These messages are configurable, see the config variables at the top of the file, they are documented inline.

See the POD docs for an example of usage, I just can’t get sample HTML to play nice with Textile2.