<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10romanianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom">

	<title type="text">scribu</title>
	<link href="http://scribu.net" />
	
	<updated>2013-05-19T21:32:11+03:00</updated>
	<id>http://scribu.net</id>
	<author>
		<name>scribu</name>
		<email>mail@scribu.net</email>
	</author>

	
	<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/scribu" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="scribu" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><subtitle type="html">propria subcultura</subtitle><logo>http://scribu.net/favicon.ico</logo><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">scribu</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fscribu" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fscribu" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/scribu" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fscribu" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fscribu" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fscribu" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.addtoany.com/?linkname=scribu&amp;linkurl=http%3A%2F%2Ffeeds.feedburner.com%2Fscribu&amp;type=feed" src="http://www.addtoany.com/addfr-b.gif">Add to Any Feed Reader</feedburner:feedFlare><entry>
		<id>http://scribu.net/wordpress/posts-to-posts/version-1.6</id>
		<link type="text/html" rel="alternate" href="http://scribu.net/wordpress/posts-to-posts/version-1-6.html" />
		<title>Posts 2 Posts: Version 1.6</title>
		<updated>2013-05-10T00:00:00+03:00</updated>
		<author>
			<name>scribu</name>
			<uri>http://scribu.net</uri>
		</author>
		<content type="html">&lt;p&gt;There were some &lt;a href="http://wordpress.org/extend/plugins/posts-to-posts/changelog/"&gt;improvements&lt;/a&gt; commited to the development version of the plugin for a while and I thought I’d do a quick release, to get them in the hands of users.&lt;/p&gt;

&lt;p&gt;With version 1.6, P2P development will effectively be entering &lt;em&gt;hibernation mode&lt;/em&gt;. I won’t be working on any new features or bug fixes, since the plugin already works well enough on the single site where I use it. Also, I won’t be answering support questions anymore; sorry.&lt;/p&gt;

&lt;p&gt;Of course, I’d be happy to review and merge &lt;a href="https://github.com/scribu/wp-posts-to-posts/"&gt;pull requests&lt;/a&gt; that people open and still hope that I’ll eventually be able to &lt;a href="http://scribu.net/wordpress/plugin-help-wanted.html"&gt;hand it off&lt;/a&gt; to someone else.&lt;/p&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/scribu?a=wO8_xOTiScE:hxksQ1SSv2I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=wO8_xOTiScE:hxksQ1SSv2I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=wO8_xOTiScE:hxksQ1SSv2I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=wO8_xOTiScE:hxksQ1SSv2I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=wO8_xOTiScE:hxksQ1SSv2I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=wO8_xOTiScE:hxksQ1SSv2I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/scribu/~4/wO8_xOTiScE" height="1" width="1"/&gt;</content>
	</entry>
	
	<entry>
		<id>http://scribu.net/blog/ruby-equivalents-to-php-foreach</id>
		<link type="text/html" rel="alternate" href="http://scribu.net/blog/ruby-equivalents-to-php-foreach.html" />
		<title>Ruby equivalents to PHP&amp;#8217;s foreach</title>
		<updated>2013-05-07T00:00:00+03:00</updated>
		<author>
			<name>scribu</name>
			<uri>http://scribu.net</uri>
		</author>
		<content type="html">&lt;p&gt;In PHP, array keys can be either numbers or strings, whereas in Ruby associative arrays are a separate data type, called a hash.&lt;/p&gt;

&lt;p&gt;Here’s a cheatsheet for various &lt;code&gt;foreach&lt;/code&gt; variants, translated into idiomatic Ruby:&lt;/p&gt;

&lt;h3 id="looping-over-a-numeric-array-php"&gt;Looping over a numeric array (PHP)&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;$items = array( 'orange', 'pear', 'banana' );

# without indexes
foreach ( $items as $item ) {
    echo $item;
}

