<?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>Roy Tanck</title>
	<atom:link href="https://roytanck.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://roytanck.com</link>
	<description>Personal blog</description>
	<lastBuildDate>Fri, 13 Mar 2026 15:19:51 +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>

<image>
	<url>https://roytanck.com/wp-content/uploads/2018/05/cropped-rt-1-32x32.png</url>
	<title>Roy Tanck</title>
	<link>https://roytanck.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>&#8220;Can we get the Czech please?&#8221;</title>
		<link>https://roytanck.com/2026/03/13/can-we-get-the-czech-please/</link>
					<comments>https://roytanck.com/2026/03/13/can-we-get-the-czech-please/#respond</comments>
		
		<dc:creator><![CDATA[Roy Tanck]]></dc:creator>
		<pubDate>Fri, 13 Mar 2026 15:17:56 +0000</pubDate>
				<category><![CDATA[Anecdotes]]></category>
		<guid isPermaLink="false">https://roytanck.com/?p=943</guid>

					<description><![CDATA[If you&#8217;re ever in the South Bohemian Region of the Czech Republic, I&#8217;d recommend visiting the small town of Zlatá Koruna. It&#8217;s a great place to rent rafts and float on the Moldau river. And there&#8217;s a rather interesting restaurant there, called &#8220;Restaurace a kavárna Zahrada nad řekou&#8221;. No matter what you order there, any&#160;...]]></description>
										<content:encoded><![CDATA[
<p>If you&#8217;re ever in the South Bohemian Region of the Czech Republic, I&#8217;d recommend visiting the small town of <a href="https://en.wikipedia.org/wiki/Zlat%C3%A1_Koruna">Zlatá Koruna</a>. It&#8217;s a great place to rent rafts and float on the Moldau river. And there&#8217;s a rather interesting restaurant there, called &#8220;Restaurace a kavárna Zahrada nad řekou&#8221;.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69e671534806b&quot;}" data-wp-interactive="core/image" data-wp-key="69e671534806b" class="wp-block-image size-full wp-lightbox-container"><img fetchpriority="high" decoding="async" width="2048" height="1365" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://roytanck.com/wp-content/uploads/2026/03/IMG_6946.jpg" alt="View of the river Moldau running through Ceský Krumlov. Several rafts are on the river and on the river banks." class="wp-image-944" srcset="https://roytanck.com/wp-content/uploads/2026/03/IMG_6946.jpg 2048w, https://roytanck.com/wp-content/uploads/2026/03/IMG_6946-1440x960.jpg 1440w, https://roytanck.com/wp-content/uploads/2026/03/IMG_6946-768x512.jpg 768w, https://roytanck.com/wp-content/uploads/2026/03/IMG_6946-1536x1024.jpg 1536w, https://roytanck.com/wp-content/uploads/2026/03/IMG_6946-1070x713.jpg 1070w" sizes="(max-width: 2048px) 100vw, 2048px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Enlarge"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">Zlatá Koruna is not far from the wonderful city of Ceský Krumlov.</figcaption></figure>



<p>No matter what you order there, any remaining space on your plate will be filled with assorted fresh fruits. This results in wonderfully colorful plates of food, although there&#8217;s a good chance that your steak&#8217;s gravy will have grapes in it. But the food is good, and the people are very friendly.</p>



<p>We ate there in the summer of 2014. After finishing the aforementioned grapes, we asked the young waitress &#8220;Can we get the check please&#8221;. As one does. She looked at us somewhat startled, and walked away towards the kitchen.</p>



<p>A minute or so later, the owner of the restaurant came to our table and asked if everything was alright. Yes, everything was fine. And just as he started to walk away, we both realized what had just happened. Instead of the bill, the girl had fetched &#8220;the Czech&#8221;.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://roytanck.com/2026/03/13/can-we-get-the-czech-please/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>&#8220;Storing&#8221;</title>
		<link>https://roytanck.com/2026/03/11/storing/</link>
					<comments>https://roytanck.com/2026/03/11/storing/#respond</comments>
		
		<dc:creator><![CDATA[Roy Tanck]]></dc:creator>
		<pubDate>Wed, 11 Mar 2026 16:29:50 +0000</pubDate>
				<category><![CDATA[Anecdotes]]></category>
		<category><![CDATA[Photography]]></category>
		<guid isPermaLink="false">https://roytanck.com/?p=933</guid>

					<description><![CDATA[In Dutch, &#8220;storing&#8221; means &#8220;malfunction&#8221; or &#8220;error&#8221;. Years ago, this word appeared on my camera&#8217;s screen when I took a quick test photo before doing a rather elaborate photo shoot. At the time, I was taking a photography course, and one of the assignments was to take two pictures of the same thing to demonstrate&#160;...]]></description>
										<content:encoded><![CDATA[
<p>In Dutch, &#8220;storing&#8221; means &#8220;malfunction&#8221; or &#8220;error&#8221;. Years ago, this word appeared on my camera&#8217;s screen when I took a quick test photo before doing a rather elaborate photo shoot.</p>



<p>At the time, I was taking a photography course, and one of the assignments was to take two pictures of the same thing to demonstrate the effect of longer/shorter shutter times. I went a little overboard, and hatched a plan that involved two cars, three people and a quiet stretch of road. The images below were taken while leaning out of the camera car&#8217;s passenger side window.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69e6715348ff2&quot;}" data-wp-interactive="core/image" data-wp-key="69e6715348ff2" class="wp-block-image size-full is-style-default wp-lightbox-container"><img decoding="async" width="2048" height="1365" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://roytanck.com/wp-content/uploads/2026/03/DSCF2535e-sm.jpg" alt="" class="wp-image-935" srcset="https://roytanck.com/wp-content/uploads/2026/03/DSCF2535e-sm.jpg 2048w, https://roytanck.com/wp-content/uploads/2026/03/DSCF2535e-sm-1440x960.jpg 1440w, https://roytanck.com/wp-content/uploads/2026/03/DSCF2535e-sm-768x512.jpg 768w, https://roytanck.com/wp-content/uploads/2026/03/DSCF2535e-sm-1536x1024.jpg 1536w, https://roytanck.com/wp-content/uploads/2026/03/DSCF2535e-sm-1070x713.jpg 1070w" sizes="(max-width: 2048px) 100vw, 2048px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Enlarge"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">1/8 sec, ISO 200, F/22, 18 mm, 80 km/h</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69e67153499b9&quot;}" data-wp-interactive="core/image" data-wp-key="69e67153499b9" class="wp-block-image size-full wp-lightbox-container"><img decoding="async" width="2048" height="1365" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://roytanck.com/wp-content/uploads/2026/03/DSCF2550-sm.jpg" alt="" class="wp-image-936" srcset="https://roytanck.com/wp-content/uploads/2026/03/DSCF2550-sm.jpg 2048w, https://roytanck.com/wp-content/uploads/2026/03/DSCF2550-sm-1440x960.jpg 1440w, https://roytanck.com/wp-content/uploads/2026/03/DSCF2550-sm-768x512.jpg 768w, https://roytanck.com/wp-content/uploads/2026/03/DSCF2550-sm-1536x1024.jpg 1536w, https://roytanck.com/wp-content/uploads/2026/03/DSCF2550-sm-1070x713.jpg 1070w" sizes="(max-width: 2048px) 100vw, 2048px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Enlarge"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">1/1000 sec, ISO 400, F/4, 18 mm, 80 km/h</figcaption></figure>
</div>
</div>



<p>Both of the photos above were taken at 80 kilometers per hour. One uses a long exposure to get nice motion blur, the other a very short one. I&#8217;m very happy with how they turned out, but for a minute, it seemed like I&#8217;d have to cancel the entire shoot. Because my camera said &#8220;storing&#8221;. Until I realized that my camera wasn&#8217;t actually set to Dutch.</p>



<p>When I took the camera out of the bag that day, I accidentally rotated the &#8220;drive dial&#8221;, setting it from single shot to burst mode. In burst mode, if you hold down the shutter button, the camera takes a series of pictures and temporarily stores them in its internal memory. When you release the button, it writes the images to the memory card. A short press takes a single image, but still displays the message &#8220;Storing&#8221;.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://roytanck.com/2026/03/11/storing/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Lorem ipsum</title>
		<link>https://roytanck.com/2025/07/30/lorem-ipsum/</link>
		
		<dc:creator><![CDATA[Roy Tanck]]></dc:creator>
		<pubDate>Wed, 30 Jul 2025 10:46:31 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[lorem ipsum]]></category>
		<guid isPermaLink="false">https://roytanck.com/?p=913</guid>

					<description><![CDATA[A couple of months ago, my go-to Lorum ipsum generator went offline. I found a number of alternatives, but most of them were unnecessarily complex for my needs. Others had intrusive advertising, or privacy issues. So I decided to see if I could roll my own. Introducing https://tanck.nl/li (code available here: https://github.com/roytanck/lorem-ipsum). Simply load the&#160;...]]></description>
										<content:encoded><![CDATA[
<p>A couple of months ago, my go-to <a href="https://en.wikipedia.org/wiki/Lorem_ipsum">Lorum ipsum</a> generator went offline. I found a number of alternatives, but most of them were unnecessarily complex for my needs. Others had intrusive advertising, or privacy issues. So I decided to see if I could roll my own.</p>



<p>Introducing <strong><a href="https://tanck.nl/li">https://tanck.nl/li</a></strong> (code available here: <a href="https://github.com/roytanck/lorem-ipsum">https://github.com/roytanck/lorem-ipsum</a>).</p>



<p>Simply load the page and copy-paste what you need. No settings, no tracking, just five fresh paragraphs of Lorem ipsum placeholder text.</p>



<p>I built this for my own personal use, but feel free to use it. The page is absolutely tiny, and text generation happens client-side.</p>



<p>P.S. If jou need a quick, strong new password, there&#8217;s also <a href="https://tanck.nl/ww">https://tanck.nl/ww</a>.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Using the Android device migration tool</title>
		<link>https://roytanck.com/2025/07/14/using-the-android-device-migration-tool/</link>
		
		<dc:creator><![CDATA[Roy Tanck]]></dc:creator>
		<pubDate>Mon, 14 Jul 2025 11:40:39 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[phone]]></category>
		<guid isPermaLink="false">https://roytanck.com/?p=899</guid>

					<description><![CDATA[To set up my new phone, I opted to use Android&#8217;s built-in migration tool. This copies apps and settings from your old device to the new one. I&#8217;d never used it before. My experiences were mixed. Here are some things that stood out. While this tool is very helpful, it&#8217;s definitely worth checking if everything&#160;...]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="2048" height="1536" src="https://roytanck.com/wp-content/uploads/2025/07/droid-workshop.jpg" alt="Droid workshop at Galaxy’s Edge in Orlando, Florida" class="wp-image-902" srcset="https://roytanck.com/wp-content/uploads/2025/07/droid-workshop.jpg 2048w, https://roytanck.com/wp-content/uploads/2025/07/droid-workshop-1440x1080.jpg 1440w, https://roytanck.com/wp-content/uploads/2025/07/droid-workshop-768x576.jpg 768w, https://roytanck.com/wp-content/uploads/2025/07/droid-workshop-1536x1152.jpg 1536w, https://roytanck.com/wp-content/uploads/2025/07/droid-workshop-1070x803.jpg 1070w" sizes="auto, (max-width: 2048px) 100vw, 2048px" /><figcaption class="wp-element-caption"><a href="https://creativecommons.org/publicdomain/zero/1.0/">CC0</a>&nbsp;licensed&nbsp;<a href="https://wordpress.org/photos/photo/3316210045/">photo</a>&nbsp;by&nbsp;<a href="https://wordpress.org/photos/author/mdburnette/">mdburnette</a>&nbsp;from the&nbsp;<a href="https://wordpress.org/photos/">WordPress Photo Directory</a>.</figcaption></figure>



<p>To set up my new phone, I opted to use Android&#8217;s built-in migration tool. This copies apps and settings from your old device to the new one. I&#8217;d never used it before. My experiences were mixed. Here are some things that stood out.</p>



<ul class="wp-block-list">
<li><strong>My alarm clock was configured and set correctly.</strong> As were the notification sounds. Nice.</li>



<li><strong>Your home screen layout is not maintained.</strong> You&#8217;ll have to manually copy each app&#8217;s icon to your preferred location, create folders, place widgets, etc. I would not mind if they added this.</li>



<li><strong>Most apps were copied over correctly.</strong> But some were simply missing. Turns out these were no longer available on the Play Store. A warning message would have been helpful. An option to keep them even better.</li>



<li><strong>Some apps retained their settings, but many didn&#8217;t.</strong> This is probably determined by whether or not apps store their settings in your Google account. I spent hours logging back into things.</li>



<li><strong>Wifi connected instantly, but any custom IPv4 or DHCP settings were gone.</strong> This meant I wasn&#8217;t initially behind my Pi-hole. If you&#8217;ve set a fixed IP, you should check those settings.</li>



<li><strong>Some of the privacy/advertisement settings in my Google account seemed to have been reverted to &#8220;on&#8221;.</strong> Although this may have been caused by recent unrelated changes to those settings. Still felt sneaky.</li>
</ul>



<p>While this tool is very helpful, it&#8217;s definitely worth checking if everything is set up correctly and your settings are intact.</p>



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



<p>Obviously, the migration tool will not remove any apps that are present on the new device, but not on the old one. This means you&#8217;ll still have to remove bloatware apps. Reviews called my new phone &#8220;relatively clean&#8221;, but it still came with TikTok, Facebook and Amazon pre-installed. I hate that this is still a thing in 2025.</p>



<p>Anyway, I hope to not have to do this again for years. OnePlus promises six years of security updates, so I&#8217;ll hopefully post a follow-up no sooner than 2031.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The question I should have asked Matt</title>
		<link>https://roytanck.com/2025/06/10/the-question-i-should-have-asked-matt/</link>
		
		<dc:creator><![CDATA[Roy Tanck]]></dc:creator>
		<pubDate>Tue, 10 Jun 2025 13:19:36 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Matt Mullenweg]]></category>
		<guid isPermaLink="false">https://roytanck.com/?p=876</guid>

					<description><![CDATA[Last week, I visited Basel, Switzerland to attend WordCamp Europe and AltCtrlOrg. Traditionally, the last talk at WCEU is a Q&#38;A with WordPress co-founder Matt Mullenweg, who&#8217;s been at the center of considerable controversy lately. I&#8217;m not usually someone to step up to the microphone, but I was surprised that none of the questions asked&#160;...]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="2048" height="1365" src="https://roytanck.com/wp-content/uploads/2025/06/54573720423_30836ef4bb_k.jpg" alt="A microphone with the WordCamp Europe main room stage in the background (out of focus)." class="wp-image-880" srcset="https://roytanck.com/wp-content/uploads/2025/06/54573720423_30836ef4bb_k.jpg 2048w, https://roytanck.com/wp-content/uploads/2025/06/54573720423_30836ef4bb_k-1440x960.jpg 1440w, https://roytanck.com/wp-content/uploads/2025/06/54573720423_30836ef4bb_k-768x512.jpg 768w, https://roytanck.com/wp-content/uploads/2025/06/54573720423_30836ef4bb_k-1536x1024.jpg 1536w, https://roytanck.com/wp-content/uploads/2025/06/54573720423_30836ef4bb_k-1070x713.jpg 1070w" sizes="auto, (max-width: 2048px) 100vw, 2048px" /><figcaption class="wp-element-caption">Photo by <a href="https://flickr.com/photos/wceu/54573720423/in/album-72177720326409161">Roan de Vries</a></figcaption></figure>



<p>Last week, I visited Basel, Switzerland to attend <a href="https://europe.wordcamp.org/2025/">WordCamp Europe</a> and <a href="https://altctrl.org/">AltCtrlOrg</a>. Traditionally, the last talk at WCEU is a Q&amp;A with WordPress co-founder Matt Mullenweg, who&#8217;s been at the center of considerable <a href="https://www.therepository.email/?s=mullenweg">controversy</a> lately.</p>



<p>I&#8217;m not usually someone to step up to the microphone, but I was surprised that none of the questions asked by members of the audience addressed the elephant in the room. By the time I&#8217;d formulated the question that needed to be asked, time was up.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="has-black-color has-text-color has-link-color has-medium-font-size wp-elements-3b24600ebcbf0141991a0fd46a06d90e">&#8220;Is there a plan to restore trust with contributors who&#8217;ve become disillusioned with the project? I know many volunteers who are not part of a <a href="https://wordpress.org/five-for-the-future/">Five for the Future</a> pledge, but who used to spend their free time writing translation, answering questions on the forums, or contributing code. Many of them have stepped back after seeing people get banned, plugins being hijacked and many other things that seemed to violate the WordPress ethos. Do you have a plan for getting these people back on board?&#8221;</p>
</blockquote>



<p>Matt seemed to simply want everyone to &#8220;get back to work&#8221;, but for many of us, it&#8217;s not that easy. Trust has been broken. Fundamental changes are needed.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WordPress and PHP&#8217;s OPcache strings buffer</title>
		<link>https://roytanck.com/2025/05/15/wordpress-and-phps-opcache-strings-buffer/</link>
		
		<dc:creator><![CDATA[Roy Tanck]]></dc:creator>
		<pubDate>Thu, 15 May 2025 07:55:22 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">https://roytanck.com/?p=867</guid>

					<description><![CDATA[Over the last couple of weeks, I spent some time investigating an issue with PHP&#8217;s OPcache feature. Simply put, OPcache keeps a compiled copy of PHP scripts, so that those files don&#8217;t have to be re-compiled every time they are called. It&#8217;s one of the main reasons why PHP execution is quite fast nowadays. As&#160;...]]></description>
										<content:encoded><![CDATA[
<p>Over the last couple of weeks, I spent some time investigating an issue with PHP&#8217;s <a href="https://www.php.net/manual/en/book.opcache.php">OPcache</a> feature. Simply put, OPcache keeps a compiled copy of PHP scripts, so that those files don&#8217;t have to be re-compiled every time they are called. It&#8217;s one of the main reasons why PHP execution is quite fast nowadays.</p>



<p>As with any caching system, it&#8217;s essential to have enough storage available. By default, PHP reserves 128 megabytes of server RAM to be used for OPcache. Our team manages a number of sites, from small single site WordPress installs to large multisite setups. On most, 128 MB was perfectly fine. On very large sites, with tons of plugins installed, it may be worth increasing this value.</p>



<h2 class="wp-block-heading">The WP OPcache plugin</h2>



<p>To see whether your OPcache buffer is large enough, I recommend the excellent <a href="https://wordpress.org/plugins/flush-opcache/">WP OPcache</a> plugin. It gives you a nice page with all the numbers, right in your WordPress admin area. Unfortunately though, it does <a href="https://wordpress.org/support/topic/no-tools-page-on-multisite/">not currently work on multisite</a>.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69e671534c752&quot;}" data-wp-interactive="core/image" data-wp-key="69e671534c752" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="2560" height="1335" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://roytanck.com/wp-content/uploads/2025/05/wp-opcache-dashboard-scaled.png" alt="Screenshot of the WP OPcache statistics page. Memory consumption is shown as 66%, but the strings buffer is almost full." class="wp-image-869" srcset="https://roytanck.com/wp-content/uploads/2025/05/wp-opcache-dashboard-scaled.png 2560w, https://roytanck.com/wp-content/uploads/2025/05/wp-opcache-dashboard-1440x751.png 1440w, https://roytanck.com/wp-content/uploads/2025/05/wp-opcache-dashboard-768x400.png 768w, https://roytanck.com/wp-content/uploads/2025/05/wp-opcache-dashboard-1536x801.png 1536w, https://roytanck.com/wp-content/uploads/2025/05/wp-opcache-dashboard-2048x1068.png 2048w, https://roytanck.com/wp-content/uploads/2025/05/wp-opcache-dashboard-1070x558.png 1070w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Enlarge"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p>As you can see, the memory usage is perfectly fine at 66%. But I started to noticing that the &#8220;<a href="https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.interned-strings-buffer">interned strings buffer</a>&#8221; was completely full on many of our sites. This did not turn out to be related to our issue, but it&#8217;s probably not ideal.</p>



<h2 class="wp-block-heading">WordPress internationalisation</h2>



<p>Turns out, PHP uses a subsection of the 128 MB buffer to specifically store strings. And its default size of 8 MB is very tight. In the screenshot, it&#8217;s almost completely full, and that&#8217;s on this very modest WP install.</p>



<p>On most sites I investigated, the interned string buffer was 100% full all the time. This forces PHP to delete older strings to make room for new ones, which likely affects performance. This seemed especially true on sites that use translations (basically any site not using US English).</p>



<h2 class="wp-block-heading">Recommended settings</h2>



<p>If WP OPcache indicates that the strings buffer is (almost) full, you could try increasing its size. Our servers have a lot of memory, so we went with 256 MB of OPcache memory, of which 24 MB is reserved for the strings buffer. Plenty for even our biggest site. Your site may not need that much.</p>



<p>I haven&#8217;t used shared hosting in long time, so I have no idea whether these settings are available through Plesk or other hosting panels. If you&#8217;re unsure how to set them, it&#8217;s probably best to contact your host. If you manage your own server, this is set in php.ini.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Why I removed the ActivityPub plugin</title>
		<link>https://roytanck.com/2025/03/08/why-i-removed-the-activitypub-plugin/</link>
		
		<dc:creator><![CDATA[Roy Tanck]]></dc:creator>
		<pubDate>Sat, 08 Mar 2025 20:23:22 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ActivityPub]]></category>
		<category><![CDATA[Fediverse]]></category>
		<category><![CDATA[Mastodon]]></category>
		<category><![CDATA[WordPress plugin]]></category>
		<guid isPermaLink="false">https://roytanck.com/?p=853</guid>

					<description><![CDATA[The ActivityPub plugin for WordPress sounds like a great idea. It hooks up your blog to the Fediverse, where users of apps like Mastodon can read your content. I installed it in October of 2023, and soon after that, something strange happened. A blog post I wrote went viral. But I had no idea. It&#160;...]]></description>
										<content:encoded><![CDATA[
<p>The <a href="https://wordpress.org/plugins/activitypub/">ActivityPub plugin for WordPress</a> sounds like a great idea. It hooks up your blog to the <a href="https://en.wikipedia.org/wiki/Fediverse">Fediverse</a>, where users of apps like <a href="https://en.wikipedia.org/wiki/Mastodon_(social_network)">Mastodon</a> can read your content. I installed it in October of 2023, and soon after that, something strange happened. A blog post I wrote went viral. But I had no idea.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="858" height="868" src="https://roytanck.com/wp-content/uploads/2025/03/Screenshot_2023-12-30-12-21-26-13_3aea4af51f236e4932235fdada7d1643.jpg" alt="Screenshot from a web analytics application that indicates a nearly 20,000 percent increase in traffic." class="wp-image-854" srcset="https://roytanck.com/wp-content/uploads/2025/03/Screenshot_2023-12-30-12-21-26-13_3aea4af51f236e4932235fdada7d1643.jpg 858w, https://roytanck.com/wp-content/uploads/2025/03/Screenshot_2023-12-30-12-21-26-13_3aea4af51f236e4932235fdada7d1643-768x777.jpg 768w" sizes="auto, (max-width: 858px) 100vw, 858px" /></figure>



<p>It turned out the someone with a lot of followers had boosted my blog post about <a href="https://roytanck.com/2023/12/23/in-2024-please-switch-to-firefox/" data-type="post" data-id="754">Firefox</a>. Not the Mastodon post I wrote to promote it (from my regular account), but the post that was automatically created by the ActivityPub plugin. The plugin transforms your blog into a Fediverse instance (server) of sorts, and posts from a user account on that instance. This where things get a little confusing.</p>



<p>Because the blog post was not sent from my Mastodon account, I got no notifications when it was boosted hundreds of times. I was completely unaware something was happening  until someone sent me a message informing me that I was at the top of <a href="https://news.ycombinator.com/">Hacker News</a>.</p>



<p>At the same time, you also can&#8217;t follow anyone from your blog&#8217;s user. So it can&#8217;t replace your regular account. It&#8217;s not quite the same as running your own Mastodon instance. Given all this, I think I prefer simply writing a short toot on Mastodon when I post something here, without the added complexity that the plugin brings.</p>



<p>So, while the plugin works exactly as advertised, I removed it from this site. I&#8217;m sorry if you were one of this blog&#8217;s thirty-something followers. Feel free to follow my <a href="https://mastodon.online/@roytanck">regular account</a> instead.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Unplugging</title>
		<link>https://roytanck.com/2025/03/05/unplugging/</link>
		
		<dc:creator><![CDATA[Roy Tanck]]></dc:creator>
		<pubDate>Wed, 05 Mar 2025 18:25:11 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress plugin]]></category>
		<guid isPermaLink="false">https://roytanck.com/?p=842</guid>

					<description><![CDATA[I&#8217;ve pretty much had one or more WordPress plugins available through the official repository since that repository was introduced. It&#8217;s been one of the ways I contribute the the WordPress project. But recently, I&#8217;ve been removing some of them, and trying to find a new maintainer for the rest. And no, that&#8217;s not because of&#160;...]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;ve pretty much had one or more WordPress plugins available through the official repository since that repository was introduced. It&#8217;s been one of the ways I contribute the the WordPress project. But recently, I&#8217;ve been removing some of them, and trying to find a new maintainer for the rest. And no, that&#8217;s not because of the recent &#8220;<a href="https://roytanck.com/2024/10/26/my-thoughts-on-matt-vs-wp-engine/" data-type="post" data-id="815">wpdrama</a>&#8220;.</p>



<h2 class="wp-block-heading">New rules</h2>



<p>In October of last year, I joined the Dutch government as a WordPress expert. This might seem like a big step, but mostly it allowed me to keep doing the same work with the same team I&#8217;ve been a member of for years. We do great work so I was happy to formally join them and retire my freelance business.</p>



<p>While my new employer is generally fine with employees having side projects, there are some rules that apply. One of those is that personal projects cannot be similar to the work you do professionally. And I develop a lot of WordPress plugins at my job. Time to make some changes.</p>



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



<p>Here&#8217;s what&#8217;s happened so far.</p>



<ul class="wp-block-list">
<li><strong>RT Filter Page List</strong> had very few users, so I simply removed it.</li>



<li><strong>Mail Caesar</strong> also had very few users, despite being quite useful in some scenarios.</li>



<li><strong>Network Admin Assistant</strong>&#8216;s user count was &#8220;less than 10&#8221;, so yeah.</li>



<li><strong><a href="https://wordpress.org/plugins/disable-floc/">Disable Topics API</a></strong> is up for adoption.</li>



<li><strong><a href="https://wordpress.org/plugins/display-environment-type/">Display Environment Type</a></strong> is also looking for a new maintainer.</li>



<li><strong><a href="https://wordpress.org/plugins/plugin-report/">Plugin Report</a></strong> has already found a new owner, which I&#8217;m very happy about.</li>
</ul>



<p>Meanwhile, our team at work has been exploring ways to share plugins that we&#8217;ve created under the GPL license. So my hope is that that will happen in the near future. We have a number of projects that I&#8217;d love to be able to share.</p>



<p>Update: Display Environment Type has also been adopted. Two down, one to go?</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My thoughts on Matt vs. WP Engine</title>
		<link>https://roytanck.com/2024/10/26/my-thoughts-on-matt-vs-wp-engine/</link>
					<comments>https://roytanck.com/2024/10/26/my-thoughts-on-matt-vs-wp-engine/#comments</comments>
		
		<dc:creator><![CDATA[Roy Tanck]]></dc:creator>
		<pubDate>Sat, 26 Oct 2024 19:30:28 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Matt Mullenweg]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[WP Engine]]></category>
		<guid isPermaLink="false">https://roytanck.com/?p=815</guid>

					<description><![CDATA[After 16+ years of freelancing, I recently joined the Dutch government as a WordPress specialist. Part of my job is to keep my team, and the rest of our organization, informed about what goes on in the world of WordPress. So far, that bit has been a lot more eventful than I imagined it would&#160;...]]></description>
										<content:encoded><![CDATA[
<p>After 16+ years of freelancing, I recently joined the Dutch government as a WordPress specialist. Part of my job is to keep my team, and the rest of our organization, informed about what goes on in the world of WordPress. So far, that bit has been a lot more eventful than I imagined it would be.</p>



<p>In case you&#8217;ve missed what us WordPress folks call &#8220;the latest wpdrama&#8221;, <a href="https://techcrunch.com/2024/10/20/wordpress-vs-wp-engine-drama-explained/">this article on TechCrunch</a> will get you up to speed. Having been a part of the WordPress community for twenty years now, I thought I&#8217;d add some of my observations.</p>



<h2 class="wp-block-heading">The GPL license does not require contributions</h2>



<p>The main reason we&#8217;re in this mess is because Matt Mullenweg, WordPress&#8217;s &#8220;benevolent dictator for life&#8221;, thinks WP Engine does not contribute enough to the WordPress ecosystem. That is debatable, but it also does not matter. They really don&#8217;t have to. The GPL license is brutal in that sense. You can take WP&#8217;s source code, and do pretty much anything with it. Contributing back is entirely optional.</p>



<p>You also can&#8217;t control how people us it. In the past, I&#8217;ve had people use my code to build porn websites, as well as sites that hosted extremist content. There&#8217;s nothing you can do. So Matt complaining that WP Engine disables post revisions (through a &#8220;switch&#8221; that the WP offers) is nonsense.</p>



<h2 class="wp-block-heading">I don&#8217;t think Matt has a strong case</h2>



<p>Because Matt can&#8217;t use the GPL to go after WP Engine, he argues that they need a trademark license. WP Engine has &#8220;WP&#8221; in its name, but that has always been permitted. And they use the word &#8220;WordPress&#8221; to describe what they do. This is generally considered fair use.</p>



<p>But more importantly, all of WP Engine&#8217;s competitors do the same. Matt chose to go after WP Engine, but his reasoning should seriously concern all other WordPress-focused companies.</p>



<h2 class="wp-block-heading">The damage far outweighs any potential benefits</h2>



<p>So many people have either been banned (from wordpress.org, the official Slack, etc) or have chosen to step away. Important people, who worked on major features. The net effect is that fewer people now contribute to WordPress. And I think that damage will be lasting, because who would want to join a project that is in this much turmoil?</p>



<p>For me personally, this whole thing has been frustrating. I&#8217;ve been happy to contribute to WP in many ways over the years. But I find myself reconsidering whether it&#8217;s worth it. For now, I&#8217;ve paused my contributions.</p>



<h2 class="wp-block-heading">WordPress&#8217;s biggest problem has been uncovered</h2>



<p>I had no idea that the wordpress.org website was the personal property of Matt Mullenweg. I did not realize that the WordPress Foundation is effectively run solely by Matt. No clue that Automattic has a license that lets them enforce the trademarks.</p>



<p>His ownership of the website allows Matt to deny WP Engine the services that wordpress.org offers. But that again applies to all other users as well. And we should all be very concerned about this. Whether you represent a large company or you&#8217;re a blogger, if you use WordPress you also probably rely on services provided by wordpress.org.</p>



<p>Basically, it&#8217;s all Matt. And it shouldn&#8217;t be. At the very least, the WordPress Foundation should own wordpress.org and fully control the trademarks. And it should be run by a democratic board made up of community members.</p>



<p>All this has made it clear that WordPress has a governance problem. That never seemed like an issue, until our dictator turned out not to be entirely benevolent. Matt&#8217;s initial intentions may have been good, but this whole thing spiraled out of control to the point where it&#8217;s hard to imagine a positive outcome.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://roytanck.com/2024/10/26/my-thoughts-on-matt-vs-wp-engine/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>In 2024, please switch to Firefox</title>
		<link>https://roytanck.com/2023/12/23/in-2024-please-switch-to-firefox/</link>
					<comments>https://roytanck.com/2023/12/23/in-2024-please-switch-to-firefox/#comments</comments>
		
		<dc:creator><![CDATA[Roy Tanck]]></dc:creator>
		<pubDate>Sat, 23 Dec 2023 19:26:13 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[privacy]]></category>
		<guid isPermaLink="false">https://roytanck.com/?p=754</guid>

					<description><![CDATA[This December, if there&#8217;s one tech New Year&#8217;s resolution I&#8217;d encourage you to have, it&#8217;s switching to the only remaining ethical web browser, Firefox. According to recent posts on social media, Firefox&#8217;s market share is slipping. We should not let that happen. There are two main reasons why switching is important. 1. Privacy Firefox is&#160;...]]></description>
										<content:encoded><![CDATA[
<p>This December, if there&#8217;s one tech New Year&#8217;s resolution I&#8217;d encourage you to have, it&#8217;s switching to the only remaining ethical web browser, <a href="https://firefox.com">Firefox</a>. According to recent posts on social media, Firefox&#8217;s market share is slipping. We should not let that happen. There are two main reasons why switching is important.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="2047" height="1356" src="https://roytanck.com/wp-content/uploads/2023/12/16071828377_9bdfbd9789_k.jpg" alt="A red panda (firefox) resting on a tree branch." class="wp-image-756" srcset="https://roytanck.com/wp-content/uploads/2023/12/16071828377_9bdfbd9789_k.jpg 2047w, https://roytanck.com/wp-content/uploads/2023/12/16071828377_9bdfbd9789_k-1440x954.jpg 1440w, https://roytanck.com/wp-content/uploads/2023/12/16071828377_9bdfbd9789_k-768x509.jpg 768w, https://roytanck.com/wp-content/uploads/2023/12/16071828377_9bdfbd9789_k-1536x1017.jpg 1536w, https://roytanck.com/wp-content/uploads/2023/12/16071828377_9bdfbd9789_k-1070x709.jpg 1070w" sizes="auto, (max-width: 2047px) 100vw, 2047px" /><figcaption class="wp-element-caption">&#8220;<a href="https://www.flickr.com/photos/91501748@N07/16071828377" target="_blank" rel="noreferrer noopener">Red Panda</a>&#8221; by <a href="https://www.flickr.com/photos/91501748@N07" target="_blank" rel="noreferrer noopener">Mathias Appel</a> is marked with <a href="https://creativecommons.org/publicdomain/zero/1.0/?ref=openverse" target="_blank" rel="noreferrer noopener">CC0 1.0</a>.</figcaption></figure>



<h2 class="wp-block-heading">1. Privacy</h2>



<p>Firefox is the only major browser not built by a company that makes money from advertising and/or selling your personal data. There&#8217;s been a lot of talk about websites tracking users using cookies, fingerprinting and other nefarious technologies that hurt your privacy. But owning the browser puts Google, Apple and Microsoft in a position where they don&#8217;t even need those tricks. We need to use browsers that are independent, and right now that means Firefox.</p>



<h2 class="wp-block-heading">2. Browser engine monopoly</h2>



<p>Wikipedia <a href="https://en.wikipedia.org/wiki/Comparison_of_browser_engines">lists four browser engines as being &#8220;active&#8221;</a>. Browser engines are the bits that take a web page&#8217;s code and display it on your screen. Ideally, they conform to the official <a href="https://www.w3.org/">W3C</a> standards, and display all elements as it describes. If that&#8217;s the case, web developers can easily write sites that work on all browsers. No proprietary vendor lock-in nonsense, just glorious open standards at work.</p>



<h3 class="wp-block-heading">It&#8217;s happened before</h3>



<p>In the early 2000&#8217;s, Internet Explorer had a massive 95% market share. This meant that many sites were only developed for use with IE. They&#8217;d use experimental features that IE supported, in favor of things from the official HTML standard. This was a very bad situation, which hindered the development of the World Wide Web.</p>



<p>Currenty, Chrome, Safari and Edge all use variations of the closely related Webkit and Blink engines. If we want to avoid another browser engine monopoly, we need to support Firefox, and its &#8220;Gecko&#8221; engine.</p>



<h2 class="wp-block-heading">Firefox is actually really good</h2>



<p>If Firefox would be a bad browser, I would not recommend you to switch. It&#8217;s fast, has a nice user interface, and feels every bit as modern and elegant as its competition. I&#8217;ve been using it as my main browser for a couple of years now, on Linux, Windows, MacOS and Android. As a web developer, I usually have at least three browsers open, but when I go look something up on the web, I pick Firefox.</p>



<p>So please, help save the web by <a href="https://www.mozilla.org/en-US/firefox/new/">using the best browser out there</a>. It&#8217;s an easy thing to do, and it makes a big difference.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://roytanck.com/2023/12/23/in-2024-please-switch-to-firefox/feed/</wfw:commentRss>
			<slash:comments>116</slash:comments>
		
		
			</item>
	</channel>
</rss>
