Web Development.

Part of what I do is web development. Mostly freelance work and open-source projects, and mostly involving one or more of the following: the WordPress publishing ecosystem, web publishing platforms, open content markup and publishing, decentralized peer-to-peer communications, feed parsing and aggregation, PHP, and JavaScript. This page offers downloads, docs, and news and updates for some of my ongoing web development projects.

FeedWordPress 2011.1018. It’s like two upgrades in one!

I’m happy to announce that FeedWordPress version 2011.1018 is now available for download.

This announcement is actually going to sum up the changes for a couple of different releases of FeedWordPress. The previous public release, 2011.0721, was released some time ago, and has been available at through the WordPress plugin repository, but I was unable to post the announcement on the project due to an unfortunate combination of two factors: a technical breakdown at the old project website, and a cross-country move that effectively prevented me from taking the time to fix the breakdown. Happily, the move is over and, rather than fixing the breakdown, I have simply decided to migrate the project website over to a brand new home. (Same URL as before, but running the latest release of WordPress.) So, without further ado, here are the changes made in today’s release, along with the changes that 2011.0721 had already introduced:

Version 2011.1018

  • HTTP BASIC AND DIGEST AUTHENTICATION SUPPORT: FeedWordPress now offers
    improved support for syndicating feeds that make use of HTTP Basic or HTTP
    Digest authentication methods. In order to set up authentication on one of
    your feeds, just go to its Settings > Feed page, and click on the “Uses
    Username/Password” link underneath the Feed URL. Enter the username and
    password for accessing the feed, then select the authentication method. (If
    you’re not sure which method your feed provider uses, try Basic first.)
    Save Changes, and syndicate away.

    NOTE: HTTP Digest support requires the curl module for PHP. If you are not
    sure whether this module has been installed, contact your web hosting
    provider to check.

  • WP 3.3 (BETA) COMPATIBILITY: This version fixes an init-sequence bug that
    could cause intrusive warning messages or fatal errors in WP 3.3 beta
    versions.

  • BUGFIX: FIXES LONG DELAYS IN UPDATES SCHEDULES IN LARGE INSTALLATIONS. A
    performance feature introduced in version 2011.0721 had some flaws in its
    implementation, which tended to create serious delays (on the order of
    several hours) in FeedWordPress’s attempts to schedule updates for feeds,
    when users had a very large number of feeds (several dozen or more) in their
    FeedWordPress installation. This feature has been reconfigured to adjust
    dynamically to the number of feeds in Syndicated Sources and the frequency
    with which they are updated. If you’ve seen a lot of ready-to-update feeds
    piling up, several hours after they were supposed to get updated, then this
    upgrade should better ensure that your feeds get updated in a timely fashion.

  • BUGFIX: syndicateditemguid FILTERS FIXED. Previous versions of
    FeedWordPress theoretically allowed for filters on the syndicateditemguid
    hook, which was intended to filter the globally-unique identifier element
    (rss:guid or atom:id) — useful if you need to convince FeedWordPress to use
    different guids, or to recognize two or more incoming posts as versions of
    the same post rather than as distinct items. However, while the hook
    affected the guid stored in the WordPress database, it did not affect the
    guid used to check whether an incoming feed item had already been syndicated
    or was a new item — which greatly limited the practical usefulness of the
    filter. This bug has been fixed: syndicateditemguid filters should now
    properly control not only the final database record, but also the initial
    uniqueness test applied to posts.

