Roy Tanck https://roytanck.com Personal blog Fri, 13 Mar 2026 15:19:51 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 https://roytanck.com/wp-content/uploads/2018/05/cropped-rt-1-32x32.png Roy Tanck https://roytanck.com 32 32 “Can we get the Czech please?” https://roytanck.com/2026/03/13/can-we-get-the-czech-please/ https://roytanck.com/2026/03/13/can-we-get-the-czech-please/#respond Fri, 13 Mar 2026 15:17:56 +0000 https://roytanck.com/?p=943 If you’re ever in the South Bohemian Region of the Czech Republic, I’d recommend visiting the small town of Zlatá Koruna. It’s a great place to rent rafts and float on the Moldau river. And there’s a rather interesting restaurant there, called “Restaurace a kavárna Zahrada nad řekou”.

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’s a good chance that your steak’s gravy will have grapes in it. But the food is good, and the people are very friendly.

We ate there in the summer of 2014. After finishing the aforementioned grapes, we asked the young waitress “Can we get the check please”. As one does. She looked at us somewhat startled, and walked away towards the kitchen.

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 “the Czech”.

]]>
https://roytanck.com/2026/03/13/can-we-get-the-czech-please/feed/ 0
“Storing” https://roytanck.com/2026/03/11/storing/ https://roytanck.com/2026/03/11/storing/#respond Wed, 11 Mar 2026 16:29:50 +0000 https://roytanck.com/?p=933 In Dutch, “storing” means “malfunction” or “error”. Years ago, this word appeared on my camera’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 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’s passenger side window.

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’m very happy with how they turned out, but for a minute, it seemed like I’d have to cancel the entire shoot. Because my camera said “storing”. Until I realized that my camera wasn’t actually set to Dutch.

When I took the camera out of the bag that day, I accidentally rotated the “drive dial”, 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 “Storing”.

]]>
https://roytanck.com/2026/03/11/storing/feed/ 0
Lorem ipsum https://roytanck.com/2025/07/30/lorem-ipsum/ Wed, 30 Jul 2025 10:46:31 +0000 https://roytanck.com/?p=913 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 page and copy-paste what you need. No settings, no tracking, just five fresh paragraphs of Lorem ipsum placeholder text.

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.S. If jou need a quick, strong new password, there’s also https://tanck.nl/ww.

]]>
Using the Android device migration tool https://roytanck.com/2025/07/14/using-the-android-device-migration-tool/ Mon, 14 Jul 2025 11:40:39 +0000 https://roytanck.com/?p=899 Droid workshop at Galaxy’s Edge in Orlando, Florida
CC0 licensed photo by mdburnette from the WordPress Photo Directory.

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

  • My alarm clock was configured and set correctly. As were the notification sounds. Nice.
  • Your home screen layout is not maintained. You’ll have to manually copy each app’s icon to your preferred location, create folders, place widgets, etc. I would not mind if they added this.
  • Most apps were copied over correctly. 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.
  • Some apps retained their settings, but many didn’t. This is probably determined by whether or not apps store their settings in your Google account. I spent hours logging back into things.
  • Wifi connected instantly, but any custom IPv4 or DHCP settings were gone. This meant I wasn’t initially behind my Pi-hole. If you’ve set a fixed IP, you should check those settings.
  • Some of the privacy/advertisement settings in my Google account seemed to have been reverted to “on”. Although this may have been caused by recent unrelated changes to those settings. Still felt sneaky.

While this tool is very helpful, it’s definitely worth checking if everything is set up correctly and your settings are intact.

Bloatware

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’ll still have to remove bloatware apps. Reviews called my new phone “relatively clean”, but it still came with TikTok, Facebook and Amazon pre-installed. I hate that this is still a thing in 2025.

Anyway, I hope to not have to do this again for years. OnePlus promises six years of security updates, so I’ll hopefully post a follow-up no sooner than 2031.

]]>
The question I should have asked Matt https://roytanck.com/2025/06/10/the-question-i-should-have-asked-matt/ Tue, 10 Jun 2025 13:19:36 +0000 https://roytanck.com/?p=876 A microphone with the WordCamp Europe main room stage in the background (out of focus).
Photo by Roan de Vries

Last week, I visited Basel, Switzerland to attend WordCamp Europe and AltCtrlOrg. Traditionally, the last talk at WCEU is a Q&A with WordPress co-founder Matt Mullenweg, who’s been at the center of considerable controversy lately.

I’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’d formulated the question that needed to be asked, time was up.

Matt seemed to simply want everyone to “get back to work”, but for many of us, it’s not that easy. Trust has been broken. Fundamental changes are needed.

]]>
WordPress and PHP’s OPcache strings buffer https://roytanck.com/2025/05/15/wordpress-and-phps-opcache-strings-buffer/ Thu, 15 May 2025 07:55:22 +0000 https://roytanck.com/?p=867 Over the last couple of weeks, I spent some time investigating an issue with PHP’s OPcache feature. Simply put, OPcache keeps a compiled copy of PHP scripts, so that those files don’t have to be re-compiled every time they are called. It’s one of the main reasons why PHP execution is quite fast nowadays.

As with any caching system, it’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.

The WP OPcache plugin

To see whether your OPcache buffer is large enough, I recommend the excellent WP OPcache plugin. It gives you a nice page with all the numbers, right in your WordPress admin area. Unfortunately though, it does not currently work on multisite.

