Making WordPress Core faster with Jonny Harris

Episode 1 April 25, 2023 01:00:42
Making WordPress Core faster with Jonny Harris
Within WordPress
Making WordPress Core faster with Jonny Harris

Apr 25 2023 | 01:00:42

/

Show Notes

The very first Within WordPress podcast is with Jonny Harris. Jonny is a WordPress Core Performance team member and as such responsible for some of the lastest performance improvements.

Join me in my first Within WordPress where I chat with the legendary Johnny Harris, a long-time WordPress contributor, XWP developer, and performance optimization guru. With over a decade of experience in the WordPress ecosystem, Johnny shares his journey from blogger to core contributor and how his obsession with performance has driven him to make WordPress faster for millions of users worldwide.

In this video, Johnny discusses:

Not just that, Johnny also shares some of his success stories, like massively reducing page load times with small code changes, and the environmental benefits of improving performance.

Whether you're a WordPress newbie or a seasoned developer, this podcast is packed with valuable insights on how to optimize your sites for speed and efficiency. ️

View Full Transcript

Episode Transcript

Speaker 1 00:00:09 I think we're live now. Welcome, Johnny. You are my Guinea pig. You are. The first, uh, with me is, uh, Johnny Harris. How about introducing yourself? Speaker 2 00:00:19 Hi, uh, yeah, my name's uh, Johnny Harris. I'm from London, England, and I work for x wp. Over the last year, I've been focusing on the WebPress Core Performance Project, but I've been contributing to WebPress for near 10 years at this point. So a lot, I've contributed to a lot of things over my, over my time. My main focuses have been the rest a p i multi-site, a lot of performance stuff under the hood, and some other features that are not performance related, like, um, full screen of death, uh, white screen of death protection, and, um, yeah, a lot of stuff. Uh, a lot of stuff over the years. Um, I got into WordPress, so how I got into WordPress. WordPress core contributing is all related to performance, actually. Okay. So, um, so Speaker 1 00:01:09 You started good, you started on the right foot. Speaker 2 00:01:12 Yeah. So, uh, little, little backstory on me. Uh, I've been using WordPress since I was 15, so, uh, how many years did that? Too many years at this point, <laugh>. Um, so something like 16 or 17 years I've been using WordPress and I started as a blogger. I loved making blogs and stuff like that, and eventually turned it into my career. Worked for a couple of years for an agency, and then I joined Time Inc. So at the time, time Inc. Was the largest magazine publisher in the uk. Yeah. Speaker 1 00:01:39 Like, Speaker 2 00:01:39 Yeah. Massive, a massive amounts of traffic and went from, you know, relatively small blogs to like the biggest blogs in the country. You know, millions and millions of requests. And my, in my imposter syndrome kicked in massively at that point because I, you know, I thought I was, mine would too. Oh, the hotdog was WordPress. I've been using it for like, you know, six, seven years at that point. Was really good at it and just massively outta my desk. Didn't, didn't know what object cashing was, didn't know what, uh, CDNs were, knew nothing, um, and felt so inferior that I just spent weeks and months just researching and getting myself up to speed and becoming obsessed about work, about performance and doing things at scale. Yeah. And, um, you know, one of the tools that I used very heavily was a tool called New Relic, which is a tool that allows you to, to plot the performance of, of your site. Speaker 2 00:02:31 Yep. And you have a certain amount in the graphs for how much p p p processing there is and how much database and how much, uh, me, you know, object caching was being used. I become obsessed with those graphs. And, uh, cuz we were, so, we weren't ho we weren't in sort of pro, pro-level hosting. We were hosting ourselves an AWS at the ops team continually nagging me, saying, what, you know, why are we doing so database requests, why, you know, why isn't object cash being used effectively? I just spent days and months researching through these things, finding these, these little nitpicky problems and things that weren't cash properly. Yeah. And I created this massive backlog of tickets, and I was getting really frustrated that none of them were getting any of the attention. You know, when you contribute to WebPress straightaway, you feel like you, Speaker 1 00:03:15 You turned your problems straight into track tickets on, uh, on workers.org. Yeah. Speaker 2 00:03:20 Yeah. Because I, I thought, like, you know, you know, I thought, you know, I found these many, I spent ages researching these things. I'm really going tons of headway and people were gonna be, you know, really enthusiastic about this. But I didn't really get a lot of stuff. So I started attending that. Yeah. A lot of the issues we originally I found, um, were multisite related, and that's why I had started contributing to multisite. There were so many places where things weren't cashed and loading things unnecessarily and doing weird and wonderful things. Um, I started contributing to stuff. I had, uh, Felix, who you may know as well, <inaudible> contributing at the same time. There's, there was Felix heavy theme around multisite. Yeah. Absolute legend. Love that guy. And the, we started contributing at the same time when we were both, so, so, um, enthusiastic about world performance. Speaker 2 00:04:08 And over the, the course of probably two or three years, we sort of lowkey rewrote most of multisite to use caching. I've seen it. Yeah. We, we, we introduced, um, two very important classes. WP Site Query, WP Network Query. Those are very heavily cashed and it allows you, you know, rewrote all the places where database stuff. We also rewrite, wrote basic quad functions. So, you know, very basic functions like wp, insert site, you know, things that you, you just expect to exist, didn't exist in motorcycle. Cause motorcycle is weird and wonderful thing. That was kind of a hack. Mm-hmm. <affirmative> that started to end up in core. So yeah, that's my, my performance journey. And Speaker 1 00:04:45 Now what year is year was this? Speaker 2 00:04:48 2013 was my, my first, uh, contribution that made it into core. Uh, yeah. But I've been in the WordPress space since 2009. Um, yeah, my first Speaker 1 00:04:59 And the, uh, multisite and the multisite improvements were in Speaker 2 00:05:03 2014. Um, yeah. Where all the work we were doing around that. Uh, and that went on, went on for a couple of years until, unfortunately, Berg came along and the focus moved away from multisite and other parts of Core. And Matt said, incident focus on other things, but I have got other stuff into core. Um, one of the things we work, me and Felix worked on was lazy loading images, which is very related to performance. So for those that don't know, it's adding a, a little attribute to image tag or the image tags that load on the page. And it means that images that are lower down on the page don't actually download until you start scrolling down to them, which has massive effects on, on performance, uh, the amount of, uh, you know, uh, network resources you, you use. And, you know, you gotta remember that not everyone's on these crazy fast connections or on five four or 5g. You know, we wanna make the web as accessible as possible to people in the developing world and people, you know, with poor internet connections. And that laser attribute was a relatively small piece of work, but would have a massive effect on, on people in Speaker 1 00:06:12 Especially considering mobile connections. Speaker 2 00:06:15 Yeah. I mean, Speaker 1 00:06:16 Just mobile connections, which there are a lot of, Speaker 2 00:06:20 Uh, yeah. I, I spent, um, six months traveling around Brazil and massive parts of that only had two G connections and just trying to two, yeah. Two, not three, two. Yeah. Yeah. So was what basic, what was really struggling to even look, I remember trying to look on BBC News homepage, which is a very well optimized page, but just, you know, none the images were downloading. I was just getting the text from that. Um, so that was a real eyeopening experience to me that not everyone has these supervisor internet connections and these, these little kilobytes of things that are downloaded, they don't need to be downloaded. Those really matter in those situations. Yeah. And in a lot of cases, you know, even if you do have a fast connection, you might be paying exorbitant fees to download that. So, you know. Yep. The price of the the data might be incredibly expensive. Speaker 2 00:07:09 So, you know, connection might be fast, but it might be costing them, you know, dollars per megabyte. So this pointless stuff that's downloading it really does, does matter here. But, so I've, I've been contributing for that long and my, my my major performance in, uh, stuff that I've been doing over the last year has been around. So Google and Yos, uh, pose this idea of a performance team. I was so excited for that. Felix is in it as well. So it's my old, old, uh, chm. And, um, I work for X W P and x W P is one, one of Xbs, uh, core values is performance, so is a lot of performance reviews and, you know, helping clients grow on a performance journey. So it's made total sense. You know, I'm working for X W P, there's this performance project we, we pitched in, and we've been contr, we've been one of the major contributors for that performance project over the last year. And I'm really proud that we, we didn't start it, but we are like the cheerleaders and the, the, we're running the band and getting things merged into call. Speaker 1 00:08:10 Yeah. And it's noticed. I mean, um, I've, I've known you, uh, I think we saw each other first time probably either work camp Edinburgh or Work Camp London somewhere. Yeah, around Speaker 2 00:08:25 Long, long time. Long time. Speaker 1 00:08:26 14, 15, 6 now. Long time ago. Um, and, uh, yeah, so I, I've, I've seen the work that the, uh, performance team, uh, has been doing. And, um, I, I like what Gutenberg is doing for the project as a whole. Uh, I like how the, the, uh, so I was a little, little hesitant about the, the full site editing component for a long while. Uh, but I've actually, uh, built, uh, about half a dozen sites now with it. So once you start to learn that I, I can appreciate the project as it started called, uh, uh, Gutenberg, I, I can appreciate a little bit more. Uh, but as you say, um, the, the focus of, of the performance team is, for me, still the most exciting project within WordPress. Uh, why, uh, well, for the se similar reasons, as, as you mentioned, so I, I didn't work for a huge company, but I had some clients that had huge sites or huge spikes at certain times, unpredictable, uh, difficult to cash. Speaker 1 00:09:34 Uh, all the, all the stuff that you, uh, you don't wanna see happening during such a rush, uh, they would happen and you would have to figure them out. So understanding all the various layers of where you can cash and what you can cash. So under basically understanding the internet, the server and the application, because all layers have, have, have, uh, some way to optimize. Um, sounds very, very similar to, uh, uh, you know, your story sounds very similar to mine in terms of learning and understanding, and then, uh, wanting to improve, um, all the things because let's, let's be honest, there's a lot of things that, uh, that can still be improved. So you mentioned, uh, Gutenberg as well. Um, outta curiosity, uh, from a performance standpoint, is you, is the what performance core team working on that at all, or sort of side eyeing it, or how, how does that go? Speaker 2 00:10:35 Um, yeah, so, uh, for full transparency, I'm a web best core committer. I'm also a con, a guttenberg, core committer as well. Okay. Um, I don't really sort of sing and sing and dance about the fact that, you know, I'm guttenberg I think WordPress and Guttenberg are the same thing, and I don't like, there's, I don't like any vibe between the two. Um, yeah. I mean, so one of the, one of the things I've been doing has been using profiling tools to analyze the performance of, of code. One of my key passions at the moment is, is making sure that full site editing is as performant as as regular sites. Um, full transparency, I've, I've, I've shared, uh, data publicly that full site editing sites are, you know, multitudes slower. So two or three times slower. Mm-hmm. Hmm. <affirmative> on average page, on, on a classic theme, if that's the terminology we're using now. Yeah. It's around, you know, 200. Yeah. Classic, Speaker 1 00:11:31 Classic are all still there. Speaker 2 00:11:34 Yeah. Uh, um, 200 milliseconds, we're looking at more like 700 or in some cases, 1.1 seconds. Wow. So they are significantly slower. Um, and, you know, if, if we're trying to push people down this route of false editing, which I like you, I'm, I'm on board with as well, from a general standpoint, like, I like that everything's blocks now, and that you can build one block and it can be everywhere that that's, you know, that makes reusing code massively useful. Mm-hmm. <affirmative>. Um, but the performance isn't there at the moment, unfortunately. And, you know, it's partly because the entire page is completely configurable in the cms. So, Speaker 1 00:12:18 So Speaker 2 00:12:19 You gotta imagine, yeah. Speaker 1 00:12:21 Go for it. Just let, let, let's, let's, uh, break it up into, so when you say performance, uh, are we talking purely front end or are we talking also in the editor? Speaker 2 00:12:34 Um, I'm, I'm talking like when it renders to front-end users, like the, the time it takes a server to render the, the markup on the page is significantly slower. So, um, page low time, I guess you'd call that, that, that charact. Yeah. It's also, you know, I'm, I'm not the biggest front end guy. I'm, I'm more of a backend person, but there, there are still some opportunities we can do around front end stuff as well. But because everything's a block now, I think there is massive opportunities there. We have the entire markup of the page before the headers are sent. So we can do some really cool stuff on the front end about preloading assets like CSS and images. Cause we have the entire markup of the page before the headers are sent. So in a lot of ways, uh, photo editing opens more opportunities in a CLA than a classic theme did. Um, but that's not the area I'm focusing on. I'm primarily focusing on, so xop P'S given me some time to work on, on, on core. I've only got a limited amount of time. I only, I think I've only got one or two days a week to work on it. So my approach has been small changes that have big impact. So I want, my, my ideal world is I'm changing one line of code and I'm shaving off 10% of the page note, which is, in some cases I've done that, which is freaking I was gonna Speaker 1 00:13:55 Say, or have done that. Been able, yes. Yeah. Speaker 2 00:13:57 Yeah. I've done that multiple times. And I, the first one I was like, that's cool. Being able to do it multiple times is, is, you know, we start those, those performance are really starting to rack up and you're like, oh, that's 30% of a page load just gone. Like, that's, that's awesome. The one Speaker 1 00:14:12 Standing out the most is the one, uh, that got, uh, uh, added to, uh, WordPress 6.1. Speaker 2 00:14:18 Yeah. So that's Speaker 1 00:14:19 Measurable query cash. Yeah. The query cash that, that was measurable. Uh, one of the sites I still maintain, uh, I I, I measured before I measured after huge, Speaker 2 00:14:32 But that was all the reason that we did that was because of full site editing. So full site editing, every single part of that page, it's all, uh, false editing is configurable in the dms. The way you make it configurable is it's, it's actually a, a, a hidden custom post type. Right? Yeah. So templates and template parts, they're, they're, they're registered post type core post types, if you wanna call it that. And even if you don't, um, you, you, you're just using it plain. You haven't gone and configured it, configured it, still doing a lookup every single in every single template part, every single template. It's doing a WP query to go get that post. Speaker 1 00:15:14 Yeah. Speaker 2 00:15:14 Because there was no cashing on WP Query. If you had 40 posts on a page, which is not an unreasonable, let's say 2040, every time you were loading the template part for single, it was doing a database request to go get it, even if it wasn't there, it would still, it would still do, it would still do it 40 times. Yes. And you were seeing, you were seeing 40, 50, 70, uh, duplicate queries on the page, and you just think, well, that's, that's just absolutely nuts, isn't it? Like if you've done nothing, even if it was there, it's doing these data requests completely pointlessly. So, um, you know, don't be query caching. Absolutely. Massive piece of performance work. But was, Speaker 1 00:15:57 I didn't, I didn't know, I didn't know we Speaker 2 00:15:58 Got into the cause of before set editing. Speaker 1 00:16:01 Yeah, Speaker 2 00:16:01 Yeah. I don't, and I don't, I don't think a, a lot of what Gutenberg does from a PHP level is completely transparent, because we don't, I don't think people really talk about it. People always, when we talk about Gutenberg, the primary focus is on, look how shiny the UI is. It's really around what's it doing, which Speaker 1 00:16:20 Is why I asked Speaker 2 00:16:21 PHB standpoint. Speaker 1 00:16:22 Yeah. Question. Speaker 2 00:16:25 I, I, I think we need, we need to, to open the curtain there and say, look, this is what it's doing behind the curtain. And a lot of that stuff, I don't wanna be disparaging of the Gutenberg team, but the way that, the way that the Guttenberg project works is it's, is functionality is built in, in the plugin and it's kind of built very quickly. So it's kind of failed fast. Is is the me is the mechanism of, of Kubo. Yeah. Which isn't, I totally understand that. They wanna, they want to build things quickly and iterate and Speaker 1 00:16:59 It's advantage. Speaker 2 00:17:02 But we, it's kind of not compatible with the rest of core, which is this massive legacy code base where we move very slowly, we make very, very small changes to it. Yeah. Um, and things unfortunately, over the last couple of, you know, I dunno, probably the last five releases a lot of things that were temporary, things that were hacked together for the plugin to make sure it would work end up in core. That shouldn't really have end up in core, in my personal feeling. We should have spent a bit more time to architect them, to be more performant, to have more fil filters and plugin, you know. So, um, Speaker 1 00:17:36 I would say, I, I would say that's the, so the context of you sharing this is performance, but I think this is typical of the project itself, cuz it's not just performance where this is, is, uh, hurting. There's also other elements of, uh, the Gutenberg project with the block editor or site full, full site or site editor it's called now. Um, where this approach, um, is, is hurting, I would say. Um, but, uh, I, Speaker 2 00:18:06 And I don't say this to disparage anyone. No, no. Everyone on the project is, has, has got the who they want deliver this awesome functionality as quickly as possible, and they want it to be awesome and people to use it. Yeah. But when there's so much of the web relies on this stuff, if things are poorly architected and we don't wanna break backwards compatibility, we have to work even harder to ensure fully architected code still works in the, with the backwards back. Speaker 1 00:18:36 Because you, Speaker 2 00:18:37 I just wanna move a little slower personally and architect things in a way that is sustainable for the future. Yeah. But, um, again, that, that's, that's not the way that they do it. So I'm, I'm not, I'm not here to question it. I'm just trying to, you know, I did a lot of work in 6.0 and 6.1 in the B2 and RC phases of going in and using profiling tools. I've, I, I think I've tweeted you're just fixing stuff publicly about, about, um, yeah. Stuff. When when I find stuff, I'm like, I'm, I'm, I'm publicizing it not to shame people just, just to be like, look, this is an aspect that no one even thought about when they, they built this and we need, we need to put a highlight of like, if you're gonna use speeches, images, for example, you need to ensure that that is loaded in one database request instead of 10 database requests. Speaker 2 00:19:28 Yeah. And there's, there was audio mechanism in court to do that, but because, um, these new false editing themes don't use that mechanism, it didn't work. So Yeah, every single, uh, featured image was doing a single database request, which again, if you have an example of, of a long page, but it could happen. You could have 40, 40 articles on a page that's 40 database queries you could replace with one database query. Yeah. Yeah. And a lot of the stuff that I've been doing is just such is honestly quite simple stuff, but it, you know, it's just with the, the haste of doing stuff, it was missed. That's why we have a team, and that's why we have a performance team to work on this stuff and to help these people out because maybe performance isn't their skillset. Maybe it's JavaScript, maybe it's something else. Yeah. We have to work together as a team to help each other. Speaker 1 00:20:14 Would you say that, um, so before I, uh, jumped in the world of, uh, working, uh, on my own agency and stuff, uh, I used to work at a large insurance company here in the Netherlands. Um, I was a project manager, uh, working on IT projects within an HR environment. And, uh, every single project that I did had to have a software architect on board. Even though at the beginning when I didn't really know what that person did, I was like, okay, fine, sure. But as I, you know, I worked there for almost six years, you, you quickly learn what they're doing and with what mindset they're doing it, uh, and also what the, uh, ultimate benefit of that is. Would you, would you say, I mean, I'm, I'm kind of reading between the lines in terms of, uh, what's happening, uh, that, uh, a dedicated role like that would be, um, um, you know, is that something we need? Is that something that's, or are there team members who pick up that role? Sort of, I mean, I kind of hear you're saying, you saying you kind of take that up as let's, let's, let's take a similar, Speaker 2 00:21:24 But I, I don't like the term architect, Speaker 1 00:21:27 So Oh, interesting. Why? So, I, Speaker 2 00:21:29 I've, I've come, I've come up, you know, when I started contributing, there were already a bunch of people that, you know, had commit access. And in my head I called them the WordPress guards. Right. But I, you can, you can like talk to them and try and convince them of things. You can Speaker 1 00:21:45 Actually talk to Speaker 2 00:21:46 The Speaker 1 00:21:46 Guards. That's nice. Speaker 2 00:21:48 You can talk to the guards, but you know, the guards have their own plans, right. <laugh>. Yeah. Um, and I always, you know, as from an outside perspective, I always felt as some like secret club that they had, or secret slack room I was not involved in. And it's very exclusionary and it feels very anti the project, the WordPress project of being open. Sure. To have someone who's a WordPress guard or an OR architect feels the same way. Like Yeah. Someone that has a say. I think ultimately open source is about who shows up and Yeah. Speaker 1 00:22:24 Yeah. For sure. If, Speaker 2 00:22:26 You know, part of the, part of the reason why there may be performance problems in Gutenberg, I'm, I'm not saying there is, but if, if there was performance problems is because the white people aren't showing up to help. And that's what I'm, that's what I'm trying to do. I'm trying to give my, you know, 15 years of experience of WordPress that that context is incredibly valuable to these people. Some of these people are new contributors who, who, who don't have that context of why, you know, why, why on earth is a database table called this weird name? Or why, why are we using this weird function? Or why do we have to maintain these filters? Like, yeah, they may not know that. And it's, yeah, I would, I'd rather see myself as a mentor to help these people and educate them than an architect. Speaker 1 00:23:08 Okay. Yeah. Fair enough. Um, I think if, if, from my perspective, that's more about semantics, uh, because I think a good systems architect, software architect, uh, is and should be a mentor because they have knowledge on a different level. Um, and with that, uh, helping, uh, anyone, uh, new coming along, but I, I, I understand the, I I understand the, the, the difference, uh, it means to you. Um, that makes sense. I, Speaker 2 00:23:39 You know, I, I, I, I got commit access after contributing for, for nine years. And I, I think that's a big mark that is a, if there's any badge that I wanted, it was to commit access. Cause I think that that does give you the right to, if someone comes along and say, we are doing it this way. And I go, well, I have commit access, so I ultimately can say whether this goes into core or not. So that is, that is that, um, but I, I am so conscious that I was on the other side of that n not less than a year ago, and someone that may, you know, some of these patches can take days and weeks. You just have no idea how long someone's spent on something. Yeah. To have someone come in and just, you know, kick over your toys and say, no, it's, it's so discouraging. And it will discourage people to leave and it just takes someone to change their tone from no, this is a terrible idea to, let's reframe this and try and be supportive. You know, I, I spend a lot of time messaging people privately that are new contributors and try and help them to contribute in a productive way. Cuz some people, they're so keen to change things and they want, they just wanna rip, work us down and rewrite it, and you go, yeah, Speaker 1 00:24:50 Yeah, yeah. I'd love that too, mate. But, uh, <laugh> big steps. I Speaker 2 00:24:56 Like, it's funny, uh, like the people that work on WordPress hate WordPress the most. I heard that once, Ryan Mc, you told me that once. Yeah. Like Speaker 2 00:25:07 This, the architect, like no sane person would've architected WordPress in its current form. The reason why it's in its po its current position is cause of backwards compatibility. It's been around Yeah. Where, wherever it is. And there's so much stuff that, you know, if, if I was to go mad with my commit access, I would just rip systems out or rip widgets out, I'd rip all these, these, these systems that don't make any sense anymore in, in modern WordPress. But we have to keep them in. Cuz someone running their knitting blog from 15 years ago and it's still going strong and we don't wanna break it. Speaker 1 00:25:43 Change the database schema. Speaker 2 00:25:46 Oh yeah. There's, there's, there's, you know, I think anyone that spent any time working on WordPress would change, have a, have a grocery list of things that they would change straight away. Yeah. We just can't. Speaker 1 00:25:55 No, no. So if, if, um, yeah, so I'm, I'm thinking about the, the, the performance side of things, uh, is, is, uh, you have, I don't know, uh, more than a dozen different metrics that you can use to measure performance. Um, and, and, and picking the things you focus on, uh, what kind of, what kind of tools are you using? Because I, I remember you sharing a spreadsheet, uh, performance measuring, uh, the 2016, uh, 2017, uh, uh, all the different, uh, themes on, um, on different PHP versions on, you know, how, how fast is this actually going? How many database queries are we making the database time, uh, to render or render, uh, uh, throwback, uh, information. Yeah. What kind of, what kind of tools do you use and what kind of, uh, performance, uh, uh, problems do you like solving most? Like what, what, what, um, what tickles you the most in that regard? Speaker 2 00:27:08 Um, so I have long been big fan of a plugin called Query Martyr by, uh, workplace call contributor called John, uh, billion. Again, he was one of the WordPress cards that I was talking about earlier. And anything he says I will listen to, cuz he's just, uh, so knowledgeable and just gets the project, um, that is an amazing tool. It's free, it's, it works. You can, you can, you can incorporate into your, that strongly recommend anyone who's building a plugin or, or them to have that installed on their local data environment to just be mindful of, uh, how many database queries, um, that are running recently. Um, I've started using a tool called blackfire. So that's a PHP profiling tool. It's a, it's a paid for solution, but, um, they have, yeah. Speaker 1 00:27:58 Yeah. Speaker 2 00:27:59 And, and, um, they, you can sign up for a free license if you are doing an open source project. Um, I've actually had a meeting with them and they're very keen to, um, give us, you know, give the WordPress community, um, the tools, you know, for free. And they've even talked about, um, helping us build out a, a CI pipeline to do performance measuring on like GitHub actions. So, you know, okay, there's a change. You could see a regression in Speaker 1 00:28:26 Performance, actually. Right. So measure what it actually has as an, as an impact. Speaker 2 00:28:30 Yeah. Which would be freaking awesome to Yeah. Yeah. My, in my imagination, I have this idea of like a, like a red bell going ding, you know? Yeah. Speaker 1 00:28:40 Yeah. Well, I'm sure you Speaker 2 00:28:41 Can, Hey, the page, the page is now 20 milliseconds slower. What, you know, what did you break kind of thing. Um, that would be awesome. That's where we, you know, we're not there yet. Speaker 1 00:28:49 I think Speaker 2 00:28:50 The tools are available to do that and we, you know, I wanna get to that at some point. Yeah. Um, yeah, those are the two major things. Uh, you know, tools that I've been using, um, the things that get me really excited. So, um, I'm in the core performance project. I'm the lead of object caching. So yeah. The two things that I've been really focusing on is better utilization of object caching. So how we load datas into cash, both persistent and non-persistent versions of object caching Speaker 1 00:29:21 Database for those perform, for those of us, for those, uh, listening that don't fully understand what object caching is versus caching, um, TLDR is, Speaker 2 00:29:34 Um, so say, say we're loading, uh, we do run a WP query and we load a bunch of posts on a page. Right? What WordPress does is it will load the first post, and if on a normal WordPress source, it stores it on an object cash, basically it's just storing objects of data, uh, through reference later. So if you, once you've loaded that post once on the page, if you reference it again further down the page or mm-hmm. <affirmative>, you know, say you have the menu twice header in a footer, that menu's not loading again, it actually comes from the in page, uh, memory. Yep. The extension to that is you can have, um, to populate the cash on a normal WordPress page, you have to do a bunch of database queries to load the data out the database into the site, into the, into that page, requests memory. Speaker 2 00:30:27 And then, um, it, it's, it's, it's available for you, but on really high, you know, enterprise sites, you can have what's called persistent object cash. So this is either, uh, mem Cash or Redis. And this is a imagine a server with absolutely tons of RAM in it and it stores all these objects in memory. So instead of doing a database query, you actually go to your object cash and load it out of that. So, and it's incredibly fast those, those things come out. Cause it's, uh, you know, talking about a server with like 128 gigabytes of memory, you can store tons of stuff in there and you can load stuff out memory that way. Is that a good, was that wasn't very short, but that was, uh, my Speaker 1 00:31:06 Expectation. I, I, uh, I, I said TLDR enough, and as soon as I said it I figured, yeah. There's no really short version of explaining this as far as I know. So, no, but I think, uh, for those who weren't aware of what it does, this is a good explanation and uh, uh, very nice for you to, uh, include, uh, uh, persistence as well. Speaker 2 00:31:25 So what my focus has been around is, uh, lowering the number of database queries per page. So can, you know, to render a page that has five different database crew, you know, five different things. So you've got maybe a latest post on the side. You've got ma you've got, you've got menu. Can we do it in a way where it, you load the data once and you don't have to load it again. So we meant, we, we alluded to it earlier, but query cashing does that, so you load that one, that query once on a page and you don't have to load it again, which is awesome. Yeah. Speaker 2 00:32:00 The other thing is, yeah, if in doing it in the other example was talking about featured images, you, there are mechanisms to prime all these cashes in one go. So, um, you know, we added new methods to be able to load, um, authors in one request. So if you are, if you have a page with multiple authors, because you are, cuz you have like, you know, the, the buy Johnny Harris on each, uh, the byline on each, um, item on a list page. Yep. You are loading an author each time. And before what it was doing was it was getting to that, that post author saying, oh, I've not got that in memory. During, during a single database query. Speaker 1 00:32:40 Do it again. And if, Speaker 2 00:32:41 And if you have, uh, uh, you know, say you're a big, big news organization and you've got maybe 20 authors and on each page you are learning, doing 20 database questions all completely pointlessly. Yeah. Just do one database query at the top of the page. Cause we know all the authors at the top of the page because when we load the post, we have the, in the post object, you have the ID of the author and you just say, you know, find, you know, get me all a list of all the authors, make it unique so I don't, you know, if, if I've posted multiple times on the page, I don't need to load myself twice. No. And then just go do a single database query to get all of those, then load them into the object cash and then you're good to go when you load the page. And that, that helps when you are rendering the page. Because before the, if you load all the data at the start of the page, all the all PHP is doing is just looping around data that's in cash. So actually means that, um, it, it loads, you know, like faster because you are, you're not stopping doing database career coming back. It's literally just going tune. Cause it's already got all the data preloaded for you. Speaker 1 00:33:45 Yeah. So essentially make it work smarter. Yeah. And, and then, and the benefit is performance gain. But what you're describing here, performance Speaker 2 00:33:58 Gain, you've got, um, less stress on your database. So you know, um, you know, it depending on what le level your, your database server is, you some database, uh, servers have like a, a limit limitation of like a hundred concurrent connections, right? Yep. So if I'm, do, if one page request is doing 20 database requests just to get those theming authors Speaker 1 00:34:22 And then got visitor Speaker 2 00:34:23 A thousand users, then you've got this massive queue Yeah. Speaker 1 00:34:26 That Speaker 2 00:34:27 You need to get through and, and, uh, a lot of the wait time on the database isn't actually, uh, the, the database responding. It's you being in a queue waiting for that queue to, to finish being Speaker 1 00:34:37 Processed. Yes. Speaker 2 00:34:38 Then, then you can do it. So, and you also gotta think from a resource perspective as well. Like, uh, if you're running well scale, you might have to then run multiple database servers and, and do or run pay more for a more expensive database server. Yeah. Or for the sake of like loading, you know, a a couple of times of PHP we can load in one go. You are saving server resources, you're saving, uh, users time. And, and another of of performance that I'm really keen to talk about is like the environmental effects of this. Like we were, you know, how much cer you knower compute ultimately is power that we're using, power that we could be using for, Speaker 1 00:35:21 And how much are we wasting of? Speaker 2 00:35:23 And how much, and how much re how many resources are we wasting? How much commute, compute are we wasting we could be using for other things or just not using a tool and saving the world power and saving, you know, greenhouse gases going into the, into the environment. Speaker 1 00:35:37 I think you, uh, you shared a tweet, I think it was you who shared a, a tweet where you did a calculation of, um, the, the query cash, uh, landing on six one. What that, uh, saved in terms of time. Was that you who shared that tweet? No, it Speaker 2 00:35:54 Wasn't by that. It was, that's Speaker 1 00:35:56 Certain. So somebody, somebody shared a tweet around the time, uh, 6.1 was released where they, they did a calculation if I have, uh, two and a half million, uh, page views, uh, on this particular site, and, uh, I know what that I I'm not changing any code other than upgrading the 61. Then by calculation of, uh, I think he was referencing, uh, I think it was he, uh, he was referencing your spreadsheet, then I should have this amount of savings on a month, which then translates and then needed a whole calculation of what the costs were. And that was just based on one url. Right. So one thing that was being hypers shared, um, and just by looking at, uh, uh, data, uh, resources and, and just, uh, smart way of, of, of having the code work with, uh, um, the, the, it's, it's data. Speaker 1 00:36:56 You know, if you, if if you can make small tweaks like that with, which obviously isn't just, I'm just writing this one line and then we're done. You, you, you iterate to the, eventually become the one to write that one line. But, uh, the, the, the, the performance gains and the resource, uh, just savings that you can do there is just, um, I, I, every, whenever I see somebody share those types of calculations, you start to think, right? So that's just one site that's just in one domain, one Euro URL that is serving two and a half million page views a month. But that's not the only big site. There are on the, on, on, on in, uh, in, in, in terms of, uh, large sites. That's, that's a large site, but there are huge sites do that. Do you know, tenfold a hundred fold even. What does that mean, uh, in terms of what you couldn't achieve? If you start focusing on that, which is again, why I love what your team is doing. Mm-hmm. <affirmative>. Um, so six one had a, had a, uh, as mentioned, uh, had a huge impact. Um, what are you working on right now that has potentially, uh, similar? Speaker 2 00:38:20 I, I'm gonna fully, fully, fully admit query Cing was probably one of the biggest things we're gonna do because Okay. WP Query is so fundamental to WordPress. Like yeah, it's used everywhere. Speaker 1 00:38:31 It's built Speaker 2 00:38:31 Around and, uh, yeah. It's, that's it's the core of the product really. Um, I'm also working on WP user query caching. So, um, you do, you list users out, um, that's gonna have some massive effects in the CMS because in, uh, in the CMS you have, uh, dropdowns to be able to change users Yeah. On sites that have more than say 10,000 users. A lot of the times those dropdowns are almost unusable. Yeah. And because it's rendered, it actually renders the dropdown twice like the header and the footer and it's not cashed and it's doing this crazy database query that's doing a, like, search on the meta table. Speaker 2 00:39:13 The, we actually, we actually actually had add filters into core so that enterprise sites can remove those dropdowns. Cause they were, they were making the list page, um, unusable Yeah. In some cases. Yeah. Um, a filter that you have to opt into is, is not the right solution to this. It's like, yeah, go away. Fix it yourself. That's not a workable solution. Yeah. Yeah. It's a solution, but kind of a rude one of, you know, go when and fix it yourself. Um, that filters, I actually got that into CORE in four nine, so that this problem's been a, a preexisting problem for a very, very long time. Mm-hmm. <affirmative>. Um, so I want to get that one, uh, merge into call and it will help sites incredibly user rich. So body press sites, <inaudible> press sites that are very user rich. Um, that'll be massively useful. Speaker 2 00:40:01 Uh, as I alluded to earlier as well, I'm also working on, um, foresight editing themes at the moment. So block, block based themes basically. Um, there's some performance issues around, you know, theme Jason that was added in in five eight. Yep. Basically, um, PAing Jason files and then looping through a raise can be incredibly expensive. And cause a lot of that stuff wasn't cashed. You were looping through these database, um, things like some, in some occasions, like, uh, 15,000 or 20,000 times per page request. Um, you, you would look through what, so, um, what it does is it creates this, um, data object that's mixing theme Jason data from th theme, Jason from, um, uh, global styles from block patterns. Like it, it creates a massive mega, mega object of all the data that a block-based theme needs in one place. So we did actually a ton of work in this, in, in six. Speaker 2 00:41:08 One wasn't really sung about, but it, we just amazing performance work there. And, and Dean Felix are currently working on getting some of that just again, as I was saying, you just process it once at the top of the page similar to database requests. And it doesn't, it doesn't change, you know, unless you are editing your theme, you're, you are actively developing it, that data should, should just be cashed, you know, should be processed once and cashed. Yeah. Um, so, and but to architect that there's, there's not anywhere else in call where we're pausing a Jason file and cashing it, uh, in, in memory. So we're still, we're kind, we're kind of inventing some new caching mechanisms and some, some caching ideas because previously everything's been in the database. Now we're kind of mixing Jason files cuz you know, the issue there is if you edit the actual file, then you need to cash and validate date. Speaker 2 00:42:00 How do you do that in a, in a doing local development and all that sort of stuff. There's a lot of complicated problems. A lot of people are spending a lot of time to optimize the code. So doing these, using black fire to finding some micro optimizations. So one, one amazing performance piece we got into 6.1 0.1 was getting, uh, replacing uh, calls to the function array merge with um, just standard adding things to array. Array merges is a function, a function call where you take two arrays and you merge them together. Unfortunately, it can be incredibly expensive to run it. And as it was running 20,000 times on a page load, it Speaker 1 00:42:39 Was Speaker 2 00:42:39 Ah, nice. Encrypting the page. Speaker 1 00:42:41 Yeah. Speaker 2 00:42:42 And just converting it from using one function to the code does exactly the same thing, but just not using this one function had some amazing performance effects. And, uh, I might actually tweet out, tweet out about that because I think people need to know about that change. That's, Speaker 1 00:42:56 That's an interesting one. Cause cause I, I, I wasn't aware that that one hadn't, uh, was added to six 11. Um, but that's, that's a perfect example of optimizing code that uh, you can only find if you actually are monitoring. Cuz there's, there's no way cuz you know, um, array merge. Yeah. That's a, that's a pretty default, uh, type of solution to use if you need to merge array. There's nothing, you don't give two thoughts about it. You just use the function as you know it's available. Yeah. Speaker 2 00:43:29 And, but that, that's also a problem. You kind of highlight a problem there with WordPress in general of, I think the assumption is that WordPress itself is performant and that I can just call WV query as many times as I want as developer. I know when I was a developer coming up that I was just like, oh yeah, WordPress just works. Right. It's kinda like an Apple approach of like, oh, it just works. Yeah, Speaker 1 00:43:49 Yeah, yeah. Speaker 2 00:43:50 And we do Speaker 1 00:43:51 Sell that story as WordPress. Speaker 2 00:43:54 Yeah. But, and, and for the most part I'm not, and I'm not saying WordPress isn't performant, but there's some, if you do, you know, if you call, if you are doing more advanced things with WP Query and you're looping through stuff and you don't know how it works under the hood, you can really, you know, build some horrible code that will is not performing. I, Speaker 1 00:44:13 I've, I've seen it and Speaker 2 00:44:15 Yeah. And we, we all have and, and plugins, you know, not to name and shame, but plugins that should know better people. You go, well like, yeah. You know, guess this one, how did you miss this one? And that's why it's so important to have these, these tools when you're developing plugins, you need need to have query monitor installed. You need to be using blackfin these tools because in some cases just passing the right parameters to a WP query can save, you know, tens of milliseconds. You can save, you know, millions of database requests. Yeah. Speaker 1 00:44:45 Yeah. Speaker 2 00:44:45 Just by not priming meta if you don't need it, just by not priming terms if you don't need it. Like there's, you know, and I'm so keen, like I'm, you know, I'm very active on Twitter and I'm trying to highlight this stuff. Cause in some case I'm finding out for the first time, oh, why, you know, why are we loading this day? We don't need it. I'm just turn that off. Like, we need to, we need to enable, it's not, you know, making core better is, is one part of the story. The performance plug performance team's working on a plugin checker to also help bring the plugins ecosystem up. Cause if we can make core as performance as whatever, but if plugins come along and destroy that performance, then there's, you know, kind of no point. Like we need to, you know, both parts need to be performing. Speaker 1 00:45:28 I your example is, uh, reminds me of, um, we had, uh, work Netherlands, uh, uh, two months back. And one of the speakers, Neils Delo, uh, Delo, he, uh, he talked about the REST API and specifically how to make the rest API more performant. And I, I'm, I'm pretty sure that 99 out of a hundred people you ask that work with the REST API daily and you ask them, do you know there's a more performant way to make the same database query through the rest api? They go like, no, you just, you just call the parameter of whatever you want. Uh, you add another parameter if you want more specificity, and then you build your, your REST API U url. And he showed that there's a few, uh, I don't know what, what you call 'em, but, uh, uh, few, uh, sort of filter things you can add at the back that just says, no, I only want this, or I only want that almost close to, uh, I'm, I'm, I'm gonna butcher the, this comparison. But, uh, kinda in a GraphQL type way where you only, you only get what you query instead of the whole object, the whole array. The whole thing. Speaker 2 00:46:42 So, uh, Speaker 1 00:46:43 As that was a great talk Speaker 2 00:46:44 As a maintainer, the rest api, I'm fairly keen to, I'd love to see that talk. But one of the things we did in six one was, um, so in, if you ever do a REST API request, you have a bunch of fields in there, but you also have what are called links. So it links to sub objects of Yeah. A type. So for example, for a post, it'll link to the author, it'll link to the categories or the terms that are linked to it, and it'll link to revisions. What we're doing is what it does now is, and all of those, it does it per, per post. So do a database, it's query to get its category is it will get author, it'll get its revisions. Revisions is another WP query that will get all of its child, um, revisions. We did one small change that would say, you know, if you, you know, if you pass, you do arrest api if you pass fields and say, I just want the post IDs, or I just want the titles or whatever. Speaker 1 00:47:40 Yep. Speaker 2 00:47:41 Before, even if you weren't rendering the, the links, it was still doing the data waste queries for them and we just got rid of that. Yeah. And it's these, these optimizations, like you just assume that a lot of these things are, Speaker 1 00:47:53 So that's, that's, that's what I meant with I, uh, from a hundred developers. Uh, I'm pretty sure the vast majority, I'm, I'm, I'm, I'm calling it 99% don't know how to optimize default stuff provided by WordPress. Mm-hmm. <affirmative>, because you, like you said, it just works, right? So we stop thinking about how can we do this in a smarter way unless you are forced to because you implemented something on scale and Yeah. You know, but not ev not everybody has the, uh, the fortune to work with, uh, something that is actually in scale. Right? So, like I said, uh, the moment you start having, um, uh, page views above a million a month, you, you have decent traffic that's traffic that you can actually start measuring. Right? Your data set of what is happening is becoming large enough for you to draw conclusions from. Uh, not everybody has that, uh, that benefit. Uh, not everybody works with those types of clients and that's fine. Not everybody, uh, has to, uh, per se, but once you start working with those, you, you, you have to start, um, developing your skillset in a particular direction where you can no longer not see. Right. So once, once the veil is lifted, you've got like, oh, okay, there's gotta be a smarter way for this as well. Um, Speaker 2 00:49:18 But it's not, it's not always just about whether your client needs that amount of traffic. You never know when, when you're gonna be attacked by someone. Right. Yeah. So Speaker 1 00:49:28 I've, I yeah, for sure, for sure. Speaker 2 00:49:31 Was talking earlier about working for a big magazine company and, uh, I won't say the brand, but they'd written a review that a certain person didn't like, so they'd paid a company to attack us. So they were just, they were hitting the rest API and cuz there was a rest, there was a problem in the rest api. It was, uh, it was, you know, it was, it was getting on traffic on um, cashed traffic and it was, you know, it was, it was really starting to affect us. And you never, and you never know on the web whether your website will blow up. I mean, you know, Reddit and Reddit's a thing still on Twitter. You know, you, you never know whether you are having massive tra traffic spikes. And a lot of these performance things are just how you build it. Oftentimes, it's not that much more effort to just call a function that primes post cash is like we've added a bunch of core, uh, methods now that you can just prime the authors, you can prime the, um, the meta, you can prime all, you know, post all this stuff. Speaker 2 00:50:31 It's, it's literally just one, one line of code and you pass an array of ob of object of posts and it'll prime it for you. Like I, part of this work was not just a, it is to provide tools for people to do this. Yep. And I wanted, I wanted to sing and shout about these things and there should be more blog posts about like, there are these cool tools now that if you, if you need to prime this stuff, you don't even necessarily need to do it. But if you know that you are loading this data, just call this one function, it'll do it's magic behind the, behind the scenes for you. And it will be, it'll be more performant than if you didn't call it. Speaker 1 00:51:05 So we're, we're actually getting into the stage where we can rely on it just works. Speaker 2 00:51:14 Yeah. Cuz there, there's always gonna be, you know, little Johnny, 15 years ago when he is just starting out, there's always gonna be that level of developer that sure, that doesn't have the time or the skill or the energy to do this. They just want to build a theme on top of it. Yeah. We should also give the tools for the medium and the higher level developers that, you know, do know more about what they're doing and and enable it. Yeah. But we can only help them so much. You can, you can take this beautifully performant code and make it unperforming by just poor practices. There's no way we can help that. We can only as I, again, going back to the mentor idea, if you see this code or you know, you can contribute back or if you see it like you have to, you have to bring people up. A lot of people when I was coming up, you know, help me when I was doing bad things. Like it's the, the way we learn. Speaker 1 00:52:04 Oh yeah, absolutely. Um, and I didn't mean it in a negative way. I, I meant more of a, you know, a a lot of people working with WordPress, like we mentioned, uh, before, they assume it's just going to work. Uh, we are coming to a stage now where we can more reliably say yes, it's, yeah, it just works. Um, but yeah, uh, the, the, the whole, uh, mentor, uh, thing I, I think we're doing as far as I can tell. Uh, and, and, and I say this specifically because I'm pretty much, uh, in, in the bubble, I'm, I I, I don't think, uh, I've been working with workers, uh, for 17, almost 18 years now. Um, I, I'm not very much in tune with what it is to look from the full outside in. So, um, that's my perspective. But as far as, as I can tell, we're doing a much better job in educating new people, onboarding to WordPress, um, and, and not just, uh, on, uh, contributors day at work camps. Speaker 1 00:53:11 Uh, not just on the site, but I think as a mentality, uh, uh, I I I, I think I recognize it happening more than, for instance, when I started definitely cuz that was just an in its infancy. Um, I started working with WordPress seriously, uh, in 2006. So I think, uh, for the first four years I was just, uh, cruising on whatever I could find in the forums and, and documentation here and there and just hope the best. Um, but I, I, I with learned at.org there, uh, with developer.workers.org, there, uh, there's a lot of solid information. Um, yeah, I think we're getting to the stage where we can say we're we're doing our best instead of Yeah. Yeah. We got some information here and there. Um, I think that has changed. That has happened. Speaker 2 00:54:07 I think a big part of it is about consistency. Like mm-hmm. <affirmative> if you know, like now WP Query is cashed, the only query class isn't cashed is WP user query, right? Yeah. So from, from the outside perspective, if everything now there are seven query classes, if one of them doesn't, you would expect it to do that. Right? Yeah. So consistency is really important in that way of like, you don't have this weird like, oh, this, Speaker 1 00:54:34 This is, if I can do it here, I can do it. Yeah, yeah, yeah. Speaker 2 00:54:39 And, and unfortunately, I, well as a new user, I think there is a, there is a lot of inconsistencies in the, in the c m s at the moment. That's one thing I'd, I'd love to see is, is a UI simplification and more consistency because like the list page and the, and the editor look very different to me and they feel very like very different applications, which is a bit more consistent because like, this one's like 10 years old, right? Cause we haven't checked, we haven't touched it, we haven't re-skin the CMS in a while. But like from a new perspective, there's a new user coming in you, you like, oh this, Speaker 1 00:55:14 Yeah, what Speaker 2 00:55:15 Completely different from this and this feels different from this. Cause this one's Yeah. React and it's like auto reloading and doing list Liang stuff and this is like old school forms. So Speaker 1 00:55:24 If, Speaker 2 00:55:25 If, yeah, that's one thing I, I would love to see Speaker 1 00:55:27 If, if we would Yeah. Could talk it, it would say something, Hey man, I, I'm just in a transitional phase right now. Just hold on. Speaker 2 00:55:35 Yeah, because, because Speaker 1 00:55:36 That, that, that, that is what it is. Speaker 2 00:55:40 But to a new user, they don't know that. No. Like No, no. Speaker 1 00:55:44 I Speaker 2 00:55:45 They see the inconsistencies, don't they? And they, and they go and it must be like, oh, this is jarring. Like the screen looks kind of from 10 years ago and this other one's like, Speaker 1 00:55:54 And we, we like, you're right, it is 10 years ago. Yeah. I don't, I don't remember what the last actual UI overhaul was. That was MP six I think introduced, or am I, Speaker 2 00:56:07 Yeah. MP six, but that was, sorry, 2000. I'm a little FU Speaker 1 00:56:12 13 maybe. Yeah. I'm a little fuzzy on years. I think that's, uh, uh, 2013. 14. Yeah. I think that was the last major ux, uh, n ui, uh, overhaul that we saw. Um, but I, like I said, I'm, I'm, I'm, uh, I'm, I'm not 100% sure. Uh, it may just be me filtering away cuz I, I remember MP six being as a separate project and then eventually merged to coal. Um, so that's, uh, that's something that's, uh, that's stuck. Um, I have, I've, um, so, um, I have one last question for you. Uh, sure. And that is mostly, so there's different ways of asking the question, but it's very put, uh, put simply is what excites you the most for the future of WebPress? I think I kind of have, cause I think I got sort of your answer between the lines, but, uh, like from a performance standpoint, from a, where are we going with this? What are you most excited about for the future? Speaker 2 00:57:24 Um, I, I have mental targets of where I think WordPress should be, I think. Mm-hmm. <affirmative>, the, uh, the ForSight editing themes should be as performant as, um, as classic themes. I wanna be using all these, these new and wonderful functionalities in input into browsers, like, uh, lazy loading images, modern image formats, like WebP, like I want, because WebPress is so much of the internet. It's 43%, 44%, whatever the percentage is. Now we have such an opportunity to make the web a more performant place. Yeah. You know, we, we can open up to people in the developing world who have poor internet connections and, you know, information is such this amazing tool to bring people out of poverty. They can learn things, they can learn so much. And, and to give the developing world, the internet is so powerful and so useful. And that's what I'm excited for is, is really democratizing publishing. Speaker 2 00:58:29 Like I know that's the, the catchphrase, but to give it to the developing world and, and to not use these resources unnecessary, that the, you know, developing world and, and resources are two things that really get me up in the morning about performance. Like why, why are these, there's millions and millions of servers sitting in racks doing pointless work that they don't need to do. Yeah. We can get the same result by just these. And Josh, you, you know, again, I I'm only doing a very limited amount of time on this, you know, have a massive impact on, Speaker 1 00:59:00 I was gonna say on that limited time has a huge impact already. Yeah. Speaker 2 00:59:05 Um, that's what's really exciting about that, that so, so much of this is just stuff that people haven't had the time to focus on. Like, it's just, it just tweaking a few lines of code can have these massive amounts of effect. And that's what's so exciting to me is yeah, so much as is a slow hanging fruit and we can make the web better by my very minimal amount of effort. Speaker 1 00:59:28 I hear you. I hear you. I see the same thing. Alright. Um, thank you so much for, uh, being my Guinea. That's Speaker 2 00:59:38 Fun. Speaker 1 00:59:39 Glad to hear, uh, people can check you out on Twitter. Uh, the spaced monkey. I, I guess I should start asking about, uh, people's, uh, monikers, why are they using what they're using? But, uh, I think I've asked yours, uh, way back when, the spaced monkey, Speaker 2 00:59:56 Um, I kind Speaker 1 00:59:57 Of vaguely remember. Speaker 2 01:00:00 Um, I, yeah, it was just my nickname on MSN and it just became my brand. Yeah, Speaker 1 01:00:07 Yeah. Speaker 2 01:00:08 Um, I think, yeah, I've been using it since I was 13. It's the name of my company. So my website is space monkey.com. I taught my blog about performance stuff and all the work I score stuff I do as well there. It's just stuck and, and it's, it's my brand now and it will be me with me for the rest of time. I don't, I don't hate it. Speaker 1 01:00:24 <laugh>. Yeah, I think it's wonderful cuz it's, uh, definitely a unique one. Uh, plus I have a visual image of what that would look like, so. Yeah. All right. Thanks Johnny. Speaker 2 01:00:36 Take care.

Other Episodes

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 23

December 27, 2023 00:47:08
Episode Cover

Talking WordPress courses, Online Learning, and the challenges of online educators with Robbie Adair

In this podcast episode, we invite Robbie Adair to discuss her experiences in the WordPress community and her CMS training company OS Training. We...

Listen

Episode 20

November 17, 2023 01:00:37
Episode Cover

Community Building & WordPress Journeys: A Chat with Raquel Manriquez

Join us in this inspiring episode of Within WordPress as we dive deep into the heart of the WordPress community with our special guest,...

Listen