In den letzten Wochen bin ich über ein paar tolle Artikel über das Bloggen und über RSS gestolpert… Vielleicht kommt bloggen ja doch wieder in Mode und dann kann ich endlich auch mal sagen: Ich hab schon gebloggt bevor es hip war! Ich habe schon gebloggt, als es vor Jahren mal hip war, dann wieder nicht und jetzt wieder!

René Walter hat es auf seinem Blog (nerdcore.de) wunderschön auf den Punkt gebracht:

Das Problem waren schon immer und sind immer noch überfüllte Plattformen, auf denen sich die Menschen zu dicht gedrängelt um Aufmerksamkeit streiten. Lieber wieder Piratenschiffe bauen, eine Trillionbillion davon, alle anders, alle gleich.

Der andere Blogpost, den ich empfehlen möchte, ist von Brent Simmons (der übrigens auch (mal wieder) an einem großartigen Feed-Reader für den Mac arbeitet).

[…] if you think of the years 1995-2005, you remember when the web was our social network: blogs, comments on blogs, feed readers, and services such as Flickr, Technorati, and BlogBridge to glue things together. Those were great years […]

Herrlich nostalgisch 🙂

pubsubhubbub-logo

Seit ein paar Wochen scheint die Version 0.4 von PubSubHubbub relativ stabil zu sein… immerhin so stabil, dass Google und Superfeedr ihre Hubs an die neue Spec angepasst haben.

Die wesentlichen Unterschiede zu der Vorgängerversion sind:

  • Alle Datentypen werden unterstützt: Neben RSS/Atom können jetzt auch vCards, beliebige XML oder JSON Datein oder auch Bilder ge-push-t werden
  • Statt HTML/Atom-Links werden HTTP-Link-Header benutzt
  • Der Pubslisher-Prozess ist nicht mehr über die Spezifikation definiert

Für die zwei großen Hubs sollte es reichen wenn ihr eure Feed-<link />s („hub“ und „self“):

<?xml version="1.0"?>
<atom:feed>
  <link rel="hub" href="http://myhub.example.com/endpoint" />
  <link rel="self" href="http://publisher.example.com/happycats.xml" />
</atom:feed>Code-Sprache: HTML, XML (xml)

…zusätzlich über die HTTP-Header ausliefert:

HTTP/1.1 200 OK
Date: Tue, 03 Apr 2012 08:02:19 GMT
Content-Type: text/html
Content-Length: 11261
Link: <http://http://myhub.example.com/endpoint>; rel="hub"
Link: <http://publisher.example.com/happycats.xml>; rel="self"Code-Sprache: HTTP (http)

Leider ist die Version 0.4 aber nicht 100% abwärts-kompatibel… Die wahrscheinlich größte (und für mich enttäuschendste) Änderung ist das bewusste Weglassen des Publisher-Prozesses:

The publisher MUST inform the hubs it previously designated when a topic has been updated. The hub and the publisher can agree on any mechanism, as long as the hub is eventually able send the updated payload to the subscribers.

Auf der einen Seite kann das ein enormer Vorteil für Publisher sein, da Hubs in Zukunft auch per E-Mail, SMS, Pingbacks/Trackbacks oder XMPP über Updates informieren werden könnten. Auf der anderen Seite ist es aber auch sehr Wahrscheinlich, dass man für jedes v0.4 Hub eine individuelle Implementierung benötigt. Bisher unterstützen beide großen Hubs (Google und Superfeedr) aber weiterhin das alte Verfahren, also kein Grund sich jetzt schon Sorgen zu machen…

Alles in allem finde ich die Änderungen aber ganz nett und hoffe dass „Polling“ bald der Vergangenheit angehört…

Feed Icon

…ich hab's ja bisher immer verbummelt oder verpasst:

Aber jetzt, wo Google seinen Reader dicht macht, kann ich's endlich auch mal schreiben: RSS ist tot!

Erst filtern, dann abonnieren!

Die Informationsflut im Internet nimmt immer mehr zu und FeedReader bieten bisher keine wirkliche Möglichkeit diese Informationen sinnvoll zu filtern und da man nicht wirklich (zeitnah) Einfluss auf die Weiterentwicklung von NetNewsWire, Google Reader & Co. hat, bleibt nur noch eins: Erst filtern, dann abonnieren!

NoisePress erlaubt Seitenbesucher, einen RSS/ATOM-Feed mit Hilfe von APML vorzufiltern.

(Zum ausprobieren braucht man ein APML-Profil. Wer keines hat, sollte sich entweder das WordPress Plugin installieren oder heimlich Carstens Profil benutzen 😉 )

Warum mit APML filtern?

Man könnte natürlich auch mit WordPress-Bordmitteln eine Menge Rauschen ausfiltern, und wirklich nur das abonnieren was gerade wichtig ist:

Das Problem: Ändert sich dieses Interesse, müssen alle Feeds mühsam aussortiert (und neue gesammelt) werden. Außerdem besteht die Gefahr, dass einige spannende Themen, die nicht genau die abonnierte Kategorie/den abonnierten Tag besitzen, durch das Raster fallen können.

