The Art of RSS

It only takes a few good posts to get into my news aggregator. But staying in it requires that you provide a good perceived signal to noise ratio (S/N). And for most of you, that means a full text RSS feed.

The wonder of a full text RSS feed is its ability to provide a higher S/N than it’s corresponding weblog. An ability driven by the separation of content from presentational boilerplate. I concede that there may be a few, a very few, whose presentational genius provides a higher S/N at home. But unless complete strangers are telling you that, you’re not one of those few.

For the rest of us, an excerpt feed will always deliver a lower S/N than a full text feed. Every false positive (a click through that looked interesting, but wasn’t) and every false negative (a click through that didn’t happen because the excerpt wasn’t interesting enough) lowers the perceived S/N. And batting 1.000 only buys you the chance to break even with the full text feed - depending on the reader’s bias on click through.

But you already know all this. And you’ve decided that the benefits of driving your readers back to your weblog are worth any decrease in readership. Then take control of the excerpt. Write the excerpt yourself. Adjust your software to use the first paragraph as excerpt and write your pieces accordingly. Don’t just cede control to your software and blindly accept the first N characters as the excerpt.

If you expect it to be worth our time to click through, then it should be worth your time to provide a reason.

Work in Progress

Last week, I was asked whether my blog was a success. The upshot of my answer was that if you don’t have a real destination, then you always have a work in progress. Over on Moore’s Law, Dana Blankenhorn posts a call for better weblog measurement. But measurement becomes truly useful only when there is a definite result in mind.

Since Take the First Step isn’t going anywhere in particular, knowing that I have a Google number of 1600, a PageRank of 6 and the 77th spot on the Userland Site Report is plenty good enough for me. The good thing about not having a destination is that it is next to impossible to get lost.

URL Escrow

It may be petty on my part, but I wish FeedBurner would tell us how they’re going to make money. Recent events have made it clear that free services can disappear at any time. I love the FeedBurner concept, but I hate to outsource my feed url. How would I get my readers back if FeedBurner went under?

It seems to me that there is an opportunity for someone to offer URL Escrow. In the event of a domain name holder going under, the escrow company would assume temporary control of the domain name and provide redirect service for a limited time. Control of the domain would revert to the owner once the redirect service expired. The target market would be hosted services using the host domain - Feedburner, TypePad and Radio Userland users w/o their own domains, …

I envision pricing along the lines of a fixed upfront fee to put a domain into escrow and a modest periodic fee per registered url. It doesn’t take much to provide a redirect service. The hard part is being perceived as a viable business so that users will trust that you’ll still be around when they need you.

New York Geek Dinner

I attended the New York Geek Dinner last night. It was good to meet some folks that I’ve traded links with (Robert Scoble and Greg Reinacker), some folks that I’ve read via others’ links (Martin Schwimmer, Steve Rubel, and Buzz Bruggeman), and even some who I haven’t read before (Peter Rysavy).

My girlfriend thought it odd that I would take the train to have dinner with a bunch of geeks. But I got to talk a little law with Martin Schwimmer, a little PR with Steve Rubel and a little advertising with Buzz Bruggeman. Try that at your run of the mill dinner.

Available

After telling a room full of bloggers that you’re unemployed, I suppose the next step is to proclaim it on your blog for all to see. So here we go. If you have an opportunity for a developer/product marketer in Fairfield County or Manhattan, then drop me a line.

Unable to drop tables in MySQL

This is as annoying as heck. And unrepeatable to boot. Anyone have a suggestion about how I messed up my installation?

8:08 AM: seems to be related to the suid script that I use to run mysqld_safe. If I run the script as the mysql user or I explicitly run /usr/local/mysql/bin/mysqld_safe as myself, then everything is fine. But when I run the suid script as myself, then the problem appears.

