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.0512: better performance, better troubleshooting, and no more “There may be a bug” white-screens-of-death

FeedWordPress 2011.0512 is now available for download. Hooray!

This announcement will actually cover details for a couple of maintenance releases that I’ve pushed out since 2010.0905. This is mainly a maintenance release, with a number of small tweaks around the edges, most of them for better internal performance or organization, but — if you’re upgrading from 2010.0905 — it includes one important, major performance improvement. And it includes a number of changes which should make it much quicker and much less painful to troubleshoot if you encounter any problems with your feeds. Besides having brought the ChangeLog up to date with the most recent version of the code, here are some of the main things that have changed:

Changes since Version 2010.0905

  • BUGFIX: AVOID DUPLICATE POSTS WHEN GUIDS ARE TOO LONG: When feeds included
    exceptionally long GUIDs, FeedWordPress could occasionally get into
    a situation where posts with the long GUIDs would be duplicated over
    and over again with each update (because FWP failed to store the full
    GUID, due to length constraints in the relevant database tables).
    Without the full GUID, FWP would not know that the post had already
    been syndicated once. This bug has been fixed, and should no longer
    produce duplicate posts.

  • HTTP TIMEOUT SETTING: If you are frequently running into timeout
    problems with one or more of the feeds you syndicate, FWP now allows you
    to adjust the timeout for HTTP requests using a global or feed-by-feed
    setting.

  • HTTP GET PARAMETERS: You can now temporarily or permanently add HTTP
    GET parameters to a subscription using an interface in Syndication –>
    Feeds & Updates. This is especially helpful for making quick, short-term
    changes to a subscription (for example, to pull in all the previous
    items from a web service, before settling down to pulling in only newly
    updated items). You can also use it to include private parameters with values that you do not wish to make publicly visible when a syndicated post displays the URL of its source feed — such as API keys or passwords.

  • DIAGNOSTICS SYSTEM: Added several new diagnostics which are useful in
    troubleshooting, and established a framework for add-on modules to hook
    in with their own diagnostic messages.

  • UI: Adjusted some internal coding, which should allow for settings
    pages and add-ons to properly display multiple category pickers on a
    single settings page.

  • PHP4 COMPATIBILITY TWEAKS: This version makes some tweaks to the handling
    of object references which should improve compatibility with older
    versions of PHP. (Although, I should note, web hosts that still force
    you to run under PHP 4 — in 2011! — are bad web hosts.)

  • IMPROVED PERFORMANCE: This version eliminates a major performance drag
    that shows up on sites with large numbers of users (due to some poor
    decisions about where to place a user query, which caused the user table
    to be scanned frequently when it did not need to be). If you experienced
    serious problems with CPU load or slow database performance under
    2010.0905, which kicked in immediately when FWP was loaded and tended
    to disappear immediately if FWP was de-activated, it is likely that
    upgrading away from 2010.0905 to the most recent version will resolve
    your problem.

Changes since Version 2011.0211.2

  • DIAGNOSTICS IMPROVEMENTS; “THERE MAY BE A BUG IN FEEDWORDPRESS” CRITICAL ERROR NOTICES ELIMINATED: This version includes some major improvements
    to the Syndication –> Diagnostics section, which should aid in
    troubleshooting difficulties with items failing to be imported, posts
    failing to be properly inserted into the database, or updates failing to
    be recorded. If you have been encountering critical error / bug notices
    with a white screen and the message “THERE MAY BE A BUG IN
    FEEDWORDPRESS,” followed by an extraordinarily long dump of mostly
    incomprehensible diagnostic information, you’ll be happy to know that
    the condition causing these notices has been eliminated. In the few
    cases where errors may still crop up with database insertions,
    FeedWordPress will now produce a significantly more manageable and more
    useful diagnostic message.

  • BUGFIX: NEW POSTS FAILING TO APPEAR IN A CLEANLY-INSTALLED FEEDWORDPRESS SYSTEM. If you encountered a recurring problem with FeedWordPress
    failing to import new posts, after a clean install of FeedWordPress
    (i.e., not an upgrade from a previous version), this problem may have
    been the result of a bug with author-handling which has now been fixed
    in the 2011.0512 release. (If the problem does not go away with the
    upgrade, this version also includes significant improvements to the
    Diagnostics system, which will help track down what is causing it
    in your particular case.)

  • PERFORMANCE: New handling of update hashes allows FeedWordPress to avoid
    a certain kind of infinite loop, caused when two more more different
    syndicated feeds each carried a version of the same item (for example,
    because it appeared on two different aggregator feeds that you’re
    syndicating). In previous versions, when this kind of loop cropped up,
    syndicated posts could pile up an indefinitely large number of revisions
    – each revision alternating between the version from each of the two
    feeds where it appeared — which would, over time, dramatically inflate
    the size of the database, and kill the performance of queries on the
    post table. This issue has been resolved: revisions of the post that
    have been syndicated once will not be re-syndicated over and over again.

  • AUTHOR LISTS: Lists of authors presented on the Author settings pages
    should now be easier to scan through, with author names arranged in
    alphabetical order.

  • FEED ITEM DATE PARSING: More tweaks to make date-time handling more
    resilient when feeds provide broken or weird values for the timestamps
    on syndicated items. FWP will now attempt to work around unparseable
    timezone values.

  • AUTHOR MATCHING: Now attempts to match author names against the WP login
    name in addition to display_name; when creating user record, also fills
    in some best-guess values for nickname, firstname and lastname. Also
    properly picks up Atom 1.0 author/uri data from feed.

  • COMPATIBILITY: FeedWordPress has been successfully tested for
    compatibility with recent releases of WordPress, up to version 3.1.2.