Das Prinzip von NoisePress: APML ist eine Art semantische Tag-Clound die das Interesse einer Person widerspiegelt. Das Interessens-Profil wird in der Regel automatisch generiert und sollte sich somit auch den diversen Interessensveränderungen anpassen.

Am Beispiel WordPress Plugin: Das Plugin erstellt ein APML-File anhand der Häufigkeit der verwendeten Tags und Kategorien. Schreibt jemand viel über OpenID, kann man davon ausgehen, dass er das Thema für wichtig hält. Ändert sich der Fokus des Blogs, wird OpenID auch im APML-Feed immer irrelevanter.

Hört sich nach Geek-Zeugs an?

Richtig! 🙂 …aber NoisePress ist auch erst einmal nur ein Test ob meine Idee überhaupt funktioniert! Im besten Fall soll der User von all der Technik gar nichts mitbekommen. Ich hoffe dass sich Firefox‘ Account Manager oder XAuth schnell weiter entwickeln und ich eine dieser Techniken für NoisePress missbrauchen könnte.

Ich würde mich übrigens sehr über ein bisschen Feedback freuen!

Durch einen Artikel auf ReadWriteWeb (5 Great YQL One-Liners) bin ich nach langer Zeit mal wieder auf Yahoos YQL-Plattform gelandet und habe nicht schlecht gestaunt, was die Yahoo Query Language mittlerweile alles leistet (mehr über YQL hier). Ich hatte z.B. keine Ahnung, dass man auch eigene table definition schreiben kann und dass es auch schon eine ziemlich fleißige Community um diese Definitionen gibt.

Meine Favoriten sind:

Microformats

select * from microformats where url='http://wait-till-i.com'Code-Sprache: JavaScript (javascript)

…findet diverse Microformats. » Direct Link

Mehr dazu hier: SELECT * FROM microformats

OpenID

select * from openid.discover where normalizedId="http://www.yahoo.com/"Code-Sprache: JavaScript (javascript)

…klassische OpenID-Discovery. » Direct Link

select * from openid.yadis where uri="http://www.yahoo.com/"Code-Sprache: JavaScript (javascript)

…YADIS-Discovery. » Direct Link

…und es gibt noch ’ne Reihe anderer OpenID Queries… es sollte sogar möglich sein einen kompletten OpenID-Client mit YQL zu bauen.

OAuth

select * from oauth where uri='http://example.com' and consumerKey='asd123' and consumerSecret='zxc456' and callbackUri='http://example.com';Code-Sprache: JavaScript (javascript)

…sendet einen OAuth-Request. » Direct Link

pubsubhubbub

insert into pubsubhubbub.publisher (hub_url, topic_url) values ('http://pubsubhubbub.appspot.com/publish', 'http://developer.yahoo.com')Code-Sprache: JavaScript (javascript)

…sendet ein Update an das angegebene Hub. » Direct Link

Webfinger

select * from webfinger where account='pfefferle@gmail.com'Code-Sprache: JavaScript (javascript)

…Webfinger-Discovery. » Direct Link

OpenSocial

select * from opensocial.peopleCode-Sprache: JavaScript (javascript)

…sendet eine OpenSocial People-Anfrage. » Direct Link

Social Graph API

select * from socialgraph.lookup where q = "notiz.blog" AND edo = "1"Code-Sprache: JavaScript (javascript)

…ermöglicht Zugriff auf Googles Social Graph API. » Direct Link

Atom

select * from atom where url='https://notiz.blog/feed/atom'Code-Sprache: JavaScript (javascript)

…interpretiert Atom-Feeds mit allen möglichen Erweiterungen, beispielsweise der ActivityStreams-Extension. » Direct Link

Vielleicht bekomm‘ ich die Tage ja auch mal eine Query zusammen 🙂

Inspiriert durch Michromeformats, hab ich mich auch mal an ein Chrome-Addon gemacht 🙂

Das Addon erkennt auf der Seite verlinkte ActivityStrea.ms:

<link rel="activitystream" type="application/atom+xml" href="..." />Code-Sprache: HTML, XML (xml)

oder:

<link rel="alternate" class="activitystream" type="application/atom+xml" href="..." />Code-Sprache: JavaScript (javascript)

Kein Hexenwerk, aber immerhin mal ein Anfang 🙂 Falls euch noch ein paar Features einfallen, immer raus damit.

OStatus Logo

Die OpenMicroBlogging-Spezifikation war eine echt nette Idee und hat auch gar nicht schlecht funktioniert… zwar etwas umständlich aber immerhin ein Anfang.

Nach fast zwei Jahren arbeitet StatusNet (früher laconi.ca und Erfinder von OMB) jetzt an einem Nachfolger. Die neue Spezifikation heißt OStatus und ist eine Art „Best Off“ bestehender Open Web Standards:

…und wenn ich es richtig verstanden habe, scheint das in der aktuellen Version von StatusNet1 (Version 0.9) auch schon ansatzweise zu funktionieren.