local/mysql 52 $ pwd
/usr/local/mysql
local/mysql 53 $ uname -v
Darwin Kernel Version 6.8: Wed Sep 10 15:20:55 PDT 2003;
root:xnu/xnu-344.49.obj~2/
RELEASE_PPC
local/mysql 54 $ ./bin/mysqld --version
./bin/mysqld  Ver 4.0.20-standard for apple-darwin6.8 on powerpc (Official MySQL-standard binary)
local/mysql 55 $ ps -auxww | grep mysqld
mysql    463   0.0  0.1     1828    588 std  S     4:04PM   0:00.07 sh ./bin/mysqld_safe
mysql    487   0.0  1.8    26304  11964 std  S     4:04PM   0:03.99 /usr/local/mysql/bin/mysqld
local/mysql 56 $ cat `which mysqld_safe`
#!/bin/sh
cd /usr/local/mysql/
nohup ./bin/mysqld_safe "$@" > /tmp/mysql$$.out 2>&1 &
local/mysql 57 $ mysqladmin -u root -p create foo
Enter password:
local/mysql 58 $ ls -ld data/foo
drwx------  2 mysql  mysql  68 Jun 15 16:23 data/foo/
local/mysql 59 $ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 9 to server version: 4.0.20-standard

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql> use foo;
Database changed
mysql> create table bar ( id integer not null primary key, name varchar(32) );
Query OK, 0 rows affected (0.01 sec)

mysql> drop table bar;
ERROR 1051: Unknown table 'bar'
mysql> drop table foo.bar;
ERROR 1051: Unknown table 'bar'
mysql> exit
Bye
local/mysql 60 $ sudo chmod 770 data/foo
Password:
local/mysql 61 $ ls -ld data/foo
drwxrwx---  5 mysql  mysql  170 Jun 15 16:24 data/foo/
local/mysql 62 $ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 10 to server version: 4.0.20-standard

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql> drop table foo.bar;
Query OK, 0 rows affected (0.01 sec)

mysql> exit
Bye

Tests are the real contract

We’re all familiar with Paralysis by Analysis, a state in which the wide choice of options blocks us from making decisions. A range of choices usually driven by “What If …” - hypothetical issues that might happen rather than immediate issues that will happen. And in software, it often derives from a belief that the interface is a contract.

If the interface is a contract, then it is a terribly underspecified one. Clarity about the primary purpose of a module is muddled by confusion about edge cases. Rather than implement code satisfying our current need, we try to implement behavior in unspecified situations in an attempt to satisfy the contract.

Tests are the real contract, defining the correct behavior in supported use. That which is not tested is not supported. As opposed to the interface, with its minimal distinction between supported and unsupported use. Start coding to the tests and stop coding to “What If …”.

Back to What I could have learned from XP.

Why TextPattern?

I’ve been playing with TextPattern for the past few weeks and it’s looking good. Why TextPattern?

  1. Lean and Mean: Dean Allen has a nice spartan ethic, keeping a minimalist core with added functionality through plugins.
  2. Self interest: As a member of the VC200, I’ve got a vested interest in the success of TextDrive. TextPattern is a way for me to contribute.
  3. Source access: I’ve got the itch to write my own. I’m hoping that TextPattern plugin hacking will sate it. Because we don’t need another blog engine.
  4. PHP: Now that I’ve decided to learn PHP, I need a project to apply it to.

Moving up the CMS Food Chain

Ari Paparo set out to deploy a weblog and discovered he needed version control and workflow [via Loïc Le Meur]. Given the problem, I doubt that MovableType plugins are the answer. He needs to move up the content management system food chain.

Weblog software focuses on presentation and authoring. If authors want to enforce version control and workflow upon themselves, then plugins will be fine. But if corporate wants to enforce it upon them, then plugins will just be another finger into the dike. Weblogs are built for easy access and manipulation of content. Try to wall it in, and it’s going to leak out.

The content lifecycle can be quite complex. Who can see what content in which state? How does content move from state to state? Who can do what when (easy to delete versions before release, but next to impossible after)? It’s easier to modify the authoring and presentation of an appropriate CMS than to add control after the fact.