<?xml version="1.0" encoding="UTF-8"?><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/"
	>

<channel>
	<title>planetOzh</title>
	<atom:link href="https://planetozh.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://planetozh.com/blog</link>
	<description>Life, thoughts and code by Ozh</description>
	<lastBuildDate>Sun, 17 May 2026 18:17:54 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>YOURLS now speaks PostgreSQL</title>
		<link>https://planetozh.com/blog/2026/05/yourls-now-speaks-postgresql/?source=rss</link>
					<comments>https://planetozh.com/blog/2026/05/yourls-now-speaks-postgresql/#respond</comments>
		
		<dc:creator><![CDATA[Ozh]]></dc:creator>
		<pubDate>Sun, 17 May 2026 18:17:54 +0000</pubDate>
				<category><![CDATA[Published]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[YOURLS]]></category>
		<guid isPermaLink="false">https://planetozh.com/blog/?p=3921</guid>

					<description><![CDATA[YOURLS is my cherished project: I&#39;m proud of it, and I&#39;m also clear-eyed about its limitations. For instance, PostgreSQL support has been one of the frequently requested features for at least six years. There have been a few YOURLS PostgreSQL forks that tried to address this, but keeping a fork in sync is quite a task and they didn&#39;t keep…]]></description>
										<content:encoded><![CDATA[<p>YOURLS is my cherished project: I&#39;m proud of it, and I&#39;m also clear-eyed about its limitations. For instance, <a href="https://www.postgresql.org/">PostgreSQL</a> support has been one of the frequently requested features for at least six years. There have been a few YOURLS PostgreSQL forks that tried to address this, but keeping a fork in sync is quite a task and they didn&#39;t keep up with YOURLS (albeit rather modest) development pace. Today I&#39;m happy to say: <strong>the wait is over</strong>.</p>
<p><img decoding="async" src="https://planetozh.com/blog/wp-content/uploads/2026/05/592502543-96e844c8-100e-4b56-9cd7-e256d0d2d458-300x90.png" alt="" width="300" height="90" class="aligncenter size-medium wp-image-3924" srcset="https://planetozh.com/blog/wp-content/uploads/2026/05/592502543-96e844c8-100e-4b56-9cd7-e256d0d2d458-300x90.png 300w, https://planetozh.com/blog/wp-content/uploads/2026/05/592502543-96e844c8-100e-4b56-9cd7-e256d0d2d458-768x230.png 768w, https://planetozh.com/blog/wp-content/uploads/2026/05/592502543-96e844c8-100e-4b56-9cd7-e256d0d2d458.png 913w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<h2>PostgreSQL support via plugin</h2>
<p>PostgreSQL support comes as a <a href="https://github.com/ozh/yourls-postgresql/">drop-in plugin</a> rather than a core feature: we like to keep YOURLS core light and let people add features only if they need it. This plugin intercepts database queries at runtime and translates MySQL to PostgreSQL syntax on the fly &#8211; backtick quoting, <tt>AUTO_INCREMENT</tt> ? <tt>SERIAL</tt>, <tt>RAND()</tt> ? <tt>RANDOM()</tt>, and so on. Obviously this is all transparent to the user and the application.</p>
<h2>What will work, what won&#39;t</h2>
<p>Everything core does, <em>ie</em> shortening URLs, tracking clicks, letting you add or edit short URLs, will work. The vast majority of existing YOURLS plugins will work. The drop-in plugin sits at the <a href="https://github.com/YOURLS/YOURLS/blob/c3fc8e2370d240403c17c2e4a70e1e234759a5b3/includes/Config/Init.php#L148">database layer</a> and catches everything that flows through it.</p>
<p>To make sure everything core works perfectly, I&#39;ve made sure YOURLS passes all its unit tests <a href="https://github.com/ozh/yourls-postgresql/actions/runs/25998559751">with the PostgreSQL plugin activated</a>, under 3 latest versions of PostgreSQL and latest PHP. This will be easy to check with all future YOURLS releases.</p>
<p>The edge cases would be plugins that execute raw MySQL-flavored SQL directly, bypassing <a href="https://yourls.org/docs/development/database-queries#the-ydb-object">YOURLS&#39; own database methods</a>, won&#39;t be translated. I haven&#39;t encountered such plugin in the wild but if you have made custom query code, that would be something to fix.</p>
<h2>Requirements</h2>
<p>You&#39;ll need YOURLS 1.10.4, which is coming soon-<em>ish</em> or the current <a href="https://github.com/YOURLS/YOURLS/archive/refs/heads/master.zip">master</a> branch (which is always stable and passing all unit tests). Drop in the plugin, configure your PostgreSQL DSN, and you&#39;re good to go. There is even a migration script to transfer everything from MySQL (or MariaDB) to PostgreSQL.</p>
<p>If you&#39;ve been waiting for this &#8211; and I know some of you have been waiting for a long time &#8211; it&#39;s finally here :)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://planetozh.com/blog/2026/05/yourls-now-speaks-postgresql/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The most beautiful song known to man</title>
		<link>https://planetozh.com/blog/2026/05/the-most-beautiful-song-known-to-man/?source=rss</link>
					<comments>https://planetozh.com/blog/2026/05/the-most-beautiful-song-known-to-man/#respond</comments>
		
		<dc:creator><![CDATA[Ozh]]></dc:creator>
		<pubDate>Wed, 13 May 2026 18:30:21 +0000</pubDate>
				<category><![CDATA[Published]]></category>
		<category><![CDATA[Be'Lakor]]></category>
		<category><![CDATA[Music]]></category>
		<guid isPermaLink="false">https://planetozh.com/blog/?p=3917</guid>

					<description><![CDATA[I genuinely think this is the most beautiful song ever composed. Your typical Be&#39;Lakor song: enough parts and melodies to make 5 different songs, yet all united in one harmonious masterpiece. I *LOVE* Be&#39;Lakor.]]></description>
										<content:encoded><![CDATA[<p>I genuinely think this is the most beautiful song ever composed.</p>
<p><iframe title="Be&#039;lakor - Countless Skies" width="500" height="281" src="https://www.youtube.com/embed/WpnGs11vf-0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>Your typical Be&#39;Lakor song: enough parts and melodies to make 5 different songs, yet all united in one harmonious masterpiece. I *LOVE* Be&#39;Lakor.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://planetozh.com/blog/2026/05/the-most-beautiful-song-known-to-man/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Linux productivity</title>
		<link>https://planetozh.com/blog/2026/05/linux-productivity/?source=rss</link>
					<comments>https://planetozh.com/blog/2026/05/linux-productivity/#respond</comments>
		
		<dc:creator><![CDATA[Ozh]]></dc:creator>
		<pubDate>Tue, 05 May 2026 18:41:15 +0000</pubDate>
				<category><![CDATA[Published]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Shorties]]></category>
		<guid isPermaLink="false">https://planetozh.com/blog/?p=3901</guid>

					<description><![CDATA[Migrated to Linux and still under the process of recreating an enviro where I&#39;m as productive as I was on Windows. Almost there with Git. Still got to find a simple yet rather complete graphic editing tool to replace a SUPER old version of Paint Shop Pro. So far my go-to solution is photopea.com]]></description>
										<content:encoded><![CDATA[<p>Migrated to Linux and still under the process of recreating an enviro where I&#39;m as productive as I was on Windows. Almost there with Git. Still got to find a simple yet rather complete graphic editing tool to replace a SUPER old version of Paint Shop Pro. So far my go-to solution is <a href="https://photopea.com/">photopea.com</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://planetozh.com/blog/2026/05/linux-productivity/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Reboot</title>
		<link>https://planetozh.com/blog/2026/05/reboot/?source=rss</link>
					<comments>https://planetozh.com/blog/2026/05/reboot/#respond</comments>
		
		<dc:creator><![CDATA[Ozh]]></dc:creator>
		<pubDate>Sun, 03 May 2026 19:21:38 +0000</pubDate>
				<category><![CDATA[Published]]></category>
		<category><![CDATA[planetOzh]]></category>
		<category><![CDATA[Shorties]]></category>
		<guid isPermaLink="false">https://planetozh.com/blog/?p=3896</guid>

					<description><![CDATA[So, after a 10 year hiatus (ten years !!), I&#39;m rebooting this blog. New WP theme, no new topics except less (much less) WordPress. Cya soon :)]]></description>
										<content:encoded><![CDATA[<p>So, after a 10 year hiatus (<em>ten years !!</em>), I&#39;m rebooting this blog. New WP theme, no new topics except less (much less) WordPress. Cya soon :)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://planetozh.com/blog/2026/05/reboot/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WordCamp Paris slides: Unit Tests for WordPress plugins</title>
		<link>https://planetozh.com/blog/2015/01/wordcamp-paris-slides-unit-tests-for-wordpress-plugins/?source=rss</link>
					<comments>https://planetozh.com/blog/2015/01/wordcamp-paris-slides-unit-tests-for-wordpress-plugins/#comments</comments>
		
		<dc:creator><![CDATA[Ozh]]></dc:creator>
		<pubDate>Mon, 26 Jan 2015 15:01:09 +0000</pubDate>
				<category><![CDATA[Published]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[unit tests]]></category>
		<category><![CDATA[WordCamp]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://planetozh.com/blog/?p=3452</guid>

					<description><![CDATA[Last week-end I gave a talk at WordCamp Paris, about the exciting topic of Unit Tests for WordPress plugins (are you excited already?). I think I&#39;ll write a short blog post about it in the next few days ; I&#39;ll also write a series of post about unit testing, because that subject is so exciting :) In the meantime, here…]]></description>
										<content:encoded><![CDATA[<p>Last week-end I gave a talk at WordCamp Paris, about the exciting topic of Unit Tests for WordPress plugins (are you excited already?). I think I&#39;ll write a short blog post about it in the next few days ;  I&#39;ll also write a series of post about unit testing, because that subject is so exciting :)</p>
<p>In the meantime, here are my slides (in French) :</p>
<p>Plain old downloadable PDF: <a href="https://planetozh.com/blog/wp-content/uploads/2015/01/WordPress-Plugin-Unit-Tests.pdf">WordPress Plugin Unit Tests</a>, or <a href="http://www.slideshare.net/ozh/wordpress-plugin-unit-tests-fr-wordcamp-paris-2015">Slideshare</a> stuff below.</p>
<p>The demo plugin and all its tests are on Github: <a href="https://github.com/ozh/plugin-unit-test-demo">ozh/plugin-unit-test-demo</a>.</p>
<p><iframe title="WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)" src="https://www.slideshare.net/slideshow/embed_code/key/ALhcKqjOrkSfg7" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> </p>
<div style="margin-bottom:5px"> <strong> <a href="https://www.slideshare.net/ozh/wordpress-plugin-unit-tests-fr-wordcamp-paris-2015" title="WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)" target="_blank">WordPress Plugin Unit Tests (FR &#8211; WordCamp Paris 2015)</a> </strong> from <strong><a href="https://www.slideshare.net/ozh" target="_blank">Ozh </a></strong> </div>
]]></content:encoded>
					
					<wfw:commentRss>https://planetozh.com/blog/2015/01/wordcamp-paris-slides-unit-tests-for-wordpress-plugins/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Revisiting WordPress smilies in a pure CSS way</title>
		<link>https://planetozh.com/blog/2014/12/revisiting-wordpress-smilies-in-a-pure-css-way/?source=rss</link>
					<comments>https://planetozh.com/blog/2014/12/revisiting-wordpress-smilies-in-a-pure-css-way/#comments</comments>
		
		<dc:creator><![CDATA[Ozh]]></dc:creator>
		<pubDate>Sat, 20 Dec 2014 17:32:28 +0000</pubDate>
				<category><![CDATA[Published]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Smiley]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://planetozh.com/blog/?p=3439</guid>

					<description><![CDATA[Last night I was reading something interesting then stumbled, in the comments, on a WordPress smiley. Bleeeh. There&#39;s a reason one of the first things I do when I setup a new site is uncheck &#34;Convert emoticons like :-) and :-P to graphics on display&#34;: 90&#39;s phpBB&#39;esque blocky gifs are *ugly*. WordPress 4.2 Roadmap Wish: update those ugly smilies that…]]></description>
										<content:encoded><![CDATA[<p>Last night I was <a href="http://krogsgard.com/2014/following-dream/">reading something interesting</a> then stumbled, in the comments, on a WordPress smiley. Bleeeh. There&#39;s a reason one of the first things I do when I setup a new site is uncheck &quot;Convert emoticons like <tt>:-)</tt> and <tt>:-P</tt> to graphics on display&quot;: 90&#39;s phpBB&#39;esque blocky gifs are *ugly*.</p>
<blockquote class="twitter-tweet" data-width="500" data-dnt="true">
<p lang="en" dir="ltr">WordPress 4.2 Roadmap Wish: update those ugly smilies that have not changed since, wait for it, EVER (for real)</p>
<p>&mdash; Ozh Richard (@ozh) <a href="https://twitter.com/ozh/status/546055415461863424?ref_src=twsrc%5Etfw">December 19, 2014</a></p></blockquote>
<p><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>In my opinion those smileys are super outdated (they haven&#39;t changed since the very beginning of WordPress which, in internet times, is the equivalent of Pleistocene) and they suck for three reasons:</p>
<ul>
<li>they&#39;re ugly. Did I already mention that? :)</li>
<li>they&#39;re too old to live on retina screens</li>
<li>it&#39;s very inefficient to load one image for each and every emoticon, as <a href="https://twitter.com/BoiteAWeb/status/546079350291177473">Julio points out</a></li>
</ul>
<p>Over the years a few people have proposed alternatives for core but this is unlikely to happen, as very nicely <a href="http://wptavern.com/wordpress-smiley-wars-will-core-adopt-new-emoticons" title="Otto does not like new smilies :)">summed up by WP Tavern</a>. You can find several alternative as plugins, like <a href="https://github.com/avryl/new-smileys">New Smileys</a>, but they&#39;re just another batch of images.</p>
<p>In the short discussion my tweet sparked, <a href="https://twitter.com/ScreenFeedFr">Greg</a> pointed me to <a href="http://www.screenfeed.fr/blog/i-see-dead-people-02184/comment-page-1/#comment-1795">his way of doing it</a> and I thought it was <strong>wonderful</strong>: 100% CSS, no image loaded, ideally tuned and adapted for his theme.</p>
<p>https://twitter.com/ScreenFeedFr/status/546148719092314113</p>
<p>A coffee break later*, here is a sample plugin that replaces your smilies with pure and simple HTML markup that you can then easily style: <a href="https://github.com/ozh/ozh-css-smilies">Ozh&#39; CSS Smilies</a>. Hooo those super <del datetime="2014-12-20T16:21:56+00:00">annoying</del> cute animated little ghosts!</p>
<p><a href="https://github.com/ozh/ozh-css-smilies"><img loading="lazy" decoding="async" src="https://planetozh.com/blog/wp-content/uploads/2014/12/ghosts_smiley.gif" alt="ghosts_smiley" width="523" height="352" class="aligncenter size-full wp-image-3448" /></a></p>
<p>The plugin is just meant to be a start for those who&#39;ll want to style their own smilies. Feel free to use and modify to match your theme!</p>
<p><small>* yeah right. I took me like 90 minutes just to get that half ugly CSS working :/</small></p>
]]></content:encoded>
					
					<wfw:commentRss>https://planetozh.com/blog/2014/12/revisiting-wordpress-smilies-in-a-pure-css-way/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>WordPress plugin banner as a .PSD</title>
		<link>https://planetozh.com/blog/2014/09/wordpress-plugin-banner-as-a-psd/?source=rss</link>
		
		<dc:creator><![CDATA[Ozh]]></dc:creator>
		<pubDate>Sun, 14 Sep 2014 16:19:21 +0000</pubDate>
				<category><![CDATA[Published]]></category>
		<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[Plugins]]></category>
		<guid isPermaLink="false">http://planetozh.com/blog/?p=3298</guid>

					<description><![CDATA[I recently felt like making a few banners for my plugins. First questions that came to mind: &#34;what&#39;s the name of the file again? what dimensions?&#34;. And then, while making stuff: &#34;will this be hidden by the plugin&#39;s title?&#34; So, I made this simple banner template as a Photoshop PSD file. Nothing genius but feel free to use. No excuse…]]></description>
										<content:encoded><![CDATA[<p>I recently felt like making <a href="http://wordpress.org/plugins/ozh-simpler-login-url/">a</a> <a href="http://wordpress.org/plugins/always-remember-me/">few</a> <a href="http://wordpress.org/plugins/no-login/">banners</a> for my plugins. First questions that came to mind: &quot;what&#39;s the name of the file again? what dimensions?&quot;. And then, while making stuff: &quot;will this be hidden by the plugin&#39;s title?&quot;</p>
<p>So, I made this simple <a href="https://planetozh.com/blog/wp-content/uploads/2014/09/banner-772x250.zip">banner template</a> as a Photoshop PSD file. Nothing genius but feel free to use. No excuse not to add some fancy eye candy to your best plugins!</p>
<p><a href="https://planetozh.com/blog/wp-content/uploads/2014/09/banner-772x250.zip"><img loading="lazy" decoding="async" src="https://planetozh.com/blog/wp-content/uploads/2014/09/banner-template.png" alt="banner-template" width="547" height="207" class="aligncenter size-full wp-image-3299" srcset="https://planetozh.com/blog/wp-content/uploads/2014/09/banner-template.png 547w, https://planetozh.com/blog/wp-content/uploads/2014/09/banner-template-300x113.png 300w" sizes="auto, (max-width: 547px) 100vw, 547px" /></a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My WordPress plugins are on Github. Fancy a Pull Request?</title>
		<link>https://planetozh.com/blog/2014/06/my-wordpress-plugins-are-on-github-fancy-a-pull-request/?source=rss</link>
					<comments>https://planetozh.com/blog/2014/06/my-wordpress-plugins-are-on-github-fancy-a-pull-request/#comments</comments>
		
		<dc:creator><![CDATA[Ozh]]></dc:creator>
		<pubDate>Tue, 17 Jun 2014 17:02:14 +0000</pubDate>
				<category><![CDATA[Published]]></category>
		<category><![CDATA[Admin Drop Down Menu]]></category>
		<category><![CDATA[Github]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://planetozh.com/blog/?p=3220</guid>

					<description><![CDATA[I released a number of WordPress plugins over the last 10 years (&#34;24 plugins and 1,062,110 downloads&#34;, says my fun bookmarklet) and they all mostly fall in one of these three categories: Outdated stuff that are no longer maintained because I don&#39;t need them anymore Simple stuff that don&#39;t require any maintenance because they just work and will probably work…]]></description>
										<content:encoded><![CDATA[<p>I released a number of WordPress plugins over the last 10 years (&quot;24 plugins and 1,062,110 downloads&quot;, says my fun <a href="https://planetozh.com/blog/2012/12/fun-bookmarklet-wp-org-plugin-and-download-count/" title="Fun Bookmarklet: wp.org Plugin and Download Count">bookmarklet</a>) and they all mostly fall in one of these three categories:</p>
<ol>
<li>Outdated stuff that are no longer maintained because I don&#39;t need them anymore</li>
<li>Simple stuff that don&#39;t require any maintenance because they just work and will probably work forever</li>
<li>Stuff that are still maintained because I still need them</li>
</ol>
<p>That third group recently motivated me to move <a href="https://github.com/ozh/ozh-admin-drop-down-menu">some</a> <a href="https://github.com/ozh/ozh-tweet-archiver">plugins</a> to Github so their dev will now happen there.</p>
<p>It was recently <a href="http://wordpress.org/support/topic/menu-icons-missing-wp-39">brought to my knowledge</a> that my most popular plugin, <a href="http://wordpress.org/plugins/ozh-admin-drop-down-menu/">Ozh&#39; Admin Drop Down Menu</a>, causes 404 on dumb dashicons requests. That shall be fixed.</p>
<p>So. Anyone fancying a pull request and fix that now? :)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://planetozh.com/blog/2014/06/my-wordpress-plugins-are-on-github-fancy-a-pull-request/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Archive your tweets with WordPress</title>
		<link>https://planetozh.com/blog/2014/04/archive-your-tweets-with-wordpress/?source=rss</link>
		
		<dc:creator><![CDATA[Ozh]]></dc:creator>
		<pubDate>Wed, 16 Apr 2014 13:45:52 +0000</pubDate>
				<category><![CDATA[Published]]></category>
		<category><![CDATA[Archive]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://planetozh.com/blog/?p=3131</guid>

					<description><![CDATA[Twitter is fun and catchy, but the thing is: once tweeted, gone forever. Found an awesome link last month, shared it with a relevant #hashtag? Good luck finding it now. Your data now lives and dies on Twitter and you have no hand on it. Four years ago to address this problem I made yet-another-Twitter-to-WordPress plugin, creatively named Ozh&#39; Tweet…]]></description>
										<content:encoded><![CDATA[<p>Twitter is fun and catchy, but the thing is: once tweeted, gone forever. Found an awesome link last month, shared it with a relevant #hashtag? Good luck finding it now. Your data now lives and dies on Twitter and you have no hand on it.</p>
<p>Four years ago to address this problem I made <em>yet-another-Twitter-to-WordPress</em> plugin, creatively named <a href="https://planetozh.com/blog/my-projects/ozh-tweet-archiver-backup-twitter-with-wordpress/">Ozh&#39; Tweet Archiver</a>.</p>
<p>Two years ago Twitter broke my plugin with their new API, requiring OAuth for every request, including reading public tweets. Fixing it has been since on my todo list but, hey, you know.</p>
<p>Two weeks ago <a href="https://twitter.com/EHER/statuses/451956984833933313">@EHER sent me</a> preliminary code to fix things, just what I needed as a motivation to fix things.</p>
<p>Two days ago I published version 2.0 of my super cool <a href="https://planetozh.com/blog/my-projects/ozh-tweet-archiver-backup-twitter-with-wordpress/">Tweet Archiver</a> plugin. Fixed, dramatically improved, with new features. w00t.</p>
<p><strong><em>TL;DR</em>: from <a href="https://twitter.com/ozh">@ozh</a> to <a href="http://planetozh.com/tweets/">planetozh.com/tweets</a> with WordPress, #<a href="http://planetozh.com/tweets/tag/yay">yay</a>.</strong></p>
<p>Go get it, install it, you&#39;ll love it. Or, as usual, 120% refunded!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Why WordPress should drop PHP 5.2</title>
		<link>https://planetozh.com/blog/2014/01/why-wordpress-should-drop-php-5-2/?source=rss</link>
					<comments>https://planetozh.com/blog/2014/01/why-wordpress-should-drop-php-5-2/#comments</comments>
		
		<dc:creator><![CDATA[Ozh]]></dc:creator>
		<pubDate>Wed, 22 Jan 2014 17:04:38 +0000</pubDate>
				<category><![CDATA[Published]]></category>
		<category><![CDATA[5.2]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Stats]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://planetozh.com/blog/?p=3064</guid>

					<description><![CDATA[There&#39;s a recurring debate about WordPress and whether they should keep code compatible with PHP 5.2 or drop it and bump the requirements to a newer PHP version. Hey, I have an opinion on this. What&#39;s wrong with PHP 5.2? Nothing much, except PHP 5.2 was released in November 2006, and was maintained and developed till January 2011. This means…]]></description>
										<content:encoded><![CDATA[<p>There&#39;s a recurring debate about WordPress and whether they should keep code compatible with PHP 5.2 or drop it and bump the requirements to a newer PHP version. Hey, I have an opinion on this.</p>
<h2>What&#39;s wrong with PHP 5.2?</h2>
<p>Nothing much, except PHP 5.2 was released in <a href="http://en.wikipedia.org/wiki/PHP#Release_history">November 2006</a>, and was maintained and developed till January 2011. This means that it&#39;s now considered an old release, rusty  dusty code that&#39;s no longer improved, and should a new vulnerability be discovered in the 5.2 branch, it will remain unfixed.</p>
<p>In short: it&#39;s *old*. Any PHP library you&#39;ll find these days requires 5.3+.</p>
<h2>Old but still everywhere ?</h2>
<p>According to W3Techs, <a href="http://w3techs.com/technologies/details/pl-php/5/all">33% of websites</a> running PHP are on 5.2. That&#39;s a lot, but wait, there&#39;s worse.</p>
<p>According to WordPress, <a href="http://wordpress.org/about/stats/">more than 50%</a> of WordPress-powered sites are still on 5.2. Earlier this week <a href="https://twitter.com/dd32">@dd32</a> made a <a href="http://i1.wp.com/dd32.id.au/uploads/2014/01/WP-PHP5-over-time-yearweek.gif">pretty graph</a> showing that PHP 5.2&#39;s share is only slowly decreasing.</p>
<h2>So what?</h2>
<p>Dropping a platform running half of your user base would be crazy, right? For sure. Except I think the numbers are somewhat skewed.</p>
<p>As you may know, my pet project is a self-hosted URL shortener, YOURLS, which was <a href="https://github.com/YOURLS/YOURLS/releases">released</a> in its version 1.7 earlier this month. This new version comes with a phone-home feature to report the same kind of stats that WordPress is aggregating from its users, and particularly what PHP version YOURLS is installed on.</p>
<p>Of course, the YOURLS user base is nowhere near as important in volume as WordPress&#39; market, but I think the average user is similar, so YOURLS figures should be relevant in some way.</p>
<p>What I&#39;ve learned since the release of YOURLS 1.7 came as a surprise: I was expecting a similar share to what WordPress reports, but it turns out only <strong>10% of YOURLS installs are running on PHP 5.2</strong></p>
<p><img loading="lazy" decoding="async" width="332" height="315" src="https://planetozh.com/blog/wp-content/uploads/2014/01/yourls_php_version.png" alt="yourls_php_version" class="aligncenter size-full wp-image-3066" srcset="https://planetozh.com/blog/wp-content/uploads/2014/01/yourls_php_version.png 332w, https://planetozh.com/blog/wp-content/uploads/2014/01/yourls_php_version-300x284.png 300w" sizes="auto, (max-width: 332px) 100vw, 332px" /></p>
<p>What did I conclude from all this?</p>
<h2>1. Old installs <em>vs</em> new installs</h2>
<p>WordPress is old, it&#39;s been around for 10 years. The typical WordPress user installed WP 4 or 5 years ago, when 5.2 was still the standard.</p>
<p>YOURLS is much younger, it&#39;s been around for 4 years, but the project sort of picked up 3 years ago with YOURLS 1.5, released in November 2010. The typical YOURLS user installed YOURLS 1 year ago, when the default hosting setting on most host was PHP 5.3 or more.</p>
<p>I think that&#39;s the key of the skewed numbers : simply too many WordPress installs were around when PHP 5.2 was the default, and those users just did not upgrade their hosting. Well, why would they, it just works fine.</p>
<p>That would be <strong>exhibit A</strong> : newer users are on 5.3+, older are <em>still</em> on 5.2.</p>
<h2>2. Deeper digging: who&#39;s running PHP 5.2?</h2>
<p>Most host, if not all, still offer 5.2, even if you open an account today, but I could not find any which does not support 5.3+. All the major hosts (Dreamhost, Bluehost, Hostgator, etc&#8230;) have 5.3 by default.</p>
<p>And if there is a minor host where PHP 5.2 is the best you can have, then what&#39;s the point with signing with a smaller and lesser known company if they cannot provider better services than big ones?</p>
<p><strong>Exhibit B</strong>: hosts can give you 5.3+</p>
<h2>3. WordPress should lead</h2>
<p>And that will be <strong>exhibit C</strong>: WordPress has the power.</p>
<p>WordPress runs on 20% of all websites in the world. That&#39;s <strong>huge</strong>. Moreover, it apparently has <a href="http://w3techs.com/technologies/overview/content_management/all">60% of the CMS market</a>, which is also very impressive.</p>
<p>Few organizations in the world have the power to say &quot;we&#39;re moving to a newer version of PHP&quot; and have a global impact ; WordPress is one of them.</p>
<p>With such an influence, WordPress should even go a step further and pro-actively announce end of support for PHP version and follow <a href="https://wiki.php.net/rfc/releaseprocess">PHP&#39;s 3 year release process</a>, instead of simply watching user adoption. PHP 5.3 will be maintained till July 2014, PHP 5.4 will be maintained till March 2015: I think WordPress should announce the same minimal requirement changes.</p>
<h2>TL;DR</h2>
<p>The day WordPress says &quot;we require PHP 5.3&quot;, the whole web which is still running 5.2 switches to 5.3. Simple as that.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://planetozh.com/blog/2014/01/why-wordpress-should-drop-php-5-2/feed/</wfw:commentRss>
			<slash:comments>20</slash:comments>
		
		
			</item>
	</channel>
</rss>
