Saturday, 5 March 2005

Comment feed

For those of you who like to keep up with the discussions on our posts, a few minutes of hacking led to an experimental Atom feed of comments. It’s not playing nicely with If-Modified-Since yet, so be gentle.

Wednesday, 19 January 2005

Don't follow me, everything will be all right

Ars Technica passes on word from CNet that various search engine vendors and blogging tool providers (including heavyweights SixApart) are implementing a new plan to limit comment spam by reducing the value of comment spam for search engine placement. Signifying Nothing has already followed suit, although since trackback spam has been less of a problem for us I’m only applying the “fix” (a simple attribute on HTML a tags) to user comments for now.

Thursday, 19 August 2004

Ask and ye shall receive

Because we considered Signifying Nothing‘s pages insufficiently cluttered, we have added the manual trackback link to individual post and daymode pages, as requested by James Joyner.

And, before you ask, no, we wouldn’t jump off a cliff if he asked us to.

Thursday, 20 May 2004

Comments on comments

To answer Will Baude: My fundamental position on comments remains unchanged. However, the software that drives Signifying Nothing (and the neglected Bazaar), LSblog, needs a comments feature, and this is the only place I have to test it. So, you will be subjected to it during testing.

I don’t plan on opening comments on every single post during testing, mind you. That, of course, is also a test. And then we’ll go back to our old, comment-free existence and live happily ever after, unless Brock decides he likes comments.

BTW, I can add a cookie pref to not show comments to you, if you want it.

Wednesday, 19 May 2004

And $2 will buy you a cup of coffee

Well, we’ll try this whole “comments” thing for a day or two (against my better judgment, mind you) and see how it goes. If nothing else, it will give me a chance to play with the IP blacklist feature.

It’s actually a pretty slick setup under the hood… you can use HTML or Textile markup, or intermingle the two, and you’ve got a reasonably complete subset of HTML to work with (no DHTML or images, but pretty much all the text formatting stuff is there, with the exception of CSS). About the only thing missing is a preview function, and that’s just because I’m pretty much lazy.

So, here’s your topic to start with, a good British telly question: was/is Julia Sawalha hotter on Absolutely Fabulous or Jonathan Creek? (And no spoilers on Jonathan Creek, please, we’re hopelessly behind on this side of the pond.)

Friday, 14 May 2004

No comment

Will Baude continues to justify Crescat Sententia‘s “No Comments” policy, for essentially the same reason that SN doesn’t carry comments. Well, that and the fact I don’t have the Copious Free Time™ necessary to remove troll infestations from my comments.

However, there is some fiddling behind the scenes here to add a comments facility to everyone’s favorite blogging platform, LSblog, because other bloggers are not similarly enlightened. Once that’s done, probably this weekend, I’ll release a new tarball, as there appears to be renewed interest in alternatives to Movable Type. Once the rudiments of the comment code are finished, I may open comments on a couple of posts (including this one) for testing purposes.

Friday, 26 March 2004

Huzzah and kudos

Congratulations to Roberto Antonio Ferreira De Almeida on finishing his port of Textile 2 syntax to Python. I’ll be shunting it in “behind the scenes” here at Signifying Nothing shortly.

Wednesday, 3 March 2004

XML legality question

Dumb question… does anyone know if the following XML construct is technically legal?

<a title="<![CDATA[lame <i>test</i>]]>" href="">blah</a>

PyExpat barfs on it, as does Mozilla’s XML parser, and I suspect they’re right to do so, but I can’t find anything in the XML specification that says, definitively, whether or not CDATA declarations are allowed in attributes. (If this is incorrect XML, Movable Type 2.661 generates invalid RDF/XML and my trackback discovery code isn’t busted.)

Wednesday, 25 February 2004

Another PyTextile 2 port

I see someone else is trying to make a Python port of the Textile 2 syntax. My approach so far has been a straight port of the Perl code by Brad Choate, with some minor tweaks (using urlparse and mimetypes, for example), rather than trying to hack Mark’s existing module.

Now that I’ve been hacking away for a week (and am about 700 lines away from being done—I just started on format_table, which looks downright nasty), I’m becoming convinced that the smarter plan would have been to write a lexer from scratch for the Textile markup, rather than trying to use the regex-happy approach Choate used (which works far, far better in Perl than in Python).

Friday, 13 February 2004


This weekend’s Herculean coding task: port Textile 2.0 syntax to Python. Mark Pilgrim ported the 1.0 syntax, but has since put the project aside due to limited time. The Perl module is 2260 lines, not including the POD-formatted docs (I guess I’ll have to make that a docstring), so my work is cut out for me.