Version 2011.0721

  • BUGFIX: SERIOUS BUG CAUSING RARE UNEXPECTED DELETION OF PAGES AND OTHER
    CONTENT.
    A bug in the guid-checking code for some rare kinds of guids could
    cause content in the wp_posts table to seemingly disappear at random after
    FeedWordPress updates.This most frequently but not exclusively affected
    static pages. What actually happened is that in these rare cases the
    existing static page was mistaken for an older version of the new incoming
    syndicated post, which was then stored as a new revision of the original
    page. The bug that caused these mistaken identities has been fixed.

  • BUGFIX: UNWANTED AUTOMATIC PAGE-LOAD-BASED UPDATES NO LONGER A NUISANCE.
    Some users encountered a bug in which FeedWordPress would adopt an automatic
    page-load-based update method, even if they had requested that it not do
    so, and that it use a manual or cron job update method instead. The bug
    causing this has been fixed, and page-load-based updates should no longer
    trigger unless explicitly turned on.

  • WP 3.2 USER INTERFACE COMPATIBILITY: POST TAGS BOX NOW WORKS AGAIN. The
    release of WordPress 3.2 caused a breakage in the tags box which prevented
    you from adding or removing tags under Syndication –> Categories & Tags.
    (The breakage was the result of an incompatibility introduced by the new
    release of jQuery.) This breakage has now been fixed, and the tags box
    should work correctly again.

  • FEED UPDATE SCHEDULING IMPROVEMENTS: UI. The Syndicated Sources table now
    provides considerably more data to understand update scheduling, when
    specific scheduling decisions are made because of, e.g., requests from the
    feed producer.

  • FEED UPDATE SCHEDULING IMPROVEMENTS: ENFORCEABLE “MINIMUM INTERVAL” SETTING
    TO SPACE OUT UPDATES.
    Some feeds request specific update schedules, using
    standard elements such as sy:updateFrequency and rss:ttl. Normally,
    FeedWordPress respects any scheduling requests that a feed makes — if it
    requests a longer gap between polls than what FWP would normally adopt, then
    FWP slows down to meet the request. If it indicates a shorter gap than what
    FWP would normally adopt, FWP speeds up and checks that feed for updates
    more often than it normally would. Now, there should not be any way for user
    settings to override an explicit slow-down request from the feed producer –
    if producers indicate a particular update schedule, then polling the feed
    more frequently than they request is considered abusive behavior. But
    there’s no reason why users should not be able — if they so desire — to
    override speed-up requests, and poll a feed less frequently than the
    indicated update schedule, if the FWP user wants to space update checkins
    over a longer interval of time. Before, they could not do this: FWP always
    sped up to meet the indicated update schedule. Now, they can do this, by
    using the new “Minimum Interval” setting in Syndication –> Feeds &
    Updates..

As always, if you notice any problems, have any questions, need any help, or just want to say “Hi,” don’t hesitate to drop me a line via e-mail or through the comment form. Keep in mind that while I do my best to answer any e-mails I receive about FeedWordPress, I’m currently working through a significant backlog of e-mails (somewhere in the high dozens or low hundreds) that accumulated while I was making my move. So for the time being, you can assume I’ll be getting back to you, but it may be a few days before that happens.

Now download and enjoy!

FeedWordPress 2011.0706: WordPress 3.2 compatibility, better performance

FeedWordPress version 2011.0706 is now available for download..

This release has two major functions: first, to provide compatibility with the most recent release of WordPress, WordPress 3.2. If you encountered a fatal error like this:

 Call to undefined method WP_SimplePie_File::WP_SimplePie_File()
in [1]/wp-content/plugins/feedwordpress/feedwordpress.php
on line 1841.

… then this release should eliminate that problem.

Second, to provide some significant performance improvements, mainly in the SQL queries used to determine whether incoming syndicated posts have been previously syndicated, or whether they represent new content. If you’ve been having CPU, memory or other database-related problems with the most recent couple releases of FeedWordPress, this update may offer some relief.

In addition, this release provides some important bugfixes related to sticky posts and duplicate post issues.

