WordPress, Object Cache & Redis – a Deep Dive with Till Krüss

Episode 2 April 27, 2023 01:03:33
WordPress, Object Cache & Redis – a Deep Dive with Till Krüss
Within WordPress
WordPress, Object Cache & Redis – a Deep Dive with Till Krüss

Apr 27 2023 | 01:03:33

/

Show Notes

Get ready for an exciting podcast with Till Krüss, the WordPress Cache wizard! 

Learn how Till got involved in core WordPress development, through working on projects like MP6, and started embracing the dynamic nature of the platform.

Till created Object Cache Pro. This is a very powerful WordPress plugin that harnesses the magic of Redis caching to supercharge your website's performance. With lightning-fast page loads and improved backend speed, your website will reach new heights. And don't forget Till's secret weapon, PHP-Redis, an extension that unlocks mind-boggling performance gains for PHP applications.

Dive into the world of WordPress and be inspired by Till's journey.

View Full Transcript

Episode Transcript

[00:00:00] Speaker A: How about you introduce yourself? Who are you? Where are you from? And my first question after that is how did you end up in Canada? [00:00:07] Speaker B: Yeah, so my name is Til Kruz and I grew up in Germany. As you know, always thinking I'm a German. I did a DNA test. Turns out I'm like 0% German. I'm like half Scandinavian, half Polish. East Bloc trip. And yeah, I grew up in Germany as an 80s kid, 90s kid, which I think it's a really nice nostalgic time. And my dad gave me a little book called HTML for dummies. It was like a tiny little I want to say inches. It fits in the palm of your hand easily, you could crush it. Tiny little book, 50, 60 pages. And it was talking about style paragraph and with a different color. And he gave it to me when I was 13, my neighbor gave me an old Linux computer just as a present for my 13th birthday there's. German accent coming. Houdia 33. The three is a difficult thing to pronounce for me. Bride seemed yeah, I got the little book and just dove in and was I wouldn't say obsessed, but really kind of found a creative outlet. I could create things with a computer and to like a teenager, that was very exciting. And the next couple of years just stole libraries. The contact form scripts that you would find on all these sites I think are gone. DHTML drive probably. Maybe you remember that. Yeah, just stealing code, putting my name under it like change, making it a tiny bit better. But I barely knew coding and just taught myself over the years by really taking other people's open source code and pretending it's mine and trying to make it better. And often I would break anyway, just taught myself and in Canada I landed because I really didn't jive with the Germans that are there. I think the people that leave are usually quite interesting, but it's a pretty rigid system, kind of in the UK all that matters is your families. It's like these tiered class societies, but it's what's your name, what's your blood? And in Germany it's all what do you have on paper? And being a self taught programmer, it was not a good ground for me to grow in. I tried to do an apprenticeship with a German company and after one year I was so miserable and depressed because I was one of the best programmers there already as a disciple, as an apprentice, and then just said can I curse here? [00:02:56] Speaker A: Probably, yeah, do it in German. You're safe, that's fine. [00:03:03] Speaker B: No, I didn't want to deal with these weird really rigid systems and you have to do things by one, two, three and you can't just jump to four. But what if you're already at four? I just got annoyed, so I did a Vipassana. I think my headphones just died. No, I did a Vipassana meditation in Germany, I want to say. Yeah, I think in Germany, somewhere in the south, which is like this, it's not really religious. All you do is you commit to ten days and you pay attention to your breath and you don't talk, you don't look at other people, no phone, no writing. All you do is sit there and feel your breath. And that was really nice. I don't know if you're familiar with it was very it was pretty transformative to get to know myself in quiet without any distractions. And after that, quit my job. I was doing this apprenticeship and moved to Sweden for a year, I think. Then I moved to Bali, Indonesia. Stayed there for seven years and just did psychoactive substances and danced and had a really good time and doing websites in there. I really got started with WordPress, actually, before it was all into PHP. I got a bit involved in core work. And then I met my now we're not married, I want to say wife, but she's not my wife, my partner. She's Canadian. And after six, seven years in Bali, I kind of know wanted something new, wanted to go back to the you missed the cold. I missed four seasons. I did miss Four Seasons. It was big time because having an endless summer is really nice. But eleven months of go time, and it's always African dance two days a week, ecstatic dance four days ayahuasca on the weekend. It was busy, it was nonstop. And I wanted to have these hibernation times where it's winter, it's quiet, eat a soup, watch a Netflix show and don't do anything. Maybe snowboard or so once a week. Yeah, I wanted the Four Seasons again. And so we moved randomly out here to BC in Western Canada. [00:05:24] Speaker A: Western Canada. So that makes you close to Vancouver. [00:05:27] Speaker B: Sort of very close. Yeah. Well, 8 hours, but very close. [00:05:30] Speaker A: Yeah, relatively. [00:05:31] Speaker B: Yeah. [00:05:32] Speaker A: That's as far as from me here to Stuttgart. So yeah, not close. Yeah. So I would miss four seasons. I've lived in the United States for a year, where it was short winter, very short autumn, very short winter, good winter, and then a lot of sun that's bearable. But eleven months of summer and one changing season. Sorry, one changing month. That wouldn't work for me either. No. That's a very interesting way to find yourself in Canada. I'm assuming you've done a lot of exploration while you were in Bali. In terms of how did you go from stumbling from the exploration and what do I want to do? And sort of in the WordPress you said, but what was the thing that pulled you in? Like, okay, I get this. [00:06:39] Speaker B: You mean WordPress kind of like coding and all my professional life. [00:06:44] Speaker A: Yeah. So working on WordPress, what triggered you to definitely commit to because we'll get to what you do in terms of what products you have and service. [00:06:55] Speaker B: Yeah. Now I'm pretty WordPress heavy. It was just so convenient. I built a blog with Movable type, if anybody remembers that. [00:07:07] Speaker A: Props. [00:07:09] Speaker B: I don't even know what was written in, but it was just a static block generator. I think it was pearl, maybe, I don't recall. And I kind of journaled my thoughts. It's still life on Ponti, and I called it Life is like a box of chocolates. You always know what you're going to get. And I just journaled my thoughts. When I was really young, this is 15 plus years ago, and I did a diary, kind of for the people. Facebook wasn't really a thing, especially in Europe, it wasn't a big thing. So I just journaled a bit every other day and wrote what happened in an interesting way for my family and friends to follow me along. And it is, I think, for a year or two. And I kind of got annoyed with it. And then I did a website for this Hidas kirtan which is called Bhakti yoga. So you kind of sit there and you sing ecstatically until you feel really good because you just say the same. It chanting, basically. And he wanted to have a website, and I really enjoyed sitting there and singing with him. And I made a WordPress website for him because he wanted to announce when it's the next one. And it was the first time I picked up WordPress and took me maybe a weekend to build a site. And it looked okay for 2008, 910 or so, I don't recall. And then I didn't charge him anything. And then he told everybody that I made him this amazing, great website. It was just patched together, barely working. It was good enough. And then everybody, not everybody, but more and more people in this little town that I was living in in Indonesia, what all these expats or immigrants or vacation goers, they wanted to have a website as well. And that's kind of how I got started with it. And it worked more and more with it. I built a few plugins and more and more bigger companies who wanted, okay, I don't want to have a website, I want to have an online course. And we built some course infrastructure of how to charge people. And those are the early days, like 2012. WordPress was not in a it was not easy to start an online store, sell something or deliver content to people. There was no plugins frameworks. We had to build it all. That's really how I got started with it. And then I got a bit involved with core development in, if you still remember, MP Six, the admin redesign to make it responsive and just a little bit better looking color scheme. I worked with that team quite a bit for six months and then afterwards tried to keep it was nice because it was this bundled similar to the performance team right now. You could work on things and it was fast moving. You could use Neep tools and just work on the side. It wasn't the radioactive zone around Chernobyl. That is WordPress core right now, where if you want to get anything in, there's scrutiny and there's people with machine guns outside guarding it. Any kind of little change needs like six months of discussion and then you have like twelve year old tickets that never been touched. That's how I felt a bit about it. I tried to contribute more to Core, got annoyed with the slow moving train that it was back then at least, and moved over to Laravel and really got my hands dirty. Became a core developer there, or co contributor and really leveled up my coding skills quite a bit. Just having proper progressive, modern PHP code. Not 5.6 and that's all we can use, or 5.4, whatever it was back then. But then the calling came over and over back because in my time making all these websites for clients, I built a few plugins here and there. The email address encoders one, got like 100,000 plus users. I built the Redis object cache plugin because what was out there was pretty old, so it was outdated, hardly updated. And I'll just fork it, give credit, and then make it much better now, more versatile. So you support all the different clients and then also get more and more usage and then mostly working on a few startups here and there. Trying to develop a good economic situation for myself. All these people reached out to me to talk about Redis and that they want to do e commerce stores and they wanted something better than what I built there with this open source version. And there was this big pull coming to pull me out of Laravel, out of the general PHP world, back into WordPress because the plugin Redis Object hash kind of just started to take off and they wanted more, a more professional version, so the Pro version and that's really how I got pulled back into this. And that was summer 2019, I want to say, just before the Pandemic started coding on it. Somewhere in 2019, I don't recall. Anyway, it's probably also irrelevant. Just as a German, I need to have the accurate time when it happens. [00:12:22] Speaker A: I have no view of yeah, I think it's a Northern European thing. At least there's a lot of stuff in the Netherlands that works the same way. Your headphone is acting up. [00:12:37] Speaker B: I just lost my headphones again. Something is off with them. Give me 1 second. I don't know if you can pause this. [00:12:44] Speaker A: I can. And we're back. [00:12:51] Speaker B: Yeah, okay. Are we back? Sorry, I just had like a little technical thing. Something happened with my headphone and microphone. [00:13:00] Speaker A: Just as we were discussing how thorough Germans were. [00:13:06] Speaker B: Yeah, no, just the audio disappeared there for a second. What was I saying? I moved back from Laravel into WordPress and just dove in right before the pandemic, before this big Ecommerce push in WordPress two built Object Cache Pro. I built a few commercial plugins before then, but they're really small potatoes if you can be a bit discriminatory here and built Object Pro and just over the Pandemic. It was a really good time for me because Ecommerce really rose up, worked with a bunch of hosting companies, individuals, small, medium businesses, and it was lucky in terms of time to put out a new product just before then. [00:13:51] Speaker A: Yeah, as well, in hindsight, there's quite a few more of those types of projects where all of a sudden it got a huge momentum just because the world changed a bitcoin. Yeah, it's at least starting to crawl up again. I have a ticker here, so I have the live count of where we're at or how much I still need to cry. But we hoddle, we're good. No, but ecommerce is most definitely a big driver for a lot of great things in WordPress, but also outside. I noticed it in my type of work as well. I built mostly client sites, more on the high end side of things, but I would say about 50%. Certainly double down on their ecommerce side of things, either from conversions where they weren't actually selling stuff, but doing stuff online has become the much more logical first choice. Now versus it is, oh, we also have to be online. And that's how I see it. So you have object cache pro. I know what it does. Can you explain how your solution helps anyone having a webra site? [00:15:24] Speaker B: Yeah, I really should be able to do this. [00:15:30] Speaker A: And it doesn't have to be the elevator pitch. You can take more than two minutes. [00:15:33] Speaker B: Yeah. No, that's very Canadian. I'm adopting here. No. Yeah, the basis of WordPress I'll do it really high level overview. The basis of WordPress is Sporring for people who are more advanced, so I'll keep it short. The basis of WordPress is you have PHP that runs WordPress and you have an SQL Server. Usually it's MySQL MySQL that runs your database. And that's great. It's easy to set up, it's good to get going. But once you have more and more traffic coming to your site, whether this is an API call or Google crawling or just hundreds of visitors or thousands of customers trying to check out the bottleneck will always be your SQL database, because they're not designed to answer millions of answers a second or minute, depending. And Redis is a really nice also database engine, but it's not a relational database. It's a key value store. So you can throw in something, user colon, remcus and it will answer you. It's a sub millisecond key value store, so you can ask it a million questions a second. And it doesn't even break a sweat, even on your Mediocre VPs server with 2GB of Ram like the $510 machine millions of seconds because it's designed this way. Anyway. So Object Hash Pro, you have the bottleneck of your SQL database and moderators can do is answer questions really fast. So what WordPress does it's baked into? WordPress core is called the object cache. So instead of saying hey, give me all the users that signed up between date one and two and are now deleted, which is a relational query with Redis you can also give me user one, two, three and it will give you them insanely fast. Like you can look up three users in 0.3 milliseconds. And WordPress Core does a lot of this caching, especially even more so since 6.0 and now 6.1 and there's a few guys, johnny Harris working a lot on that and there's a lot more people but I'm blanking on the names right now. [00:17:45] Speaker A: Johnny was on the previous podcast. [00:17:48] Speaker B: Oh, nice. Awesome. Yeah, and he and a few other people we worked a lot on making WordPress Core use more and more object caching. Of course that sometimes leads to some issues, but what Object Cache Pro does is really just provide the interface for WordPress to communicate with Redis and it handles all the weird race conditions in between. It manages the data. So if you have an external data, if Redis runs on a different machine than your server because you're horizontally scaled, for example, it heavily compresses the data down to roughly 25%. So you only have to send or receive 25% of the bytes, which cuts time down, less storage and so on. So Object Pro is really a high end product for hence also the price tag for anybody who runs a high performance or high traffic WordPress website. [00:18:44] Speaker A: What does high traffic mean in this case? What are we talking? Where does it start to make sense? That's not a fair question. That's not a fully fair question because I think there's a lot of difference between if you're running 3 million page views a month type of site and all you have is just your regular content, low to no commenting. It's a different ballgame than if you have 1 million page views per month and you have people commenting constantly. [00:19:17] Speaker B: Yeah, where it makes sense is Object hashing is really the difference between static and dynamic content. If you run a magazine or a news site, the comments are usually outsourced and it's all little thing. Everything is just static files being served and they're being generated as people publish. But if you run a site with dynamic content, for example Budy Boss or a forum BBPress, or if you run Ecommerce, anything where content changes kind of whether is there stock? If you have ten stock you can't serve static HTML because then we don't know if the stock is actually still accurate. 100 people could buy it. But you only have ten stock. So whenever there's really dynamic content so anybody who's logged in or ecommerce, that's when Object Hashing makes sense. Now there's a bunch of solutions. I'm a huge fan of Redis because I think it's just the modern approach to it and memcache has been a bit neglected the last ten years. It's slowly fading out more and more. Some people still use it, but when the content is dynamic, that's when you want to use Object caching. And when object cache pro makes sense. I would say the moment milliseconds matter to you, you want to use it. That would be my answer. [00:20:42] Speaker A: That's a broad spectrum. [00:20:44] Speaker B: Yeah. [00:20:46] Speaker A: Okay. That's interesting. So you're essentially also saying it doesn't really matter how much traffic you have, it's more a matter of if the seconds and milliseconds matter, that's where you. [00:20:59] Speaker B: Should because for example, we have some customers that do flash sales and they have very little traffic. Maybe let's 100 people per hour, one person per minute, whatever it is, come to the site throughout the month. But then once a month they do a flash sale and they have 5000 checkouts within like two, three minutes. And that's where it makes sense. And other people, of course, is it the continuous traffic? The more traffic you can put onto a CDN like Cloudflare and their automatic platform optimization or you use WP Rocket. I'm a big fan of anything you can throw into static page caches and just serve static files. Do it. But the moment you can't, that's where Object Caching and Object Cache Pro really comes in. Yeah. [00:21:48] Speaker A: So lively sites, dynamic and stuff happening in a relatively short period of time. [00:21:56] Speaker B: Yeah. Actually, I'll say one more thing. I never think about this because I don't work on a site like that. When your WordPress admin is slow and you're trying to look up a post, or you just want to click around in the admin and move from post to post, from product to product and update it, that's where it also helps a lot. This is the one thing that page caching cannot accelerate, is all the backend stuff. Whether this is API, calls your JSON or Rest API, or just clicking on the admin, that's the nice thing to have. So if you're very impatient, I would also use some kind of object caching for WordPress just to make the backend faster. [00:22:31] Speaker A: Yeah, so that's a good addendum. So making workers faster generally is purely focused on whatever's happening on the front end. But yeah, the back end. I have a few clients that have close to a million records. I would say 80% of that is in the regular articles and they're assisted through different custom post types and stuff. But getting them fixed from roughly five, 6 seconds wait for any and then going back to 400 milliseconds, they're like, what did you do? This is great. [00:23:18] Speaker B: People get so happy. [00:23:19] Speaker A: What is the special thing you did here? Well, we just fixed normal thing, but this is how it's supposed to be. No. Have we worked with this for so long not knowing. Yes, you have. [00:23:31] Speaker B: And it's very common. [00:23:32] Speaker A: It's very common, yeah. It's surprisingly shocking how much discomfort people settle for just because they're not aware that what they're looking at is not your default behavior. They just think, we have a lot of articles. Sure, we just have to wait longer. [00:23:52] Speaker B: And it gets to like the ten second it gets to the ten second mark where people are like, oh cool, I want to click on a page and have to wait 1012 seconds for it to load. And then it's like, wow, it's only three 4 seconds now after using some kind of, let's say, Reddit Object, that's a free version, they're like, they're so stoked. I'm like, yes, this makes people happy, for sure. And it keeps the customers on the side too. [00:24:15] Speaker A: Yeah, just add you mentioned the Pro version versus the regular version, right? Is there a performance gain just going from regular version to Pro? [00:24:25] Speaker B: Yeah, it's also a fantastic question. I usually answer it with if you care about reliability, go with the Pro version. Everybody wants to talk about performance and how many milliseconds is time to first byte going to shrink? But I always just go like, well, if you want reliable caching in WordPress, if you want to install it, say install plugin configured a little bit, you say enable Cache and then you never fucking think about it again. That's when you want to use object cache pro. That's V version, it's a bit more shaky because it's an old, outdated I only forked it now, it's not even a derivative anymore. It's so customized from what Eric manned in 2012 2010. But the reliability is really the number one thing why I build it. Because most of my customers, they care about performance. But what they really want is they want to know that their database and their Redis cache or their cache is in sync. And there's no weird data loss. You don't like, oh, an order suddenly disappeared because it still exists on Redis but not in SQL. And when you flush it now, there's like customer data missing or credit card information, whatever it is. So the reliability is the main thing. But to come back to your question, there performance. Of course, there's huge performance gains too, especially on high concurrent sites. So if you have a lot of concurrent users, if it's not one user after another, it's easy. But when you have high concurrent sites, the Optic Hash Pro does a lot of managing of not racing against each other. So the data request takes 2 seconds. That request one doesn't override what request two just did, we handle that. And if Redis sits on a different machine, we highly compress data. So you can save Ram because in some cases expensive, depending on your provider. And we pulled out as much as we could from what you can achieve with user Len PHP code. Because Object Pro is just a PHP plugin, like, what written in PHP. And we pulled a lot out of there. We batch requests together, so instead of asking readers 100 questions, we ask ten questions. We ask ten batch questions. So it says in the first question is, give me ten keys, next one is give me ten keys. So we do that, that kind of stuff to speed things up. But there's always limits because you always have to ask again, the cache server. And then in 2020, I think, in the summer, I was talking with the guys from Liquid Web, ryan McDonald. I don't know if you have him on here. And he's like, yeah, he's a good guy, smart fella. And Brian Watson, those two together, they're like, yeah, objectives. Pro is nice, but we want even more performance, especially with Magento. And then I spoke with the guy, if you interrupt me, if I'm going off on attention, no, no, magento can. [00:27:30] Speaker A: Use performance, and I'm sure that anybody listening now go like, okay, I'm all ears, tell me more. [00:27:35] Speaker B: Yeah. So liquid web hosts or nexus, I'm actually not sure. One of those two, they host a lot of magenta as well. And the liquid web team looked at, by the nexus team, I don't know who's who, those guys over there, I'm going to say liquid web. They looked at the objectives pro and they were like, this is really good for WordPress, but can we get it even faster? And can it also work for magento? And I'm like, well, maybe, I don't know. I started talking with the guy, his name is michael grunda at german roots, but definitely not german. He's like a football fan in america. She actually only lives a few hours south of me, just in washington, and he makes the PHP extension called PHP redis, or just redis. And that extension is currently like one of the fastest mechanisms to let PHP talk to redis. And we started chatting a bit, and we had a few ideas. There was some cool new redis six, version, six features out, and we just, hey, why don't we build a prototype of something that is even faster, kind of what liquid web requested? And we're like, hey, let's give it two months, let's make a prototype. Now it's two and a half years later, and the product is ready, and we completely from the ground up, rebuild PHP, redis, the extension for PHP to talk with redis called relay. So a new product, it's also free to use. There's some paid plans out there, but it's a free to use extension, and it's 100 times faster. Some machines, the biggest number we saw is 220 times, not percent, 220 times faster. So we can probably run this right now in the background here, if you want to share my if I should share my screen, even while screen sharing, and it's a big monitor here, you can run insane amounts of data through. Because what relay does is instead of having to go to redis and ask all these questions, hey, give me user one, give me user two, give me product five. We just keep the important data inside of PHP's memory. So all it is, is WordPress says, hey, give me a bit of data. And instead of having to go through a socket in unix, or in talk to redis, which is fast, but there's still I o overhead. All now PHP has to do is lock up a little memory block in its own memory and it's how we achieve really ridiculously decadent speeds. And we're just now and we wanted to launch end of last year, but working on the checkout right now, it's been running in production with Pagely and a few other really early adopters, rocket net convessio. [00:30:25] Speaker A: So this is PHP relay. I'm confused. Now, hold on. [00:30:33] Speaker B: Yeah, that's okay. So objectish pro is the WordPress plugin. Yeah, liquid web wanted more performance. I'm like, I don't know how much you can squeeze out of this. I talked with someone way smarter than me, his name is Michael, and we built a PHP extension that achieves that performance with redis. And so now there's any PHP application. [00:30:55] Speaker A: Will benefit from this. [00:30:56] Speaker B: This is not exactly yeah, magento. We already have a module for it. Instead of sticking to the WordPress base, we build something that works with all of PHP, symphony, laravel, magento, drupal, whatever. You want your own framework, it doesn't matter, it all works. Those are like the two performance. This is my life now, all I do is performance and PHP, or performance and WordPress. [00:31:21] Speaker A: Yeah, interesting. [00:31:24] Speaker B: That's the overview. [00:31:26] Speaker A: Yeah, but that's a good overview. What I find interesting is that you found a niche within WordPress to really dive into that became performance paired with redis. You then took what essentially you learned, you took over to PHP general. But I had a question for what I know is happening in between. So I'm aware of you talking to multiple hosts. So what I find interesting is that you've managed to turn a plugin into a service without fully sassifying it, so to say. Yeah, can you share a little bit about that? [00:32:23] Speaker B: I thought about sassifying it to fight piracy, but then I remember that I'm not opposed to torrents, so I didn't. [00:32:35] Speaker A: Yeah, integrity check there. Okay, good. [00:32:38] Speaker B: Yeah, I know, I thought about it. It has opticach pro, has a lot of analytics, like really in depth stuff. I thought of satisfying that to have a remote service, but then do I want to maintain service that do analytics? Probably not. I wanted to bundle one thing that if it's cut off from the internet, it can still run just really an enterprise product where there's no downtimes. I can go to beds or I can go to a Christmas gathering, my family and like a week later emerge again. And then I have to worry. That my servers are down. That was important, kind of the peace of mind and not stressing out about these things. And it's a debatable decision, but yeah, it's really just a plugin without any remote component. And of course, piracy then happens. But I think the WordPress industry is staffed for this is my opinion, is staffed for and what I mean by opinion is like, take it with a grain of salt. I don't know if this is true. It just feels way. WordPress is staffed for high end developers in high end products, like well crafted software. But it's reliable where you can trust that. And I think my time in Laravel, I learned a lot about that. How do you write code when you release the next version? It doesn't break millions of sites. And now I'm in the same position again where just testing is fundamental. I don't always do test driven development, but I always have test coverage at the end. Sometimes I just want to stop things out and write tests later. I think it's a really important thing that hosts also maybe respond to quality software that is trustworthy and not just, oh, you hit the update button and now 200,000 sites are throwing errors. Or worst case, I have a white screen of death that I think was maybe just the lucky timing of the pandemic and quality software together was maybe the secret sauce. That would be my guess in hindsight. [00:34:50] Speaker A: Yeah. But what about I don't think you've explicitly said what I was getting at. So what I meant is you have a plugin that does a wonderful thing, then you have hosting companies starting to use the plugin and license, I guess. Is that an accurate description? [00:35:16] Speaker B: Yeah, exactly. [00:35:18] Speaker A: So your clients are not just site owners, your clients are also hosting companies. [00:35:22] Speaker B: Yeah, and it's definitely shifting in terms of revenue. It's shifting from used to be about 50 50 and they grew kind of simultaneously, and now it's shifting towards more hosting companies, which I quite enjoy. Just the revenue and this number of sites, number of deployments are definitely coming from hosting companies. Especially with the recent partnership with GoDaddy. It's more and more moving in that direction, which is also I can reach more people. It's easy to support for my team. I don't have to support thousands of end users directly. It's more there's one little not a bottleneck. There one narrow passage between our team and let's say GoDaddy's team, or Pageley's team or convessio's team. It's a lot easier to run the business in a I want to say not healthy, but in a lifestyle way. [00:36:22] Speaker A: Where I don't hate my life in a sane way. [00:36:26] Speaker B: Yes, well being is important to me because then I can do this for decades and enjoy myself. That's kind of really how I designed everything around it, from the pricing to me. I always joke around with this, and usually it's well received. I wanted to create a product where people give me money, but not talk to me. So I built something super reliable. It didn't have to be customer service. And then they have questions and I just have documentation that explains it all. It was the intention, actually, it does work. [00:36:59] Speaker A: I think there's a lot of developers for whom this is exactly the dream. You build something that is solid, everything is well documented, and you don't have to do much more than continuously keep it rock solid and improve upon it and just repeat that cycle. You have your version of happiness. The client has their version of happiness. [00:37:20] Speaker B: And peace of mind for everybody. [00:37:23] Speaker A: Kumbaya so you mentioned an interesting thing, the desire to find, to have, and you said that this is my opinion, take it with a grain of salt. But I think you're absolutely right. There is an incredibly high desire to find people working within WordPress, with WordPress, that vaccine are worth their salt. That was not a pun intended upon the grain of salt. But here we are. The industry is is growing. WordPress is growing within that industry and the level of years, because in a very short while, WordPress will be 20 years old. The maturity of sites, the maturity of clients, the maturity of hosting companies, everything has risen to a level where it starts to rival those of quote unquote, professional PHP developers, systems engineers, software engineers, where I think is what we're seeing is that they're starting to become a top layer of people really understanding. Core I did a tweak this week or last week where I said, there's really nothing stopping you from developing the most modern version of a WordPress site that you can possibly think of with the latest version of PHP. Yes, I know. There's still notices and all of that, I'm aware. And yet nothing is really stopping you, because if you have a bunch of developers who truly understand what's going on, you can build your application and use whatever's in WordPress as a block, as a thing. Probably block is not the right word, but as a building block, you need user authentication, you got it. You need a theming engine, you got it. There is just smart ways of using WordPress and there's really nothing holding you back. Your imagination, your skill set. And I see this happening. I don't want to say the last two and a half, three years, but let's say the last four or five years, the professionalism is starting to really sink in. I talk to people who maybe looked at WordPress with a bit of a disdain. What's the word? [00:40:07] Speaker B: Distaste. [00:40:09] Speaker A: Yeah. Like WorkPress. I don't want to work with that. Purists. Purists? Yeah. I'm not a purist, I never will be. That is your statement. I agree with that statement. What is the biggest thing that you see changing in terms of that maturity? What is changing for you? Is it becoming easier for you in general, or is it more difficult? You say you have a team, can you find the right people? Is that doable? [00:40:55] Speaker B: It's tricky, right? I don't look in the WordPress space, I look outside. Also my products and my platforms are all built in more laravel style. If you look at object pro, you see really a Laravel project that runs inside WordPress, just how the code is structured. It's very abstracted, it's easy to hook into, but there's no actions and filters. It's all just, I don't know, a bit more sophisticated. But I do look outside. I know, I absolutely agree. When I was saying WordPress is staff what I think there's a small top two 3% of developers that are very talented and also learning and growing over the years and expanding into other not industries, other fields, and bringing that knowledge back, which is very nice and just talking generally like the majority. And it's tricky to find good people, I'd say. So I look somewhere else. [00:42:07] Speaker A: I know for most people that look for a good whippers developer that started with whippers as their first PHP project that they were playing with, has to have had a very intrinsic desire to learn new stuff and get up to speed with all the latest what PHP had to offer. And that's relatively rare. [00:42:33] Speaker B: I think there's even more to this. It's not only the cutting edge features, which is some are nice, but it's really the way you think there is the way WordPress is structured, where there's code inside the templates, like you have your HTML and there's like a block of a loop and so on, just the way it's structured. It's a WordPress way of thinking and bringing thinking from other frameworks of how they structure code, how they abstract things, how they template whatever it is, how they deal with caching and requests. That's much more important to me than how do they think as developers or as engineers, do they think the WordPress way or a different way? And I hire people who think not the WordPress way. And also there's no desire for them to learn. [00:43:23] Speaker A: I fully understand that one of the things you mentioned is you used to help court contribute. You as far as I'm aware, are currently mostly working on the wepers performance team. I see you mostly active there. What are some things that you find in terms of what we just talked about? What is from outside of WordPress? Let's say Laravel, but it's essentially I don't care if it's Laravel, zend or symphony, whatever, what are things that you're aware of that really should find a place inside of WordPress in terms of approaching a performance first type of mind? What are the things we can do to advance WordPress? [00:44:22] Speaker B: There's one thing, and we've done this recently with a few core with WordPress pull requests, track WordPress developers like early days, juniors, people getting started. It's pretty messy you just make it work, if it works done. And there's two things that I personally think would move the needle a lot. One is just generally testing and automated testing specifically not clicking around if it works, but having repeatable tests. You log in as user, you create a user with whatever your testing framework. I think there's peer to P unit WordPress stuff, there's frameworks for that out there. [00:45:13] Speaker A: Yeah, Juliet works on a lot of it. [00:45:15] Speaker B: Yeah. And that would make a massive difference. I think testing is just not part of the WordPress. Low level developers, of course, well tested, continuously and rigorously tested, but I mean more the end developers and you have to pay a little bit more. Instead of spending 7 hours on it, you're going to spend 10 hours doing this and is the client going to pay for that and selling that. And I think other industries like Ruby on Rail, Slerval, Symphony, they're very, I'm going to say Nazi about the tests, but they just expect them. It's just like if there's no tests, it doesn't get merged because it's too risky. That I shared with you earlier before we hit record, that was my morning fixing a bug without tests. And I don't want to do that, I don't want to rush before then. And I think it would make people's lives easier, but it is more time spent. And then of course, will the clients pay for the not and the clients, that's number one. And my personal thing, what I see in my field of performance, people develop with WordPress and SQL, but they don't develop with an object cache. And if they would have redis running, doing development as well, which is very easy, especially if you're on Mac, it's even easier if you would just also develop with an object cache. You catch so many issues down the road once you end development and actually go to production. Oh, now it's slow because there's traffic, we need to make it faster. And then things start to break. So many of the frameworks again, Symphony, Laravel, Magento, they already have the kind of caching built into development workflow and WordPress doesn't. It's more afterthought, similar to what you mentioned earlier, after the fact. Those two things I think would move the needle a lot and even we talked about it, the performance team could we have little batches of which plugins have test suite, which plugins are developed with object caching in mind and think about these things? I think those are the two things that would really benefit the WordPress space. [00:47:28] Speaker A: That's interesting. So you're essentially saying it's not necessarily learning a new technique or way of working, it's more of integrating what we already know workflow works and adding that to the workflow. [00:47:47] Speaker B: Yeah, because if you're a WordPress developer and you want to level up, start using Roots, Bedrock, Sage, they have a whole suite of tools to make plugins, themes, WordPress apps, the way it's structured, the way you can deploy it. They have neat. I think it's roots. IO. R-O-O-T-S IO. I don't even know who's behind that, but I love using this stuff. It's a good setup. I think a lot of people are using it. [00:48:18] Speaker A: It's a very different setup. It's so different that there's a lot of hosts out there that don't actually know how to work with it. [00:48:25] Speaker B: Yeah, I think it's well structured. I run many large scale online courses, sites with that, and it's reliable, which I care about. Again, I don't want to do DevOps. I want to build features and make it good, not worry about servers. [00:48:45] Speaker A: So I would imagine for you just said I don't like DevOps, but I would imagine you had to learn a little bit about DevOps, maybe not even a little bit, probably to understand how to properly do that on the level up application level. [00:49:02] Speaker B: Yeah. I have done so much DevOps that I don't want to do it anymore. [00:49:07] Speaker A: Yeah. Okay. [00:49:07] Speaker B: To pay thunder. That's the reason. Not because I don't know it. It's because coding is flow, it's fun. And DevOps, I feel like, is mostly, I'm going to say 80 20. 80% is just fixing things and 20% is setting it up once. It's just so much bug hunting and issues and it's obscure and the heism. You never know. Something is broken somewhere and it's always weird in the middle. Joins. I much rather sit down with a good WordPress plugin or develop code. [00:49:38] Speaker A: Yeah, I touched. DevOps. I'm not going to say I was any good at it, but I know my way around the command line. Let's just use that as an app description of where my level is. But I think I feel the sentiment in terms of tweaking and changing and adding stuff on the low level on server is quite different from a more visual way of seeing what you're doing, which I prefer as well. It just helps the brain, I guess, for me to see. So related to that, redis is not used on any and all servers. I mean, not by default, but apart from it would be great for your income stream. But would you go as far as say that every single hosting company should have Redis activated enabled by default? Is there any drawback to that scenario? [00:50:51] Speaker B: It would be great. I should just say yes because of capital. [00:50:55] Speaker A: No. [00:50:56] Speaker B: Yeah, I'll give you a reveal answer. There's a few parts to this. I think Memcache has its place when you have like massive, I mean, 10 million plus clusters of sites sorry, 10 million sites or more clusters. WordPress.com, for example. I know they're also switching away from that. But if you have these insane scales, memcache has its place. Redis versus memcache. Those are like really the only two good sub millisecond stores. Don't email me. I know this alternative that's number one. Number two, is there is definitely a trade off because if you run a tiny little you have a gas station website, just use cloudflare's APO, have it a static version and be done with it. You don't need redis, you don't need object hashing and your backend is not slow. There's this trade off between really minimal efficient sites that have very little traffic. It will be an overhead. Now you're running extra software, extra electricity, extra Ram, extra complexity. But once you're a bit more if this is a real site with real visitors, quite a few then probably but again static versus dynamic. [00:52:24] Speaker A: I'm going to translate this to any decent site worth their salt would benefit from redis and thus yeah, that makes sense. So what redis solves is the communication with the database is there on the database side of things. Is anything happening there? [00:52:52] Speaker B: You hit the nail on the head there. I think there's also quite a room for improvement. Do you have your tinfoil hat? Because this is going to get conspiratorial. Okay. WordPress doesn't use any or many database the table indices by default. It's just this is the table and the server does the workload. And if you're a high end site, your developers or your team usually have several. They will probably throw on a few indices indexes on top of that to speed things up because your meta queries your searches, things go bit faster. WordPress for some reason doesn't want to do this by default, even the reasonable ones. Again, I'm blanking on the name gentleman. He built a plugin, I'll send it to you later. I think it's something called WordPress table indexes or Indices is one plugin. Yeah, it's good and it kind of handles that for you and installs them because even if you're on a $10 a month Bluehost account you can throw on table indices to make things faster. If you don't want to go into caching yet, you still have caching but again, don't email me. I understand that you don't need to go into object caching yet. There is a little bit of work being done there. But there's pushback from Core it seems the last couple of months it's a developing thing. I don't know where this is going to go, but this is a big part. And if you have a site and you want to get a bit more performance out, if you have the ram your memory of your site, throw in an index or two, it will probably speed it up. And usually if you use a tool like AWS, it will show you which queries are slow, you run a little explain of it and there's resources out there on how to even speed up SQL a bit more. [00:55:05] Speaker A: Yeah. So as you probably still remember I used to work at Serverbolt and one of the things Serverbolt does entirely different from any host I've known so far is Database, how that works if they have their own version of MariaDB, but just start tweaking the database to the absolute optimum is good, and I think they've perfected it. But if you look at the database itself, it is still MySQL. Is there something that needs to change? There is there something in the works? There are faster databases. [00:55:52] Speaker B: Yeah. I'm a huge fan of Postgres, huge fan. Love working with it. And I don't know if I'm qualified to answer this. I can tell you that the Performance team right now is working on support for SQLite. SQLite? But this is for, hey, you want to install WordPress and all you need is really PHP and SQLite, and it's available everywhere. [00:56:18] Speaker A: You can run the bars. [00:56:20] Speaker B: Yeah, this is the let's spin up a tiny little instance on a toaster. That's what it's for. And it's neat. It's great for development or really efficient large scale hosting for tiny sites would be good. Yeah, I don't know if it's a good question. I wouldn't even know who could answer this. [00:56:46] Speaker A: I don't either. One of the things I kind of expect there to be built at some point by someone is WordPress to be using D One. I think it's called from Cloudflare. Yeah, that would be possible from what I've seen. [00:57:10] Speaker B: But it's also latency. You have the latency issue always. Again, I'm a huge fan of Cloudflare. They're workers. D one r two. I really enjoy using them. I actually used them quite excessively, I remember. Yeah. Work is a fantastic product. What I can tell you from the high end, what happens is that once you hit a certain threshold and you just can't throw bigger machines at this. There's a product called AWS Aurora, and it's a serverless database, which, if you run your servers on EC Two or whatever your choice is there with AWS, there's not a latency issue, but you can scale this big. But I think the base price for V Two is, I want to say like 350 or $500 per month just for the database. So these are high end sites that spend five, $6,000 a month just on your server infrastructure. There are some interesting new developments. Sometimes people reach out to me of new databases that sit in between SQL and they use better caching. But I don't know again how reliable this is. There's only two hard things in computer science. One is naming things, and the other thing is cache invalidation. Maybe I switched this up, but it's a real thing. Cache invalidation is hard. It's a hard problem. So when someone says, I have a new database that is better caching, test it. [00:58:43] Speaker A: Yeah, prove it. Prove it. Okay. Yeah. Because from someone who is. [00:58:56] Speaker B: A lot. [00:58:57] Speaker A: Of my work is about optimizing Wipras. Right? So I run into the weirdest scenarios where people just look at that one little tiny layer and optimize it to at infinitum. Yet they stop right there. They don't look below, they don't look above from our previous conversations outside of this podcast, but also from here, it's very clear that you look outside of that bubble. So yeah, then the database layer is most definitely something to look at as well. You have PHP, which is essentially make sure that you're on the latest and greatest, I think for the last five, six years has been proven to be faster and faster and faster. So minimum 10%, but there have been higher bumps of just pure raw speed processing speed. You have a lot of stuff you can do inside the application, small code, you have your cloudflare layer, all of that, but nobody's really talking about the database. [01:00:05] Speaker B: It's sort of yeah, and it's definitely the layers of caching. Where do you want to reduce the time to first byte, which would be all server side stuff, or do you want to reduce the what's? It a meaningful paint from like time to first byte until it's rendered one is your CDN image optimization, JavaScript stuff. And there's a lot of bad plugins out there where like just throwing all the JavaScript into one file or inlining it in HTML. That's not the solution, it's really just terrible. [01:00:41] Speaker A: That is working your way around the metrics that are being used to measure yeah, it's not a solution. [01:00:49] Speaker B: Yeah, I think running tools like New Relic is pretty good. Just running on the server side, even though makes things slower. But there's a few monitoring tools I think there's Scout again, I'm blanking on this. There's Scout, new Relic, Blackfire, I think does it now continuous monitoring of just. [01:01:09] Speaker A: Seeing what mentioned as well. [01:01:12] Speaker B: Yeah, requests are coming in to the requests being sent to the browser or it's done. And what's taking up time? Is it Yoast SEO? Is it Hello Dolly? What's really taking up the time to process this request is PHP actually really fast, but it's waiting 60% of the time for queries from SQL. Then you probably want to use Redis. How fast is redis? Redis shouldn't take up too much of this. And I think running something like New Relic again on sites that need it, you don't want to optimize the little yoga studio site, but a proper e commerce or more worth their salt. Like what you said earlier, running New Relic, or at least occasionally, you can always flip it on and off. That's how I usually optimize or even ask questions when people are like, my site is slow. I'm like, what slow? There should be guides on this and videos how to fight this outward WordPress. [01:02:15] Speaker A: Yeah, I think you've given us a good overview of not only what you do, but also where your passion lies. And one could say it's performance, but I'm tempted to say it's stability. Just so providing performance within stability. I think unless there's something you say, I need to get this off my chest, this is what everybody should hear. Now is your time to grab the mic. [01:02:48] Speaker B: Yeah. Follow me on Twitter, follow me on Masterdog, your preferred platform. And if you want to see some cutting edge stuff, check out Relay. So that's the next upcoming it's a real next gen PHP extension. Check it out. You can use it for free. It's integrated. You can use it today. [01:03:16] Speaker A: Yeah, I'm excited to test it and play with it. Well, thank you, Till. [01:03:22] Speaker B: My pleasure. [01:03:23] Speaker A: Thank you, Thomas. It's been a pleasant one and I think we've all learned a lot, so thank you, sir. [01:03:28] Speaker B: Yeah, let's do this again. [01:03:30] Speaker A: We will. [01:03:31] Speaker B: Nice to see you, man. [01:03:32] Speaker A: Nice to see you.

Other Episodes

Episode 3

April 27, 2023 01:04:51
Episode Cover

Discussing the WordPress Media Landscape with Matt Medeiros

Matt and Remkus delve into the challenges and dynamics of being a content creator in the WordPress community. Matt shares his personal experiences and...

Listen

Episode 2

May 09, 2023 00:52:10
Episode Cover

Why 1600 Testing Scenarios for WordPress is Not Nearly Enough, with Juliette Reinders Folmer

Learn all about how Juliette Reinders Folmer uses 1600 testing scenarios for just one little thing inside WordPress. Juliette is one of the big...

Listen

Episode 37

September 06, 2024 00:53:09
Episode Cover

Inside the Mind of Cristian Raiber: Building a WordPress Plugin Business

Join us in this episode of 'Within WordPress' as we chat with Cristian Raiber, a prominent figure in the WordPress community. Cristian shares his...

Listen