# with indexes
foreach ( $items as $i =&amp;gt; $item ) {
    echo $i, $item;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="looping-over-an-array-ruby"&gt;Looping over an array (Ruby)&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;items = ['orange', 'pear', 'banana']

# without indexes
items.each do |item|
    puts item
end

# with indexes
items.each_with_index do |item, i|
    puts i, item
end
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="looping-over-an-associative-array-php"&gt;Looping over an associative array (PHP)&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;$continents = array(
    'africa' =&amp;gt; 'Africa',
    'europe' =&amp;gt; 'Europe',
    'north-america' =&amp;gt; 'North America'
);

# without keys
foreach ( $continents as $continent ) {
    echo $continent;
}

# with keys
foreach ( $continents as $slug =&amp;gt; $title ) {
    echo $slug, $title;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="looping-over-a-hash-ruby"&gt;Looping over a hash (Ruby)&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;continents = {
    'africa' =&amp;gt; 'Africa',
    'europe' =&amp;gt; 'Europe',
    'north-america' =&amp;gt; 'North America'
}

# without keys
continents.each do |_, continent|
    puts continent
end

# with keys
continents.each do |slug, title|
    puts slug, title
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Important note: Unlike in PHP associative arrays, elements inside a Ruby hash are not ordered.&lt;/p&gt;

&lt;p&gt;If you’re having a sense of déjà vu, it’s probably because I wrote a &lt;a href="http://scribu.net/blog/python-equivalents-to-phps-foreach.html"&gt;similar post&lt;/a&gt; a while ago, but for Python.&lt;/p&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/scribu?a=cGws9u5qrLk:IcWkiJrfYIc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=cGws9u5qrLk:IcWkiJrfYIc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=cGws9u5qrLk:IcWkiJrfYIc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=cGws9u5qrLk:IcWkiJrfYIc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=cGws9u5qrLk:IcWkiJrfYIc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=cGws9u5qrLk:IcWkiJrfYIc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/scribu/~4/cGws9u5qrLk" height="1" width="1"/&gt;</content>
	</entry>
	
	<entry>
		<id>http://scribu.net/blog/open-source-pragmatism</id>
		<link type="text/html" rel="alternate" href="http://scribu.net/blog/open-source-pragmatism.html" />
		<title>On Being An Open-Source Pragmatist</title>
		<updated>2013-04-13T00:00:00+03:00</updated>
		<author>
			<name>scribu</name>
			<uri>http://scribu.net</uri>
		</author>
		<content type="html">&lt;p&gt;To pragmatists the GPL is important as a tool, rather than as an end in itself. Its main value is not as a weapon against `hoarding’, but as a tool for encouraging software sharing and the growth of &lt;a href="http://www.tuxedo.org/~esr/writings/cathedral-bazaar"&gt;bazaar-mode&lt;/a&gt; development communities. The pragmatist values having good tools and toys more than he dislikes commercialism, and may use high-quality commercial software without ideological discomfort. At the same time, his open-source experience has taught him standards of technical quality that very little closed software can meet.&lt;/p&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/scribu?a=fqFa5YoytxY:j0XjJ-KOXD8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=fqFa5YoytxY:j0XjJ-KOXD8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=fqFa5YoytxY:j0XjJ-KOXD8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=fqFa5YoytxY:j0XjJ-KOXD8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=fqFa5YoytxY:j0XjJ-KOXD8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=fqFa5YoytxY:j0XjJ-KOXD8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/scribu/~4/fqFa5YoytxY" height="1" width="1"/&gt;</content>
	</entry>
	
	<entry>
		<id>http://scribu.net/wordpress/on-plugin-support</id>
		<link type="text/html" rel="alternate" href="http://scribu.net/wordpress/on-plugin-support.html" />
		<title>On Plugin Support</title>
		<updated>2013-04-10T00:00:00+03:00</updated>
		<author>
			<name>scribu</name>
			<uri>http://scribu.net</uri>
		</author>
		<content type="html">&lt;p&gt;When I started developing WordPress plugins, most people asking questions in the support forums seemed like hobbyists building sites for themselves. Since then, I’ve noticed two trends that irk me.&lt;/p&gt;

&lt;h3 id="freelancers"&gt;Freelancers&lt;/h3&gt;

&lt;p&gt;Nowadays, there seem to be a lot more people that get paid to build WordPress sites for others. There’s nothing wrong with that, until you ask me to do your work for free.&lt;/p&gt;

&lt;p&gt;I’m not talking about the “Hey, this feature doesn’t work.” type of requests; I’m talking about people dumping some code and asking how to make it do a very specific thing that their client requested.&lt;/p&gt;

&lt;p&gt;If you are getting paid to do something, you should either already know how to do it, or spend the time needed to learn how to do it, instead of relying on the kindness of &lt;s&gt;suckers&lt;/s&gt; strangers.&lt;/p&gt;

&lt;h3 id="commercial-software"&gt;Commercial software&lt;/h3&gt;

&lt;p&gt;Commercial themes are booming and paid plugins are also becoming common. Again, there’s nothing wrong with that, but don’t expect much sympathy from me when the premium theme you’re using conflicts with my plugin. I know my code is solid, so why should I spend my free time debugging someone else’s product that they charge money to support?&lt;/p&gt;

&lt;p&gt;Post in their support forums; if it turns out there’s an issue with my plugin, they should be competent enough to fix it and send a patch, or at least explain it to you. &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Whenever money enters the picture, the &lt;a href="http://en.wikipedia.org/wiki/Gift_economy#Open-source_software"&gt;gift economy&lt;/a&gt; goes out the window; you can’t have it both ways.&lt;/p&gt;

&lt;div class="footnotes"&gt;
  &lt;ol&gt;
    &lt;li id="fn:1"&gt;
      &lt;p&gt;This would be the part where I suggest you hire me, but I’m currently not taking on WordPress consultancy work. Sorry.&lt;a href="#fnref:1" class="reversefootnote"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/scribu?a=RQu69S-W6LI:a7NEMEw40AM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=RQu69S-W6LI:a7NEMEw40AM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=RQu69S-W6LI:a7NEMEw40AM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=RQu69S-W6LI:a7NEMEw40AM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=RQu69S-W6LI:a7NEMEw40AM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=RQu69S-W6LI:a7NEMEw40AM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/scribu/~4/RQu69S-W6LI" height="1" width="1"/&gt;</content>
	</entry>
	
	<entry>
		<id>http://scribu.net/blog/yay-data-portability</id>
		<link type="text/html" rel="alternate" href="http://scribu.net/blog/yay-data-portability.html" />
		<title>Yay Data Portability</title>
		<updated>2013-04-01T00:00:00+03:00</updated>
		<author>
			<name>scribu</name>
			<uri>http://scribu.net</uri>
		</author>
		<content type="html">&lt;p&gt;&lt;img width="137" height="150" class="alignright" src="/assets/img/data-liberation.png" /&gt;&lt;/p&gt;

&lt;p&gt;In the following post, I will attempt to chronicle how I came to believe that having your content in a portable format is more valuable than having an open source project to manipulate that content.&lt;/p&gt;

&lt;p&gt;I accidentally jump-started my programming career by working on an open-source project (WordPress) and I use many other open-source applications and libraries every day, so I certainly see the value in that, as a developer.&lt;/p&gt;

&lt;p&gt;As a user, I care more about my data. For example, if LibreOffice goes bust, I’m not going to start working on my own document editor, but I would definitely like to be able to open my documents with some other tool.&lt;/p&gt;

&lt;p&gt;Two weeks ago, after a kernel upgrade, Ubuntu started crashing on my Macbook Air. After a few days of trouble, I decided that this would be a good opportunity to give OS X an honest try. I was using &lt;a href="http://projects.gnome.org/tomboy/"&gt;Tomboy&lt;/a&gt; before, on Ubuntu, to take notes. I had them backed up via Ubuntu One, so it was easy enough to compile Tomboy under OS X and copy over the data.&lt;/p&gt;

&lt;p&gt;Even if Tomboy or Ubuntu One didn’t work on OS X for whatever reason, I could still access my notes, since they were stored as simple XML files.&lt;/p&gt;

&lt;p&gt;By contrast, Mountain Lion’s Notes.app uses a &lt;a href="http://superuser.com/a/464688/33734"&gt;weird binary format&lt;/a&gt; and to get your notes out of it, you have to &lt;a href="http://superuser.com/a/486206/33734"&gt;go through Gmail and Mail.app&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In general, I think Apple is the worst offender when it comes to data portability. It’s aggressively trying to hide the filesystem from the user; in the name of simplicity and ubiquity, it shoves everything into iCloud, which I’m pretty sure won’t see major adoption from anything other than OS X or iOS apps, &lt;a href="http://arstechnica.com/apple/2013/03/frustrated-with-icloud-apples-developer-community-speaks-up-en-masse/"&gt;if that&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Google, with its &lt;a href="http://www.dataliberation.org/"&gt;Data Liberation Front&lt;/a&gt;, is on the opposite side of the spectrum. Immediately after the announcement that Google Reader would be discontinued, I was able to export my subscriptions and import them into a &lt;a href="http://scribu.net/blog/getting-the-tiny-tiny-rss-daemon-working.html"&gt;Tiny Tiny RSS instance&lt;/a&gt; on my own server.&lt;/p&gt;

&lt;p&gt;After a while, attracted by the shiny interface, I switched to Feedly, an ad-supported hosted service. While writing this post, I discovered that Feedly itself doesn’t have an option to export my list of feeds. If it doesn’t &lt;a href="http://feedly.uservoice.com/forums/192636-suggestions/suggestions/3744603-google-reader-an-option-to-export-ompl-data-we-ne"&gt;add one soon&lt;/a&gt;, I will just have to find some other service that will, before Google Reader shuts down and my feed list becomes a hostage in Feedly’s walled garden.&lt;/p&gt;

&lt;p&gt;Going forward, whenever I start using a new application or service, I will make sure there’s a sane exit strategy. I should be able to leave and take my data with me at any time, with no questions asked.&lt;/p&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/scribu?a=ZcMKXhNmA5w:amQeXQ2Rvvs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=ZcMKXhNmA5w:amQeXQ2Rvvs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=ZcMKXhNmA5w:amQeXQ2Rvvs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=ZcMKXhNmA5w:amQeXQ2Rvvs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=ZcMKXhNmA5w:amQeXQ2Rvvs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=ZcMKXhNmA5w:amQeXQ2Rvvs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/scribu/~4/ZcMKXhNmA5w" height="1" width="1"/&gt;</content>
	</entry>
	
	<entry>
		<id>http://scribu.net/blog/the-last-psychiatrist-on-college</id>
		<link type="text/html" rel="alternate" href="http://scribu.net/blog/the-last-psychiatrist-on-college.html" />
		<title>The Last Psychiastrist On College</title>
		<updated>2013-03-26T00:00:00+02:00</updated>
		<author>
			<name>scribu</name>
			<uri>http://scribu.net</uri>
		</author>
		<content type="html">&lt;p&gt;“I’m not a vicious capitalist, I don’t always have to get paid for what I do. I like to participate in the public debate.”  I. I. I. Stop it, look around! This isn’t charity, the Times is a billion dollar corporation and Princeton is in actuality a gigantic hedge fund – why are you giving them your work for free? “That’s the system, I can’t change it.” Exactly.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/scribu?a=9yJoO1-FRCw:j0pTRykEtLg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=9yJoO1-FRCw:j0pTRykEtLg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=9yJoO1-FRCw:j0pTRykEtLg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=9yJoO1-FRCw:j0pTRykEtLg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=9yJoO1-FRCw:j0pTRykEtLg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=9yJoO1-FRCw:j0pTRykEtLg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/scribu/~4/9yJoO1-FRCw" height="1" width="1"/&gt;</content>
	</entry>
	
	<entry>
		<id>http://scribu.net/wordpress/plugin-help-wanted</id>
		<link type="text/html" rel="alternate" href="http://scribu.net/wordpress/plugin-help-wanted.html" />
		<title>Plugin Help Wanted</title>
		<updated>2013-03-23T00:00:00+02:00</updated>
		<author>
			<name>scribu</name>
			<uri>http://scribu.net</uri>
		</author>
		<content type="html">&lt;p&gt;I have released or adopted a &lt;a href="http://profiles.wordpress.org/scribu/"&gt;bunch of plugins&lt;/a&gt; over the years. Some of them are obsolete, while some are still quite popular.&lt;/p&gt;

&lt;p&gt;I’ve made a &lt;a href="https://docs.google.com/spreadsheet/ccc?key=0AmqaJq-M5V6pdHptRTAxNmtpanZ1VHoxdERkZENaQUE&amp;amp;usp=sharing"&gt;spreadsheet&lt;/a&gt; with the list of plugins, which I’ll update as new maintainers are found.&lt;/p&gt;

&lt;p&gt;For each plugin in that spreadsheet:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;if you’re willing and able to answer support questions about it on a consistent basis, let me know; I’ll add you to the team.&lt;/li&gt;
  &lt;li&gt;if you’re a developer and would be interested in maintaining it, let me know and read on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each plugin has its own &lt;a href="https://github.com/scribu/"&gt;Github&lt;/a&gt; repository, which is then &lt;a href="http://scribu.net/blog/deploying-from-git-to-svn.html"&gt;deployed to wordpress.org&lt;/a&gt; via a script. I can continue taking care of deployments, if you don’t want to or we’ll figure something out.&lt;/p&gt;

&lt;p&gt;The more complex plugins use &lt;a href="https://github.com/scribu/wp-scb-framework"&gt;scbFramework&lt;/a&gt;, which is pretty stable.&lt;/p&gt;

&lt;p&gt;To signal your interest, either leave a comment here or send an email to &lt;a href="&amp;#109;&amp;#097;&amp;#105;&amp;#108;&amp;#116;&amp;#111;:&amp;#109;&amp;#097;&amp;#105;&amp;#108;&amp;#064;&amp;#115;&amp;#099;&amp;#114;&amp;#105;&amp;#098;&amp;#117;&amp;#046;&amp;#110;&amp;#101;&amp;#116;"&gt;&amp;#109;&amp;#097;&amp;#105;&amp;#108;&amp;#064;&amp;#115;&amp;#099;&amp;#114;&amp;#105;&amp;#098;&amp;#117;&amp;#046;&amp;#110;&amp;#101;&amp;#116;&lt;/a&gt;, mentioning your wordpress.org username (and github account, if you have one).&lt;/p&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/scribu?a=bdSPB_x0EvQ:vtpQjo5gRFk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=bdSPB_x0EvQ:vtpQjo5gRFk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=bdSPB_x0EvQ:vtpQjo5gRFk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=bdSPB_x0EvQ:vtpQjo5gRFk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=bdSPB_x0EvQ:vtpQjo5gRFk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=bdSPB_x0EvQ:vtpQjo5gRFk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/scribu/~4/bdSPB_x0EvQ" height="1" width="1"/&gt;</content>
	</entry>
	
	<entry>
		<id>http://scribu.net/blog/taking-a-stab-at-go</id>
		<link type="text/html" rel="alternate" href="http://scribu.net/blog/taking-a-stab-at-go.html" />
		<title>Taking A Stab At Go</title>
		<updated>2013-03-19T00:00:00+02:00</updated>
		<author>
			<name>scribu</name>
			<uri>http://scribu.net</uri>
		</author>
		<content type="html">&lt;p&gt;&lt;img alt="gopher" class="alignright" src="/files/gopher.png" /&gt;&lt;/p&gt;

&lt;p&gt;I’ve had this idea for a fun weekend project for a while: generate the &lt;a href="http://wp-cli.org"&gt;WP-CLI&lt;/a&gt; manual concurrently, instead of one page at a time.&lt;/p&gt;

&lt;p&gt;All I needed was the right programming language &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt;. Since I’ve heard good things about &lt;a href="http://golang.org"&gt;Go&lt;/a&gt;, I decided to give it a try. I took the &lt;a href="http://tour.golang.org"&gt;Go Tour&lt;/a&gt; and then just started hacking.&lt;/p&gt;

&lt;p&gt;A WP-CLI manual page is generated by:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;collecting data from inline PHP docComents&lt;/li&gt;
  &lt;li&gt;reading a markdown file with additional documentation&lt;/li&gt;
  &lt;li&gt;running everything through &lt;code&gt;ronn&lt;/code&gt; to generate the final &lt;code&gt;ROFF&lt;/code&gt; output&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At first, I tried to do all these steps in Go, but soon discovered that it would duplicate too much code. Eventually, I settled on just letting WP-CLI generate each page, using the existing logic.&lt;/p&gt;

&lt;p&gt;So, I ended up with less than 100 lines of Go code:&lt;/p&gt;

&lt;script src="https://gist.github.com/scribu/5197646.js"&gt;&lt;/script&gt;

&lt;p&gt;I’ve tried on several occasions to use threads in various programming languages, but never felt I really mastered them. By contrast, I was able to grok goroutines and channels in a weekend; they just made sense.&lt;/p&gt;

&lt;p&gt;In general, the Go documentation is the best I’ve seen so far. For instance, when you look up a function from the standard library, besides a helpful example, there’s also a link to its source code.&lt;/p&gt;

&lt;p&gt;I also like &lt;code&gt;go fmt&lt;/code&gt;, which takes care of formatting your code; no more worrying about spaces vs. tabs etc.&lt;/p&gt;

&lt;p&gt;Even if it yielded a modest 23% speedup (from 17 seconds down to 13 seconds to compile all the pages), it was a worthwhile experiment.&lt;/p&gt;

&lt;div class="footnotes"&gt;
  &lt;ol&gt;
    &lt;li id="fn:1"&gt;
      &lt;p&gt;PHP doesn’t have &lt;em&gt;any&lt;/em&gt; support for concurrency.&lt;a href="#fnref:1" class="reversefootnote"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/scribu?a=YwTj8SGOO9g:GClze_mtJO4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=YwTj8SGOO9g:GClze_mtJO4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=YwTj8SGOO9g:GClze_mtJO4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=YwTj8SGOO9g:GClze_mtJO4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=YwTj8SGOO9g:GClze_mtJO4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=YwTj8SGOO9g:GClze_mtJO4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/scribu/~4/YwTj8SGOO9g" height="1" width="1"/&gt;</content>
	</entry>
	
	<entry>
		<id>http://scribu.net/blog/getting-the-tiny-tiny-rss-daemon-working</id>
		<link type="text/html" rel="alternate" href="http://scribu.net/blog/getting-the-tiny-tiny-rss-daemon-working.html" />
		<title>Getting The Tiny Tiny RSS Daemon Working</title>
		<updated>2013-03-14T00:00:00+02:00</updated>
		<author>
			<name>scribu</name>
			<uri>http://scribu.net</uri>
		</author>
		<content type="html">&lt;p&gt;As you probably know, Google Reader will be &lt;a href="http://googleblog.blogspot.ro/2013/03/a-second-spring-of-cleaning.html"&gt;shutting down&lt;/a&gt;, come July, 2013. Instead of looking for a different hosted service to migrate to, I thought it would be better to use a self-hosted solution. I picked a PHP application called &lt;a href="http://tt-rss.org/"&gt;Tiny Tiny RSS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After I set up a new subdomain and an nginx config file, the &lt;a href="http://tt-rss.org/redmine/projects/tt-rss/wiki/InstallationNotes"&gt;installation instructions&lt;/a&gt; were pretty easy to follow, except the part about setting up the script responsible for updating the feeds.&lt;/p&gt;

&lt;h3 id="starting-the-daemon"&gt;Starting The Daemon&lt;/h3&gt;

&lt;p&gt;Since I’m hosting this on a VPS, I have the possibility of running the updater as a daemon (a process that runs continually in the background). After a bit of googling and some trial and error, I came up with the following command to start it up:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo -u www-data nohup php ./update.php -daemon &amp;gt; /dev/null &amp;amp;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;sudo -u www-data&lt;/code&gt; part makes it so that the process is owned by the &lt;code&gt;www-data&lt;/code&gt; user, instead of my user or root.&lt;/p&gt;

&lt;p&gt;By using &lt;code&gt;nohup&lt;/code&gt;, the process will continue to run even after I end the SSH session.&lt;/p&gt;

&lt;h3 id="stopping-the-daemon"&gt;Stopping The Daemon&lt;/h3&gt;

&lt;p&gt;If I ever want to terminate the daemon, I just need to find it’s process ID and send it the kill signal:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pgrep './update.php' | xargs kill -9
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Also, it seems I need to delete the &lt;code&gt;./lock/update_daemon.lock&lt;/code&gt; file, to avoid getting a nag in the UI.&lt;/p&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/scribu?a=ugtBGzRiJ_Y:UxT8Odj2cZw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=ugtBGzRiJ_Y:UxT8Odj2cZw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=ugtBGzRiJ_Y:UxT8Odj2cZw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=ugtBGzRiJ_Y:UxT8Odj2cZw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=ugtBGzRiJ_Y:UxT8Odj2cZw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=ugtBGzRiJ_Y:UxT8Odj2cZw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/scribu/~4/ugtBGzRiJ_Y" height="1" width="1"/&gt;</content>
	</entry>
	
	<entry>
		<id>http://scribu.net/blog/couch-potato-or-emotional-exercise</id>
		<link type="text/html" rel="alternate" href="http://scribu.net/blog/couch-potato-or-emotional-exercise.html" />
		<title>Being A Couch Potato Or Exercising Your Emotional Muscles?</title>
		<updated>2013-03-10T00:00:00+02:00</updated>
		<author>
			<name>scribu</name>
			<uri>http://scribu.net</uri>
		</author>
		<content type="html">&lt;p&gt;&lt;img src="/assets/img/amusing-to-death.jpg" height="100" class="alignright" /&gt;&lt;/p&gt;

&lt;p&gt;A while ago I read “Amusing Ourselves To Death”, by Neil Postman, who’s main premise is that television is responsible for the dumbing down of public discourse and for the decline of culture in general.&lt;/p&gt;

&lt;p&gt;Then I read “Everything Bad Is Good For You”, by Steven Johnson, who shows that people are objectively smarter today, on average, than they were in previous decades. He makes a convincing argument that the main cause is TV shows, video games and other forms of entertainment becoming more mentally engaging over time. He then explains what economic incentives drive this phenomenon.&lt;/p&gt;

&lt;p&gt;&lt;img src="/assets/img/everything-bad.jpg" height="100" class="alignright" /&gt;&lt;/p&gt;

&lt;p&gt;Another interesting insight was that the Internet has become the main medium through which people acquire factual information, allowing television to focus on what it does best, i.e. storytelling and conveying people’s characters.&lt;/p&gt;

&lt;p&gt;If you’re at all interested in the current media landscape, I highly recommend both books.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/scribu?a=dLrEiHZuEwU:Z7ifNnPVW-Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=dLrEiHZuEwU:Z7ifNnPVW-Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=dLrEiHZuEwU:Z7ifNnPVW-Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=dLrEiHZuEwU:Z7ifNnPVW-Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?i=dLrEiHZuEwU:Z7ifNnPVW-Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/scribu?a=dLrEiHZuEwU:Z7ifNnPVW-Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/scribu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/scribu/~4/dLrEiHZuEwU" height="1" width="1"/&gt;</content>
	</entry>
	

</feed>