As always…

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 and support for FeedWordPress possible.

Now get on out there, download and enjoy!

Filter syndicated posts by date or age with FWP+: Limit Posts By Date

I’m happy to announce the public release of FWP+: Limit Posts By Date version 2010.0929!

FWP+: Limit Posts By Date is an add-on module for FeedWordPress that allows you to automatically filter incoming posts based on the date, age, or total number of posts, allowing you to set limits so that posts which are too old will not be syndicated.

To install the add-on, simply download the installation package for the latest version, unzip the contents, and drop the module into your wp-content/plugins directory. Then activate the add-on like any other WordPress plugin. (For more on installing and managing WordPress plugins, see WordPress: Managing Plugins.)

Once the add-on is installed and activated, you can set up your filtering by going to Syndication –> Feeds & Updates, where you should find the new Limit posts by date settings box.

This box provides two means for filtering posts by their date or age.

First, you can choose to create a simple filter based on a fixed date or a span of time. To set up such a filter, use the Date filter setting, providing it with a cut-off date, or else with a timespan (so that FWP will, for example, filter out — will not syndicate — any posts older than November 1, 2010; or so that it will, for example, not syndicate any posts more than 5 days old at the time FeedWordPress first encounters the post on its source feed).

Second, you can choose to limit the number of new items that FeedWordPress will syndicate at any one time — so that, for example, FWP will only syndicate up to 5 of the most recent new items, rather than all new items, when it finds several new items on a feed.

Note that this add-on only filters out posts that exceed the limits you set at the time FeedWordPress first encounters them on their source feeds. If you set a filter on posts from more than 5 days ago, the filter will prevent any more items more than 5 days old from being syndicated in the first place. But it will not go back and retroactively drop existing syndicated posts that are now more than 5 days old.

Many thanks to the folks at iheartsl.com and metavirtual.us for their generous support of the FeedWordPress project and the experimental development of this add-on. Their gifts and hands-on help with beta testing were extremely helpful in making it possible for me to devote the time and labor necessary to develop this add-on module.

Download and enjoy! As always, if you have any questions, comments, concerns, feedback, applause, brickbats, &c., let me know in the comments section.

Version 2010.1011 of FWP+: Limit Size Of Posts is now available: sentence counts, break-points, and much, much <!–more–>

I’m pleased to announce that version 2010.1011 of FWP+: Limit Size Of Posts is now available for download.

This release introduces several new features to provide more refined control over how to limit the size of posts, and what should happen when the size of a post is limited:

  • You can now choose whether a post that exceeds the size you set should be simply cut off, or should have the remainder of the post hidden behind a “Read More…” break.

  • You can now choose to limit the size of posts by number of characters, word count, or number of sentences.

  • You can also choose to have the filter attempt to locate break-points that were inserted into a story by the original author on the source website. (I.e., points where the remainder of the story is hidden behind a “Read More…” jump — the kind of break you would use <!--more--> to create in WordPress. FWP+: Limit Size Of Posts is capable of automatically detecting break-points from most popular blogging platforms, including WordPress, Blogger, and LiveJournal. If you opt to use this method, the filter will first look for a manual break-point, and, only if it cannot find one, it will fall back on any other length-limiting rules that you may have set up.

Many thanks for this release are due to Karl Haro von Mogel, whose generous donations helped make it possible for me to devote the time needed to make these improvements to the add-on.