<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://notiz.blog/wp-content/plugins/pretty-feeds/pretty-feed-v4.xsl" type="text/xsl" media="screen" ?>


<!--

	Feeds whisper secrets,
	In the RSS Club's embrace,
	Knowledge blooms in grace.

-->

<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:source="http://source.scripting.com/"
xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>Plugin &#8211; notizBlog</title>
	<atom:link href="https://notiz.blog/tag/plugin/feed/" rel="self" type="application/rss+xml" />
	<link>https://notiz.blog</link>
	<description>a weblog mainly about the open, portable, interoperable, small, social, synaptic, semantic, structured, distributed, (re-)decentralized, independent, microformatted and federated social web</description>
	<lastBuildDate>Fri, 08 Mar 2024 15:00:28 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://notiz.blog/wp-content/uploads/2019/10/cropped-notizblog-icon-1-32x32.png</url>
	<title>Plugin &#8211; notizBlog</title>
	<link>https://notiz.blog</link>
	<width>32</width>
	<height>32</height>
</image> 
<source:blogroll>https://reader.pfefferle.org/i/?a=opml&amp;get=c_2</source:blogroll>
<creativeCommons:license>https://creativecommons.org/licenses/by-sa/4.0/</creativeCommons:license>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://switchboard.p3k.io/"/>
<atom:link rel="self" href="https://notiz.blog/tag/plugin/feed/"/>
<atom:link rel="search" type="application/opensearchdescription+xml" title="Search notizBlog" href="https://notiz.blog/wp-api/opensearch/1.1/document" />	<item>
		<title>WPSR</title>
		<link>https://notiz.blog/2022/05/15/wpsr/</link>
					<comments>https://notiz.blog/2022/05/15/wpsr/#respond</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Sun, 15 May 2022 18:36:34 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[#Projekt26]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP-FIG]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[PSR]]></category>
		<guid isPermaLink="false">https://notiz.blog/?p=22051</guid>

					<description><![CDATA[Auf dem CloudFest Hackathon im März, hab‘ ich mich ein wenig mit Alain Schlesser über WordPress und Plugin-Entwicklung unterhalten. Alain meinte, dass er, wenn es das Plugin hergibt und es zeitlich möglich ist, immer zuerst eine generische Library bauen und diese dann über ein WordPress-Plugin implementieren würde.]]></description>
										<content:encoded><![CDATA[
<p>Auf dem <a href="https://www.cloudfest.com/hackathon" data-type="URL" data-id="https://www.cloudfest.com/hackathon">CloudFest Hackathon</a> im März, hab&#8216; ich mich ein wenig mit <a href="https://www.alainschlesser.com/" data-type="URL" data-id="https://www.alainschlesser.com/">Alain Schlesser</a> über WordPress und Plugin-Entwicklung unterhalten. Alain meinte, dass er, wenn es das Plugin hergibt und es zeitlich möglich ist, immer zuerst eine generische Library bauen und diese dann über ein WordPress-Plugin implementieren würde.</p>



<p>Vor ein paar Tagen hab ich mich an unser Gespräch erinnert, weil ich mich (aus Gründen) wieder intensiver mit dem <a href="https://wordpress.org/plugins/activitypub/" data-type="URL" data-id="https://wordpress.org/plugins/activitypub/">ActivityPub-Plugin</a> beschäftigt habe. Wir hatten schon vor einem Jahr den Plan, eine <a href="https://github.com/landrok/activitypub/" data-type="URL" data-id="https://github.com/landrok/activitypub/">ActivityPub-Bibliothek</a> zu verwenden, um uns nicht mit dem Protokoll beschäftigen zu müssen, und uns so voll und ganz auf die WordPress Integration konzentrieren könn(t)en. Wir haben die Idee aber erstmal nicht weiter verfolgt, da die Bibliothek eine Reihe von schwergewichtigen <a href="https://github.com/landrok/activitypub/blob/master/composer.json#L9" data-type="URL" data-id="https://github.com/landrok/activitypub/blob/master/composer.json#L9">Third-Party-Libs</a> wie <a href="https://github.com/guzzle/guzzle" data-type="URL" data-id="https://github.com/guzzle/guzzle">Guzzle (HTTP-Client)</a>, <a href="https://github.com/Seldaek/monolog" data-type="URL" data-id="https://github.com/Seldaek/monolog">Monolog (Logger)</a> oder <a href="https://github.com/symfony/cache" data-type="URL" data-id="https://github.com/symfony/cache">Symfony Cache (Caching)</a> mit sich bringt. Für all diese Funktionen hat WordPress eigene Lösungen und wegen der Interoperabilität mit anderen Plugins, sollte man diese auch nutzen.</p>



<p>Bei der erneuten Evaluierung der ActivityPub-Bibliothek ist mir aufgefallen, dass sich Monolog, durch einen beliebigen PSR-3 kompatiblen Logger ersetzen lässt.</p>



<p>Kurze Erklärung zu <a href="https://www.php-fig.org/psr/" data-type="URL" data-id="https://www.php-fig.org/psr/">PSR</a>:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Eine PHP Standard Recommendation (PSR) ist eine PHP-Spezifikation, welche durch die PHP Framework Interop Group veröffentlicht wird. Ähnlich einem Java Specification Request in Java dient sie der Standardisierung von Programmierkonzepten. Ziel ist es die Interoperabilität von Komponenten zu ermöglichen und eine gemeinsame technische Basis zu schaffen oder bewährte Konzepte für einen guten Programmierstil sowie eine gute Testbarkeit von Komponenten umzusetzen. Verschiedene Frameworks wie z. B. die der TYPO3-Community, Symfony oder Zend implementieren hierbei PSR-Spezifikationen in einem selbst gewählten Umfang.</p>
<cite><a href="https://de.wikipedia.org/wiki/PHP_Standard_Recommendation">https://de.wikipedia.org/wiki/PHP_Standard_Recommendation</a></cite></blockquote>



<p><a href="https://www.php-fig.org/psr/psr-3/" data-type="URL" data-id="https://www.php-fig.org/psr/psr-3/">PSR-3</a> definiert ein standardisiertes Logger-Interface, welches (in unserem Beispiel) durch Monolog implementiert wird. Beim initialisieren des ActivityPub-Servers, lässt sich Monolog, durch einen alternativen Logger ersetzen, solange dieser auch PSR-3 konform ist.</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-keyword">use</span> <span class="hljs-title">ActivityPhp</span>\<span class="hljs-title">Server</span>;

<span class="hljs-comment">// Create a server instance with no log output</span>
$server = <span class="hljs-keyword">new</span> Server(&#91;
    <span class="hljs-string">'logger'</span>   =&gt; &#91;
        <span class="hljs-string">'driver'</span> =&gt; <span class="hljs-string">'\Psr\Log\NullLogger'</span>
    ],
]);</code></span></pre>


<p>Also hab ich mir überlegt, wie so ein Logger für WordPress aussehen könnte und einen <a href="https://github.com/pfefferle/wp-psr-log" data-type="URL" data-id="https://github.com/pfefferle/wp-psr-log">PSR-3 kompatiblen Wrapper gebaut:</a></p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-keyword">namespace</span> <span class="hljs-title">WPPSR</span>\<span class="hljs-title">Log</span>;

<span class="hljs-keyword">use</span> <span class="hljs-title">Psr</span>\<span class="hljs-title">Log</span>\<span class="hljs-title">AbstractLogger</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">ErrorLogLogger</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">AbstractLogger</span> </span>{
    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">log</span><span class="hljs-params">( $level, $message, $context = array<span class="hljs-params">()</span> )</span> </span>{
        <span class="hljs-keyword">if</span> ( defined( <span class="hljs-string">'WP_DEBUG'</span> ) &amp;&amp; WP_DEBUG ) {
            <span class="hljs-keyword">if</span> ( defined( <span class="hljs-string">'WP_DEBUG_LOG'</span> ) &amp;&amp; WP_DEBUG_LOG ) {
                error_log(
                    sprintf(
                        <span class="hljs-string">'%s: %s. Details: %s'</span>,
                        $level,
                        trim( $message, <span class="hljs-string">'.'</span> ),
                        json_encode( $context )
                    )
                );
            }
        }
    }
}</code></span></pre>


<p>PSR definiert passenderweise auch Interfaces für HTTP-Clients, Request-/Response-Objekte und Caching. Für die Request-Library die in WordPress benutzt wird, gibt es sogar schon ein passendes Issue: <a href="https://github.com/WordPress/Requests/issues/320">https://github.com/WordPress/Requests/issues/320</a></p>



<p>Leider sind Caching und der HTTP-Client in der ActivityPub-Implementierung noch nicht austauschbar, obwohl beide benutzten Libraries PSR kompatibel sind. Das heißt ich muss zuerst evaluieren, wie viel Arbeit es ist, die ActivityPub-Lib anzupassen, um dann diverse Wrapper für das WordPress Caching und die Request-/Response-Classes zu schreiben&#8230;</p>



<p>Bzw. muss ich das wahrscheinlich nicht einmal selbst implementieren, da ich bei weitem nicht der Erste war, der diese Idee hatte:</p>



<ul class="wp-block-list">
<li><a href="https://packagist.org/packages/inpsyde/wpsr7">WPSR7</a> von Inpsyde</li>



<li><a href="https://github.com/felixarntz/wp-psr-cache" data-type="URL" data-id="https://github.com/felixarntz/wp-psr-cache">wp-psr-cache</a> von Felix Arntz</li>



<li><a href="https://github.com/thegallagher/wordpress-psr-cache">wordpress-psr-cache</a> von David Gallagher</li>



<li><a href="https://github.com/RebelCode/wp-http">wp-http</a> von RebelCode</li>



<li><a href="https://github.com/search?p=1&amp;q=wordpress+psr&amp;type=Repositories" data-type="URL" data-id="https://github.com/search?p=1&amp;q=wordpress+psr&amp;type=Repositories">uvm.</a></li>
</ul>