Plattformübergreifend Echtzeitkommunikation auf Basis offener Standards… schöne neue Welt 🙂


1 StatusNet (vormals Laconica) ist eine in PHP entwickelte freie Software für Mikro-Blogging-Dienste, die den OpenMicroBlogging-Standard implementiert. Damit ermöglicht StatusNet eine offene Kommunikation zwischen Online-Communitys mit zu Twitter vergleichbarer Funktionalität. (via Wikipedia)

Google Buzz

Google startet mit Google Buzz eine Art Activity Stream integriert in Google Mail.

Google Buzz is a new way to share updates, photos, videos and more, and start conversations about the things you find interesting.

Wie man an Facebook sieht, scheint das Phänomen Activity Stream recht beliebt zu sein, immerhin war friendfeed dem Community-Giganten knapp 50 Millionen Dollar wert. Im Gegensatz zu dem eher geschlossenen Facebook macht Google mit seinem Activity Stream aber mal wieder alles richtig… Eigene Feeds und Feeds der Kontakte werden über die Social Graph API (Microformats/XFN) automatisch erkannt und die Liste der unterstützten offenen Standards ist beeindruckend:

  • Atom/RSS
  • MediaRSS
  • PubSubHubbub
  • Social Graph API (Microformats)
  • Activity Streams
  • AtomPub
  • OAuth
  • Salmon
  • Webfinger

Als nächstes wird der Buzz sicherlich auch fester Bestandteil der Google Profilseite die sich immer mehr zu einer echten Online Identität mausert!

Zuerst die Social Search, dann Google Buzz… mal gespannt was Google sonst noch alles sozialisiert…

Für die Audio/Visuellen unter euch, gibt es auch noch ein kurzes Video von Google:

Problem:

Problem: Cross-posting and duplicates


Quelle: Lifestream.fm

Lösung: Atom Cross-posting Extensions von Martin Atkins

<entry>
  <title>Using Microformats: Gateway to the Semantic Web | Professional Communication Society</title>
  <link rel="alternate" href="http://pfefferle.yiid.com/activity/11891"></link>
  <updated>2009-10-06T13:10:11Z</updated>
  <author>
    <name>Matthias Pfefferle</name>
  </author>
  <id>tag:www.yiid.com,2009-10-06:/activity/11891</id>
  <summary type="text">...</summary>
  <content type="html"><![CDATA[...]]></content>
  
  <crosspost:source>
    <id>http://delicious.com/url/29ff30b281955db394f2c399c028c480#pfefferle</id>
    <link rel="alternate" href="http://delicious.com/url/29ff30b281955db394f2c399c028c480#pfefferle" type="text/html" />
  </crosspost:source>
  
</entry>Code-Sprache: HTML, XML (xml)

Wenn ihr so kommentierfaul seid, dann bin ich mal schreibfaul 😉

Ich habe mal ein kleines Plugin geschrieben welches den WordPress-Atom-Feed mit der ActivityStream-Syntax erweitert.

 <entry>
  <id>https://notiz.blog/?p=1775</id>
  <author>
    <name>Matthias Pfefferle</name>
    <uri>https://notiz.blog</uri>
  </author>
  <...>
  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
  <activity:object>
    <activity:object-type>http://activitystrea.ms/schema/1.0/blog-entry</activity:object-type>
    <activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
    <id>tag:notiz.blog,2009-07-13:/post/1775</id>
    <title type="html"><![CDATA[Matthias Pfefferle posted a new blog-entry]]></title>
    <link rel="alternate" type="text/html" href="https://notiz.blog/2009/07/14/webstandards-kolumne/" />
  </activity:object>
</entry>Code-Sprache: HTML, XML (xml)

Die Syntax ist dazu gedacht, dem Feed-Parser/Feed-Reader zu erklären um was für einen Eintrag es sich handelt. Bei WordPress sind die <entry />s ausschließlich Blogposts/Artikel…

<activity:object-type>http://activitystrea.ms/schema/1.0/blog-entry</activity:object-type>
<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>Code-Sprache: HTML, XML (xml)

…die gepostet wurden.

<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>Code-Sprache: HTML, XML (xml)

Und für die Dienste wie NoseRub, die die Aktivität gerne in einen Satz packen, gibt’s das ganze auch noch in Prosa.

<title type="html"><![CDATA[Matthias Pfefferle posted a new blog-entry]]></title>Code-Sprache: HTML, XML (xml)

Das ActivityStream Schema definiert übrigens noch ’ne ganze Reihe an weiteren Objekten und Verben, die auf alle möglichen Aktionen im Netz passen. Falls ihr also noch welche findet, die zu WordPress passen könnten… lasst es mich wissen 😉

Es gibt leider aber auch ein paar Probleme mit der Syntax und diversen Feed-Readern, die das zweite <title /> im <activity-object /> mit interpretieren und dann beide Titel ausgeben… aber da ja auch MySpace und Facebook die ActivityStream-Syntax einsetzen ist dieser Fehler sicherlich bald bei jedem Feed-Reader behoben 😉

Viel Spaß beim ausprobieren!