Anyway, it’s a welcome distraction from job applications…

Monday, 2 February 2004

Hosing myself

Remind me never to fiddle with <SCRIPT> tags ever again. That’s all I have to say. Grrr…

Anyway, while I was messing everything up, I did futz with the sidebar location and add a link to the heretofore pretty-much-hidden “mobile edition.” If you prefer the sidebar on the left, click on Set appearance and time zone and choose the appropriate stylesheet. If your sidebar is still on the left, and you want it on the right, ditto.

Monday, 29 December 2003

Signifying Nothing goes mobile

Prompted in part by my new cell phone, which includes a built-in web browser, I’m pleased to announce the debut of Signifying Nothing Mobile. There isn’t a lot of support for navigating between posts yet, but hopefully I’ll be able to add that soon. Any reports of success or failure would be appreciated!

Tuesday, 23 December 2003

LSblog 0.8 released

I’ve finally bothered to tar up the latest snapshot of LSblog, everyone’s favorite completely database-driven blogging package, which I’m calling 0.8. New features since 0.7.1:

  • The Atom 0.3 syndication format is now supported.
  • Automatic generation of FOAF data for the weblog.
  • Customizeable post excerpts for syndication and trackbacks.
  • Improved administration interface, including tracking of sent trackback pings (to avoid duplicates) and management of inbound trackbacks.
  • LSblog now serves XHTML 1.0 throughout.

You can download the latest release here. The main requirements are Python 2.2.2 or 2.3; PostgreSQL 7.3 or 7.4; and the psycopg database adaptor.

Tuesday, 9 September 2003

Icky PostgreSQL Problems

Well, I spent most of the last two hours diagnosing when this PostgreSQL bug happens, since it just bit us in the butt rather badly. Now hopefully we can get it fixed…

Friday, 5 September 2003

LSblog 0.7.1

Since Brock asked nicely, I’ve wrapped up version 0.7.1 of LSblog in a tarball. As always, if it breaks, both pieces are yours. This version is still Python 2.2-friendly (I think), but works unmodified under Python 2.3 without icky DeprecationWarning messages.

In addition to Python, it requires PostgreSQL and the PsycoPG database adapter; also, a few bits haven’t been ported to the CGI backend yet (the cookie setting stuff is the main oversight), so Apache 2.x’s mod_python will probably also be nice. Actually, it also needs CGI because I haven’t been bothered to port the trackback script to add mod_python support. And you’ll probably want to set up cron jobs to run and (optionally), just for entertainment value.

Friday, 25 July 2003

Manual trackback link added

Thanks to Kevin of WizBang! and a little bit of cleverness on my own part, you can now manually enter a TrackBack to any post here at Signifying Nothing; just click on the TrackBack link on the entry (it looks like « and has a tooltip saying “TrackBack”), then click on the “Register a TrackBack manually” link. The needed manual URL will be filled in for you; all you need to enter is the post’s permalink URL, the title of your post, an excerpt, and the name of your blog. Ideal for those of you still slumming on Blogger or other weblog tools that don’t support TrackBack.

Wednesday, 18 June 2003

Blogroll module now catching Blog*Spot updates

Thanks to the fine folks at, the LSblog blogroll module now is monitoring their updates list as well. Since they receive an hourly feed of updates from Blogger, this means that a bunch of Blog*Spot-hosted blogs are now showing up as being updated regularly, and so they’ll also percolate up to the top of the blogroll (unless you’ve chosen the alphabetical sort in your preferences).

Tuesday, 3 June 2003

LSblog 0.5 release

Here’s the much-promised 0.5 release of LSblog. I can’t remember exactly what’s new, beyond the blogroll support, so you’ll have to figure that out for yourself. Get it here. It’s all free software under the GPL, except the stuff that says it isn’t (which is generally old-style Python licensed stuff grabbed from various places on the net).

Once I’m at a stopping point on the dissertation, I’ll probably get back to hacking on LSblog some more. In the meantime, if you have patches, suggestions, or comments, send ’em my way.

Monday, 28 April 2003

Time zone setting

The new configuration page allows you to set the preferred stylesheet for this blog (this option used to be further down the page); you can also set the time zone for the blog’s contents to be displayed in.

A few shortcuts for common time zones: Eastern, Mountain, Pacific, GMT/BST, and Iraq. (Central is deliberately omitted, since it’s the default for this blog; if you’re in Indiana or Arizona, you’ll have to go and find your timezone yourself…)

Thursday, 24 April 2003

Blogroll enabled