Here are the major changes since Version 2011.0602:

  • WP 3.2 COMPATIBILITY: ELIMINATES FATAL ERROR “Call to undefined method
    WPSimplePieFile::WPSimplePieFile() in
    [2]/wp-content/plugins/feedwordpress/feedwordpress.php on line 1841.” The
    latest release of WordPress, version 3.2, has shifted the minimum
    requirements up to PHP 5.2, and in line with the shift to PHP5 they have
    rewritten a number of code segments that made use of now-obsolete PHP4
    idioms. Unfortunately, this caused a fatal error whenever FeedWordPress
    attempted to make use of the cache, since FWP’s caching plugin was written
    to match the older idiom. FeedWordPress has been updated to follow the new,
    PHP5 idiom when possible, thus eliminating the fatal error.

  • PERFORMANCE: The handling of queries to determine whether posts had been
    previously syndicated produced some very slow queries (usually, but not
    always, involving a scan over the MD5(postguid) column of the table). The
    code that prepares MySQL queries for previously-syndicated checks has been
    revised to eliminate the MD5(post
    guid) scan entirely, and to significantly
    improve performance by eliminating other unnecessary clauses.

  • BUGFIX: NO LONGER DESTROYS STICKY POSTS. Previous versions could destroy
    (or, more precisely, replace the content of) sticky posts due to some
    queries mashed together in unexpected ways by WordPress. Version 2011.0706
    accounts for and eliminates the problem; your sticky posts should be safe
    once again.

  • BUGFIX: GUIDS CONTAINING MYSQL-ESCAPED CHARACTERS NO LONGER CAUSE DUPLICATE
    POSTS TO APPEAR.
    One remaining source of duplicate post issues in 2011.0602
    was guids that contained characters that needed to be escaped for MySQL,
    such as single quotes and double quotes. The work-around for handling
    filtered URIs has now been corrected to ensure that these do not cause
    duplicate posts.

If, after making this upgrade, you experience (or continue to experience) any serious issues with WP 3.1.3-3.1.4 or with WP 3.2, please contact me with as detailed as possible a description of what you’re seeing. It will help out a lot if you can include the following diagnostic information. (If you don’t include it, you’ll probably just get an e-mail back from me asking you to provide it.)

  1. The versions of WordPress and FeedWordPress you’re currently using.

  2. The specific URL(s) of the feed or feeds where you are encountering the problem;

  3. An indication of whether you are seeing the problem on all your feeds, or seeing it on some feeds but not on others; and whether you are seeing it on all posts from the affected feeds, or just seeing it on some posts but not on others;

  4. The update method that you are using (automatic updates before page load, after page load, manual updates from within the WordPress interface, a cron job…); and

  5. Any FeedWordPress-related add-ons you may be using, if any, or any significant special settings you may have set under Syndication –> Posts & Links (for example, whether you have set syndicated posts to come in as Drafts or hold them as Pending, rather than publishing immediately; whether you are making any use of Custom Post Types under the Advanced settings; etc.).

Please remember that your ongoing gifts to the project tip jar, besides being immensely kind, and very much appreciated, and an ongoing source of real satisfaction for which I am deeply greatful, are also what make it possible for me to take out the time for ongoing development, timely fixes, and support for the FeedWordPress project.

Now get on out there and check out the new release.

FeedWordPress 2011.0602: More compatibility fixes, fewer duplicated posts

FeedWordPress 2011.0602 is now available for download.. This is a follow-up to Tuesday’s release; it fixes a couple of bugs, and covers a couple of important new edge cases, related to the identification of previously syndicated posts. If you continued to get duplicate posts even after upgrading to 2011.0531, or if you were seeing posts oddly reassigned or copied with a different post status (for example, posts unexpectedly being restored from the trash can, or unexpectedly reappearing as Drafts), then this release may help get rid of these problems.