<p>WordPress tut sich immernoch schwer mit modernem PHP-Dependency-/Plugin-Management. Ersteres ist praktisch nicht vorhanden (<a href="https://developer.yoast.com/blog/composer-dependencies-in-wordpress-plugins/" data-type="URL" data-id="https://developer.yoast.com/blog/composer-dependencies-in-wordpress-plugins/">wird aber zumindest nicht verhindert</a>) und letzteres basiert immer noch auf einem Prozess in dem SVN eine tragende Rolle spielt. Aber mit PSR(-Wrappern) kann man das Problem schon ganz gut kompensieren 🙂</p>
<p>You are a true RSS aficionado! While others are drowning in social media noise, you enjoy the simplicity and control of RSS. Congrats!</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2022/05/15/wpsr/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Inventur</title>
		<link>https://notiz.blog/2021/01/29/inventur/</link>
					<comments>https://notiz.blog/2021/01/29/inventur/#comments</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Fri, 29 Jan 2021 10:46:00 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[#Projekt26]]></category>
		<category><![CDATA[ActivityPub]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[IndieWeb]]></category>
		<category><![CDATA[Plugin]]></category>
		<guid isPermaLink="false">https://notiz.blog/?p=21162</guid>

					<description><![CDATA[Mein erstes WordPress Plugin hab ich vor mehr als 14 Jahren veröffentlicht und über die Jahre sind eine ganze Menge, mehr oder weniger erfolgreiche, Plugins dazu gekommen&#8230; Zeit für eine Inventur 🙂 Viele der Plugins schreibe ich in erster Linie für mich selbst (eat your own dogfood), weshalb ich in den wenigesten Fällen über die [&#8230;]]]></description>
										<content:encoded><![CDATA[<img width="700" height="211" src="https://notiz.blog/wp-content/uploads/2021/02/wordpress-plugins-900x271.png" class="attachment-large size-large wp-post-image" alt="A list of all my WordPress Plugins" decoding="async" loading="lazy" srcset="https://notiz.blog/wp-content/uploads/2021/02/wordpress-plugins-900x271.png 900w, https://notiz.blog/wp-content/uploads/2021/02/wordpress-plugins-700x211.png 700w, https://notiz.blog/wp-content/uploads/2021/02/wordpress-plugins-768x231.png 768w, https://notiz.blog/wp-content/uploads/2021/02/wordpress-plugins.png 1501w" sizes="auto, (max-width: 700px) 100vw, 700px" /> 
<p>Mein erstes WordPress Plugin hab ich vor mehr als <a href="https://plugins.trac.wordpress.org/browser/simple-cocomments/trunk/simple_coco.php?rev=9246" data-type="URL" data-id="https://plugins.trac.wordpress.org/browser/simple-cocomments/trunk/simple_coco.php?rev=9246">14 Jahren veröffentlicht</a> und über die Jahre sind <a href="https://profiles.wordpress.org/pfefferle/#content-plugins" data-type="URL" data-id="https://profiles.wordpress.org/pfefferle/#content-plugins">eine ganze Menge, mehr oder weniger erfolgreiche, Plugins</a> dazu gekommen&#8230; Zeit für eine Inventur 🙂</p>



<p>Viele der Plugins schreibe ich in erster Linie für mich selbst (<a href="https://indieweb.org/selfdogfood" data-type="URL" data-id="https://indieweb.org/selfdogfood">eat your own dogfood</a>), weshalb ich in den wenigesten Fällen über die Plugins spreche oder sie bewerbe. Das, in Verbindung mit meinen eher spärlichen Beschreibungen, sorgt oft für eher zweistellige, maximal dreistellige Download-Zahlen. Wo die Zahlen höher sind, habe ich das Plugin meistens von Anderen übernommen (um die Weiterentwicklung zu gewährleisten) oder ich bin einfach &#8222;nur&#8220; Contributor.</p>



<p>Aber Schluss mit der falschen Bescheidenheit!</p>



<p>Selbst wenn ich die Plugins für mich baue, ist die Motivation natürlich größer, wenn sie auch von anderen benutzt werden. Also möchte ich euch hier ein paar meiner Plugins vorstellen.</p>



<h2 class="wp-block-heading">ActivityPub</h2>



<p><a href="https://www.w3.org/TR/activitypub/" data-type="URL" data-id="https://www.w3.org/TR/activitypub/">ActivityPub</a> ist ein, vom <a href="https://www.w3.org/" data-type="URL" data-id="https://www.w3.org/">W3C</a> veröffentlichtes, offenes, dezentrales Protokoll für soziale Netzwerke.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>The ActivityPub protocol is a decentralized social networking protocol based upon the [<a href="https://www.w3.org/TR/activitypub/#bib-ActivityStreams">ActivityStreams</a>] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.</p><cite>https://www.w3.org/TR/activitypub/</cite></blockquote>



<figure class="wp-block-image alignwide size-large"><img fetchpriority="high" decoding="async" width="765" height="360" src="https://notiz.blog/wp-content/uploads/2019/01/activitypub-flow.png" alt="Schaubild welches die Funktionsweise von ActivityPub zeigt" class="wp-image-17848" srcset="https://notiz.blog/wp-content/uploads/2019/01/activitypub-flow.png 765w, https://notiz.blog/wp-content/uploads/2019/01/activitypub-flow-700x329.png 700w" sizes="(max-width: 765px) 100vw, 765px" /></figure>



<p>Es ermöglicht das dezentrale kommunizieren über Text, Bild, Video und Audio über ein simples Inbox/Outbox Prinzip.</p>



<h3 class="wp-block-heading">WebFinger Plugin</h3>



<p><a href="https://webfinger.net/" data-type="URL" data-id="https://webfinger.net/">WebFinger</a> ist kein fester Bestandteil von ActivityPub, wird aber von allen großen Netzwerken unterstützt und von Mastodon sogar verlangt. WebFinger ist eine Art Meta-Data System für alle möglichen URIs. Der gängige Identifier im Fediverse ist <code>@username@domain.tld</code>, das Plugin erlaubt aber auch die Author URL oder die Instant-Messaging Accounts eines Users, wenn diese unter der gleichen Domain erreichbar sind.</p>



<p>Mein Identifier ist Beispielsweise <code>pfefferle@notiz.blog</code> und die Meta-Daten können über folgenden API-Endpunkt abgerufen werden: <a href="https://notiz.blog/.well-known/webfinger?resource=acct%3Apfefferle%40notiz.blog">https://notiz.blog/.well-known/webfinger?resource=acct%3Apfefferle%40notiz.blog</a></p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/webfinger/" data-type="URL" data-id="https://wordpress.org/plugins/webfinger/">WebFinger auf WordPress.org</a></li><li><a href="https://github.com/pfefferle/wordpress-webfinger" data-type="URL" data-id="https://github.com/pfefferle/wordpress-webfinger">WebFinger auf GitHub</a></li></ul>



<h3 class="wp-block-heading">NodeInfo Plugin</h3>



<p><a href="https://nodeinfo.diaspora.software/" data-type="URL" data-id="https://nodeinfo.diaspora.software/">NodeInfo</a> (<a href="https://github.com/jaywink/nodeinfo2" type="URL" id="https://git.feneas.org/jaywink/nodeinfo2">2</a>) ist auch kein fester Bestandteil von ActivityPub, wird aber auch von den Meisten Netzwerken unterstützt. NodeInfo stellt, wie der Name schon sagt, Infos über einen &#8222;Node&#8220; (Server) bereit. Dank NodeInfo gibt es eine ganze Reihe an Statistik-Seiten wie <a href="https://the-federation.info" data-type="URL" data-id="https://the-federation.info">the-federation.info</a>, die bei der Auswahl der <strong>richtigen</strong> Plattform bzw. des <strong>richtigen</strong> Servers helfen.</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/nodeinfo/" data-type="URL" data-id="https://wordpress.org/plugins/nodeinfo/">NodeInfo auf WordPress.org</a></li><li><a href="https://github.com/pfefferle/wordpress-nodeinfo" data-type="URL" data-id="https://github.com/pfefferle/wordpress-nodeinfo">NodeInfo auf GitHub</a></li></ul>



<h3 class="wp-block-heading">ActivityPub Plugin</h3>



<p>Das eigentliche ActivityPub Plugin macht WordPress zu einem (kleinen) Teil des <a href="https://en.wikipedia.org/wiki/Fediverse" data-type="URL" data-id="https://en.wikipedia.org/wiki/Fediverse">Fediverse</a>. User von <a href="https://notiz.blog/2020/12/31/activitypub-fuer-wordpress/" data-type="URL" data-id="https://notiz.blog/2020/12/31/activitypub-fuer-wordpress/">Mastodon, Pleroma, Friendi.ca oder Pixelfed</a> können dem Blog &#8222;folgen&#8220; und sehen ab dann alle neuen Blog-Posts in ihrer Timeline und können diese kommentieren. Das Plugin ist immernoch in einem frühen Stadium und bekommt sicherlich noch das ein oder andere Feature, im Fokus soll aber das Bloggen stehen. Wer ein vollwertiges, dezentrales, soziales Netzwerk möchte, sollte sich erstmal für eine der oben genannten Plattformen entscheiden.</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/activitypub/" data-type="URL" data-id="https://wordpress.org/plugins/activitypub/">ActivityPub auf WordPress.org</a></li><li><a href="https://github.com/pfefferle/wordpress-activitypub" data-type="URL" data-id="https://github.com/pfefferle/wordpress-activitypub">ActivityPub auf GitHub</a></li></ul>



<h2 class="wp-block-heading">IndieWeb</h2>



<div class="wp-block-image"><figure class="alignright size-large is-resized"><img decoding="async" src="https://notiz.blog/wp-content/uploads/2021/02/indie-wapuu-with-text-598x660-1.png" alt="Der IndieWeb Wapuu" class="wp-image-21192" width="299" height="330"/></figure></div>



<p>Das <a href="https://indieweb.org/" data-type="URL" data-id="https://indieweb.org/">IndieWeb</a> ist eine <a href="https://de.wikipedia.org/wiki/Graswurzelbewegung" data-type="URL" data-id="https://de.wikipedia.org/wiki/Graswurzelbewegung">Grassroots</a> Bewegung mit dem Ziel, die eigene Webseite als zentralen Kommunikations-Hub zu nutzen.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>The <strong><dfn>IndieWeb</dfn></strong> is a community of individual personal websites, connected by simple standards, based on the <strong><a href="https://indieweb.org/principles">principles</a></strong> of <strong><a href="https://indieweb.org/personal-domain">owning your domain</a></strong>, using it as <strong><a href="https://indieweb.org/How_to_set_up_web_sign-in_on_your_own_domain">your primary identity</a></strong>, to <strong><a href="https://indieweb.org/POSSE">publish on your own site</a></strong> (optionally syndicate elsewhere), and <strong><a href="https://indieweb.org/ownyourdata">own your data</a></strong>.</p><cite>https://indieweb.org/IndieWeb</cite></blockquote>



<p>Mehr zum IndieWeb findet ihr <a href="https://notiz.blog/2013/06/18/the-rise-of-the-indieweb/" data-type="URL" data-id="https://notiz.blog/2013/06/18/the-rise-of-the-indieweb/">hier</a> oder unter dem Tag &#8222;<a href="https://notiz.blog/tag/indieweb/" data-type="URL" data-id="https://notiz.blog/tag/indieweb/">indieweb</a>&#8220; hier im Blog.</p>



<h3 class="wp-block-heading">IndieWeb Plugin</h3>



<p>Das IndieWeb Plugin hat nahezu keine Funktionalität, es ist vielmehr eine Art <em>Installer</em> um die IndieWeb Plugins über eine zentrale Stelle verwalten zu können. </p>



<p>Es gibt immer wieder Kritik am Aufbau des Plugins, bzw. kommt immer wieder die Frage auf, warum das Plugin nicht einfach die komplette Funktionalität der einzelnen Plugins beinhaltet. Meine Antwort darauf: Das IndieWeb ist mehr eine Idee als eine Spezifikation und es gibt verschiedene Möglichkeiten diese Idee mit WordPress umzusetzen. Für einen Usecase gibt es also oft verschiedene Lösungen, die von verschiedenen Personen entwickelt werden. Ein IndieWeb Plugin im Stil von ActivityPub ist in meinen Augen nicht möglich. Ich lasse mich aber gerne eines besseren belehren 😉</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/indieweb/" data-type="URL" data-id="https://wordpress.org/plugins/indieweb/">IndieWeb auf WordPress.org</a></li><li><a href="https://github.com/indieweb/wordpress-indieweb" data-type="URL" data-id="https://github.com/indieweb/wordpress-indieweb">IndieWeb auf GitHub</a></li></ul>



<h3 class="wp-block-heading">Webmention Plugin</h3>



<p>Webmentions sind eine moderne Alternative zu Pingbacks und Trackbacks. Im Gegensatz zu der eher unglücklichen Darstellung von Pingbacks (<code><code>[...] super, wie war nochmal der kontext, oder [...]</code></code>) versucht das IndieWeb (über Webmentions und <a href="https://notiz.blog/tag/microformats">Microformats</a>), den Sinn und die Art einer Verlinkung heraus zu bekommen um die Reaktion dann als Like, Bookmark oder vollwertiges Kommentar anzuzeigen.</p>



<p>Das Webmention Plugin implementiert <strong>aktuell</strong> nur den Kommunikations-Teil, für das Interpretieren der Websemantiken benötigt ihr zusätzlich das &#8222;Semantic Linkbacks&#8220; Plugin.</p>



<p>Mehr über Webmentions <a href="https://notiz.blog/2013/07/08/die-renaissance-des-pingbacks/" data-type="URL" data-id="https://notiz.blog/2013/07/08/die-renaissance-des-pingbacks/">hier</a> oder unter dem &#8222;<a href="https://notiz.blog/tag/webmention/" data-type="URL" data-id="https://notiz.blog/tag/webmention/">webmention</a>&#8220; Tag hier im Blog.</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/webmention/" data-type="URL" data-id="https://wordpress.org/plugins/webmention/">Webmention auf WordPress.org</a></li><li><a href="https://github.com/pfefferle/wordpress-webmention" data-type="URL" data-id="https://github.com/pfefferle/wordpress-webmention">Webmention auf GitHub</a></li></ul>



<h3 class="wp-block-heading">Semantic Linkbacks Plugin</h3>



<p>Wie oben beschrieben sorgt das <em>Semantic Linkbacks</em> Plugin für die hübsche Darstellung der Webmentions, Pingbacks und Trackbacks. Wir sind gerade dabei, die Funktionalität in das Webmention Plugin zu übertragen, deshalb hat das Plugin aber nur noch temporär Bedeutung.</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/semantic-linkbacks/" data-type="URL" data-id="https://wordpress.org/plugins/semantic-linkbacks/">Semantic Linkbacks auf WordPress.org</a></li><li><a href="https://github.com/pfefferle/wordpress-semantic-linkbacks" data-type="URL" data-id="https://github.com/pfefferle/wordpress-semantic-linkbacks">Semantic Linkbacks auf GitHub</a></li></ul>



<h3 class="wp-block-heading">WebSub Plugin</h3>



<p><a href="https://www.w3.org/TR/websub/" data-type="URL" data-id="https://www.w3.org/TR/websub/">WebSub</a> (formerly known as: <a href="https://notiz.blog/2010/01/13/are-we-there-yet/" data-type="URL" data-id="https://notiz.blog/2010/01/13/are-we-there-yet/">PubSubHubbub</a>) ist ein simples PubSub Protokoll für das Web. Es wurde ursprünglich entwickelt um updates von RSS und Atom Feeds in &#8222;echtzeit&#8220; zu konsumieren. Push statt pull. Die Restriktion auf RSS und Atom, wurde mit der aktuellen Version aufgehoben.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>WebSub provides a common mechanism for communication between publishers of any kind of Web content and their subscribers, based on HTTP web hooks. Subscription requests are relayed through hubs, which validate and verify the request. Hubs then distribute new and updated content to subscribers when it becomes available. WebSub was previously known as PubSubHubbub.</p><cite>https://www.w3.org/TR/websub/</cite></blockquote>



<p>Über das WebSub Plugin (ursprünglich entwickelt von <a href="https://twitter.com/joshfraz" data-type="URL" data-id="https://twitter.com/joshfraz">Josh Fraser</a>) kann man die Standard-Feeds von WordPress abonnieren. Das Plugin kann aber auch über andere Plugins und Themes erweitert werden.</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/pubsubhubbub/" data-type="URL" data-id="https://wordpress.org/plugins/pubsubhubbub/">WebSub auf WordPress.org</a></li><li><a href="https://github.com/pubsubhubbub/wordpress-pubsubhubbub" data-type="URL" data-id="https://github.com/pubsubhubbub/wordpress-pubsubhubbub">WebSub auf GitHub</a></li></ul>



<h3 class="wp-block-heading">MF2 Feed Plugin</h3>



<p>Das IndieWeb setzt im, Gegensatz zum Fediverse, nicht auf APIs, sondern auf Semantisches HTML:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>The idea is rather than publishing something twice (repeating yourself) with (x)HTML for browsers and XML for aggregators &#8211; you simply publish once using (x)HTML and allow the tools to take care of the rest.</p><cite><a href="http://microformats.org/wiki/dry">http://microformats.org/wiki/dry</a></cite></blockquote>



<div class="wp-block-image"><figure class="alignleft size-large"><img decoding="async" width="100" height="100" src="https://notiz.blog/wp-content/uploads/2006/11/microformats.jpg" alt="Das Microformats Logo" class="wp-image-258"/></figure></div>



<p>In einer Welt in der jeder <em>WordPress Theme Developer</em> Wert auf Microformats, Schema.org oder Ähnliches achtet, funktioniert das Konzept super. Die Erfahrung zeigt aber, dass nur wenige Themes (<a href="https://notiz.blog/2019/08/16/the-first-microformats2-wp-theme/" data-type="URL" data-id="https://notiz.blog/2019/08/16/the-first-microformats2-wp-theme/">seit fast 9 Jahren eigentlich sogar nur ein Theme</a>) im <a href="https://wordpress.org/themes/search/microformats+v2/" data-type="URL" data-id="https://wordpress.org/themes/search/microformats+v2/">WordPress.org Repo Microformats2</a> unterstützt.</p>



<p>Ich habe viel herum experimentiert um Themes über ein <a href="https://wordpress.org/plugins/wp-uf2/" data-type="URL" data-id="https://wordpress.org/plugins/wp-uf2/">Plugin</a> mit den nötigen Semantiken zu erweitern, was aber, durch Output Escaping, zu <a href="https://github.com/indieweb/wordpress-uf2/issues/41" data-type="URL" data-id="https://github.com/indieweb/wordpress-uf2/issues/41">komischen Nebeneffekten</a> geführt hat (das alles aber nur der Vollständigkeit halber, das Thema ist eigentlich einen ganzen Artikel wert).</p>



<p>Letztendlich haben wir für WordPress ein Plugin gebaut, das einen Feed bereit stellt, der genau dem JSON Format entspricht, welches auch die Microformats Parser ausspucken. Das Webmention Plugin sucht also erst den pre-parsed Feed und versucht erst im zweiten Schritt, die Seite selbst zu parsen.</p>



<p>Ihr versteht die Ironie? Microformats(2) sind geschaffen worden um XML/JSON APIs abzulösen und weil das bei WordPress nicht wirklich dolle funktioniert bieten wir die Infos als JSON API an! 😀</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/mf2-feed/" data-type="URL" data-id="https://wordpress.org/plugins/mf2-feed/">MF2 feed auf WordPress.org</a></li><li><a href="https://github.com/indieweb/wordpress-mf2-feed" data-type="URL" data-id="https://github.com/indieweb/wordpress-mf2-feed">MF2 feed auf GitHub</a></li></ul>



<h2 class="wp-block-heading">Decisions, not Options</h2>



<p>Ich bin ein Freund von kleinen Plugins die nur einen spezifischen Anwendungsfall abdecken und im besten Fall auch vollkommen ohne Settings aus kommen. Frei nach dem Motto von WordPress:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>When making decisions these are the users we consider first. A great example of this consideration is software options. Every time you give a user an option, you are asking them to make a decision. When a user doesn’t care or understand the option this ultimately leads to frustration.</p><cite><a href="https://wordpress.org/about/philosophy/#decisions">https://wordpress.org/about/philosophy/#decisions</a></cite></blockquote>



<p>(<a href="https://wordpress.org/support/topic/it-does-absolutely-nothing/" data-type="URL" data-id="https://wordpress.org/support/topic/it-does-absolutely-nothing/">Ironischerweise führt aber gerade das Fehlen von Settings oft für Verwirrung</a> 😉 )</p>



<h3 class="wp-block-heading">OpenGraph Plugin</h3>



<p>Das <a href="https://ogp.me/" data-type="URL" data-id="https://ogp.me/">Open Graph Protokoll</a> wurde von Facebook entwickelt und hat einen ähnlichen Nutzen wie <a href="https://oembed.com/" data-type="URL" data-id="https://oembed.com/">oEmbed</a>:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>The <a href="https://ogp.me/">Open Graph protocol</a> enables any web page to become a rich object in a social graph. For instance, this is used on Facebook to allow any web page to have the same functionality as any other object on Facebook.</p><cite><a href="https://ogp.me">https://ogp.me</a></cite></blockquote>



<p>Es wird aktuell von fast jedem großen Netzwerk oder fast jeder Messaging App benutzt und sorgt dafür, dass ihr die kleinen hübschen Vorschausnippets seht, wenn ihr einen Link mit euren Freunden teilt.</p>



<p>Das OpenGraph Plugin wurde ursprünglich von <a href="https://willnorris.com/" data-type="URL" data-id="https://willnorris.com/">Will Norris</a> geschrieben und generiert alle notwendigen Meta-Tag Header. Keine Settings, keine Entscheidungen, aber mit wohl definierten Filtern zum erweitern.</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/opengraph/" data-type="URL" data-id="https://wordpress.org/plugins/opengraph/">OpenGraph auf WordPress.org</a></li><li><a href="https://github.com/willnorris/wordpress-opengraph" data-type="URL" data-id="https://github.com/willnorris/wordpress-opengraph">OpenGraph auf GitHub</a></li></ul>



<h3 class="wp-block-heading">Hum Plugin</h3>



<p>Hum generiert schöne, semantische Short-URLs für WordPress Posts und Pages. Das Plugin ist ursprünglich auch von Will Norris, integriert sich in die WordPress Core-Funktionen und kommt auch komplett ohne Settings aus.</p>



<p>Hum basiert auf <a href="http://tantek.pbworks.com/w/page/21743973/Whistle" data-type="URL" data-id="http://tantek.pbworks.com/w/page/21743973/Whistle">Whistle</a>&#8230;</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Whistle is an open source, <em><strong>algorithmically reversible, personal URL</strong></em> shortener.</p><cite><a href="http://tantek.pbworks.com/w/page/21743973/Whistle">http://tantek.pbworks.com/w/page/21743973/Whistle</a></cite></blockquote>



<p>&#8230;und <a href="http://tantek.pbworks.com/w/page/19402946/NewBase60">New Base 60</a>&#8230;</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>A base 60 numbering system using only ASCII numbers and letters.<br>or<br>a side effect of building a personal URL shortener</p><cite><a href="http://tantek.pbworks.com/w/page/19402946/NewBase60">http://tantek.pbworks.com/w/page/19402946/NewBase60</a></cite></blockquote>



<p>&#8230;zwei Specs von <a href="https://tantek.com/" data-type="URL" data-id="https://tantek.com/">Tantek Çelik</a>.</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/hum/" data-type="URL">Hum auf WordPress.org</a></li><li><a href="https://github.com/willnorris/wordpress-hum" data-type="URL" data-id="https://github.com/willnorris/wordpress-hum">Hum auf GitHub</a></li></ul>



<h3 class="wp-block-heading">Open Search Document Plugin</h3>



<p>Die OpenSearch Spezifikation bietet Möglichkeiten um die lokale Blog-Suche für Browser oder Suchmaschinen zugänglich zu machen.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>OpenSearch is a collection of simple formats for the sharing of search results.</p><cite><a href="https://github.com/dewitt/opensearch">https://github.com/dewitt/opensearch</a></cite></blockquote>



<p>Es gibt Integrationen für alle bekannten Browser wie z.B. <a href="https://www.chromium.org/tab-to-search">Chrome</a>, <a href="https://developer.apple.com/library/archive/releasenotes/General/WhatsNewInSafari/Articles/Safari_8_0.html">Safari</a>, <a href="https://developer.mozilla.org/de/docs/OpenSearch_Plugin_f%C3%BCr_Firefox_erstellen">Firefox</a> und <a href="https://support.microsoft.com/de-de/microsoft-edge/%C3%A4ndern-der-standardsuchmaschine-f863c519-5994-a8ed-6859-00fbc123b782">Microsoft Edge</a>.</p>



<p>Das Plugin wurde ursprünglich von <a href="https://profiles.wordpress.org/johnnoone/" data-type="URL" data-id="https://profiles.wordpress.org/johnnoone/">johnnoone</a> Entwickelt, es stellt eine XML Beschreibung der Suche und einen Endpunkt für Such-Vorschläge basierend auf Tags bereit.</p>



<p>Das wars auch schon 🙂</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/open-search-document/" data-type="URL" data-id="https://wordpress.org/plugins/open-search-document/">Open Search Document auf WordPress.org</a></li><li><a href="https://github.com/pfefferle/wordpress-open-search-document" data-type="URL" data-id="https://github.com/pfefferle/wordpress-open-search-document"></a><a href="https://wordpress.org/plugins/open-search-document/" data-type="URL" data-id="https://wordpress.org/plugins/open-search-document/">Open Search Document auf GitHub</a></li></ul>



<h2 class="wp-block-heading">Mehr?</h2>



<p>Natürlich gibt es noch mehr, das würde aber den Rahmen sprengen. Ich nutze WordPress gerne um neue <a href="https://github.com/pfefferle/wordpress-twtxt">Specs</a> und <a href="https://github.com/pfefferle/wordpress-hashtags" data-type="URL" data-id="https://github.com/pfefferle/wordpress-hashtags">Ideen</a> auszuprobieren und daraus entstehen meist kleine Plugins, die es oft nicht wert sind, auf WordPress.org veröffentlichen zu werden.</p>



<p>Ihr könnt aber gerne:</p>



<ul class="wp-block-list"><li>einen Blick auf mein <a href="https://profiles.wordpress.org/pfefferle/" data-type="URL" data-id="https://profiles.wordpress.org/pfefferle/">WordPress.org Profil</a> werfen</li><li>oder auf <a href="https://github.com/search?q=topic%3Awordpress-plugin+user%3Apfefferle+org%3Aindieweb+org%3Aapml+org%3Adiso+org%3Apubsubhubbub&amp;type=Repositories&amp;ref=advsearch&amp;l=&amp;l=" data-type="URL" data-id="https://github.com/search?q=topic%3Awordpress-plugin+user%3Apfefferle+org%3Aindieweb+org%3Aapml+org%3Adiso+org%3Apubsubhubbub&amp;type=Repositories&amp;ref=advsearch&amp;l=&amp;l=">GitHub suchen</a>.</li></ul>



<p>Ihr könnt fast alle Plugins auch bequem über Composer installieren und updaten.</p>



<p>Ich freue mich IMMER über Hilfe, also <strong>feel free to contribute</strong>!</p>
<p>You are a master of efficiency! By using RSS, you save time and avoid distractions. 👏</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2021/01/29/inventur/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>BrowserID &#8211; as easy as copy &#038; paste</title>
		<link>https://notiz.blog/2012/01/07/browserid-as-easy-as-copy-and-paste/</link>
					<comments>https://notiz.blog/2012/01/07/browserid-as-easy-as-copy-and-paste/#comments</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Sat, 07 Jan 2012 16:35:27 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[BrowserID]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[OpenID]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[SingleSignOn]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://notizblog.org/?p=4102</guid>

					<description><![CDATA[Ich schreibe gerade einen Artikel für das t3n Magazin über aktuelle Sign-In-Mechanismen und hab mir in dem Zuge BrowserID mal etwas genauer angeschaut. Ich bin wirklich extrem überrascht mit wie wenig Arbeit es sich in z.B. WordPress einbauen lässt.]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="500" height="140" sizes="auto, (max-width: 500px) 100vw, 500px" src="https://notiz.blog/wp-content/uploads/2012/01/BrowserID.jpg" alt="BrowserID" class="wp-image-4104" srcset="https://notiz.blog/wp-content/uploads/2012/01/BrowserID.jpg 500w, https://notiz.blog/wp-content/uploads/2012/01/BrowserID-480x134.jpg 480w" /></figure></div>



<p>Ich schreibe gerade einen Artikel für das <a href="http://t3n.de/">t3n Magazin</a> über aktuelle Sign-In-Mechanismen und hab mir in dem Zuge BrowserID mal etwas genauer angeschaut. Ich bin wirklich extrem überrascht mit wie wenig Arbeit es sich in z.B. WordPress einbauen lässt.</p>



<p><a href="https://web.archive.org/web/20120619053844/https://browserid.org/">BrowserID</a> besteht eigentlich nur aus einem <abbr title="JavaScript">JS</abbr>-File,ein paar Zeilen <abbr title="JavaScript">JS</abbr>-Code:</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://browserid.org/include.js"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/javascript"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/javascript"</span>&gt;</span><span class="actionscript">
navigator.id.get(<span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">(assertion)</span> </span>{
    <span class="hljs-keyword">if</span> (assertion) {
        <span class="hljs-comment">// This code will be invoked once the user has successfully</span>
        <span class="hljs-comment">// selected an email address they control to sign in with.</span>
    } <span class="hljs-keyword">else</span> {
        <span class="hljs-comment">// something went wrong!  the user isn't logged in.</span>
    }
});
</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></span></pre>


<p>und dem anschließenden Verifizieren der <code>assertion</code>:</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">$ curl -d <span class="hljs-string">"assertion=&amp;audience=https://mysite.com"</span> <span class="hljs-string">"https://browserid.org/verify"</span>
{
    <span class="hljs-string">"status"</span>: <span class="hljs-string">"okay"</span>,
    <span class="hljs-string">"email"</span>: <span class="hljs-string">"lloyd@example.com"</span>,
    <span class="hljs-string">"audience"</span>: <span class="hljs-string">"https://mysite.com"</span>,
    <span class="hljs-string">"expires"</span>: <span class="hljs-number">1308859352261</span>,
    <span class="hljs-string">"issuer"</span>: <span class="hljs-string">"browserid.org"</span>
}</code></span></pre>


<p>Den ausführlichen Ablauf der Authentifizierung findet ihr auf <a href="https://github.com/mozilla/browserid/wiki/How-to-Use-BrowserID-on-Your-Site">Github</a>.</p>



<p>Um BrowserID in WordPress zu integrieren lädt man also zuerst den <abbr title="JavaScript">JS</abbr>-Code in den Login Header:</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">// add the BrowserID javascript-code to the header</span>
add_action(<span class="hljs-string">'login_head'</span>, <span class="hljs-string">'bi_add_js_header'</span>);
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">bi_add_js_header</span><span class="hljs-params">()</span> </span>{
  <span class="hljs-keyword">echo</span> <span class="hljs-string">'&lt;script src="https://browserid.org/include.js" type="text/javascript"&gt;&lt;/script&gt;'</span>;
  <span class="hljs-keyword">echo</span> <span class="hljs-string">'&lt;script type="text/javascript"&gt;'</span>.<span class="hljs-string">"\n"</span>;
  <span class="hljs-keyword">echo</span> <span class="hljs-string">'function browser_id_login() {
    navigator.id.get(function(assertion) {
      if (assertion) {
        window.location="'</span> . get_site_url(<span class="hljs-keyword">null</span>, <span class="hljs-string">'/'</span>) .<span class="hljs-string">'?browser_id_assertion=" + assertion;
      } else {
        // do nothing!
      }
    })
  };'</span>.<span class="hljs-string">"\n"</span>;
  <span class="hljs-keyword">echo</span> <span class="hljs-string">'&lt;/script&gt;'</span>;
}</code></span></pre>


<p>und platziert den BrowserID-Button auf der Login-Seite:</p>


<pre class="wp-block-code"><span><code class="hljs language-xml">// add the login button
add_action('login_form', 'bi_add_button');
function bi_add_button() {
  echo '<span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span> <span class="hljs-attr">onclick</span>=<span class="hljs-string">"return browser_id_login();"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://browserid.org/i/sign_in_blue.png"</span> <span class="hljs-attr">style</span>=<span class="hljs-string">"border: 0;"</span> /&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>';
}</code></span></pre>


<p>Nach dem klick auf den Button öffnet sich das Autorisierungs-Fenster von BrowserID und nach dem erfolgreichen Sign-In wird die gerade implementierte Methode <code>navigator.id.get(function(assertion) {}</code> aufgerufen.</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="500" height="412" sizes="auto, (max-width: 500px) 100vw, 500px" src="https://notiz.blog/wp-content/uploads/2012/01/BrowserID-login-window.jpg" alt="BrowserID login window" class="wp-image-4111" srcset="https://notiz.blog/wp-content/uploads/2012/01/BrowserID-login-window.jpg 500w, https://notiz.blog/wp-content/uploads/2012/01/BrowserID-login-window-480x395.jpg 480w" /></figure></div>



<p>Im nächsten Schritt muß man die erhaltene <code>assertion</code> über BrowserID.org verifizieren. Da ich den notwendigen <code>POST</code> nicht über JavaScript absetzen will, leite ich einfach auf eine Seite weiter und übergebe die erhaltene <code>assertion</code> als GET-Paramater.</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">if</span> (assertion) {
  <span class="hljs-built_in">window</span>.location=<span class="hljs-string">"' . get_site_url(null, '/') .'?browser_id_assertion="</span> + assertion;
}</code></span></pre>


<p>Jetzt kann der POST bequem über WordPress abgesetzt werden.</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">// the verification code</span>
add_action(<span class="hljs-string">'parse_request'</span>, <span class="hljs-string">'bi_verify_id'</span>);
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">bi_verify_id</span><span class="hljs-params">()</span> </span>{
  <span class="hljs-keyword">global</span> $wp_query, $wp, $user;

  <span class="hljs-keyword">if</span>( array_key_exists(<span class="hljs-string">'browser_id_assertion'</span>, $wp-&gt;query_vars) ) {
    <span class="hljs-comment">// some settings for the post request</span>
    $args = <span class="hljs-keyword">array</span>(
      <span class="hljs-string">'method'</span> =&gt; <span class="hljs-string">'POST'</span>,
      <span class="hljs-string">'timeout'</span> =&gt; <span class="hljs-number">30</span>,
      <span class="hljs-string">'redirection'</span> =&gt; <span class="hljs-number">0</span>,
      <span class="hljs-string">'httpversion'</span> =&gt; <span class="hljs-string">'1.0'</span>,
      <span class="hljs-string">'blocking'</span> =&gt; <span class="hljs-keyword">true</span>,
      <span class="hljs-string">'headers'</span> =&gt; <span class="hljs-keyword">array</span>(),
      <span class="hljs-string">'body'</span> =&gt; <span class="hljs-keyword">array</span>(
        <span class="hljs-string">'assertion'</span> =&gt; $wp-&gt;query_vars&#91;<span class="hljs-string">'browser_id_assertion'</span>], <span class="hljs-comment">// the assertion number we get from the js</span>
        <span class="hljs-string">'audience'</span> =&gt; <span class="hljs-string">"http://"</span>.$_SERVER&#91;<span class="hljs-string">'HTTP_HOST'</span>] <span class="hljs-comment">// the server host</span>
      ),
      <span class="hljs-string">'cookies'</span> =&gt; <span class="hljs-keyword">array</span>(),
      <span class="hljs-string">'sslverify'</span> =&gt; <span class="hljs-number">0</span>
    );

    <span class="hljs-comment">// check the response</span>
    $response = wp_remote_post(<span class="hljs-string">"https://browserid.org/verify"</span>, $args);

    <span class="hljs-keyword">if</span> (!is_wp_error($response)) {
      $bi_response = json_decode($response&#91;<span class="hljs-string">'body'</span>], <span class="hljs-keyword">true</span>);

      <span class="hljs-comment">// if everything is ok, check if there is a user with this email address</span>
      <span class="hljs-keyword">if</span> ($bi_response&#91;<span class="hljs-string">'status'</span>] == <span class="hljs-string">'okay'</span>) {
        $userdata = get_user_by(<span class="hljs-string">'email'</span>, $bi_response&#91;<span class="hljs-string">'email'</span>]);
        <span class="hljs-keyword">if</span> ($userdata) {
          $user = <span class="hljs-keyword">new</span> WP_User($userdata-&gt;ID);
          wp_set_current_user($userdata-&gt;ID, $userdata-&gt;user_login);
          wp_set_auth_cookie($userdata-&gt;ID, $rememberme);
          do_action(<span class="hljs-string">'wp_login'</span>, $userdata-&gt;user_login);

          wp_redirect(home_url());
          <span class="hljs-keyword">exit</span>;
        } <span class="hljs-keyword">else</span> {
          <span class="hljs-comment">// show error when there is no matching user</span>
          <span class="hljs-keyword">echo</span> <span class="hljs-string">"no user with email address '"</span> . $bi_response&#91;<span class="hljs-string">'email'</span>] . <span class="hljs-string">"'"</span>; 
          <span class="hljs-keyword">exit</span>;
        }
      }
    }
    
    <span class="hljs-comment">// show error if something didn't work well</span>
    <span class="hljs-keyword">echo</span> <span class="hljs-string">"error logging in"</span>; 
    <span class="hljs-keyword">exit</span>;
  }
}</code></span></pre>


<p>Gibt es einen User mit der entsprechenden E-Mail &#8211; Adresse wird er eingeloggt, falls nicht, wird ein Fehler ausgegeben.</p>



<p>Bei der Demo hab ich mir aus Zeitgründen ein wenig Code bei Marcel Bokhorst geliehen, dessen <a href="http://wordpress.org/extend/plugins/browserid/">BrowserID-Plugin</a> wesentlich ausgereifter und vollständiger ist als der kleine Demo-Code den ich hier zusammengestückelt habe.</p>



<p>Wenn euch das zu schnell ging und ich auf einige Details nicht genügend eingegangen bin, könnt ihr gerne fragen 🙂</p>



<p>Ich habe den kompletten Code übrigens auch auf <a href="https://gist.github.com/1574995">Github</a> hochgeladen&#8230; das ist einfacher als sich alles zusammen zu kopieren.</p>
<p>Hey there, RSS reader! You’re one of a special few, choosing this old-school yet awesome way of staying informed. Kudos!</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2012/01/07/browserid-as-easy-as-copy-and-paste/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>HTML5, Input-Types, Form-Validierung und WordPress</title>
		<link>https://notiz.blog/2011/07/11/html5-input-types-form-validierung-und-wordpress/</link>
					<comments>https://notiz.blog/2011/07/11/html5-input-types-form-validierung-und-wordpress/#comments</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Mon, 11 Jul 2011 18:46:37 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[child theme]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[hCard]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[input-types]]></category>
		<category><![CDATA[Plugin]]></category>
		<guid isPermaLink="false">http://notizblog.org/?p=3840</guid>

					<description><![CDATA[Dass HTML5 ein paar neue input-types definiert, habe ich durch die hcard-input-brainstorming so am Rande auf geschnappt, mir aber nichts weiter dabei gedacht&#8230; Durch Zufall bin ich heute aber über folgenden Tweet von Sylvia Egger gestoßen: Just implemented native #HTML5 form validation on #wp comments form &#8211; it&#x27; quite simple &#38; should be in #wp [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignright" style="max-width:50%"><img decoding="async" src="https://notiz.blog/wp-content/uploads/2011/07/HTML5_Logo_256.png" alt="HTML5 Logo" /></figure>



<p>Dass HTML5 ein paar neue input-types definiert, habe ich durch die <a href="http://microformats.org/wiki/hcard-input-brainstorming#HTML5_input_types">hcard-input-brainstorming</a> so am Rande auf geschnappt, mir aber nichts weiter dabei gedacht&#8230; Durch Zufall bin ich heute aber über folgenden <a href="http://twitter.com/sprungmarkers/status/90305500108947457">Tweet</a> von Sylvia Egger gestoßen:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
    <p>Just implemented native <a rel="tag" class="hashtag u-tag u-category" href="https://notiz.blog/tag/html5/">#HTML5</a> form validation on #wp comments form &#8211; it&#x27; quite simple &amp; should be in #wp default theme</p>
</blockquote>



<p>und habe bissle recherchiert&#8230; Mit den neuen Input-Types ist es doch tatsächlich möglich Input-Felder über den Browser validieren zu lassen&#8230; Ich bin begeistert! 🙂</p>



<p>Trägt man beispielsweise eine Nicht-Email-Adresse in folgendes Feld&#8230;</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"email"</span> /&gt;</span></code></span></pre>


<p>bekommt man&#8230;</p>



<figure class="wp-block-image aligncenter"><img decoding="async" src="https://notiz.blog/wp-content/uploads/2011/07/firefox-email-validation.jpg" alt="Email Validation im Firefox" /></figure>



<p>Schön wenn man sich noch über solche Kleinigkeiten freuen kann oder 😉</p>



<p>Lange rede kurzer Sinn: Da WordPress alle Formulare an zentraler Stelle definiert, ist es ziemlich einfach sie mit ein paar neuen Input-Types zu versehen. Mit dem folgenden Code wird das Kommentar-Formular mit den Typen &quot;email&quot; und &quot;url&quot; und das Suchformular mit dem Typ &quot;search&quot; (funktioniert nur in den WebKit-Browsern) erweitert:</p>



<p><ins><strong>Code-Update</strong>: <a href="https://yatil.de/">Eric Eggert</a> hat mich in den <a href="https://notiz.blog/2011/07/11/html5-input-types-form-validierung-und-wordpress/#comment-173210">Kommentaren</a> darauf hingewiesen, dass man mit <code>&lt;input required /&gt;</code> auch noch die Pflichtfelder validieren kann. Danke!</ins></p>



<p><ins><strong>Code-Update 2</strong>: Dank <a href="https://www.im-tal.net">maxe</a> werden jetzt auch die WordPress Settings berücksichtigt (Comment author must fill out name and e-mail) und das &quot;Comment&quot;-Feld ist natürlich auch <code>required</code></ins></p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="php"><span class="hljs-meta">&lt;?php</span>
<span class="hljs-comment">/*
Plugin Name: html5 input-types
Plugin URI: https://notiz.blog/
Description: Adds the new HTML5 input-types to WordPress' default forms
Version: 0.1
Author: pfefferle
Author URI: https://notiz.blog/
*/</span>

add_filter(<span class="hljs-string">"comment_form_default_fields"</span>, <span class="hljs-string">"change_comment_input_types"</span>);

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">change_comment_input_types</span><span class="hljs-params">($fields)</span> </span>{
  <span class="hljs-keyword">if</span> (get_option(<span class="hljs-string">"require_name_email"</span>, <span class="hljs-keyword">false</span>)) {
    $fields&#91;<span class="hljs-string">'author'</span>] = preg_replace(<span class="hljs-string">'/&lt;input/'</span>, <span class="hljs-string">'&lt;input required'</span>, $fields&#91;<span class="hljs-string">'author'</span>]);
    $fields&#91;<span class="hljs-string">'email'</span>] = preg_replace(<span class="hljs-string">'/"text"/'</span>, <span class="hljs-string">'"email" required'</span>, $fields&#91;<span class="hljs-string">'email'</span>]);
  } <span class="hljs-keyword">else</span> {
    $fields&#91;<span class="hljs-string">'email'</span>] = preg_replace(<span class="hljs-string">'/"text"/'</span>, <span class="hljs-string">'"email"'</span>, $fields&#91;<span class="hljs-string">'email'</span>]);
  }

  $fields&#91;<span class="hljs-string">'url'</span>] = preg_replace(<span class="hljs-string">'/"text"/'</span>, <span class="hljs-string">'"url"'</span>, $fields&#91;<span class="hljs-string">'url'</span>]);

  <span class="hljs-keyword">return</span> $fields;
}

add_filter(<span class="hljs-string">"get_search_form"</span>, <span class="hljs-string">"change_search_form_input_types"</span>);

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">change_search_form_input_types</span><span class="hljs-params">($form)</span> </span>{
  <span class="hljs-keyword">return</span> preg_replace(<span class="hljs-string">'/"text"/'</span>, <span class="hljs-string">'"search"'</span>, $form);
}

add_filter(<span class="hljs-string">"comment_form_field_comment"</span>, <span class="hljs-string">"change_comment_field_input_types"</span>);

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">change_comment_field_input_types</span><span class="hljs-params">($field)</span> </span>{
  <span class="hljs-keyword">return</span> preg_replace(<span class="hljs-string">'/&lt;textarea/'</span>, <span class="hljs-string">'&lt;textarea required'</span>, $field);
}
<span class="hljs-meta">?&gt;</span></span></code></span></pre>


<p>Funktioniert als Plugin und in Child-Themes (einfach in die <code>functions.php</code> kopieren).</p>



<p>Danke auch an <a href="https://marcgoertz.de/">Marc Görtz</a> der mich über <a href="http://twitter.com/dreamseer">Twitter</a> reichlich mit Links zu dem Thema versorgt hat:</p>



<ul class="wp-block-list">
    <li><a href="https://web.archive.org/web/20200724153910/http://diveintohtml5.info/forms.html">A Form of Madness (den hab ich selber gefunden)</a></li>
    <li><a href="https://web.archive.org/web/20110307142356/http://html5pattern.com/">HTML5 Pattern</a></li>
    <li><a href="https://web.archive.org/web/20100629022438/http://flowplayer.org/tools/demos/validator/index.html">Fallback jQuery Validator</a></li>
</ul>



<p>Testen könnt ihr das übrigens hier auf notiz.blog.</p>
<p>You are a master of efficiency! By using RSS, you save time and avoid distractions. 👏</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2011/07/11/html5-input-types-form-validierung-und-wordpress/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>NoisePress: Nie wieder irrelevante Inhalte</title>
		<link>https://notiz.blog/2010/11/05/noisepress-nie-wieder-irrelevante-inhalte/</link>
					<comments>https://notiz.blog/2010/11/05/noisepress-nie-wieder-irrelevante-inhalte/#comments</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Fri, 05 Nov 2010 07:16:27 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[APML]]></category>
		<category><![CDATA[ATOM]]></category>
		<category><![CDATA[Attention]]></category>
		<category><![CDATA[Attention-Daten]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[Feed]]></category>
		<category><![CDATA[Feed-Reader]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[XAuth]]></category>
		<guid isPermaLink="false">http://notizblog.org/?p=1844</guid>

					<description><![CDATA[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 &#38; Co. hat, bleibt nur noch eins: Erst filtern, dann abonnieren! NoisePress erlaubt Seitenbesucher, einen RSS/ATOM-Feed mit Hilfe von APML vorzufiltern. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignright"><img loading="lazy" decoding="async" width="128" height="128" sizes="auto, (max-width: 128px) 100vw, 128px" src="https://notiz.blog/wp-content/uploads/2010/06/noisepress-logo.png" alt="Erst filtern, dann abonnieren!" class="wp-image-2913" /></figure>



<p>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 &amp; Co. hat, bleibt nur noch eins: <strong>Erst filtern, dann abonnieren!</strong></p>



<p><a href="https://notiz.blog/?noisepress=feedfilter">NoisePress</a> erlaubt Seitenbesucher, einen RSS/ATOM-Feed mit Hilfe von <abbr title="Attention Profiling Mark-up Language"><a href="https://notiz.blog/2007/11/23/apml-attention-profiling-mark-up-language/">APML</a></abbr> vorzufiltern.</p>



<p>(Zum ausprobieren braucht man ein APML-Profil. Wer keines hat, sollte sich entweder das <a href="https://wordpress.org/plugins/apml/">WordPress Plugin</a> installieren oder heimlich <a href="https://web.archive.org/web/20110205055224/http://notsorelevant.com/apml">Carstens Profil</a> benutzen 😉 )</p>



<h4 class="wp-block-heading">Warum mit APML filtern?</h4>



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



<ul class="wp-block-list">
	<li>Tags Feed: <a href="https://notiz.blog/tag/openid,oauth/feed/">https://notiz.blog/tag/openid,oauth/feed/</a></li>
	<li>Category Feed: <a href="https://notiz.blog/category/openweb-notizen/feed/">https://notiz.blog/category/openweb-notizen/feed/</a></li>
</ul>



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



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



<p>Am Beispiel <em>WordPress Plugin</em>: 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.</p>



<h4 class="wp-block-heading">Hört sich nach Geek-Zeugs an?</h4>



<p>Richtig! 🙂 &#8230;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&#8216; <a href="https://wiki.mozilla.org/Labs/Weave/Identity/Account_Manager/Spec/Latest">Account Manager</a> oder <a href="https://web.archive.org/web/20120808043826/http://xauth.org:80/">XAuth</a> schnell weiter entwickeln und ich eine dieser Techniken für NoisePress <em>missbrauchen</em> könnte.</p>



<p>Ich würde mich übrigens sehr über ein bisschen Feedback freuen!</p>
<p>Hey there, RSS reader! You’re one of a special few, choosing this old-school yet awesome way of staying informed. Kudos!</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2010/11/05/noisepress-nie-wieder-irrelevante-inhalte/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>OpenWeb-Notizen: OpenID, Safari, pubsubhubbub, microdata</title>
		<link>https://notiz.blog/2010/06/16/openweb-notizen-openid-safari-pubsubhubbub-microdata/</link>
					<comments>https://notiz.blog/2010/06/16/openweb-notizen-openid-safari-pubsubhubbub-microdata/#respond</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Wed, 16 Jun 2010 19:10:03 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[OpenWeb Notizen]]></category>
		<category><![CDATA[Addon]]></category>
		<category><![CDATA[Microdata]]></category>
		<category><![CDATA[OpenID]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[PubSubHubbub]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[Safari 5]]></category>
		<guid isPermaLink="false">http://notizblog.org/?p=2860</guid>

					<description><![CDATA[OpenID-Plugin für Safari Safari 5 (mit Addon-Support) ist gerade mal eine starken Woche alt und schon gibt es die erste OpenID-Erweiterung. Das Plugin kann zwar nicht viel mehr als OpenID-Felder automatisch auszufüllen, aber wie heißt es so schön&#8230; immerhin mal ein Anfang. » openid.safariextension { &#8222;protocol&#8220;:&#8220;pubsubhubbub&#8220;, &#8222;format&#8220;:&#8220;json&#8220; } Monica Keller (Facebook) und Martin Atkins (Six [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><strong>OpenID-Plugin für Safari</strong><br/> Safari 5 (mit Addon-Support) ist gerade mal eine starken Woche alt und schon gibt es die erste OpenID-Erweiterung.</p>



<figure class="wp-block-image aligncenter"><img loading="lazy" decoding="async" width="480" height="374" sizes="auto, (max-width: 480px) 100vw, 480px" src="https://notiz.blog/wp-content/uploads/2010/06/openid-plugin-safari.jpg" alt="OpenID-Plugin für Safari" class="wp-image-2866" /></figure>



<p>Das Plugin kann zwar nicht viel mehr als OpenID-Felder automatisch auszufüllen, aber wie heißt es so schön&#8230; immerhin mal ein Anfang.</p>



<p>» <a href="https://web.archive.org/web/20100619113858/http://github.com:80/josh/openid.safariextension">openid.safariextension</a></p>



<p><strong>{ &#8222;protocol&#8220;:&#8220;pubsubhubbub&#8220;, &#8222;format&#8220;:&#8220;json&#8220; }</strong><br/> Monica Keller (Facebook) und Martin Atkins (Six Apart) arbeiten an einer <abbr title="JavaScript Object Notation">JSON</abbr>-Variante von pubsubhubbub. Besonders Facebook, deren OpenGraph-API ausschließlich auf der JavaScript serialisierung basiert, scheint großes Interesse an dem offenen Push-Protokoll zu haben. Schön dass der Internet-Gigant sich die Mühe gibt, einen Standard voran zu treiben, anstatt ein eigenes Format zu entwickeln.</p>



<p>» <a href="https://web.archive.org/web/20110519004918/http://martin.atkins.me.uk:80/specs/pubsubhubbub-json">Spec: PubSubHubbub for JSON</a><br/> » <a href="http://groups.google.com/group/pubsubhubbub/browse_thread/thread/3fcadeef1683f563">Talk: PubSubHubbub for JSON</a></p>



<p><strong>HTML5 Microdata</strong><br/> Ein weiterer ausführlicher Artikel über Microdata mit ein paar schönen Anwendungsfällen.</p>



<p>» <a href="https://code.tutsplus.com/tutorials/html5-microdata-welcome-to-the-machine--net-12356">HTML5 Microdata: Welcome to the Machine</a></p>
<p>RSS readers like you are the secret sauce of the internet. Keep rocking and staying informed!</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2010/06/16/openweb-notizen-openid-safari-pubsubhubbub-microdata/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>michromeformats</title>
		<link>https://notiz.blog/2010/04/28/michromeformats/</link>
					<comments>https://notiz.blog/2010/04/28/michromeformats/#comments</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Wed, 28 Apr 2010 17:39:10 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[chromium]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[Microformats]]></category>
		<category><![CDATA[Plugin]]></category>
		<guid isPermaLink="false">http://notizblog.org/?p=2617</guid>

					<description><![CDATA[Ein Microformats-Plugin für den Google Chrome: Chrome + microformats = michromeformats &#8230;und es benutzt sogar ein paar meiner Icons 🙂]]></description>
										<content:encoded><![CDATA[
<p>Ein Microformats-Plugin für den <em>Google Chrome</em>: <a href="http://ryckbost.com/blog/archives/2010/04/21/chrome-microformats-michromeformats/">Chrome + microformats = michromeformats</a></p>



<figure class="wp-block-image aligncenter"><img loading="lazy" decoding="async" width="465" height="231" sizes="auto, (max-width: 465px) 100vw, 465px" src="https://notiz.blog/wp-content/uploads/2010/04/michromeformats.png" alt="Chrome + microformats = michromeformats" class="wp-image-2618" /></figure>



<p>&#8230;und es benutzt sogar ein paar <a href="https://notiz.blog/projects/microformats-icons/">meiner Icons</a> 🙂</p>
<p>RSS readers like you are the unsung heroes of the internet. Keep up the good work!</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2010/04/28/michromeformats/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>ActivityStrea.ms Extension for WordPress</title>
		<link>https://notiz.blog/2009/09/18/activitystrea-ms-extension-for-wordpress/</link>
					<comments>https://notiz.blog/2009/09/18/activitystrea-ms-extension-for-wordpress/#comments</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Fri, 18 Sep 2009 17:01:06 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[Activities]]></category>
		<category><![CDATA[Activity Stream]]></category>
		<category><![CDATA[ATOM]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Feed]]></category>
		<category><![CDATA[myspace]]></category>
		<category><![CDATA[noserub]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://notizblog.org/?p=1958</guid>

					<description><![CDATA[Ich habe mal ein kleines Plugin geschrieben welches den WordPress-Atom-Feed mit der ActivityStream-Syntax erweitert. 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 &#60;entry />s ausschließlich Blogposts/Artikel&#8230; &#8230;die gepostet wurden. Und für die Dienste wie NoseRub, die die Aktivität gerne in einen Satz [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Ich habe mal ein kleines <a href="http://wordpress.org/extend/plugins/activitystream-extension/">Plugin</a> geschrieben welches den WordPress-Atom-Feed mit der <a href="https://web.archive.org/web/20100301111824/http://martin.atkins.me.uk:80/specs/activitystreams/atomactivity">ActivityStream-Syntax</a> erweitert.</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"> <span class="hljs-tag">&lt;<span class="hljs-name">entry</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>https://notiz.blog/?p=1775<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">author</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>Matthias Pfefferle<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">uri</span>&gt;</span>https://notiz.blog<span class="hljs-tag">&lt;/<span class="hljs-name">uri</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">author</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">...</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">activity:verb</span>&gt;</span>http://activitystrea.ms/schema/1.0/post<span class="hljs-tag">&lt;/<span class="hljs-name">activity:verb</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">activity:object</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">activity:object-type</span>&gt;</span>http://activitystrea.ms/schema/1.0/blog-entry<span class="hljs-tag">&lt;/<span class="hljs-name">activity:object-type</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">activity:object-type</span>&gt;</span>http://activitystrea.ms/schema/1.0/article<span class="hljs-tag">&lt;/<span class="hljs-name">activity:object-type</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>tag:notiz.blog,2009-07-13:/post/1775<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"html"</span>&gt;</span>&lt;!&#91;CDATA&#91;Matthias Pfefferle posted a new blog-entry]]&gt;<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"alternate"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/html"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://notiz.blog/2009/07/14/webstandards-kolumne/"</span> /&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">activity:object</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">entry</span>&gt;</span></code></span></pre>


<p>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 <code>&lt;entry /></code>s ausschließlich Blogposts/Artikel&#8230;</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">activity:object-type</span>&gt;</span>http://activitystrea.ms/schema/1.0/blog-entry<span class="hljs-tag">&lt;/<span class="hljs-name">activity:object-type</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">activity:object-type</span>&gt;</span>http://activitystrea.ms/schema/1.0/article<span class="hljs-tag">&lt;/<span class="hljs-name">activity:object-type</span>&gt;</span></code></span></pre>


<p>&#8230;die gepostet wurden.</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">activity:verb</span>&gt;</span>http://activitystrea.ms/schema/1.0/post<span class="hljs-tag">&lt;/<span class="hljs-name">activity:verb</span>&gt;</span></code></span></pre>


<p>Und für die Dienste wie <a href="https://pfefferle.org/">NoseRub</a>, die die Aktivität gerne in einen Satz packen, gibt&#8217;s das ganze auch noch in Prosa.</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">title</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"html"</span>&gt;</span>&lt;!&#91;CDATA&#91;Matthias Pfefferle posted a new blog-entry]]&gt;<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span></code></span></pre>


<p>Das <a href="https://web.archive.org/web/20100301113659/http://martin.atkins.me.uk:80/specs/activitystreams/activityschema">ActivityStream Schema</a> definiert übrigens noch &#8217;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&#8230; lasst es mich wissen 😉</p>



<p>Es gibt leider aber auch ein paar <a href="https://openwebpodcast.de/107/episode-14-was-bringt-eigentlich-data-portability/">Probleme mit der Syntax und diversen Feed-Readern</a>, die das zweite <code>&lt;title /></code> im <code>&lt;activity-object /></code> mit interpretieren und dann beide Titel ausgeben&#8230; aber da ja auch <a href="https://web.archive.org/web/20120827190657/http://wiki.developer.myspace.com:80/index.php?title=Standards_for_Activity_Streams">MySpace</a> und <a href="https://web.archive.org/web/20090701093546/http://wiki.developers.facebook.com/index.php/Using_Activity_Streams">Facebook</a> die ActivityStream-Syntax einsetzen ist dieser Fehler sicherlich bald bei jedem Feed-Reader behoben 😉</p>



<p>Viel Spaß beim ausprobieren!</p>
<p>Congratulations on being an RSS reader! You are part of an elite group of people who know how to stay updated in style.</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2009/09/18/activitystrea-ms-extension-for-wordpress/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Operator wird doch weiter entwickelt</title>
		<link>https://notiz.blog/2009/09/08/operator-wird-doch-weiter-entwickelt/</link>
					<comments>https://notiz.blog/2009/09/08/operator-wird-doch-weiter-entwickelt/#respond</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Tue, 08 Sep 2009 21:40:36 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[Addon]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Firefox 3]]></category>
		<category><![CDATA[Microformats]]></category>
		<category><![CDATA[Microformats API]]></category>
		<category><![CDATA[Mikroformate]]></category>
		<category><![CDATA[Operator]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[value class pattern]]></category>
		<guid isPermaLink="false">http://notizblog.org/?p=1852</guid>

					<description><![CDATA[Gute Neuigkeiten! Michael Kaply, der die Weiterentwicklung von Operator (ein Microformats Addon für Firefox) Ende 2008 eingestellt hat&#8230; Operator – Deciding what to do with Operator is difficult. [&#8230;] That being said, I’m going to do a few fixes for Operator, call it 1.0 and then stop development. &#8230;widmet sich jetzt doch wieder dem de [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Gute Neuigkeiten! <a href="https://mike.kaply.com/">Michael Kaply</a>, der die Weiterentwicklung von <a href="https://web.archive.org/web/20101120155908/http://kaply.com:80/weblog/operator/">Operator</a> (ein <a href="http://microformats.org/wiki/browser">Microformats Addon</a> für Firefox) Ende 2008 eingestellt hat&#8230;</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
	<p>Operator – Deciding what to do with Operator is difficult. [&#8230;] That being said, I’m going to do a few fixes for Operator, call it 1.0 and then stop development.</p>
</blockquote>



<p>&#8230;widmet sich jetzt doch wieder dem de facto <em>(Microformats) Browser Plugin</em>&#8230;</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
	<p>The biggest news I have is that I have resumed work on Operator. In particular, I’m fixing bugs, adding a few usability enhancements and adding support for new microformat stuff like the value class/pattern for dates. I’m also considering completely removing the “Actions” toolbar and switching to interacting only with the data. I’m definitely looking for feedback on that one.</p>
</blockquote>



<p>Wer Ideen zu neuen Features oder Funktionen hat, kann diese gerne auf Michaels Weblog loswerden.<br/> Mein Wunsch: <a href="https://notiz.blog/2009/06/18/microdata-semantisches-html5/">Microdata</a> support 🙂</p>



<p>(Ich hoffe dass die Angekündigten <a href="http://microformats.org/wiki/value-class-pattern">value-class-pattern</a> Änderungen eventuell auch irgendwann in die native <a href="https://web.archive.org/web/20080701113514/http://www.kaply.com/weblog/2008/05/20/where-are-the-microformat-in-firefox-3/">Microformats Firefox API</a> aufgenommen werden.)</p>
<p>RSS readers like you are the secret sauce of the internet. Keep rocking and staying informed!</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2009/09/08/operator-wird-doch-weiter-entwickelt/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Microsoft und Microformats?</title>
		<link>https://notiz.blog/2008/11/02/microsoft-und-microformats/</link>
					<comments>https://notiz.blog/2008/11/02/microsoft-und-microformats/#respond</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Sun, 02 Nov 2008 14:51:48 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[Internet-Explorer]]></category>
		<category><![CDATA[Microformats]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Toolkit]]></category>
		<guid isPermaLink="false">http://notizblog.org/?p=1242</guid>

					<description><![CDATA[Ich lese in letzter Zeit wieder immer häufiger von Microformats-Implementierungen im Internet Explorer 8. Geht es da &#8222;nur&#8220; um die schon angekündigten Webslices? Weiß jemand mehr? Übrigens hat Mix Online, &#8222;a community for web designers and developers&#8220; von Microsoft, gerade ein recht schickes Microformats Toolkit mit dem Namen Oomph veröffentlicht.]]></description>
										<content:encoded><![CDATA[
<p>Ich lese in letzter Zeit wieder immer häufiger von Microformats-Implementierungen im <a href="https://web.archive.org/web/20090317043808/http://www.microsoft.com:80/germany/windows/products/winfamily/ie/beta/default.mspx?">Internet Explorer 8</a>. Geht es da &#8222;<em>nur</em>&#8220; um die schon angekündigten <a href="https://notiz.blog/2008/03/06/ueber-ie8s-webslices-und-hatom/">Webslices</a>? Weiß jemand mehr?</p>



<p>Übrigens hat <a href="https://web.archive.org/web/20100602135254/http://www.visitmix.com/">Mix Online</a>, &#8222;a community for web designers and developers&#8220; von Microsoft, gerade ein recht schickes <a href="https://web.archive.org/web/20090327091822/http://www.visitmix.com/Lab/Oomph">Microformats Toolkit mit dem Namen Oomph</a> veröffentlicht.</p>



<span id="more-1242"></span>



<figure class="wp-block-embed-youtube wp-block-embed alignwide is-type-video is-provider-youtube">
	<span class="embed-privacy-url"><a href="https://www.youtube.com/watch?v=zx2f2Z9MMQ8">Eingebetteten Inhalt von YouTube öffnen</a></span>
</figure>
<p>Thanks for reading this post via RSS. RSS is great, and you’re great for using it. ♥️</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2008/11/02/microsoft-und-microformats/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ubiquity für WordPress (ein Plugin)</title>
		<link>https://notiz.blog/2008/09/09/ubiquity-fuer-wordpress-ein-plugin/</link>
					<comments>https://notiz.blog/2008/09/09/ubiquity-fuer-wordpress-ein-plugin/#comments</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Tue, 09 Sep 2008 19:29:26 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[Suche]]></category>
		<category><![CDATA[Ubiquity]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://notizblog.org/?p=1126</guid>

					<description><![CDATA[Die beste Methode sich mit einer Sache zu beschäftigen ist, einen sinnvollen Anwendungsfall zu schaffen&#8230; Bei dem &#8222;näher beschäftigen&#8220; mit Ubiquity ist ein WordPress-Plugin rausgekommen 🙂 Das WordPress-Plugin erstellt eine Ubiquity-Suche für das eigene Weblog (Quellcode) mit dem Command &#8222;search-&#60;Blog-Titel>&#8220; Das kann teilweise (wie im Falle meines Blogs: search-notizblog-a-private-weblog-written-by-matthias-pfefferle) ziemlich lang werden, was aber nicht [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Die beste Methode sich mit einer Sache zu beschäftigen ist, einen sinnvollen Anwendungsfall zu schaffen&#8230; Bei dem &#8222;näher beschäftigen&#8220; mit Ubiquity ist ein <a href="http://wordpress.org/extend/plugins/ubiquity-search/">WordPress-Plugin</a> rausgekommen 🙂</p>



<p>Das <a href="http://wordpress.org/extend/plugins/ubiquity-search/">WordPress-Plugin</a> erstellt eine Ubiquity-Suche für das eigene Weblog (<a href="https://notiz.blog/?ubiquity=search">Quellcode</a>) mit dem Command &#8222;search-&lt;Blog-Titel>&#8220;</p>



<figure class="wp-block-image aligncenter"><img decoding="async" src="https://notiz.blog/wp-content/uploads/2008/09/ubiquity-wordpress-command.jpg" alt="ubiquity-wordpress-command.jpg" /></figure>



<p>Das kann teilweise (wie im Falle meines Blogs: <em>search-notizblog-a-private-weblog-written-by-matthias-pfefferle</em>) ziemlich lang werden, was aber nicht weiter schlimm ist da auch schon der Anfang des Commands (z.B. search-notizblog) reicht&#8230;</p>



<p>Viel Spaß beim ausprobieren 🙂</p>
<p>Hey there, RSS reader! You’re cool. Keep being awesome! 😎</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2008/09/09/ubiquity-fuer-wordpress-ein-plugin/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Sixgroups-Livecommunity WordPress-Plugin</title>
		<link>https://notiz.blog/2008/07/07/sixgroups-livecommunity-wordpress-plugin/</link>
					<comments>https://notiz.blog/2008/07/07/sixgroups-livecommunity-wordpress-plugin/#comments</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Mon, 07 Jul 2008 19:32:34 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[6groups]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[Livecommunity]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[sixgroups]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://notizblog.org/?p=942</guid>

					<description><![CDATA[Wie schon im Lifestream erwähnt, habe ich mir (um das Template nicht ändern zu müssen) ein simples six groups &#8211; Livecommunity WordPress-Plugin gebaut und vielleicht findet ja auch noch jemand anders Verwendung dafür&#8230; 🙂 Funktionsweise: Plugin runterladen Plugin bei WordPress.org runterladen In den wp-content/plugins-Ordner kopieren Aktivieren Livecommunity-Code im &#8222;Settings&#8220;-Bereich eingeben &#8230;fertsch 🙂 Wenn irgendwas nicht [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Wie schon im <a href="https://web.archive.org/web/20080908022955/http://notizblog.sixgroups.com/live/81341/">Lifestream</a> <a href="https://web.archive.org/web/20080908022808/http://notizblog.sixgroups.com/live/81343/">erwähnt</a>, habe ich mir (um das Template nicht ändern zu müssen) ein simples <em><a href="https://web.archive.org/web/20080901024642/http://sixgroups.com/">six groups</a> &#8211; <a href="https://web.archive.org/web/20130802195955/http://sixgroups.com:80/about-us/">Livecommunity</a></em> WordPress-Plugin gebaut und vielleicht findet ja auch noch jemand anders Verwendung dafür&#8230; 🙂</p>



<p>Funktionsweise:</p>



<ul class="wp-block-list">
	<li><del><a href="https://notiz.blog/wp-content/uploads/2008/07/sixgroups.zip">Plugin runterladen</a></del> <ins><a href="http://wordpress.org/extend/plugins/sixgroups-livecommunity/">Plugin bei WordPress.org runterladen</a></ins></li>
	<li>In den <code>wp-content/plugins</code>-Ordner kopieren</li>
	<li>Aktivieren</li>
	<li>Livecommunity-Code im &#8222;Settings&#8220;-Bereich eingeben</li>
	<li>&#8230;fertsch 🙂</li>
</ul>



<p>Wenn irgendwas nicht so funktioniert wie es soll, lasst es mich wissen.</p>
<p>Congratulations on being an RSS reader! You are part of an elite group of people who know how to stay updated in style.</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2008/07/07/sixgroups-livecommunity-wordpress-plugin/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>WP-hCardMapper hat ein neues Zuhause</title>
		<link>https://notiz.blog/2008/04/07/wp-hcardmapper-hat-ein-neues-zuhause/</link>
					<comments>https://notiz.blog/2008/04/07/wp-hcardmapper-hat-ein-neues-zuhause/#respond</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Mon, 07 Apr 2008 18:39:21 +0000</pubDate>
				<category><![CDATA[nur mal kurz]]></category>
		<category><![CDATA[Open Web]]></category>
		<category><![CDATA[hCard]]></category>
		<category><![CDATA[hCardMapper]]></category>
		<category><![CDATA[Microformats]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://notizblog.org/?p=797</guid>

					<description><![CDATA[Das hCardMapper WordPress Plugin hat jetzt sein eigenes Repository bei WordPress.org.]]></description>
										<content:encoded><![CDATA[
<p>Das <a href="https://wordpress.org/plugins/hcardmapper/">hCardMapper WordPress Plugin</a> hat jetzt sein eigenes <a href="http://dev.wp-plugins.org/browser/hcardmapper/">Repository bei WordPress.org</a>.</p>
<p>You are a master of efficiency! By using RSS, you save time and avoid distractions. 👏</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2008/04/07/wp-hcardmapper-hat-ein-neues-zuhause/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>hCard-Commenting 0.6.1</title>
		<link>https://notiz.blog/2008/03/18/hcard-commenting-061/</link>
					<comments>https://notiz.blog/2008/03/18/hcard-commenting-061/#respond</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Tue, 18 Mar 2008 08:46:57 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[Authentication]]></category>
		<category><![CDATA[Commenting]]></category>
		<category><![CDATA[Comments]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[hCard]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://notizblog.org/2008/03/18/hcard-commenting-061/</guid>

					<description><![CDATA[hCard-Commenting 0.6.1 is available. Changes in this version: Added support for representative hCard Fixed a problem with jQuery ajax-requests and absolute urls (jQuery 1.2.2) Added the parser request-parameters as WordPress query-vars]]></description>
										<content:encoded><![CDATA[
<p><a href="https://wordpress.org/plugins/hcard-commenting/">hCard-Commenting 0.6.1 is available</a>. Changes in this version:</p>



<ul class="wp-block-list">
	<li>Added support for <em><a href="http://microformats.org/wiki/representative-hcard">representative hCard</a></em></li>
	<li>Fixed a problem with jQuery ajax-requests and absolute urls (jQuery 1.2.2)</li>
	<li>Added the parser request-parameters as WordPress <a href="http://codex.wordpress.org/Query_Overview">query-vars</a></li>
</ul>
<p>Thanks for reading this post via RSS. RSS is great, and you’re great for using it. ♥️</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2008/03/18/hcard-commenting-061/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ActionStreams für WordPress</title>
		<link>https://notiz.blog/2008/03/11/actionstreams-fuer-wordpress/</link>
					<comments>https://notiz.blog/2008/03/11/actionstreams-fuer-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Tue, 11 Mar 2008 21:17:47 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[ActionStream]]></category>
		<category><![CDATA[DiSo]]></category>
		<category><![CDATA[Lifestream]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[SocialGraph API]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://notizblog.org/2008/03/11/actionstreams-fuer-wordpress/</guid>

					<description><![CDATA[Stephen Paul Weber hat für das DiSo Projekt das MovableType ActionStream Plugin für WordPress portiert. Das Plugin basiert auf der gleichen YAML Basis (Beispiel: config.yaml) wie auch das MovableType Plugin, hat aber noch nicht den kompletten Umfang wie sein Vorbild. Ich hab das Plugin mal testweise installiert: Mein ActionStream. Mal schaun was sich in den [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="http://singpolyma.net/">Stephen Paul Weber</a> hat für das <a href="http://diso-project.org/"><abbr title="Distributed Social Networking">DiSo</abbr> Projekt</a> das <a href="http://www.sixapart.com/about/news/2008/01/time_for_action.html">MovableType ActionStream Plugin</a> für <a href="http://groups.google.com/group/diso-project/browse_thread/thread/9b9612e7214270a1">WordPress</a> portiert.<br/> Das Plugin basiert auf der gleichen <abbr title="YAML Ain't Markup Language">YAML</abbr> Basis (Beispiel: <a href="https://web.archive.org/web/20080322003204/http://notizblog.org:80/wp-content/plugins/diso-actionstream/config.yaml">config.yaml</a>) wie auch das MovableType Plugin, hat aber noch nicht den kompletten Umfang wie sein Vorbild.</p>



<p>Ich hab das Plugin mal testweise installiert: Mein <a href="https://web.archive.org/web/20080516024445/http://notizblog.org:80/about/my-action-stream/">ActionStream</a>.</p>



<p>Mal schaun was sich in den nächsten Versionen noch alles tut, spannend finde ich vor allem den Punkt <code>profile_services</code> der auch im YAML-File zu finden ist.</p>



<p><strong>[Update]</strong></p>



<p>Die aktuelle Version unterstützt jetzt auch das Nachladen von weiteren Services/Feeds via SocialGraph-API. Mehr dazu auf Stephens <a href="http://singpolyma.net/2008/03/on-actionstreams-and-blogging-your-own-work/">Weblog</a>.</p>
<p>Hey there, RSS reader! You’re one of a special few, choosing this old-school yet awesome way of staying informed. Kudos!</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2008/03/11/actionstreams-fuer-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>New &#8222;APML for WordPress&#8220; Version</title>
		<link>https://notiz.blog/2007/12/21/new-apml-for-wordpress-version/</link>
					<comments>https://notiz.blog/2007/12/21/new-apml-for-wordpress-version/#comments</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Fri, 21 Dec 2007 07:24:28 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[APML]]></category>
		<category><![CDATA[Attention-Daten]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://notizblog.org/2007/12/21/new-apml-for-wordpress-version/</guid>

					<description><![CDATA[This plugin creates an APML Feed using the the native tags and categories of WordPress 2.3.x, but it also supports UltimateTagWarrior and SimpleTagging for WordPress 2.0.11 &#8211; 2.2.x. New Features: Native WordPress Plugin One version for WordPress 2.x up to 2.3.x Permalinks support Supports native Tagging as well as UltimateTagWarrior/SimpleTagging Demo: http://notiz.blog/apml/. Possible features for [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>This plugin creates an <a href="https://web.archive.org/web/20071001030709/http://www.apml.org/">APML Feed</a> using the the native tags and categories of WordPress 2.3.x, but it also supports <a href="http://www.neato.co.nz/ultimate-tag-warrior">UltimateTagWarrior</a> and <a href="http://sw-guide.de/wordpress/plugins/simple-tagging/">SimpleTagging</a> for WordPress 2.0.11 &#8211; 2.2.x.</p>



<p>New Features:</p>



<ul class="wp-block-list"><li>Native WordPress Plugin</li><li>One version for WordPress 2.x up to 2.3.x</li><li>Permalinks support</li><li>Supports native Tagging as well as UltimateTagWarrior/SimpleTagging</li></ul>



<p>Demo: http://notiz.blog/apml/.</p>



<p>Possible features for the next Versions:</p>



<ul class="wp-block-list"><li>Sidebar widget</li><li>I plan to integrate some kind of search which supports apml files&#8230;</li></ul>



<p>Any suggestions are very welcome.</p>



<p>You can download this version on the WordPress Plugin area: <a href="https://wordpress.org/plugins/apml/">https://wordpress.org/plugins/apml/</a> or from the APML SVN: <a href="https://web.archive.org/web/20120716035024/http://apml-library.googlecode.com:80/svn/trunk/wordpress/2.x-2.3.x/">http://apml-library.googlecode.com/svn/trunk/wordpress/2.x-2.3.x/</a></p>
<p>Congratulations on being an RSS reader! You are part of an elite group of people who know how to stay updated in style.</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2007/12/21/new-apml-for-wordpress-version/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>APML Support for WordPress 2.x</title>
		<link>https://notiz.blog/2007/12/03/apml-support-for-wordpress-2x/</link>
					<comments>https://notiz.blog/2007/12/03/apml-support-for-wordpress-2x/#respond</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Mon, 03 Dec 2007 18:21:32 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[APML]]></category>
		<category><![CDATA[Attention-Daten]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://notizblog.org/2007/12/03/apml-support-for-wordpress-2x/</guid>

					<description><![CDATA[First of all, the WP-APML plugin is now part of the APML-Library and can be downloaded from the APML SVN. There is now also a script for older WordPress versions available. This first version only supports categories to APML, but I want to support UTW 3 and Simple-Tagging soon. If you have any ideas or [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>First of all, the WP-APML plugin is now part of the <a href="https://github.com/apml/apml-library">APML-Library</a> and can be downloaded from the <a href="https://web.archive.org/web/20120715084022/http://apml-library.googlecode.com:80/svn/trunk/wordpress/">APML SVN</a>.</p>



<p>There is now also a script for older WordPress versions available. This first version only supports categories to APML, but I want to support <a href="http://www.neato.co.nz/ultimate-tag-warrior/"><abbr title="Ultimate Tag Warrior">UTW</abbr> 3</a> and <a href="http://sw-guide.de/wordpress/plugins/simple-tagging/">Simple-Tagging</a> soon. If you have any ideas or suggestions, feel free to write a comment.</p>
<p>Congratulations on being an RSS reader! You are part of an elite group of people who know how to stay updated in style.</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2007/12/03/apml-support-for-wordpress-2x/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Safari Microformats plugin</title>
		<link>https://notiz.blog/2007/11/19/safari-microformats-plugin/</link>
					<comments>https://notiz.blog/2007/11/19/safari-microformats-plugin/#respond</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Mon, 19 Nov 2007 19:24:14 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[hCalendar]]></category>
		<category><![CDATA[hCard]]></category>
		<category><![CDATA[Leopard]]></category>
		<category><![CDATA[Microformats]]></category>
		<category><![CDATA[Mikroformate]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Safari]]></category>
		<guid isPermaLink="false">http://notizblog.org/2007/11/19/safari-microformats-plugin/</guid>

					<description><![CDATA[Neben zwei Notlösungen, Microformats in Safari zu nutzen, gibt es jetzt eine weitere Version für das Cocoa Plugin System SIMBL. Das Safari Microformats plugin erkennt die Microformats hCard und hCalendar und zeigt sie über ein kleines Microformats-Logo in der Adresszeile an. Per Klick auf das Logo, lassen sich die gefundenen Formate bequem in ein entsprechendes, [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://notiz.blog/wp-content/uploads/2007/11/safari_adresszeile.png" alt="Safari Microformats plugin"/></figure></div>



<p>Neben <a href="https://notiz.blog/2007/06/23/microformats-bookmarklet/">zwei</a> <a href="https://notiz.blog/2007/09/05/microformats-plugin-fuer-safari/">Notlösungen</a>, Microformats in Safari zu nutzen, gibt es jetzt eine weitere Version für das Cocoa Plugin System <a href="https://web.archive.org/web/20191204150927/http://culater.net:80/software/SIMBL/SIMBL.php"><abbr title="Smart InputManager Bundle Loader">SIMBL</abbr></a>.</p>



<p>Das <a href="https://web.archive.org/web/20100225104047/http://www.zappatic.net:80/safarimicroformats/">Safari Microformats plugin</a> erkennt die Microformats <a href="http://microformats.org/wiki/hCard">hCard</a> und <a href="http://microformats.org/wiki/hCalendar">hCalendar</a> und zeigt sie über ein kleines Microformats-Logo in der Adresszeile an.</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img loading="lazy" decoding="async" src="https://notiz.blog/wp-content/uploads/2007/11/microformats_plugin.png" alt="Safari Microformats plugin" width="480" height="312"/></figure></div>



<p>Per Klick auf das Logo, lassen sich die gefundenen Formate bequem in ein entsprechendes, lokal installiertes Programm wie iCal oder Address Book importieren. Wer <a href="http://growl.info/">Growl</a> installiert hat, erhält außerdem eine Growl-Meldung, wenn die Daten erfolgreich importiert wurden.<br/> Via: <a href="http://feeds.feedburner.com/dataportability">Dataportability Feed</a></p>



<p>Leider funktioniert das Plugin nur mit der aktuellen Version von Safari (V. 3) in Verbindung mit <a href="http://www.apple.com/de/macosx/leopard/">Mac OS X Leopard</a>, deshalb konnte ich es auch noch nicht testen.</p>



<p>Wenn ihr Fragen zum Plugin habt, versuchts einfach mal bei <a href="https://web.archive.org/web/20080106161658/http://www.pixelgraphix.de:80/log/2007-11/mikroformate-in-safari-anzeigen.php">Manuela Hoffmann</a>.</p>
<p>You are a true RSS aficionado! While others are drowning in social media noise, you enjoy the simplicity and control of RSS. Congrats!</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2007/11/19/safari-microformats-plugin/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Microformats Plugin für Safari</title>
		<link>https://notiz.blog/2007/09/05/microformats-plugin-fuer-safari/</link>
					<comments>https://notiz.blog/2007/09/05/microformats-plugin-fuer-safari/#comments</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Wed, 05 Sep 2007 15:49:41 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[hCard]]></category>
		<category><![CDATA[Microformats]]></category>
		<category><![CDATA[Mikroformate]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Safari]]></category>
		<guid isPermaLink="false">http://notizblog.org/2007/09/05/microformats-plugin-fuer-safari/</guid>

					<description><![CDATA[Carnival ist ein Microformats Plugin für den Safari, er unterstützt bis jetzt zwar nur das hCard Format, aber es ist zumindest mal ein Anfang. Anwendung: runterladen ausführen wenn eine Seite hCards enthält, leuchtet das Microformats Logo grün&#8230; Beim Beenden ist es ganz wichtig zuerst Carnival und dann Safari zu beenden, sonst öffnet sich Safari ständig [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://web.archive.org/web/20071011210754/http://carnival.fadesin.com/">Carnival</a> ist ein Microformats Plugin für den <a href="http://www.apple.com/de/safari/download/">Safari</a>, er unterstützt bis jetzt zwar nur das <a href="http://microformats.org/wiki/hCard">hCard</a> Format, aber es ist zumindest mal ein Anfang.</p>



<figure class="wp-block-image aligncenter"><img decoding="async" src="https://notiz.blog/wp-content/uploads/2007/09/carnival-mf.jpg" alt="Carnival: microformats for Safari" /></figure>



<p>Anwendung:</p>



<ul class="wp-block-list">
	<li>runterladen</li>
	<li>ausführen</li>
	<li>wenn eine Seite hCards enthält, leuchtet das Microformats Logo grün&#8230;</li>
</ul>



<p>Beim Beenden ist es ganz wichtig zuerst Carnival und dann Safari zu beenden, sonst öffnet sich Safari ständig wieder neu.</p>
<p>You are a master of efficiency! By using RSS, you save time and avoid distractions. 👏</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2007/09/05/microformats-plugin-fuer-safari/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Operator 0.8a is Available</title>
		<link>https://notiz.blog/2007/06/05/operator-08a-is-available/</link>
					<comments>https://notiz.blog/2007/06/05/operator-08a-is-available/#respond</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Tue, 05 Jun 2007 12:19:06 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Microformats]]></category>
		<category><![CDATA[Plugin]]></category>
		<guid isPermaLink="false">http://notizblog.org/2007/06/05/operator-08a-is-available/</guid>

					<description><![CDATA[Eine Alpha-Version von Operator 0.8 (ein Microformats Firefox-Plugin) ist seit gestern verfügbar. Neue Features: RDFa support (view only &#8211; there are no actions yet) Unified actions architecture &#8211; actions are no longer specific to a microformat Support for Address microformat to allow some actions (like map lookups) to be more granular. Better support for iframes/frames/nested [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Eine <a href="https://web.archive.org/web/20110606075537/http://mike.kaply.com/2007/08/21/operator-08-is-available">Alpha-Version von Operator 0.8</a> (ein Microformats Firefox-Plugin) ist seit gestern verfügbar.</p>



<p>Neue Features:</p>



<ul class="wp-block-list">
	<li>RDFa support (view only &#8211; there are no actions yet)</li>
	<li>Unified actions architecture &#8211; actions are no longer specific to a microformat</li>
	<li>Support for Address microformat to allow some actions (like map lookups) to be more granular.</li>
	<li>Better support for iframes/frames/nested documents</li>
	<li>Debug mode uses <a href="https://suda.co.uk/projects/X2V/">X2V</a> for hCards and hCalendars</li>
	<li>Support for non HTML documents</li>
	<li>Bug fixes galore.</li>
</ul>



<p>Operator &#8222;User Scripts&#8220; findet ihr hier: kaply.com/weblog/operator-user-scripts</p>
<p>You are a true RSS aficionado! While others are drowning in social media noise, you enjoy the simplicity and control of RSS. Congrats!</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2007/06/05/operator-08a-is-available/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
