Leash and Feedparser

3 June 2007

Maybe I'll write up something a little more formal in the future. For now, I just want to publish this in case it's useful to someone.

Les Orchard posted a blurb that indicated that he was looking for a PHP class to perform HTTP requests with conditional GET support. Well, a while ago I was looking for that, too. Because I was working on a replacement for Magpie RSS (see below), I decided to use Snoopy as my HTTP client. I then wrote a brief extension, Leash, to provide a cache-enabled front end to Snoopy. Leash automatically caches the HTTP results, the time of the request, and the Last Modified and Etag HTTP headers. When you request a page you've previously requested, Leash first checks to see if the cached copy is older than the maximum cache age you've specified (or the default of 1 hour), and if the cache is too old, Leash performs a conditional GET. The latest version of Leash (which I bundle with Snoopy) is in my Subversion repository.

Also in that repository is my replacement for Magpie RSS. I always liked Magpie, but it didn't quite work for me and I also wanted an OPML parser. So I wrote one. Actually, first I wrote a generic PHP XML parser. Then I wrote the OPML parser and Feed parser.

Sorry, but I currently don't have time for documentation. Or support. That probably makes this of very limited utility to all but the most daring. If you're a PHP junkie, you'll probably be able to peruse the code and get the gist. And here's an example of how I'm using it to help manage my podcasts.

WordPress and JavaScript Hijacking

13 April 2007

I read this paper that Bruce Schneier linked to regarding JavaScript hijacking. Seems to me that WordPress plugin developers who piggyback on WordPress's builtin security features shouldn't have anything to worry about.

Judging from what little buzz there was, I think that's probably true, but I'm interested in others' thoughts.

Alex King on WordPress Theme Development

25 January 2007

tecosystems Redesign | alexking.org: Another good post by Alex King, this one about developing a new theme (and also about mixing business and friendship).

Answer the door

1 November 2006

Dave Winer is looking for a developer to work on Share Your OPML.

If you're interested, I strongly urge you to pick up the baton. I can vouch for what Dave says in his post: he's demanding, but he really invests in the people with whom he works. As long as you're not a prima donna who cannot handle tough questions about your work, Dave has a lot to offer as a teacher and a boss. Actually, boss is a terrible word for the working relationship you can expect to have with Dave. He's an articulate collaborator with an insight into users' wants and needs that I find amazing.

Opportunity knocks. Answer the door.

A River for NewsGator

17 October 2006

Truly re-inspired by Dave's injection of interest into mobile news reading, I've been tinkering with my own custom solution. Since I subscribe to NewsGator, I'm using the NewsGator API for some backend, but I've done quite a bit of plumbing myself.

The most important things I wanted to be able to do were (1) to be able to mark posts read (and since I'm using NewsGator, that "read" status synchronizes across all my aggregator clients on different computers) and (2) to fix the annoying nonsense characters introduced by idiotic feed generators -- that includes the New York Times and Washington Post.

The results are starting to shape up nicely.

Here's the main page I see after I sign in.

NewsGator River screencap 01

And notice that in FeedDemon, "Chávez" is screwy, but I've got it right.

FeedDemon screen capNewsGator River screencap 02

Optimal Bugfix

15 June 2006

I released a bugfix for Optimal today. The latest version is 0.4c. If you haven't experienced any weird problems with the 0.4 release, don't bother updating.

Thanks to Chris Pirillo for bringing the problem to my attention and working through it with me.

Optimal OPML Browser Update v. 0.4

12 June 2006

I've completed a major rewrite of my OPML browser, Optimal.

I didn't manage to document all of the changes, they were so numerous. Highlights are:

  • Object-oriented reimplementation, making it more portable to other applications
  • Same code may be used as a WordPress plugin -- replaces the OPML Renderer plugin for WordPress
  • RSS items now include descriptions, so you can browse the feeds without subscribing or visiting the home page
  • New widget generator to generate HTML to include Optimal on your web site

More... | Download

Note To Self: Del.icio.us API Change

9 June 2006

Del.icio.us rolled out a new API server. Eventually, the old server will shut down. This will effect MySQLicious.

If the old URL was:

http://del.icio.us/api/posts/get

the new URL will be:

https://api.del.icio.us/v1/posts/get

Note:

  1. The use of https (for secure connections)
  2. The new server name
  3. The addition of a version number where the /api/ used to be

Optimal OPML Browser Update v. 0.4pre1

29 March 2006

I'm still working on a significant rewrite of my OPML browser, Optimal, but I've decided to release the current working version in the meantime because it addresses a couple of significant usability comments I've had.

Specifically:

  1. There are now links to expand/collapse all nodes, and
  2. There is a new query string parameter, depth, which allows you to specify the initial expansion state.

Optimal Screen Cap 0.4pre1

Del.icio.us to OPML + Mash

13 March 2006

I've still got some work to do, so this is just a "hey, it works" sort of post.

John Tropea posted last week about an OPML hack for del.icio.us to which I responded with a more dynamic example and to which another reader asked, "Why bother?" Fair enough quesiton, and here's a better answer by way of example.

I’m using MySQLicious to mirror my del.icio.us bookmarks to a local database (for several good reasons). Now that I have a local copy of those bookmarks and all the del.icio.us tags and other del.icio.us metadata, I can remix it however I want.

The first thing I've done is create an OPML file on-the-fly, where every del.icio.us bookmark is rendered as an RSS feed item with the bookmark's URL as the feed htmlUrl and the xmlUrl is an RSS feed of a Feedster search on the bookmark's URL.

Here's the raw OPML file.

Here's how it looks in Optimal.

Notice that there is a query string parameter "addfeeds." Without this parameter, the OPML is simply rendered as a link list. An addfeeds value of "feedster" adds the search feeds. Eventually, I'll have some additional query values I could use here, such as Technorati.

Here's the source.