Here are the major changes since Version 2011.0531:

  • WP 3.1.3 COMPAT / BUGFIX: WHITESPACE IN GUIDS NO LONGER PRODUCES DUPLICATE POSTS. The work-around for handling filtered URIs in guid elements has now been extended to handle URIs that were filtered because of leading or trailing whitespace, in addition to URIs that were filtered because of unapproved schemes.

  • WP 3.1.3 COMPAT / BUGFIX: RELATIVE URLS IN GUIDS NO LONGER PRODUCE DUPLICATE POSTS. The work-around for handling filtered URIs in guid elements has now been extended to handle URIs that were altered without being filtered out entirely (most commonly because a scheme was added to a relative URL).

  • BUGFIX: UPDATES TO POST NO LONGER CAUSE DUPLICATE DRAFT VERSION TO APPEAR. Under certain conditions in 2011.0531, an update to an existing post would not be properly applied to the post itself, but rather would appear as a duplicate post with Draft status. This bug has been eliminated, and updates will now be properly inserted as revisions to the existing post.

If, after making this upgrade, you continue to experience serious compatibility problems with WP 3.1.3, especially including duplicate posts, please contact me with as detailed as possible a description of what you’re seeing. It will help out a lot if you can include the following diagnostic information:

  1. The specific URL(s) of the feed or feeds where you are encountering the problem;

  2. An indication of whether you are seeing the problem on all your feeds, or seeing it on some feeds but not on others; and whether you are seeing it on all posts from the affected feeds, or just seeing it on some posts but not on others;

  3. The update method that you are using (automatic updates before page load, after page load, manual updates from within the WordPress interface, a cron job…); and

  4. Any FeedWordPress-related add-ons you may be using, if any, or any significant special settings you may have set under Syndication –> Posts & Links (for example, whether you have set syndicated posts to come in as Drafts or hold them as Pending, rather than publishing immediately; whether you are making any use of Custom Post Types under the Advanced settings; etc.).

If everything looks alright on your end — and I think that this changes should fix most of the issues that have thus far been reported to me — then great. As usual, any other issues you may have with the release, or any other questions I can help answer, or anything that you would like to see included in a future release, are all good reasons to drop me a line and let me know how I can help you. And as always, your ongoing gifts from the FWP user community to the project tip jar, besides being generous and immensely kind and an ongoing source of real and sustaining gratitude for me as a developer, are also what make ongoing development, timely fixes, and support for FeedWordPress possible.

Now y’all get out of here and enjoy the new release.

FeedWordPress 2011.0531: WordPress 3.1.3 compatibility issue producing duplicate posts now resolved

FeedWordPress 2011.0531 is now available for release. This is a compatibility release intended to bring FeedWordPress up to compatibility with the most recent release of WordPress, version 3.1.3. In particular, it fixes an issue introduced by WordPress 3.1.3 which caused numerous duplicate posts on some feeds.

Here’s what’s changed since Version 2011.0512:

  • WORDPRESS 3.1.3 COMPATIBILITY: DUPLICATE POSTS ISSUE FIXED. Due to internal changes in the way that WordPress handles post guids in the most recent release (3.1.3), many users experienced problems with many duplicate posts appearing in rapid succession. (Specifically, this would happen with any posts using tag: URL guids — such as all the posts coming from Blogger feeds or feeds from other Google services.) This compatibility release of FeedWordPress eliminates the issue by working around the new restrictions on tag: URLs.

  • NEW AND IMPROVED DIAGNOSTICS: Syndication –> Diagnostics now contains some new diagnostics settings useful for debugging problems with duplicate posts (allowing you to easily view the guid of posts in the WordPress posts database and allowing you to track the SQL used to check for existing versions of a syndicated post).

As always, if you have any issues with the release, or any questions I can help answer, or if there is anything that you would like to see included in a future release, please use the comments form or drop me a line to let me know about it. If you have an issue to report, please be sure to tell me what version of FeedWordPress you’re using, what version of WordPress you’re using it with, which web browser you are using to view the FeedWordPress user interface, and try to tell me, as clearly as possible, (1) what you were trying to do, (2) what the circumstances were, (3) what you expected to see, and (4) what you ended up seeing instead.

Please remember that your generous gifts to the project tip jar make ongoing development, compatibility releases and support for FeedWordPress possible.

Download and enjoy!