I am watching Dr. Who (and some other shows) right now. Every time I finish an episode I have to wait 7 days before I can watch another.
7 days.
Now, this 7 days is perfectly arbitrary. It doesn’t take 7 days to make an episode (it almost always takes more), nor does it take 7 days to do anything else. The number is just a convenient amount of time for them to make you wait, such that other shows on the channel can get fair airtime.
Channel?
Airtime?
We should seriously be much past that stage by now. The BBC has filmed at least half of the Dr. Who content for this season (they must have, in order to finish airing on time). They may have finished all of it.
BBC, I will give you $100 to send me that content now.
If $100 doesn’t seem like that much money, consider this: it is more money than they will see from me for the show otherwise. Even if I watched ads (which I don’t) or actually watched it on broadcast (which I don’t), $100 is still probably more than they would get for me watching the season. And that’s just for whatever they have as prerelease content. When more is made I’d get it again, possibly the way I do now. It would cost the BBC a little, but I’m sure there’s more than just me.
Consider: if only 200 Dr. Who viewers were interested in this, that’s still $20000.
That’s a lot of money to make off a group of people who would likely otherwise give you nothing.
I’ve been thinking about signing XML nodes. The existing mechanisms are either really complex (XML-DSig) or over-verbose (Magic Sig). This could be useful in RSS/ATOM feeds, XMPP, and other XML-based communication formats. The purpose of this proposal is to provide a lightweight signing (and optionally, encyption) mechanism for embedding inside XML nodes, while not inventing any new XML namespaces, elements, or attributes, not inventing a new envelope format for the signature data, and not suggesting a new way of transmitting octet streams in a text safe way.
Normalization
In order to preserve the form of the XML being signed, an exact textual representation of the XML tree to be signed must be included in the signature packet (“opaque signing”). This is similar to the strategy employed by Magic Sig.
It is recommended that the fragment be encoded as a valid standalone XML document, so that parsers can easily feed the unwrapped content to an XML parser and use the tree that results, without having to graft the text back into the original XML document for parsing.
Envelope format
Rather than inventing a new envelope to mark up what algorithms were used to generate the signature, I suggest using the standard OpenPGP packet format from RFC4880. This standard is well-deployed for use in Email and other cryptosystems, and there are implementations, or partial implementations, in many languages, including PHP.
Inclusion in an XML node
An opaquely signed XML fragment is just an alternative representation of the node it wraps. This relationship is well modelled by the ATOM link
element (namespace http://www.w3.org/2005/Atom) with the rel
attribute set to alternate
.
RFC3156 defines an Internet media type for encrypted and/or signed OpenPGP data as application/pgp-encrypted
. This makes an appropriate content for the type
attribute.
Text-safe encoding of octets
Protocols may wish to include the OpenPGP packet directly in the XML document, instead of linking to an external resource. In fact, this is probably the normal case. RFC2397 defines a useful mechanism for encoding arbitrary octet streams (such as those used in the OpenPGP binary packet format) as URIs for use anywhere a URI is expected, such as the link
element’s href
attribute. The media type included in the data URI should be application/pgp-encrypted
.
Example
Below is an ATOM fragment demonstrating this recommendation:
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Test Feed</title>
<entry>
<title>Test Entry</title>
<link rel="alternate" type="text/html" href="http://example.com/item1" />
<published>2010-03-26T06:47:47+03:00</published>
<link rel="alternate" type="application/pgp-encrypted" href="data:application/pgp-encrypted;base64,owGbwMvMwMF4UUZT8FzgnHuMa/4msZUY6VXk5nhvuC9pYw9kKJSlFhVn5ufZKhnqGSgppOYl56dk5qXbKoWGuOlaKNnbcdmk5pUUVSoA1eYV2ypllJQUWOnrl5eX65Ub6+UXpesbGRiY6juW5OcqAdWWZJbkpNqFpBaXKLiCtNnoQ0S4bHIy87IVilJzbJUSc0pSi/ISS1KVFEoqC1JtlUpSK0r0M0pyc5QUMopS0+CWpFYk5hbkpOol5+fqZ5ak5hoqKegDTSooTcrJLM5ITbEzMjA00DUw1jUyCzEwszIxByJtA2MrAwMbfYQiLht9sA/suDqZZFgYGDkY2FiZQP5n4OIUgAXN+W/8v5h/vXu4cBXbrfUVT0yXTKsI+h1Qw2/zdYZ9h/yJ+/r5L7U1xc/sWMTh4Du1MXjKWsMHP2KZ0ooy7ZVFz0ps011ZaZDUl78y5JbdCbeMNcEcjb0tS1yEu7hfZX6Wsi+qeMDRZO1/1+Lt8c1fqloOLHSqe6YyX8dsp9HmtZlXkxdZVT/67Jcnxig59Rj/Gv0Nr0RPdSg68a/r3vKvV3tavvvyXP6wtWu3NHJrFR25euzI/VdnVMzjuDYt47gjxnm956jU72cvfXj7Dk79+yqfkyPCxfyo/ZFdTJtfK1ncYgur6Dqp47r4EcfZ2pDNwk4n5vYwOfjuWM09Ye6ij+nnbi2Zn2ld/zhx4o+Z2XoF6Twucayxa80urHWeMF0nw/mq2fLFhuv1PWaXRtoHHr9qMc9e+tjdD5KhxQV3Jr49d2YZ2+WjD49UfqtLYVxfxzy3iiG4YWvZHfl2g/yPtx3M+rqVuVbM2Vpzq9q76OytfQsjm769Ely2PGDTmg8ak2frnfL9/49VPKPU8vj0Y0diN213uNkrfeH15TbjM09el/2rCF5v/Uryd3XXB8OfbedesyRJH1s7dWPB04JFvA9Zp6y7IfI2VDo8VHiHVpmqR+aERRt/7Dy1NtmV+48KH8/l7ebCr4KNb7v3SSqfdWDey7lkQ+Nzwdfb1vOlTzXU1zyx0kVX3v2t9h+f1T1px+KuX7rw8gOb17St+69/kvkKAA" />
</entry>
</feed>
I have written an implementation of @tantek.com’s NewBase60 in POSIX-compliant shell script for use in all your shell-based programming.
It is up as a gist. Unfortunately it is CC-BY-SA because that is what the original code is. I will release it ISC if @tantek.com is okay with it.
I’ve made some large updates to my picoformats plugin for WordPress (picoformats also sometimes known as microsyntax).
- Processing of comments has been removed (at least for now)
- Both trackbacks and pingbacks are sent for @ replies
- Trackbacks and pingbacks are sent for URLs in in-reply-to custom fields.
- URLs are auto-linked
- More stable regex, etc for @ reply/#hastag detection with some help from @tantek.com
- support for starting a post’s content with “reply URL”, “reply #URL”, “#URL”, “reply post-ID”, “reply #post-ID”, or “#post-ID” and having in-reply-to custom field added automatically (and the reply bit at the beginning of the content snipped off).
Download the plugin
I am writing my own stuff, borrowing heavily from @tantek.com
- Store wp-diso-actionstream content as WordPress posts (DONE, commited to SVN)
- Tweak theme to display actionstream items nice for single.php (DONE)
- Hack local WordPress core to display posts of all types when you visit the permalink (DONE, see https://singpolyma.net/2010/01/the-freeallmusic-com-non-us-landing-page-is-great-short-and-to-the-point/)
- Make reversible URL shortener. (DONE, http://sngpl.ma/t433)
- Update Picoformats (Microsyntax) plugin to support URL autolinking and generally be better (
IN PROGRESS DONE, borrowing from @tantek.com’s auto_link)
- Implement Twitter API for wordpress.org blogs (
IN PROGRESS DONE)
- Write XMPP bot to talk to any Twitter-compatible API (
NOT STARTED found one)
- Write plugin to push new local tweets out to Twitter-compatible APIs (NOT STARTED)
Bonus points:
- Write plugin to pull tweets from Twitter-compatible APIs locally for viewing (“following”)(DONE)
- Following-type plugin based on wp-diso-actionstream (to follow arbitrary public streams)
- PuSH outbound for blog feeds and wp-diso-actionstream feeds (DONE, using http://wordpress.org/extend/plugins/pubsubhubbub/)
- PuSH inbound for wp-diso-actionstream
in reply to