WP Product Talk
WP Product Talk
Let’s Talk Tooling: Building Your Product Business Infrastructure
Loading
/

Building a successful WordPress product isn’t just about writing great code; it’s about everything that happens behind the scenes. From customer support and email automation to licensing, analytics, and documentation, infrastructure decisions can make or break your business as it grows.

In this episode of WP Product Talk, hosts Matt Cromwell (StellarWP) and Zack Katz (GravityKit) are joined by Matt Batchelder (StellarWP) to unpack the tools and systems WordPress product owners rely on to run smooth, scalable businesses.

Transcript

Show/Hide Transcript
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.

Related Episodes