The blogroll module in LSblog is now up-and-running, at least for display purposes—the table is in the database, and the update awareness (via is now working, but the admin interface stuff is going to take an hour or so more hacking. I’ll probably add the rest of the blogs I track via BlogMatrix in the next day or so, once I don’t have to manually INSERT them into the database from the psql prompt (so if your blog isn’t there yet, it may be coming in a day or so). In keeping with my effort to take advantage of CSS features, the styling for updated entries is done just in CSS—you can disable it in a user stylesheet if it’s particularly annoying to you.

By the way, the polling code will be in the LSblog 0.5 release under an MIT-style license; most of the infrastructure stuff that builds on external standards (TrackBack, the XML-RPC ping code, XML feeds, etc.) will eventually be licensed that way, with the GPL reserved for the frontend code (i.e. the stuff that generates the pages out of the database and the web-based admin code).

The backend code is complete, despite an hour-long power outage (whew!). Also, everyone who has blogrolled me (at least according to Technorati and the TTLB Blog Ecosystem) should be on the blogroll themselves now.

In case you’re curious, the blogroll order is determined by the last update of the blog (with the people who don’t ping at the bottom). It only gets notifications every hour (at 25 after, currently), since otherwise Dave Winer will kill me and/or my Winer number will be incremented.

Monday, 21 April 2003

LSblog 0.4

As promised: here it is. If you break it, both pieces are yours. It requires at least Python 2.2.2, the PsycoPG database adapter, and a recent PostgreSQL; you’ll get the best performance with mod_python, but most everything except the cookie setting can run as a CGI as well (and the administrative stuff only runs as CGI scripts at the moment).

Send any feedback to, and let me know if you deploy the code anywhere.

Content aggregation by topic

One of the vaguely neat things behind the scenes in LSblog is that each post has a topic attached to it, each of which is mapped to an Open Directory topic. Now if you’re just reading the site from the home page, this makes absolutely no difference in your life; the fun part is if you take one of the RSS 2.0 feeds and start aggregating the content into something bigger. The Open Directory topic information in the feed allows you to take my topic namespace and map it into a more universal namespace.

What is the potential upside of this? One thing you could do is create a “virtual group blog” based on full-content RSS feeds. For example, you could build something like the Command Post, but without the administrative overhead of setting up a dedicated Movable Type (or Blogger or LSblog or whatever) installation; just scrape the RSS feeds of the contributors, looking for posts matching Society/Issues/Warfare_and_Conflict/Specific_Conflicts/Iraq. Similarly you could aggregate all the content from a number of blogs that’s under the Open Directory’s Science/Social_Sciences/Political_Science into a political science scholar-blog. (You could also do this at the level of your own RSS aggregator, to create a topic-centered rather than author-centered view of weblog content.)

Another possibility would be to make searches more fine-grained. Feedster has a “war filter”; how about a Mississippi politics filter?

Where to go from here? At some point, integrating the existing framework with ENT seems like it might be necessary; I’m hoping someone else will do the translation from the Open Directory’s XML into OPML so I don’t have to do it myself. I’d also like to build a RSS aggregator backend into LSblog.

Sunday, 23 March 2003

Stylesheet switching

I’ve added a new feature: you can now change stylesheets using the new options on the right sidebar, and it will persist between visits using cookies. Note that the “run-in” style doesn’t seem to work except in browsers that are highly compliant with CSS level 2, which at the moment means recent Camino™, Mozilla, and Phoenix releases (and possibly Netscape 7). Newer builds of Safari may also produce the desired effects. However, the “serif” and “sans-serif” styles should be fine in any recent browser.

As expected, the run-in look (which I'm now using on my system as a default) works nicely in Safari (and, by extension, KHTML). However, Opera and IE have trouble with the :first-child selector, which stops them from working right. (IE also has trouble with :after.) I've also added a few new things to the stylesheet that produce neat effects in newer browsers.

Also behind the scenes, I've combined the CGI and Publisher versions of the page-handling code. The next step is to improve the administrative interface (which, frankly, sucks at the moment) and convert it to be XHTML-compatible (the front-end already is; it's not served or declared as XHTML for various reasons). After that, I think I'll be ready to put up a public release.

Wednesday, 19 March 2003

Textile for Python

Mark Pilgrim has helpfully ported the Textile quick markup system to Python; for more information, see this post at Dive Into Mark.

Behind the scenes, I‘ve added support for it to the LSblog backend (just another new feature in the slouch toward a public release).

Thursday, 20 February 2003

More new stuff

I've now added support for the ThreadTrack feature in Janes' Blogosphere; the » links will show other blogs that are talking about the same links (hopefully!).