As you can see, the memory usage is perfectly fine at 66%. But I started to noticing that the “interned strings buffer” was completely full on many of our sites. This did not turn out to be related to our issue, but it’s probably not ideal.

WordPress internationalisation

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’s almost completely full, and that’s on this very modest WP install.

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).

Recommended settings

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.

I haven’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’re unsure how to set them, it’s probably best to contact your host. If you manage your own server, this is set in php.ini.

]]>
Why I removed the ActivityPub plugin https://roytanck.com/2025/03/08/why-i-removed-the-activitypub-plugin/ Sat, 08 Mar 2025 20:23:22 +0000 https://roytanck.com/?p=853 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.

Screenshot from a web analytics application that indicates a nearly 20,000 percent increase in traffic.

It turned out the someone with a lot of followers had boosted my blog post about Firefox. 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.

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 Hacker News.

At the same time, you also can’t follow anyone from your blog’s user. So it can’t replace your regular account. It’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.

So, while the plugin works exactly as advertised, I removed it from this site. I’m sorry if you were one of this blog’s thirty-something followers. Feel free to follow my regular account instead.

]]>
Unplugging https://roytanck.com/2025/03/05/unplugging/ Wed, 05 Mar 2025 18:25:11 +0000 https://roytanck.com/?p=842 I’ve pretty much had one or more WordPress plugins available through the official repository since that repository was introduced. It’s been one of the ways I contribute the the WordPress project. But recently, I’ve been removing some of them, and trying to find a new maintainer for the rest. And no, that’s not because of the recent “wpdrama“.

New rules

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’ve been a member of for years. We do great work so I was happy to formally join them and retire my freelance business.

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.

Changes

Here’s what’s happened so far.

  • RT Filter Page List had very few users, so I simply removed it.
  • Mail Caesar also had very few users, despite being quite useful in some scenarios.
  • Network Admin Assistant‘s user count was “less than 10”, so yeah.
  • Disable Topics API is up for adoption.
  • Display Environment Type is also looking for a new maintainer.
  • Plugin Report has already found a new owner, which I’m very happy about.

Meanwhile, our team at work has been exploring ways to share plugins that we’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’d love to be able to share.

Update: Display Environment Type has also been adopted. Two down, one to go?

]]>
My thoughts on Matt vs. WP Engine https://roytanck.com/2024/10/26/my-thoughts-on-matt-vs-wp-engine/ https://roytanck.com/2024/10/26/my-thoughts-on-matt-vs-wp-engine/#comments Sat, 26 Oct 2024 19:30:28 +0000 https://roytanck.com/?p=815 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.

In case you’ve missed what us WordPress folks call “the latest wpdrama”, this article on TechCrunch will get you up to speed. Having been a part of the WordPress community for twenty years now, I thought I’d add some of my observations.

The GPL license does not require contributions

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

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

I don’t think Matt has a strong case

Because Matt can’t use the GPL to go after WP Engine, he argues that they need a trademark license. WP Engine has “WP” in its name, but that has always been permitted. And they use the word “WordPress” to describe what they do. This is generally considered fair use.

But more importantly, all of WP Engine’s competitors do the same. Matt chose to go after WP Engine, but his reasoning should seriously concern all other WordPress-focused companies.

The damage far outweighs any potential benefits

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?

For me personally, this whole thing has been frustrating. I’ve been happy to contribute to WP in many ways over the years. But I find myself reconsidering whether it’s worth it. For now, I’ve paused my contributions.

WordPress’s biggest problem has been uncovered

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.

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’re a blogger, if you use WordPress you also probably rely on services provided by wordpress.org.

Basically, it’s all Matt. And it shouldn’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.

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’s initial intentions may have been good, but this whole thing spiraled out of control to the point where it’s hard to imagine a positive outcome.

]]>
https://roytanck.com/2024/10/26/my-thoughts-on-matt-vs-wp-engine/feed/ 3
In 2024, please switch to Firefox https://roytanck.com/2023/12/23/in-2024-please-switch-to-firefox/ https://roytanck.com/2023/12/23/in-2024-please-switch-to-firefox/#comments Sat, 23 Dec 2023 19:26:13 +0000 https://roytanck.com/?p=754 This December, if there’s one tech New Year’s resolution I’d encourage you to have, it’s switching to the only remaining ethical web browser, Firefox. According to recent posts on social media, Firefox’s market share is slipping. We should not let that happen. There are two main reasons why switching is important.

A red panda (firefox) resting on a tree branch.
Red Panda” by Mathias Appel is marked with CC0 1.0.

1. Privacy

Firefox is the only major browser not built by a company that makes money from advertising and/or selling your personal data. There’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’t even need those tricks. We need to use browsers that are independent, and right now that means Firefox.

2. Browser engine monopoly

Wikipedia lists four browser engines as being “active”. Browser engines are the bits that take a web page’s code and display it on your screen. Ideally, they conform to the official W3C standards, and display all elements as it describes. If that’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.

It’s happened before

In the early 2000’s, Internet Explorer had a massive 95% market share. This meant that many sites were only developed for use with IE. They’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.

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 “Gecko” engine.

Firefox is actually really good

If Firefox would be a bad browser, I would not recommend you to switch. It’s fast, has a nice user interface, and feels every bit as modern and elegant as its competition. I’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.

So please, help save the web by using the best browser out there. It’s an easy thing to do, and it makes a big difference.

]]>
https://roytanck.com/2023/12/23/in-2024-please-switch-to-firefox/feed/ 116