00:00:02 Zack Katz So you built the product. 00:00:03 Zack Katz You launched. 00:00:05 Zack Katz Sales are coming in. 00:00:07 Zack Katz But now support requests are piling up. 00:00:10 Zack Katz Your server's slow. 00:00:12 Zack Katz Your email list is a mess. 00:00:13 Zack Katz Your license system is duct taped together, and you're spending so much more time than you expected managing chaos instead of building and promoting features. 00:00:22 Zack Katz Does that sound familiar? 00:00:25 Zack Katz Behind every successful WordPress product is a solid business infrastructure or not so solid, a quiet, powerful, and often invisible hand. 00:00:35 Zack Katz In this episode, we're unpacking the systems and tools that keep real product businesses running behind the scenes. 00:00:41 Zack Katz This is WP Product Talk. 00:00:47 Matt Cromwell This is WP Product Talk. 00:00:50 Matt Cromwell A place where every week, we bring you insights, product marketing, business management and growth, customer experience, product development, and more. 00:01:00 Matt Cromwell It's your go to podcast for WordPress product owners by WordPress product owners. 00:01:06 Matt Cromwell And now enjoy the show. 00:01:13 Zack Katz Hello, everybody. 00:01:14 Zack Katz Welcome to the show. 00:01:15 Zack Katz I'm Zach Katz, founder of GravityKit. 00:01:18 Matt Cromwell And I'm Matt Cromwell, cofounder of GitWP at Stellar WP. 00:01:22 Zack Katz And today, we are talking about the tools that go into running a WordPress product business. 00:01:27 Matt Cromwell And that's why we invited my friend and colleague, Matt Bathshelder to join us today. 00:01:34 Matt Cromwell Matt, welcome to the show, man. 00:01:36 Matt Cromwell So glad to have you here. 00:01:38 Matt Batchelder Thank you. 00:01:38 Matt Batchelder Glad to be here. 00:01:39 Matt Batchelder Good to see you guys. 00:01:40 Matt Cromwell Yeah. 00:01:41 Matt Cromwell Can you introduce yourself to the world for us? 00:01:44 Matt Batchelder Yeah. 00:01:44 Matt Batchelder So, I'm Matt Batchelder. 00:01:46 Matt Batchelder I am the head of engineering at Stellar WP. 00:01:49 Matt Batchelder I have, I came over to to Stellar through the events calendar. 00:01:55 Matt Batchelder I was the lead engineer there for, well, gosh, since 2015, I believe. 00:02:03 Matt Cromwell Nice. 00:02:03 Matt Cromwell And you've been at Stellar now, for about four or five years. 00:02:07 Matt Cromwell Right? 00:02:07 Matt Batchelder Five years. 00:02:08 Matt Batchelder Yeah. 00:02:08 Matt Batchelder Yeah. 00:02:08 Matt Batchelder Exactly. 00:02:10 Matt Batchelder Yep. 00:02:10 Matt Batchelder We we pro people across multiple products and 00:02:13 Zack Katz yeah. 00:02:14 Zack Katz It's pretty cool. 00:02:14 Zack Katz During that time, you have, experienced a lot of infrastructure, Matt. 00:02:20 Matt Batchelder Maybe a little bit. 00:02:21 Matt Batchelder A lot a lot of a lot of homegrown infrastructure and adopting a bunch of third party tools that kinda make up the, maybe, duct tapes and twigs that, 00:02:33 Matt Cromwell Yeah. 00:02:33 Matt Batchelder Is the thing that runs our business. 00:02:35 Matt Cromwell Yeah. 00:02:35 Matt Cromwell I mean, I'll tell you that when Zach brought up this subject, as a podcast conversation, I was like, there's only one person I know that really gets excited about this subject. 00:02:47 Matt Batchelder I'm I'm a nerd. 00:02:48 Matt Batchelder Yeah. 00:02:50 Matt Cromwell So I'm really glad you're here. 00:02:52 Zack Katz And, Matt, why is this important for product owners? 00:02:56 Matt Batchelder Well, I I mean, as a as a product business gets bigger, there is a lot of, there's a lot of people that have their hands in building the code, pushing it out, pushing products out into the wild, monitoring what is out in the wild, and reacting to it to drive business decisions or answer questions about that come in from support. 00:03:20 Matt Batchelder So the infrastructure that we've put in place or products need to put in place really shortens the distance to solving problems or speeds up, really boring parts of the build process for a product so you can actually focus on the really interesting things. 00:03:39 Matt Batchelder Yeah. 00:03:40 Matt Batchelder Infrastructure is so important, but you you gotta grow it slowly, I think. 00:03:46 Zack Katz Deep Yeah. 00:03:47 Zack Katz And sometimes, I know personally with GravityKit, I kinda fell into a lot of the tools that we used, and then it took a lot of time to rewind and reconsider and reimplement, a better structure. 00:03:59 Zack Katz And we're still dealing with technical tooling debt, that were from decisions made in 2014 on how to how to implement things. 00:04:08 Matt Batchelder Yeah. 00:04:09 Matt Batchelder It's such a it's such a long tail of problems and annoyances. 00:04:13 Matt Batchelder Because, like, the main thing is you wanna fix this little thing that's annoying you or taking a lot of time, and it it's super expensive to make it perfect. 00:04:26 Matt Batchelder So you fix these little pieces, and your perceptions of things change over time. 00:04:31 Matt Batchelder And and the the stuff that gave you a speed up of saving an hour three years ago, processes have changed or it suddenly becomes a thorn in your side and then you iterate and yeah. 00:04:45 Matt Batchelder Is is that similar for for gravity kit? 00:04:48 Zack Katz Absolutely. 00:04:49 Zack Katz And it's a completely different situation when you have one or two developers working on something and you have three to five developers working on something. 00:04:58 Zack Katz And the process for determining code reviews and assigning, quality assurance testing and what does that even look like. 00:05:08 Zack Katz You know a lot of the tooling that we may or may not talk about is documentation. 00:05:14 Zack Katz Yeah. 00:05:15 Zack Katz And that's just a doc and that's making sure that people know where it is and what it is and like actually follow it and that's a whole another can of beans perhaps. 00:05:25 Matt Cromwell Yeah. 00:05:25 Matt Cromwell It's a good one, actually. 00:05:26 Matt Cromwell We come across that a lot just in terms of even some of our internal workflows for how support works. 00:05:32 Matt Cromwell Like, where did this gravity form come from? 00:05:34 Matt Cromwell Like, why does this thing exist? 00:05:36 Matt Cromwell And somebody's like, ah, it seems pointless. 00:05:38 Matt Cromwell Let's just delete it. 00:05:39 Matt Cromwell And then, like, the whole thing just, like, doesn't work anymore, because just, you know, it's not documented, so people don't know why it's there or why it works. 00:05:49 Matt Batchelder Yeah. 00:05:49 Matt Batchelder Oh, gosh. 00:05:49 Matt Batchelder And I you're you're talking about, like, process documentation. 00:05:53 Matt Batchelder There's also, like, the public documentation too that's in the mix. 00:05:56 Matt Batchelder And now with AI being a thing that can consume this documentation, I think we're on the cusp of trying to figure out some more tooling around massaging, the documentation we're already generating in a way that is AI consumable too. 00:06:12 Zack Katz So We're just having a team call, earlier today at GravityKit where we said, if our docs are not step by step convertible into a playwright automated testing script, then that might not be a good enough doc. 00:06:26 Zack Katz But that also is maybe a very dry doc, so there's gotta be like a different maybe, documentation process for the AI. 00:06:33 Matt Cromwell Right. 00:06:33 Matt Cromwell Right. 00:06:34 Zack Katz Human. 00:06:34 Zack Katz Yeah. 00:06:34 Matt Batchelder Consumable by AI is not necessarily consumable by humans. 00:06:40 Zack Katz Yeah. 00:06:42 Zack Katz So let's get into this. 00:06:43 Zack Katz I I, Matt, you have, an incredible slideshow that we're gonna be going through today, and I I'm really excited to dive into it. 00:06:51 Matt Cromwell Yeah. 00:06:52 Matt Cromwell I'm excited this whole kind of season of WP Product Talk. 00:06:55 Matt Cromwell We're trying to do these what we call show and tell, and, trying to ask our guests to come and bring something that they can show us. 00:07:03 Matt Cromwell And, I was joking with that, you know, GitHub repos aren't so fun to look at. 00:07:08 Matt Cromwell I mean, he disagreed and Zach disagreed. 00:07:10 Matt Cromwell But 00:07:10 Zack Katz Strong disagree. 00:07:11 Matt Cromwell I mean, for all of you out there, I advocated for something visual. 00:07:15 Matt Cromwell And Matt's actually really good at slide decks. 00:07:17 Matt Cromwell So, well, 00:07:19 Matt Batchelder we'll we can take a look at it. 00:07:21 Matt Batchelder Please interrupt me and interject, and this is, this is not the me show 00:07:27 Matt Cromwell for sure. 00:07:28 Matt Batchelder So this is a a look at how we handle our WP products, at Liquid Web with infrastructure and tooling. 00:07:40 Matt Batchelder Talking just about development QA and release. 00:07:42 Matt Batchelder And this is just a slide to show the various concerns that we look at across the various development to QA to release process and the tools that bridge those gaps. 00:07:57 Matt Batchelder So, of course, GitHub workflows are super critical for most businesses. 00:08:03 Matt Batchelder They are definitely very critical for us in how we handle everything from making sure the code is clean to how we, running automated tests, how we package, and when it comes to sites and services deployments, out in the wild. 00:08:18 Zack Katz And, Matt, before we get into it, I'd love to, we one of our cohosts, Amber Hynes is an accessibility expert and one of the things we should probably try to do during this talk is to describe each slide, to the best of our abilities. 00:08:34 Zack Katz For those who aren't watching, so what we're looking at in this slide is, a development swim it's a swim lane chart with a development lane, a quality assurance lane, and a release lane, And then there are different services that are spanning different numbers of those lanes. 00:08:52 Zack Katz So, Matt was talking about GitHub workflows. 00:08:56 Zack Katz That GitHub workflows is going through development, quality assurance, and release that's used through each one of these services. 00:09:02 Matt Batchelder Yeah. 00:09:02 Matt Batchelder Thank you. 00:09:03 Matt Batchelder Thank you. 00:09:03 Matt Batchelder Yeah. 00:09:04 Matt Batchelder I'll I'll I'll continue that theme. 00:09:06 Matt Batchelder Yeah. 00:09:06 Matt Batchelder So GitHub workflows are super critical. 00:09:10 Matt Batchelder We, at Stellar, chat ops plays a huge role in what we do. 00:09:15 Matt Batchelder And, for those that aren't aware of what chat ops is, and this this in the diagram spans, development through quality assurance primarily. 00:09:24 Matt Batchelder Chat ops is triggering tooling or infrastructure activities through chat interactions with a bot in Slack, for example. 00:09:34 Zack Katz And what bot do you use for that? 00:09:36 Matt Batchelder We have a homegrown one, built with Bolt, for Slack. 00:09:41 Matt Batchelder So it's a JavaScript based bot. 00:09:45 Matt Batchelder That bot has the ability to dip into a number of our per our databases out in, our infrastructure, to work with GitHub. 00:09:55 Matt Batchelder It talks to a Jenkins server as well, which, Jenkins, we use for doing some pronged tasks or long running processes that need delayed communication. 00:10:08 Matt Cromwell That's the Stellar bot. 00:10:09 Matt Cromwell Right, Matt? 00:10:10 Matt Batchelder That's the Stellar bot. 00:10:10 Matt Batchelder Yep. 00:10:11 Matt Batchelder Yep. 00:10:11 Matt Cromwell Yeah. 00:10:11 Matt Cromwell Well, you gotta talk about the most important feature of the StellarBot. 00:10:15 Matt Batchelder It also, is very key in distributing tacos to people. 00:10:20 Matt Batchelder So we have this, giving props to fellow coworkers thing. 00:10:24 Matt Batchelder You get an allocation of five tacos a day, and you can give tacos to people, virtual tacos. 00:10:31 Matt Batchelder And, there's a leaderboard that we look at throughout the year, and it's 00:10:35 Zack Katz Oh, nice. 00:10:36 Matt Batchelder People or inspire people with the bot, and that's fun too. 00:10:40 Zack Katz And so can you give an example of what a chat interaction would be that triggers something that you'd regularly have triggered? 00:10:48 Matt Batchelder Yeah. 00:10:49 Matt Batchelder Actually, there's a slide that I can jump to. 00:10:51 Matt Batchelder Ahead. 00:10:52 Matt Batchelder Let's see. 00:10:53 Matt Batchelder That is in. 00:10:56 Matt Batchelder I have too many slides. 00:10:58 Matt Batchelder Slide 14. 00:10:59 Matt Batchelder Let me jump to that. 00:11:02 Matt Batchelder So these are a couple of examples of, so the the one on the left here, this is a look at a chat in Slack, a a chat thread, where one of our QA folks have asked for packaging of our event tickets plugin using the feature offline check-in branch. 00:11:23 Matt Batchelder So So it's a branch that was in development that she is aiming to do quality assurance for. 00:11:28 Matt Batchelder So she she sends a very tailored command bot package, branch name for plugin abbreviation. 00:11:36 Matt Batchelder And then that will send off to our our bot will watch for that, and then it, it will communicate with ultimately GitHub actions to either grab a ZIP or package a ZIP, and then build a link which Jenkins our Jenkins server handles, signing and orchestrating the whole the delivery of that that zip to Slack. 00:12:01 Matt Batchelder And then it will present a link where QA can just click on it and download a dev version of the zip or a final version of the ZIP if we're getting ready for an actual release. 00:12:10 Matt Batchelder And then they can take that and install that on we use InstaWP for all of our quality assurance testing and our public demos, and that ZIP can be installed and then tested. 00:12:23 Zack Katz And do you automatically install the zip on InstaWP? 00:12:27 Zack Katz Is there a process that automatically spins up a InstaWP instance, or do you do that manually? 00:12:32 Matt Batchelder Not for this process because packaging doesn't always necessitate spinning up a new site or putting it on an in InstaWP site, though we do have some automations which are triggered through Slack to do Ghost Inspector testing. 00:12:48 Matt Batchelder So, Ghost Inspector, for those that don't know, does acceptance testing, and it will record videos and flag if there's a big change in the diff between two videos that it records. 00:13:05 Matt Batchelder So we do have some Ghost Inspector suites where we will create an SWP site behind the scenes, automatically push a zip to it, and then run Ghost Inspector against that thing. 00:13:18 Zack Katz Cool. 00:13:18 Zack Katz Took a 00:13:18 Matt Batchelder while to get there, though. 00:13:20 Zack Katz So at gravity kit, we instead of having a chatbot what we have is a GitHub action that, runs or CircleCI actually, we're moving over to GitHub, that automatically builds a new zip, a package zip for every commit 00:13:35 Matt Cromwell and 00:13:36 Zack Katz then that gets pushed to what we call a release manager, that's a page inside of our WordPress site and we have an internal link that we use for our own downloads but we also for each one of these uploads have it uploaded to Dropbox. 00:13:48 Zack Katz We have a public link that we can share with customers who, let's say we have a patch that fixes a specific bug, we can share that Dropbox link with them, ask them to download and install it and see how it performs for them. 00:14:02 Matt Batchelder That's really nice. 00:14:03 Matt Batchelder Yeah. 00:14:04 Matt Batchelder That public that public thing is not something we've done done before. 00:14:07 Matt Batchelder Sorry, Carmel. 00:14:08 Matt Batchelder Go ahead. 00:14:08 Matt Cromwell No. 00:14:09 Matt Cromwell No. 00:14:09 Matt Cromwell No. 00:14:09 Matt Cromwell No worries. 00:14:09 Matt Cromwell I just I wanna clarify for for those of us watching who aren't dev folks. 00:14:16 Matt Cromwell I love all of this because they are going to all this effort to provide these build, tools so that there is a deployable zip in one way or another. 00:14:25 Matt Cromwell And one of the purposes is for the support team who is dev enough to really get their hands dirty, but probably not super dev enough to necessarily run build scripts and whatnot. 00:14:37 Zack Katz I'm barely dev enough now. 00:14:39 Zack Katz Like, the the amount of build steps that it took, when we launched was, zip up a file and now it's composer install npm run build. 00:14:49 Zack Katz Like, there's all sorts of different, pre prepackaging steps that happen. 00:14:54 Matt Cromwell Yeah. 00:14:55 Matt Cromwell It's like we you wanna have folks to beat up these these, these zip files, these these plugins or themes or or anything really, but they can't if it's not built correctly. 00:15:06 Matt Cromwell So, it's it's a great conversation about how to just be able to, allow more parts of the business to to be able to get hands on with your products. 00:15:14 Matt Cromwell So 00:15:15 Zack Katz And if you're listening to this and you don't have the you're you're like, oh my gosh. 00:15:19 Zack Katz This is so much. 00:15:21 Zack Katz Don't worry about it. 00:15:23 Zack Katz This this happened over years and it requires a certain amount of dedicated development time for for somebody to implement this. 00:15:30 Zack Katz So it's not that is probably gonna be a lot easier now with AI to spin up stuff like we what we're talking about here, but don't feel imposter syndrome. 00:15:40 Zack Katz I feel imposter syndrome. 00:15:42 Zack Katz I'm sure, Matt, at some level, you do. 00:15:45 Zack Katz Yeah. 00:15:46 Matt Batchelder I'm jealous of the site that you've got for for all your releases. 00:15:49 Zack Katz Yeah. 00:15:50 Matt Batchelder But it's yeah. 00:15:51 Matt Batchelder This stuff has grown over a long period of time, and, I think it's really interesting how your there's a lot of really similar approaches that we both have taken with, how we present the zips. 00:16:04 Matt Batchelder We we do GitHub actions as well, and we're storing on Wasabi, which is like s three. 00:16:09 Matt Batchelder It's just a place to put our zips. 00:16:11 Matt Batchelder And that is that is what ChatOps is working with. 00:16:16 Matt Batchelder So chat ops just, like, layers on top of that and then talks with the GitHub actions and 00:16:21 Matt Cromwell Right. 00:16:21 Matt Batchelder The storage system. 00:16:22 Matt Batchelder But we don't have the site, which is nice. 00:16:24 Zack Katz Well, let's dive back in. 00:16:26 Zack Katz Yeah. 00:16:27 Zack Katz Should I go back to slide two, Matt? 00:16:28 Matt Batchelder Sure. 00:16:29 Matt Batchelder Just real quick, the there's another box on that, on that one that is an example of how we talk to the bot to deploy a site, in our infrastructure. 00:16:42 Matt Batchelder So, this is an example. 00:16:44 Matt Batchelder Someone is typing bot deploy, and then the site that they are deploying, the branch to production or staging or development. 00:16:54 Matt Batchelder And then under the hood, we have a Jenkins site that is doing the actual deployment and, doing an Ansible based deploy, and that's a just a tool to orchestrate deploys, that are safe. 00:17:10 Matt Cromwell Yeah. 00:17:11 Matt Cromwell And that instance, they're deploying the knowledge based website, 00:17:15 Matt Batchelder to 00:17:16 Matt Cromwell To the live production, URL, essentially. 00:17:19 Matt Batchelder For the events calendar. 00:17:20 Matt Batchelder Yes. 00:17:20 Matt Batchelder Yep. 00:17:21 Matt Cromwell Yep. 00:17:21 Matt Cromwell That's awesome. 00:17:22 Matt Cromwell Yeah. 00:17:23 Matt Cromwell And it has a nice, actionable, success message there as well. 00:17:28 Matt Cromwell Mhmm. 00:17:29 Matt Batchelder And failure because it failed sometimes. 00:17:31 Matt Cromwell Yeah. 00:17:31 Matt Cromwell Yeah. 00:17:32 Matt Cromwell Exactly. 00:17:32 Matt Batchelder You know, because devs exist. 00:17:34 Matt Batchelder So we're 00:17:35 Zack Katz looking again at the swim lanes, chart where it shows chat ops covering both development and, what's the other lane? 00:17:45 Matt Cromwell Quality assurance. 00:17:46 Zack Katz Quality assurance. 00:17:48 Zack Katz And then it deploys to release. 00:17:51 Zack Katz What's the CLI tooling part? 00:17:54 Matt Batchelder We have a bunch of homegrown CLI tools that we, use. 00:17:59 Matt Batchelder They're used in our workflows. 00:18:01 Matt Batchelder They're also used on our local dev machines, for various various things. 00:18:09 Matt Batchelder We have a DB dump scrubber. 00:18:10 Matt Batchelder So as probably most people that are running a product business, they've got a production website. 00:18:15 Matt Batchelder Sometimes they need to recreate issues, and they don't wanna edit, or do cowboy coding on the production site. 00:18:22 Matt Batchelder So you need to get some semblance of production into a local dev environment or remote dev environment. 00:18:28 Matt Batchelder So we have a tool that will, on the production server, export the production database to a scrubbing database, and then we'll sanitize all the data. 00:18:42 Matt Batchelder So our customer data, purchase data, PII doesn't get, packaged up in that sanitized database, and then, the dump scrubber can, will put it in a directory that's reachable by another CLI tool we have called SUP, which is a server utilities and processes CLI tool, and we can fetch those, scrubbed databases from any of our production sites and bring it down into a local Lando instance. 00:19:16 Matt Batchelder We use Lando for our local dev environments mostly and import the, the database. 00:19:22 Matt Batchelder And it's all safe, and we can typically re recreate problems there with close to production data. 00:19:28 Zack Katz And this is something that is important for those who haven't considered it. 00:19:32 Zack Katz Please do not just download database dumps and pass them around your support team or whatever. 00:19:40 Zack Katz You need to make sure that the they're sanitized and scrubbed as Matt was talking about because there's a lot of information in there that is very compromiseable. 00:19:49 Zack Katz So 00:19:51 Matt Batchelder that tool specifically was grown out of the fact that there were cases in our past where we have accidentally emailed customers from local dev environments. 00:20:02 Matt Batchelder Or 00:20:02 Zack Katz Oh, yeah. 00:20:03 Zack Katz No. 00:20:03 Zack Katz There's and that's the thing. 00:20:07 Zack Katz I try to drop all the tables and, like, and and do all the good things. 00:20:12 Zack Katz I'm still so paranoid when I'm in a local dev environment. 00:20:15 Zack Katz The first thing I set up is the, like, WP block mail plugin. 00:20:19 Zack Katz Yes. 00:20:20 Matt Cromwell And it 00:20:20 Zack Katz is a multi site, like a must use plugin. 00:20:24 Zack Katz It's my paranoia runs deep based on when I accidentally emailed, you know, thousands of customers for, from a local website. 00:20:34 Zack Katz Not I, but then, actually, developer working with us on a website. 00:20:38 Zack Katz So, yeah, it's it's important to do that stuff. 00:20:41 Matt Batchelder Most shops have experienced that fear and the sadness when, you realize we really need to email these people and apologize and hope they understand. 00:20:51 Matt Batchelder Yeah. 00:20:52 Matt Batchelder It's so so tooling around safety with data, we have tooling for packaging our plugins, consistently so a dev can package in the same way that GitHub actions can. 00:21:07 Matt Batchelder Tools for generating data on our sites, are are really important. 00:21:13 Zack Katz We have a question, from Friendly Web Guy UK. 00:21:16 Zack Katz Are there any off the shelf tools that could do this for less technical folks? 00:21:19 Zack Katz And I I assume that they're talking about the scrubbing of customer data, for the database migration. 00:21:28 Matt Batchelder I that's a great question. 00:21:29 Matt Batchelder I we built our own because I don't know of any that tailor specifically to WordPress and Laravel style, databases. 00:21:38 Matt Batchelder There might be something out there. 00:21:40 Zack Katz What I would recommend doing, is asking chat g p t for a plugin that adds to the WPC CLI. 00:21:48 Zack Katz Well, that's not less technical necessarily. 00:21:50 Zack Katz Have it create a plugin that does this automatically, where it clones the table, like it sets up it can do it can accomplish the same outcome in many ways, that are not as advanced as setting a whole new database. 00:22:07 Zack Katz So, yeah, I I'd I'd chat with the AI and have it make a custom plugin for you. 00:22:12 Matt Batchelder Yeah. 00:22:12 Matt Batchelder I would be very careful, in doing any sort of action or testing with the production database. 00:22:24 Zack Katz We would We need an a database to start off with. 00:22:27 Matt Batchelder Bring it yeah. 00:22:29 Matt Batchelder The the the production data never leaves our production servers. 00:22:33 Matt Batchelder So having if you build a tool like that, I I would really advise getting 00:22:40 Zack Katz Make production. 00:22:41 Matt Batchelder Database dump and put bringing it into another site that is on production. 00:22:46 Zack Katz That's good advice. 00:22:47 Matt Batchelder Isolated. 00:22:48 Matt Batchelder Yeah. 00:22:49 Matt Batchelder So, yeah, I don't know of any tools for that. 00:22:53 Zack Katz So we're we have CLI tooling. 00:22:56 Matt Cromwell Mhmm. 00:22:58 Zack Katz And, that is for quality assurance as well. 00:23:01 Zack Katz How does that work? 00:23:02 Matt Batchelder Yeah. 00:23:03 Matt Batchelder So, our so if we think back to the chat ops slide that we have, our quality assurance folks using our packaging through chat ops, but they also have the we have some more technical, QA folks that will do more dev like tasks. 00:23:24 Matt Batchelder So they'll use similar tooling for, for packaging, but but what they really use heavily is data generate data generation tooling. 00:23:36 Matt Batchelder So they often need thousands upon thousands of posts in a site to load test something. 00:23:45 Matt Batchelder So they will use our data generation tools to to generate those, the bits of data and then purge the data afterward. 00:23:53 Zack Katz And the, a tool that I wonder if you're using is FakerPress by Gustavo Bordoni, one of your lead dev people. 00:24:03 Zack Katz Is that what you use internally? 00:24:05 Matt Batchelder Absolutely. 00:24:06 Zack Katz Nice. 00:24:06 Zack Katz Fingerprints, for those who don't know, is free. 00:24:08 Zack Katz It's on the repo, and it's a great tool for generating a lot of data. 00:24:14 Matt Batchelder Yes. 00:24:15 Matt Batchelder Yep. 00:24:15 Matt Batchelder That's very good. 00:24:16 Matt Batchelder We we use that in combination with some custom CLI tools that we've built and and, and some WordPress plugins that that use it too that are tailored to very specific products in our ecosystem. 00:24:30 Matt Batchelder Yeah. 00:24:33 Matt Batchelder Translations, that that is a section that's over in the release column, the release lane. 00:24:41 Matt Batchelder We have a lot of these tool seal these tools overlap with each other, but we have some specific tooling around automating the generation of pot files, which is where all the translation strings live, generating the new, generating a new pot file whenever we have a new release coming and then uploading that to our GlotPress instance and then tooling to fetch, fetch all those translations down from GlotPress. 00:25:14 Matt Cromwell Yeah. 00:25:14 Matt Cromwell We actually had a really great in-depth, conversation about automations around translations just last week that Zach was on, and Zach actually created a tool himself that does not it doesn't do the pot file stuff. 00:25:28 Matt Cromwell It does 00:25:29 Zack Katz Yeah. 00:25:29 Matt Cromwell It's like right? 00:25:31 Zack Katz My our lead developer, gravity kit, Vlad, developed a tool called Potomatic, p o t o m a t I c. 00:25:41 Zack Katz And, check it out. 00:25:42 Zack Katz It's on GitHub and also npm. 00:25:45 Zack Katz We have we're in the process of rolling out, integration with all of our plugins, but it works so that every commit it it diffs the translation files and if there are any new strings it automatically, translates all of them, translates all the new strings and uploads them to our, translations press, instance which is essentially GlotPress that's being hosted by translations press. 00:26:10 Zack Katz And, in order to do that they didn't have an API, so Vlad, developed a playwright script which is like a headless way of browsing the web and, the playwright script goes through the translations, press UI and uploads the, the file by pointing and clicking on the different elements and That's 00:26:30 Matt Cromwell that's lovely. 00:26:31 Zack Katz Automatically translates everything. 00:26:33 Matt Batchelder That's that's really clever. 00:26:34 Zack Katz Yeah. 00:26:35 Zack Katz It's fun. 00:26:36 Matt Cromwell That's fun. 00:26:36 Zack Katz So we're, check out Automattic if you're interested. 00:26:39 Zack Katz We're going to be, sharing our workflows, our GitHub actions, and our, all the all the stuff I just described on Automattics. 00:26:48 Zack Katz GitHub 00:26:48 Matt Cromwell when you might get some customers who really don't understand the purpose of that product, though. 00:26:53 Matt Cromwell They're gonna be, like, wanting to sell stuff online and, I don't know. 00:26:58 Matt Cromwell There's just just a thought. 00:27:01 Zack Katz We'll we'll we'll see, I guess. 00:27:06 Matt Cromwell That sounds awesome. 00:27:07 Matt Cromwell And that's obviously a great infrastructure tool too. 00:27:09 Matt Cromwell So 00:27:11 Zack Katz Yeah. 00:27:11 Zack Katz And and if you don't want it, GlotPress is like a translations management platform for those who don't know, and it's a way instead of if you don't have a plugin on wordpress.org, wordpress.org runs GlotPress internally to manage all the translations and all the different strings for all the different languages and distributes them from .org. 00:27:30 Zack Katz If your plugin is not on .org, you need to figure out your own translation system. 00:27:35 Zack Katz And that's why we use Translations Press. 00:27:38 Zack Katz Something like Freemius has translations built in, I believe, as well. 00:27:42 Zack Katz But you definitely need to consider internationalization and check out our prior episode on on more about that. 00:27:48 Matt Batchelder Definitely. 00:27:49 Matt Batchelder International folks make up about 50% of our Mhmm. 00:27:54 Matt Batchelder Of our business. 00:27:56 Zack Katz Yeah. 00:27:56 Zack Katz Same here. 00:27:57 Matt Cromwell Yeah. 00:28:01 Zack Katz Alright. 00:28:01 Zack Katz So back in the development lane, I'm looking at, lando dot dev, local dev environments. 00:28:07 Zack Katz We we don't have a standardized thing. 00:28:10 Zack Katz We let people roll their own whatever they wanna do. 00:28:13 Zack Katz How do you end up on standardized lando. 00:28:15 Zack Katz Dev? 00:28:16 Matt Batchelder It sort of stand that that's a good question. 00:28:19 Matt Batchelder We for a long time, we people rolled their own, and we still encourage people to roll their own. 00:28:24 Matt Batchelder But the thing that we support internally has we've narrowed it down to one thing. 00:28:31 Matt Batchelder Lando's open source, which is great. 00:28:34 Matt Batchelder It it uses containerization, so we can replicate really complex systems. 00:28:39 Matt Batchelder For a long time, we were using Flywheel, for our or sorry. 00:28:45 Matt Batchelder Local by Flywheel. 00:28:46 Matt Batchelder Sorry. 00:28:47 Matt Batchelder Now by WP Engine, 00:28:49 Matt Cromwell I think. 00:28:51 Zack Katz But 00:28:51 Matt Batchelder the problem with local is it gives you a really great WordPress site. 00:28:57 Matt Batchelder But if you are working on something more complicated like some of our commerce sites or our SaaSes, you need things like Redis. 00:29:04 Matt Batchelder You need, queuing systems. 00:29:06 Matt Batchelder You need, maybe an, a node service that's running, and you can't really do that with local. 00:29:13 Matt Batchelder So for a while, we did homegrown Docker stuff, and that was a nightmare, honestly. 00:29:18 Matt Batchelder We had a really good system. 00:29:20 Matt Batchelder If you built it and you understood it, and then I I learned about Lando quite a number of years ago, and it's taking the complexity of building it building the complex containerized system, and gives you a command line tool to do all of that. 00:29:37 Matt Batchelder And then you just define your site with, a YAML configuration file, which is all plain text and and really easy to manage. 00:29:46 Matt Batchelder So we started standardizing on that for our internal site. 00:29:51 Matt Batchelder So I for for a time and I'm sure many people will experience this. 00:29:57 Matt Batchelder You have a new dev join your team or you've got a couple of devs. 00:30:01 Matt Batchelder One person that is an expert at getting their system running with a site, but local machines have quirks and people don't necessarily understand how to set up everything exactly. 00:30:13 Matt Batchelder Or, hey. 00:30:14 Matt Batchelder This is working on my machine, but it's not over here. 00:30:17 Matt Batchelder Lando allows us to commit into GitHub a a way to spin up a specific site with all the correct versions. 00:30:27 Matt Batchelder So now we can say, hey. 00:30:29 Matt Batchelder Okay. 00:30:29 Matt Batchelder Cool. 00:30:30 Matt Batchelder Run this Lando start command, and you'll have a site, and here's the database you import into it. 00:30:34 Matt Batchelder And all the the busy work of figuring out why things are different have drained away because of Lando. 00:30:42 Matt Batchelder What what do you guys do? 00:30:43 Matt Batchelder You you do a bunch of different things. 00:30:45 Matt Batchelder What are the tools that you use, Zach? 00:30:47 Zack Katz I use HEARD locally. 00:30:50 Zack Katz Vlad, uses, Lando as well. 00:30:54 Zack Katz I'm the unicorn. 00:30:56 Zack Katz I'm the, like, ugly unicorn, I guess, where, like, so many times the CLI commands that work for everybody else just don't work for me because I've customized my Macs like, I don't know, bin folder so heavily that I Yeah. 00:31:13 Zack Katz My Mac itself is that we can we can we can acquire the tool chain. 00:31:18 Zack Katz But yeah, we also try to do dockerized testing, for example, like our unit tests, we have a CLI command that when it runs for me, it, it spins up a Docker container and then runs the unit tests inside of that to make it, less dependent on our local configurations. 00:31:38 Zack Katz That that actually that like, that's a really big thing that was a stumbling block for us to actually fully adopt automated testing. 00:31:46 Matt Cromwell Mhmm. 00:31:46 Matt Batchelder Was the the confusion around, okay, testing database and container containerization helped. 00:31:52 Matt Batchelder We have a tool, and this is the other thing in the development lane called Slick, and this is open source and available on Stellar w p slash slick. 00:32:02 Matt Batchelder But it provides a containerized environment for consistent running of, automated testing and building your plug running composer commands within the environment that you know you need to test on. 00:32:15 Matt Batchelder You can change PHP versions and MySQL versions and versions of WordPress that you're using. 00:32:21 Matt Batchelder So we use Slick locally to run our automated test. 00:32:25 Matt Batchelder We use Codeception, which is, superset on top of PHP unit. 00:32:31 Matt Batchelder It can also run Playwright tests, and it spins up a little site in a container, and we'll do all its stuff. 00:32:38 Matt Batchelder We can do that locally. 00:32:39 Matt Batchelder We run the exact same tool in GitHub actions, so our automated test. 00:32:43 Matt Batchelder If there's a failure in one place that's failing consistently, very handy tool. 00:32:49 Zack Katz Sounds slick. 00:32:50 Zack Katz Yeah. 00:32:50 Zack Katz Nice job. 00:32:51 Zack Katz There you go. 00:32:53 Zack Katz Steve Jones, a guest on the show, from Equalize Digital says we've been using WPEMV and are switching that over to Docker now, but we end up rolling our own local environment a lot of the time. 00:33:06 Zack Katz You know, I got so close to wanting to go all in on WPEMV as well, but didn't. 00:33:13 Zack Katz Any have you looked at it? 00:33:16 Matt Batchelder I'm really curious about playing with it, for slick, actually. 00:33:20 Matt Batchelder So we have completely custom containerized environment. 00:33:23 Matt Batchelder I actually would love to have WP ENV power that so we don't have to maintain all the stuff that we maintain to make some 00:33:31 Zack Katz of the code. 00:33:31 Zack Katz Yeah. 00:33:32 Matt Batchelder I don't see a world where we're we would switch to WP and V for local testing because of some of the dependencies we have to manage. 00:33:41 Matt Batchelder But maybe I I I guess I don't know. 00:33:43 Matt Batchelder I haven't poked at WP and V super deeply. 00:33:47 Matt Batchelder I've spun up sites, but nothing really more than that. 00:33:50 Zack Katz Right. 00:33:51 Matt Cromwell It's a 00:33:51 Matt Batchelder great tool. 00:33:53 Zack Katz And I see here under quality assurance lane, there's InstaWP and Ghost Inspector. 00:33:58 Zack Katz We've talked a little bit about that. 00:33:59 Zack Katz Do we have more to say? 00:34:01 Matt Batchelder No. 00:34:01 Matt Batchelder I I think I think we covered that pretty well. 00:34:03 Matt Batchelder They're both of those are vital to our our business. 00:34:06 Matt Batchelder Ghost Inspector is takes a long time to run. 00:34:10 Matt Batchelder And when you have a really big suite, we run those right before we do releases as a smoke test stage. 00:34:17 Zack Katz Yeah. 00:34:17 Zack Katz We use Playwright, as I mentioned. 00:34:19 Zack Katz And, I every time Ghost Inspector seems really cool, and then every time I'm looking at that cost, it's like it's just above what I wanted. 00:34:28 Zack Katz At every stage, every year I look at it, I'm like, oh, this looks nice, and it's always a little more than I 00:34:35 Matt Batchelder wanna spend. 00:34:35 Matt Batchelder Mhmm. 00:34:36 Matt Batchelder Yeah. 00:34:36 Matt Batchelder Yeah. 00:34:36 Matt Batchelder It's it's not cheap. 00:34:39 Matt Batchelder Yeah. 00:34:39 Matt Cromwell Yeah. 00:34:40 Matt Cromwell I think we have those conversations often over time in terms of, like, well, we didn't wanna spend it on that software, but then that ended up meaning that we end up spending all these extra hours of dev time on stuff that we could have prevented or things like that. 00:34:57 Matt Cromwell I mean, I will say on the give side of pre acquisition, I think Ghost Inspector was one of the very first tools that we really invested in and that felt expensive for us, that immediately started seeing a lot of great benefits, mostly with our website deploys. 00:35:15 Matt Cromwell We were doing a lot of ghost inspector stuff to make sure the website, when it was shipped, went live. 00:35:21 Matt Cromwell Because, the gift sites, still even today, it's, the marketing and ecommerce all in one site. 00:35:27 Matt Cromwell And so it was like we had to really baby it to make sure it was always live and those types of things. 00:35:34 Zack Katz That's And one one bug per month, Yeah. 00:35:39 Zack Katz Is for an entire year. 00:35:41 Zack Katz Or one bug per year pays for yeah. 00:35:43 Zack Katz Anyway, it pays for itself, when you have it set up. 00:35:46 Zack Katz Yeah. 00:35:46 Matt Batchelder It really does. 00:35:47 Matt Cromwell But then you do spend a ton of time just configuring it and making it work the way you want it to work. 00:35:52 Matt Cromwell So Yeah. 00:35:52 Matt Cromwell I mean, there's 00:35:54 Zack Katz There's onboarding. 00:35:55 Matt Cromwell Yeah. 00:35:56 Matt Cromwell But you it it feels like you're investing that time in safe time in the future. 00:36:00 Matt Cromwell So 00:36:01 Zack Katz Totally. 00:36:02 Zack Katz Mhmm. 00:36:02 Zack Katz Mhmm. 00:36:04 Zack Katz Alright. 00:36:05 Zack Katz What's next, Matt? 00:36:06 Matt Batchelder Yeah. 00:36:06 Matt Batchelder Let's go on. 00:36:06 Matt Batchelder The the the next slide might feel a little intimidating, but it I guess I I need actually, I need to look at 00:36:14 Matt Cromwell Is this the all the things slide? 00:36:17 Matt Batchelder Oh, actually be actually, before I go into that, just this is a I forgot I built a slide. 00:36:22 Matt Batchelder A quick look at how our deployments work for plugins or for sites and SaaSs, and and I kind of talked about this already where chat ops will generate lang files. 00:36:32 Matt Batchelder It will then trigger the packaging of a final zip, and then we'll fire off a GitHub workflow that uses the pop CLI, which is another thing that's open source, stellar w p slash pop. 00:36:46 Matt Batchelder And that does a number of things like like running, build steps. 00:36:53 Matt Batchelder It it does sanity checks on, oh, are all your versions updated appropriately? 00:36:58 Matt Batchelder Are all the files built in the correct location? 00:37:01 Matt Batchelder And then we'll push that out to licensing and to wordpress.org. 00:37:06 Matt Batchelder And then finally, we'll use chat ops to generate dev docs by doing a deployment of our site. 00:37:12 Zack Katz That's, good flow. 00:37:15 Zack Katz We one thing I didn't mention is we have a pulse channel in our Slack. 00:37:20 Zack Katz Our Slack is where we coordinate everything. 00:37:22 Zack Katz We chat internally. 00:37:22 Zack Katz Like, that's where we live on, on our remote team is just all the time on Slack. 00:37:28 Zack Katz So we have different pulse channels. 00:37:29 Zack Katz We have pulse that has like, most things. 00:37:33 Zack Katz We have server pulse, which is dedicated to only messages related to downtime associated with the server or like higher latencies or things like that. 00:37:41 Zack Katz We have website pulse, which is related to the individual websites errors and fatal error notify is one of the tools we use for that, which is a great tool. 00:37:51 Zack Katz I highly recommend it. 00:37:53 Zack Katz It connects to Slack, it emails, it does webhooks, whatever you want. 00:37:58 Zack Katz But we also have our pulse channel, talks about blog posts, that are updated or created, talks about, we have our GitHub actions whenever a build is created or, per, pull request is opened or an issue is created, it all goes into pulse. 00:38:15 Zack Katz And so you can actually track things there and and have a visual of everything that's kinda happening, in the dev process and on the marketing side as well. 00:38:23 Matt Batchelder That's pretty slick. 00:38:25 Matt Batchelder We don't have anything that organized for we have a DevOps channel where we do our, site deploys, and we have a mix. 00:38:33 Matt Batchelder There's some site deploys that can be triggered through chat ops and some other ones that we're we're trying out a new system that is purely GitHub based. 00:38:41 Matt Batchelder I wanna layer chat ops on top of it. 00:38:43 Matt Batchelder So now you have to look in a couple of places. 00:38:45 Matt Batchelder So it's definitely not as organized as you have. 00:38:47 Zack Katz It's nice because, sometimes, a lot of our team actually does un does not mute that channel, and then we we comment on, pull requests, like, that people didn't know were coming in or, like, it's a good way to coordinate. 00:39:01 Zack Katz If, if other coordination fails, it's like a backup, to let people know. 00:39:06 Matt Batchelder Yeah. 00:39:06 Matt Batchelder That's nice. 00:39:07 Matt Batchelder That's nice. 00:39:10 Matt Batchelder For time for a time, we had, we were running periodic reports of pending pull requests, but as our time It got depressing 00:39:19 Zack Katz for us. 00:39:20 Matt Batchelder Yeah. 00:39:21 Matt Batchelder Yeah. 00:39:22 Matt Batchelder It's saying we had some that would linger and we're like, it got really annoying and, so we we've retired those reports. 00:39:30 Zack Katz Yeah. 00:39:30 Zack Katz No. 00:39:30 Zack Katz There's there's a that's one thing when it comes to tooling and and automations. 00:39:35 Zack Katz You wanna make sure that it's not a demotivator for your team. 00:39:38 Matt Cromwell Yeah. 00:39:39 Matt Cromwell Yes. 00:39:39 Zack Katz And if you're looking at something and you have a feeling of dread, that's a good sign to turn it off, because if if it's stuck for a reason, then you gotta work through that. 00:39:49 Zack Katz If it's stuck for no reason, that's when I guess it's helpful, but we rarely encounter things we didn't know were stuck without a reason. 00:39:59 Matt Batchelder Yeah. 00:39:59 Matt Batchelder I mean, I think if it's repeat dread, I think the occasional bit of dread is good and can spark some action. 00:40:06 Matt Batchelder But if if you're consistently sad, then yeah. 00:40:09 Zack Katz Yeah. 00:40:09 Zack Katz Every day, I'd be like, I know that pull request remains open. 00:40:12 Zack Katz Thank you very much, automation. 00:40:14 Zack Katz Exactly. 00:40:18 Matt Batchelder The the other workflow is, like, a super simple one and not really worth talking about, but how we deploy our our sites. 00:40:25 Matt Batchelder But this next slide is, a title slide of our preferences. 00:40:31 Matt Batchelder And this slide is 00:40:32 Zack Katz Oh, boy. 00:40:33 Zack Katz Okay. 00:40:34 Matt Batchelder That I could think of that make up our world. 00:40:37 Matt Batchelder And, again, I, like, I really wanna emphasize that we grew to here over a decade. 00:40:43 Matt Cromwell Yeah. 00:40:44 Matt Cromwell Just take a minute and, describe it visually real quick. 00:40:48 Matt Batchelder Yeah. 00:40:49 Matt Batchelder So right here, we're looking at, a slide that's split up in two halves. 00:40:54 Matt Batchelder On the left is homegrown systems and third party systems. 00:40:58 Matt Batchelder And then we have some I've color coded the boxes to kind of follow some themes, but, 00:41:07 Matt Cromwell all 00:41:07 Matt Batchelder the homegrown systems we have I'll just run through them real quick. 00:41:10 Matt Batchelder Licensing, our dev doc system, telemetry, something we call Ian, which is in app notifications, a a service called Houdat, which is, a sir a Laravel service that handles OAuth, and it acts as a middleman for API request between our plugins and external services. 00:41:32 Matt Batchelder We have, Solid API and backup workers that are used for Solid, and those are very Solid centric, homegrown tools or infrastructure under the hood. 00:41:44 Matt Batchelder Then we have solid central as a service. 00:41:46 Matt Batchelder We're using that for Stellar sites heavily and some of our internal sites. 00:41:51 Matt Batchelder We have a system called Prophecy, which is a Laravel based service that handles AI related tasks, used heavily in Cadence AI. 00:42:00 Matt Batchelder And then Solid Performance is a product we built on, in the Solid team, and we're running that on, I think, almost all of our public facing sites for, handling page caching, and it speeds things up a lot. 00:42:18 Matt Cromwell I think all of the marketing sites, I don't know that we are using it on the anywhere where we have, like, customer data, things like that. 00:42:25 Matt Batchelder Right. 00:42:25 Matt Batchelder We're using it on on places that that have cacheable pages. 00:42:29 Matt Batchelder Yeah. 00:42:29 Matt Batchelder Exactly. 00:42:29 Matt Batchelder Yeah. 00:42:30 Matt Batchelder And then on the third party services tool, side, we have ActiveCampaign, Mailgun, HelpScout, DocSpot, InstaWP, Opsgenie, CloudFlare, Google Cloud, s I put s three, Wasabi, and Ceph all they're they all handle object storage, RabbitMQ, Sentry, and VWO. 00:42:49 Matt Batchelder So that those are all the those are all names of things if we wanna talk about any of them. 00:42:53 Matt Batchelder I'm curious, Zach, where our overlaps are on this. 00:42:58 Zack Katz Yeah. 00:42:58 Zack Katz Well, we are going more into DocSpot. 00:43:02 Zack Katz We've had really good success with it. 00:43:04 Zack Katz One of the nice things is, instead of trying to train a model on your your docs yourself, they've already taken care of all that back end stuff. 00:43:13 Zack Katz So you just point it at your site maps, you point it at your YouTube videos, you point it at your documentation, and it figures out, how to process chat requests using AI, whatever models you want, whatever prompts you want it already it takes care of all that, and it's really nice. 00:43:33 Zack Katz It works well. 00:43:34 Zack Katz It doesn't hallucinate URLs, which is something that every other service, if you, use other services that are AI related, they do, and that's a problem. 00:43:44 Matt Cromwell Mhmm. 00:43:45 Matt Cromwell We have 00:43:45 Zack Katz And so we use Help Scout as well, under the hood. 00:43:48 Zack Katz We used Free Scout for a while. 00:43:50 Zack Katz I didn't end up wanting to maintain another website that had bugs and broke and had updates and things like that. 00:43:57 Zack Katz So Help Scout, say what you will, but it's it's reliable, which is nice. 00:44:01 Zack Katz Yeah. 00:44:02 Zack Katz Rabbit, we're using we started using CodeRabbit for code reviews. 00:44:06 Zack Katz Is that what you have under RabbitMQ? 00:44:09 Matt Batchelder No. 00:44:10 Matt Batchelder Rabbit we have some RabbitMQ. 00:44:12 Matt Batchelder They're queuing servers, so message queuing. 00:44:15 Zack Katz Oh, well we're using CodeRabbit for AI code reviews and, we've used we've tried out, GitHub Copilot. 00:44:22 Zack Katz We've tried out, Cursor Bugbot which is also good. 00:44:27 Zack Katz But CodeRabbit is really quality, and that was also referred to us by Gustavo Bordoni at Seller WP. 00:44:33 Zack Katz So, that was a good recommendation. 00:44:37 Matt Batchelder That's great. 00:44:38 Matt Batchelder I I know we've started testing 00:44:45 Zack Katz it's it's funny, like, you know, you never know how, how your dev team is gonna react to instituting a new process. 00:44:54 Zack Katz CodeRabbit, our developer Duka just started, like, chatting with it about, like, our different processes and and, like, oh, this is a placeholder and and this is why we're doing this. 00:45:04 Zack Katz And same with Vlad, like, they're communicating trying to train it, which means I think they see immediately that it's valuable, they see that the the way that it responds to PRs is friendly and approachable. 00:45:16 Zack Katz They have a good, at mention like API that makes it really easy to trigger processes from GitHub itself and pull requests and issues. 00:45:26 Zack Katz So, CodeRabbit, that's really good. 00:45:29 Zack Katz That's great. 00:45:29 Zack Katz I'm gonna have to check that out. 00:45:32 Matt Batchelder We we've used, the the, Copilot reviewing a little bit. 00:45:37 Zack Katz Yeah. 00:45:38 Zack Katz I wasn't impressed. 00:45:39 Matt Batchelder Yeah. 00:45:39 Matt Batchelder It's a Yeah. 00:45:40 Matt Batchelder Oh, I 00:45:41 Zack Katz like it. 00:45:41 Zack Katz Cheap. 00:45:43 Zack Katz So we had them all enabled at the same time, and and I just disabled Copilot today, in fact. 00:45:49 Matt Batchelder Okay. 00:45:49 Matt Batchelder Well, yeah. 00:45:50 Matt Batchelder I've I've I've disabled my Copilot access, at our org level, and I'm I'm pretty much a cursor and cloud, fanboy. 00:46:01 Zack Katz Uh-huh. 00:46:02 Zack Katz Same here. 00:46:02 Zack Katz Yeah. 00:46:04 Zack Katz And in terms of other tools that we use, one thing we haven't really talked about is analytics. 00:46:11 Zack Katz We have a lot of people, I know people love some different privacy enhanced services like Pearsh, is a good one, there are tons of analytics services. 00:46:25 Zack Katz We still use Google Analytics, because it integrates with Google Ads and we use Google Ads, and but we also use Posthog which is a great service, that has tons of capabilities, that we also are looking at integrating with our plugins itself. 00:46:44 Zack Katz Because it's hard to get telemetry in a way that is privacy preserving and also, low impact on, like, the remote requests and stuff. 00:46:53 Zack Katz And Posthog, they have a great they're European based, they care about, privacy and I like their interface. 00:47:00 Zack Katz So, we're looking at integrating Posthog more for telemetry as well. 00:47:05 Zack Katz And we use conversion bridge, a WordPress plugin to track, that type of, those hooks that are being sent to Google Analytics and Posthog. 00:47:15 Zack Katz And then we have click yes, I believe is what it's called, the, opt in no, not click yes. 00:47:23 Zack Katz We use something like that for, the European cookie notices. 00:47:27 Matt Cromwell Cookie yes. 00:47:28 Matt Cromwell Cookie yes. 00:47:29 Zack Katz It always it 00:47:29 Matt Cromwell always looks like cookie eyes, cook cook eyes. 00:47:32 Zack Katz That's Yeah. 00:47:33 Zack Katz Cookie yes. 00:47:33 Zack Katz It it's terrible to read. 00:47:36 Zack Katz Yeah. 00:47:37 Zack Katz But cookie yes. 00:47:39 Zack Katz And in terms of like some of the other services we use, the list that I made is kind of more marketing related and more like a smaller WordPress company related where we use site wide sales, a plugin for running site wide sales, by 00:47:56 Matt Cromwell By the paid memberships pro folks. 00:47:58 Matt Cromwell Yep. 00:47:58 Zack Katz By the paid memberships pro team, they do a great job. 00:48:03 Zack Katz We use easy digital downloads to sell and distribute the plugin. 00:48:06 Zack Katz We've customized the heck out of it, and one of the things that they do is, by default is they have like two requests. 00:48:13 Zack Katz You get, update requests, then you get, like, license check requests and those are different. 00:48:18 Zack Katz And so we've consolidated those into one request, that has all of, the files that are, that are allowed for the user that made the request, like all the change logs, all the everything, all in one big JSON, that gets parsed by our licensing, package on our plugin. 00:48:41 Zack Katz And all of our plugins share one big licensing, we call it Foundation. 00:48:45 Zack Katz And so that request only happens once because we have, like, so many plugins, it would be a shame if that were to happen every single time. 00:48:51 Zack Katz Yep. 00:48:51 Zack Katz We can we consolidated it to have one request that has everything that powers our back end dashboard. 00:48:57 Matt Batchelder That's great. 00:48:58 Matt Batchelder Is it a single license key? 00:48:59 Matt Batchelder Like, people they buy it 00:49:01 Zack Katz or I wish I know. 00:49:03 Zack Katz I'm really interested in moving to an OAuth type of situation, to facilitate, a better customer experience as well. 00:49:11 Zack Katz Just click this button and it automatically knows everything about your purchase history and, like, your license fees and things. 00:49:19 Matt Cromwell We might need to have a follow-up episode with Matt again just to talk about licensing quite a while. 00:49:22 Matt Cromwell Want to. 00:49:22 Matt Cromwell Yeah. 00:49:22 Matt Cromwell I had so Yeah. 00:49:27 Matt Cromwell I had so many so many, like, pulling my hair out pain points about, like, give licensing, and, Matt has been solving them across a bunch of brands for a long time. 00:49:38 Zack Katz So You talked about that in 2018, Cromwell. 00:49:42 Matt Cromwell Did we? 00:49:42 Zack Katz Yeah. 00:49:43 Zack Katz What? 00:49:43 Zack Katz Yeah. 00:49:44 Matt Cromwell You and me? 00:49:44 Zack Katz Yeah. 00:49:45 Matt Cromwell Yes. 00:49:45 Matt Cromwell Oh oh my gosh. 00:49:46 Matt Cromwell We did. 00:49:47 Matt Cromwell We talked to the we had a conversation with Josh Treble from Pagely. 00:49:51 Matt Cromwell He wanted to solve this for us. 00:49:53 Zack Katz Yeah. 00:49:53 Matt Cromwell Oh my gosh. 00:49:54 Matt Cromwell That's a pullback. 00:49:55 Matt Cromwell Yeah. 00:49:56 Matt Cromwell That never happened, though. 00:49:57 Matt Cromwell That never happened. 00:49:58 Zack Katz No. 00:49:58 Zack Katz No. 00:49:58 Matt Batchelder Licensing is something that I've spent so many years on, and it it has changed drastically at Stellar in the past. 00:50:08 Matt Batchelder Matt, is it 00:50:09 Matt Cromwell I mean, the last year alone, it changed drastically. 00:50:12 Matt Cromwell Just the last year, you know, since we started, really kicking off to say that Stellar sites was gonna be a real thing. 00:50:19 Matt Cromwell That was like we had to get licensing working really, really smartly and really well, in order to do seller sites at all. 00:50:26 Matt Cromwell But even before that. 00:50:27 Matt Cromwell So 00:50:28 Matt Batchelder Yeah. 00:50:28 Matt Batchelder In particular, because a lot of our brands, had historically done licensing very different. 00:50:33 Matt Batchelder So so we didn't wanna break the business model of each brand. 00:50:37 Matt Batchelder So now the licensing system supports single licenses, plan based licenses, but there's two types of plans that are possible. 00:50:44 Matt Batchelder We call them standard plans and seat flexible plans. 00:50:48 Matt Batchelder We support install tracking or seat tracking. 00:50:51 Matt Batchelder There's auth token management for authenticating a client plug in against, commerce site and storing the token at the licensing level. 00:51:00 Matt Batchelder We have a whole credit system. 00:51:01 Matt Batchelder This is really good for volume control, for things like AI credits or, services like, even aggregator from the events calendar. 00:51:11 Matt Batchelder We have the licensing sits as a middleman to handle and orchestrate cross selling between brands so we could take we could go over to the events calendar and sell a gift product there as well 00:51:22 Zack Katz if we wanted to. 00:51:23 Zack Katz We're not That's cool. 00:51:24 Matt Batchelder And then, it it it has awareness of what users on different sites are purchasing and how the how those IDs relate to each other. 00:51:37 Matt Batchelder So it's it's gotten pretty complicated and 00:51:40 Zack Katz Why did it take so long now? 00:51:41 Zack Katz I know. 00:51:44 Matt Batchelder We also, we have wordpress.com marketplace. 00:51:48 Matt Batchelder Can sell our products, and it, it has a presence in our licensing system. 00:51:52 Matt Cromwell So Yeah. 00:51:53 Matt Cromwell It's all 00:51:53 Matt Batchelder pretty pretty cool. 00:51:55 Zack Katz That's impressive. 00:51:56 Matt Batchelder But homegrown, and it it's a it's it's a mixture of really modern stuff and really legacy, but it it works. 00:52:07 Matt Cromwell And it works. 00:52:07 Matt Cromwell Yeah. 00:52:08 Matt Cromwell That has to it has to be said it works in at least three different ecommerce environments. 00:52:15 Matt Cromwell We we have several sites that use WooCommerce. 00:52:18 Matt Cromwell We have one that uses EDD, which is give still give give is still an EDD, and we have another one that we don't like to talk about, but it's like a homegrown ecommerce system. 00:52:29 Matt Cromwell Everything on solid is actually, homegrown. 00:52:32 Matt Cromwell So and the licensing works across all of those environments, which is insane. 00:52:36 Matt Batchelder Yeah. 00:52:37 Matt Batchelder We built out an SDK this year to make that possible for the solid stuff. 00:52:41 Zack Katz Yeah. 00:52:42 Zack Katz That's impressive. 00:52:43 Zack Katz Friendly web guy asks, but can it wash the dishes? 00:52:46 Matt Batchelder I wish. 00:52:47 Zack Katz Not yet. 00:52:48 Zack Katz No. 00:52:49 Zack Katz And Amber Amber Hynes co host, says beware there are accessibility issues with DocSpot. 00:52:54 Zack Katz That is good to know. 00:52:56 Zack Katz We're actually looking at integrating DocSpot with our, support forum with Gravity Forms. 00:53:00 Zack Katz Instead of using their own chat widget, we would use their API and communicate back and forth. 00:53:06 Zack Katz So maybe hopefully, that would help some of the accessibility issues. 00:53:11 Zack Katz So, Matt, we are kind of running low on time. 00:53:15 Zack Katz Are there other slides that you really wanted to get to? 00:53:18 Matt Batchelder Nothing in I think maybe one slide is worth showing for a moment. 00:53:22 Matt Cromwell Yeah. 00:53:23 Matt Cromwell And 00:53:23 Matt Batchelder that's slide eight. 00:53:24 Matt Batchelder I can switch to that if we want. 00:53:27 Matt Batchelder And this is just the reminder that, you know, this doesn't happen overnight. 00:53:32 Matt Batchelder And the flow at Stellar WP well, I started at TEC, so a lot of this, is before that gray bar where so we're looking at a sort of a boxed timeline where the first box is 2015 to 2017. 00:53:45 Matt Batchelder My early days is at at the events calendar, we did lots of homegrown tooling and and and significant use of open source. 00:53:54 Matt Batchelder We weren't as profitable in we weren't profitable enough to support a lot of the tools that we wanted, so we grew a lot of them. 00:54:02 Matt Batchelder And then as we moved on, the next box is 2018 to 2021, and this is where we kind of shifted to more third party systems in addition to adopting additional open source. 00:54:14 Matt Batchelder We deemphasized homegrown tooling. 00:54:16 Matt Batchelder We tweaked that that tweaked it, but our resources were growing. 00:54:20 Matt Batchelder We had a bigger team. 00:54:21 Matt Batchelder So we were able to bring things in, focus on development of our products, and just adopt some tools. 00:54:28 Matt Batchelder And then as we grew we we were acquired partway through that, at Liquid Web and joined what is now Stellar, and that shifted us into 2022 through 2024. 00:54:40 Matt Batchelder And this was actually in when I started looking back at the the overall timeline, it was interesting because we switched away from heavy adoption of third party services and back to homegrown stuff because credit size and we had the number of developers in our organization to contribute to tooling that was very tailored to our our needs. 00:55:00 Matt Batchelder And this is where GitHub actions started becoming more prevalent, and the tweaking our infrastructure that are that was tailored to how each of our businesses needed to run. 00:55:14 Matt Batchelder And then as we move into the last box, which is 2525 and onward, we've got some big projects that have started this year specifically related to Stellar sites. 00:55:24 Matt Batchelder But now with with AI, I predict we're going to have a lot of third party and homegrown tools kind of marrying those things together. 00:55:36 Matt Batchelder And we've already started the we have a couple of tools in the work for documentation and things like that. 00:55:40 Matt Batchelder So And 00:55:41 Zack Katz I wanted to ask about that. 00:55:42 Zack Katz So the approach that we're taking at GravityKit is this all is moving so quickly, with AI, tooling and services and that and how to actually implement this stuff, the best. 00:55:53 Zack Katz I'm just throwing everything at the wall and seeing what sticks. 00:55:57 Zack Katz If somebody says this looks cool, I'm like okay fine let's sign up for it and see how it works. 00:56:01 Zack Katz And then turning it off a dozen and we're like leaving on this other, like, we're just figuring out as we go along. 00:56:07 Zack Katz What's your approach for for how you're handling the AI revolution? 00:56:12 Zack Katz I'm not 00:56:12 Matt Batchelder That's a great question. 00:56:13 Matt Batchelder It's a little bit of what you are doing, but we so there's a couple folks, that are really pushing the envelope as seller. 00:56:23 Matt Batchelder Matt Cromwell is one of them. 00:56:25 Matt Batchelder I'm pointing up because he's above me on the screen. 00:56:28 Matt Batchelder Yeah. 00:56:29 Matt Batchelder And, he he's pushing really hard on what, AI means for customer experience. 00:56:36 Zack Katz Right. 00:56:37 Matt Batchelder And he could definitely talk about that, but I'll just jump ahead a little bit. 00:56:41 Matt Batchelder We have Jason Adams, who's one of my directors, at Stellar. 00:56:46 Matt Batchelder He is focusing 00:56:47 Matt Cromwell He was on the show just a couple weeks ago and talking about AI. 00:56:51 Matt Batchelder Oh, yeah. 00:56:51 Matt Batchelder Exactly. 00:56:52 Matt Batchelder So he's focusing on what AI means in the WordPress ecosystem and for our products. 00:56:58 Matt Batchelder And then we have Gustavo Bordoni, who is heavily looking into AI and how it impacts our processes internally to ship things, to make data available to AI for support purposes, for for DocSpot. 00:57:14 Matt Batchelder One of the tools that he's working on is being able to crawl our knowledge base, convert those documents into markdown that's consumable by AI, and then allow us to point DocSpot at those as well. 00:57:27 Zack Katz Yeah. 00:57:27 Zack Katz That's one of the things that, I've been working with ChatTBT to have something like that as well where every blog post we're moving our blog, our documentation from Help Scout docs over to our own website for many many reasons. 00:57:43 Matt Cromwell Mhmm. 00:57:43 Zack Katz Including the more control that we have over being able to easily scrape and and do things like that. 00:57:50 Zack Katz Yeah. 00:57:51 Matt Cromwell And HelpScout now allow like, if you wanna use Beacon with their AI powered Beacon, it allows you to point, your docs somewhere else. 00:58:00 Matt Cromwell You don't have to use Help Scout docs. 00:58:01 Zack Katz That's not true. 00:58:02 Zack Katz I didn't know that. 00:58:03 Matt Cromwell Yeah. 00:58:04 Matt Cromwell It's really cool. 00:58:05 Matt Cromwell I I was I pushed for that and I was really happy they were already working on it. 00:58:08 Zack Katz Oh, good. 00:58:09 Zack Katz Yeah. 00:58:09 Zack Katz We have a sync service that allows for if that if that weren't the case, we built a whole synchronization, service to keep the, docs up to date, based on Yoast's plugin that does the same. 00:58:23 Zack Katz Yeah. 00:58:25 Zack Katz But yeah, I'm gonna be like concatenating all the different, files, markdown files that are statically generated into a single file for the LLMs to read for each one of our products and each one of the categories and like, we'll see if it's, any use for anybody. 00:58:41 Matt Batchelder Yeah. 00:58:42 Matt Batchelder Yeah. 00:58:43 Matt Batchelder The the the tool that Gustavo is working on, I I misspoke a little bit. 00:58:46 Matt Batchelder It's not massaging documentation for DocSpot. 00:58:49 Matt Batchelder DocSpot already handles that. 00:58:50 Matt Batchelder It's massaging documentation so we can have an MCP server. 00:58:54 Matt Cromwell Mhmm. 00:58:54 Matt Batchelder So our our IDEs can interface with our documentation as support is trying to build snippets for customers or dev trying to look at so we can look at the code and also all the breadth of documentation that Crumble have built. 00:59:11 Matt Cromwell I also like Gustavo really has a focus on trying to do all of that by minimizing token usage at the same time, which has been really cool. 00:59:19 Matt Batchelder So, yeah. 00:59:21 Zack Katz Maybe, we should have Gustavo on as well. 00:59:24 Matt Cromwell I mean, we're like, every episode can be AI related. 00:59:28 Zack Katz And I can 00:59:29 Matt Cromwell tell you, like, so many stellar folks are really doing incredible stuff here. 00:59:32 Matt Cromwell So I can have a stellar person on every single show honestly. 00:59:36 Zack Katz Same with Gravity Kit. 00:59:37 Zack Katz Oh. 00:59:38 Matt Batchelder We've managed to massage infrastructure into AI somehow. 00:59:42 Zack Katz Yeah. 00:59:44 Zack Katz Well, Matt Matt, what are your best advices for, people who are looking into, building their infrastructures out? 00:59:53 Matt Batchelder That, I I think, the the there's a couple of points, I think. 01:00:00 Matt Batchelder One, take it slow and grow. 01:00:02 Matt Batchelder Don't try to get out over your skis. 01:00:05 Matt Batchelder It can be very expensive if you're trying to do everything at once because then you have to look at third party tools, and those have costs, that might not scale well with your growth. 01:00:17 Matt Batchelder That's that's the main thing. 01:00:18 Matt Batchelder We what I showed on the screen didn't we didn't get there overnight. 01:00:22 Matt Batchelder It took a decade. 01:00:25 Matt Batchelder Number two, I think this is really important in terms of focus where you focus because different teams will have different pain points. 01:00:34 Matt Batchelder And the the path that worked for the events calendar and ultimately Stellar, the path that worked for GravityKit is not going to be the same path that matters to you depending on the personalities on your team. 01:00:45 Matt Batchelder Focus on the pain points, where where any place that you can remove a human bottleneck is a really great pit place to focus because it enables so many people to do really cool things, and and work efficient efficiently. 01:00:59 Matt Batchelder And you don't have to build the perfect removal of that bottleneck, but build something that's a little better than today. 01:01:06 Zack Katz Not just a bottleneck. 01:01:07 Zack Katz I want people to also look for where the balls are being dropped in your processes 01:01:12 Matt Cromwell and 01:01:12 Zack Katz where errors are being introduced. 01:01:15 Zack Katz And those are also places to look. 01:01:17 Matt Batchelder Yeah. 01:01:18 Matt Batchelder Yeah. 01:01:18 Matt Batchelder That's a really great point. 01:01:20 Matt Batchelder I remember, packaging. 01:01:23 Matt Batchelder When I first joined the events calendar, it would took it would take to get a very consistently functional package, it would take half a day Yeah. 01:01:33 Matt Batchelder Of massaging change logs and doing all that stuff. 01:01:37 Matt Batchelder Now it takes however long it takes the GitHub action to build, which is, like, three and a half minutes maybe. 01:01:44 Zack Katz It feels like going to the spa. 01:01:46 Zack Katz Like, when Vlad, created our release manager, it it just, like, a breath of fresh air that we had reliable packages. 01:01:55 Matt Cromwell Yeah. 01:01:55 Matt Cromwell Whenever it's done. 01:01:56 Matt Cromwell We have a couple of great comments here on the side I wanna highlight real quick. 01:02:00 Matt Cromwell Steve Jones, again, commenting in saying, we're using AI heavily in our dev workflows, but would love to learn more about implementing it on the documentation side. 01:02:09 Matt Cromwell So 01:02:09 Zack Katz Here Here, Steve. 01:02:11 Zack Katz Yeah. 01:02:11 Zack Katz I wanna hear more about that, Matt, but we're Yeah. 01:02:13 Zack Katz Running a good time, I'm afraid. 01:02:15 Matt Batchelder I think that's a good thing that Gustavo and Cromwell can talk to pretty heavily. 01:02:20 Matt Cromwell Okay. 01:02:20 Matt Batchelder Yeah. 01:02:21 Matt Cromwell Yep. 01:02:22 Matt Cromwell And then, Amber Hines, also Equalize Digital, also WP Product and cohost says 100% creating docs is very time consuming, and anything we could do to automate that would be great. 01:02:33 Matt Cromwell I'll I'll say on the documentation side, just super briefly, I'll just say that, like, trying to do focus on the the thing that a lot of folks think about is, chat GPT, projects are really great for that. 01:02:47 Matt Cromwell Throwing in as much product knowledge as you can into the project as possible and then focusing on custom instructions as much as possible that say give me an outline first and don't write anything until I approve the outline. 01:02:59 Matt Cromwell And then, once the outline is approved, then write the article. 01:03:03 Matt Cromwell That has been a game changer for me, personally. 01:03:06 Matt Cromwell That's just like the TLDR of what I do in terms of online human readable documentation stuff. 01:03:12 Zack Katz And from for our side, what now when we do PRs, we have our pull requests, to GitHub, like trying to introduce changes to our plugin. 01:03:22 Zack Katz We have AI automatically generate updated documentation based on the PR or new features. 01:03:28 Zack Katz We ask it to document new features for different user types of users, developers, beginners, advanced users and have documentation that is catered toward each of them. 01:03:39 Matt Cromwell That's awesome. 01:03:40 Zack Katz Yeah. 01:03:40 Zack Katz And that's where I was saying that it would be nice to have, like for our thorough getting started or our thorough, like here's here each one of the settings under this plugin, here's here's what it does, here's how to use it. 01:03:52 Zack Katz That's where having the playwright tests that are automatically generated that tog like, that represents each one of those settings, have those automatically generated and run and have that be part of the pull request system would be really cool. 01:04:05 Matt Cromwell That's awesome. 01:04:06 Matt Cromwell I love it. 01:04:06 Matt Batchelder Yeah. 01:04:07 Matt Batchelder That's great. 01:04:08 Matt Cromwell Yeah. 01:04:09 Matt Cromwell I would say, for me, best advice on this subject, is to always think of infrastructure as an investment in your team as much as possible. 01:04:20 Matt Cromwell There's I've had too many conversations where it feels like, the conversation goes, oh, we should really build the system to make things easier, but we really gotta ship some more product. 01:04:32 Matt Cromwell So we're not gonna spend that time. 01:04:34 Matt Cromwell And that that's always attention for sure. 01:04:36 Matt Cromwell Like, it feels like spending time on this infrastructure thing is gonna pull you away from sales or shipping more product and whatnot. 01:04:46 Matt Cromwell That tension's real, but what you gotta recognize is that, it's an investment in your team that will pay off dividends in the future and make it easier and better, to ship product in the future. 01:04:58 Matt Cromwell So don't get trapped in that like this either this or that mentality. 01:05:04 Matt Cromwell Really try to to bake in time into infrastructure as much as you can. 01:05:08 Zack Katz And like what Matt was saying, if people are in pain about the processes that you use, that is a bad work environment. 01:05:17 Zack Katz Yeah. 01:05:18 Zack Katz We work virtually. 01:05:19 Zack Katz We, for your developers, for your support team, for for marketing, anybody, if the flow of what you're doing stinks, you are poisoning your culture. 01:05:30 Zack Katz So as much as you can do to remove those pains, it helps everybody feel good about their work and how they do it. 01:05:37 Matt Cromwell So 100%. 01:05:39 Zack Katz Yeah. 01:05:39 Zack Katz It really is an investment in your team like Cromwell was saying. 01:05:43 Zack Katz And my best advice is use GitHub as much as possible. 01:05:47 Zack Katz It's the place to be, it's great, use it. 01:05:50 Zack Katz It has so many good things including project management, it has like GitHub actions, so much of it is free, stuff that's not free is pretty cheap, like it's fast, it's better than circle, like it's good for pretty much everything it offers is top notch. 01:06:04 Matt Batchelder Plus one to that. 01:06:06 Matt Cromwell Yeah, 100%. 01:06:08 Zack Katz Well unfortunately, that's a wrap. 01:06:12 Zack Katz Matt, thank you so much for joining us. 01:06:14 Zack Katz Where could people find you online? 01:06:16 Matt Batchelder Well, github.com. 01:06:18 Matt Batchelder Borkweb. 01:06:19 Matt Batchelder I don't really use x all that much, so GitHub is actually where I that's my social network. 01:06:25 Matt Batchelder So And 01:06:25 Zack Katz what's your, username there? 01:06:27 Matt Batchelder Borkweb, b o r k w e b. 01:06:31 Zack Katz Alright. 01:06:31 Zack Katz Wouldn't have guessed that. 01:06:33 Matt Batchelder Yeah. 01:06:33 Matt Batchelder And, all the work that we're doing at Stellar is, of course, at github.com/stellarwp. 01:06:38 Matt Batchelder We have a lot of libraries and some of these tools we talked about. 01:06:42 Matt Batchelder Thanks for having me on. 01:06:43 Matt Batchelder This 01:06:44 Zack Katz was really fun. 01:06:45 Zack Katz And thanks for 01:06:46 Matt Cromwell joining us. 01:06:46 Matt Cromwell Yeah. 01:06:47 Matt Cromwell Thank you, Matt. 01:06:48 Matt Cromwell Hey, folks. 01:06:48 Matt Cromwell Next week, we have a special episode where we are bringing somebody who is not from the WordPress space at all. 01:06:55 Matt Cromwell So be nice. 01:06:57 Zack Katz The point of interest is this or point of order even. 01:06:59 Zack Katz Is this allowed? 01:07:01 Matt Cromwell It's WP Product Talk. 01:07:03 Matt Cromwell Right? 01:07:03 Matt Cromwell We're actually discussing some lessons from Shopify, for WordPress product markers, with I'm not gonna be able to pronounce his name correctly. 01:07:11 Matt Cromwell I'm gonna let him pronounce his name, but he, he's a person that Katie got to know, through her work, in expanding into Shopify space, and I'm excited for this conversation next week. 01:07:22 Matt Cromwell You'll definitely need to tune in and bring your questions. 01:07:24 Zack Katz I'm excited too. 01:07:25 Zack Katz And, special thanks for, Post Status for being our green room where we coordinate these shows. 01:07:31 Zack Katz If you're enjoying our show, please do us a favor. 01:07:33 Zack Katz Hit like, subscribe, share it with your friends, reference this show in your newsletters, and don't forget to tune in again next week. 01:07:40 Zack Katz Bye. 01:07:42 Matt Cromwell Bye.