April 5, 2016
In this episode of Apply Filters we both update you on our projects. We’ve both made exciting progress including Brad’s upcoming Costa Rica trip (a goal of his for 2016). Listen in as we discuss releases, support, staffing challenges, and much more.
- What goes into a release?
- Providing support in multiple time zones.
- WordPress site setup with one command?
- New team members
- Thoughts on working from an in-home vs. out of home office
- Migrating to a subscription model
- The challenges of managing an outsourced developer.
- BIG changes for RCP
Also Brad shares his experience with a lesson in “Don’t make assumptions.”
Check out the new site for Restrict Content Pro
If you’re enjoying the show we sure would appreciate a Review in iTunes. Thanks!
INTRO: Welcome to Apply Filters, the podcast all about WordPress development. Now here’s your hosts, Pippin Williamson and Brad Touesnard.
PIPPIN: Welcome back to Apply Filters, Episode 58. Before we get started, I want to give a quick word about our sponsors. This episode is sponsored by Gravity Flow. It’s an advanced add-on for Gravity Forms that allows you to automate your business processes whether you need to set up workflows for purchase orders, job applications, admission forms, project initiations, vacation requests, or any other kind of workflow that involves advanced feedback loops, approvals, et cetera. Gravity Flow allows you to do this pretty easily while also leveraging the power of Gravity Forms. It’s a really powerful add-on, and you can find out more at GravityFlow.io. They’re extremely generous to sponsor this episode, so be sure to give them a thanks through Twitter, their website, or any other way you feel like getting in touch with them.
BRAD: Thanks! Thanks, Gravity Flow.
PIPPIN: Okay, Brad. What have you been up to?
BRAD: Yeah. Lots. We’re actually in the testing phase right now for Migrate DB Pro 1.6, which is a bit UI update, so we’re getting close. Probably the next couple weeks, we should get it out, unless there’s some crazy thing that comes up.
PIPPIN: How long has this version been in development?
BRAD: Way too long. It’s been, I think, six or eight months. It’s been way too long. What happened was I added way too many new features to that one release, and so that’s why it took so long. This year, we kind of minimized the number of new features going out in a release, so we can get more releases out sooner.
PIPPIN: I think that’s a really smart way to do it. I think that’s probably something that every developer of major projects encounters at some point. I know we’ve run into it before. As a developer, my favorite releases are those that are large releases, but they don’t necessarily look very big because we’ve just made a ton of improvements that they don’t go unnoticed, but they’re not in-your-face improvements.
BRAD: Yeah. It’s an ongoing challenge too because, as you’re working on a release, you might start out with a nice, small scope for the release, and then things come up. People report bugs or whatever, and they could have wide-ranging implications that you have to overhaul this or that. Then it’s just like things tend to kind of snowball, right?
PIPPIN: I think our next major release for EDD has something like 100 issues milestoned for it, and we’re going to have to go through and trim those down to maybe 30 or 40.
PIPPIN: It just happens.
BRAD: Yeah. Sometimes we do three or four passes through our issues and boot them, like boot them to the next milestone.
PIPPIN: Yeah. Oh, absolutely. I know that we’ll usually do kind of like an initial pass when we start working on a release and just get rid of things that we know either are not important or less important, or something like that. Then definitely towards the end of the release, we realized we still have a ton of issues here. We’ve got to figure out what’s going and what’s staying.
BRAD: Right. Yeah. Yeah, it’s pretty typical, I think.
PIPPIN: Cool. What’s your timeframe for 1.6?
BRAD: Well, probably in the next couple weeks. We’re in the testing phase. We’re trying to get an outside QA firm to kind of step into our testing process so that we’re not testing ourselves the whole time, and that does two things. It frees us up and it also gets an outside perspective so that it’s not such a hemogenous environment. We all kind of use the same tools and stuff, so by having someone outside the company do it maybe they’re using something different, a different environment or whatever.
PIPPIN: Yeah, that’s right.
BRAD: Yeah, we’re trying to get the QA firm slotted in, but it’s been a bit of a challenge so far, so we’re going to keep working with that. We have actually got another developer on trial at the moment, so we’re in the process of hiring as well.
PIPPIN: How many developers are you up to now?
BRAD: We have six full time, and so this will be the seventh full-time developer. The reason we’re hiring, I was kind of hoping to put a freeze on hiring for a little while, but every time I try to do that it seems like it just happens that we need to hire again. The main reason is that we’ve got four people in the U.K. and two full time in the U.S., but most of our customers are in the U.S. So, for like half the day, those two guys in the U.S. are getting slammed with a huge number of support tickets.
PIPPIN: Right, so you need somebody else that’s not necessarily in the U.S., but in the U.S. time zone.
BRAD: Yeah, in the North America time zone is kind of what I’ve been shooting for, although I guess Brazil could work too, right?
PIPPIN: Yeah, all of South America is on similar time zones, South and Central.
BRAD: Yes, so in this quadrant of the earth, basically. Yeah, yeah, that’s a bit of an adjustment because previously I was just hiring based on merit. It didn’t matter where you were located. Now we have to kind of filter down based on location.
PIPPIN: Yeah. I know that’s something that we definitely like to get. We have one guy that’s in the U.K. He’s very much part time because he’s very involved with schoolwork at the moment, but I’d love to have another person in that time zone just so that we can help take care of more tickets or issues while we’re sleeping. We have two that are in New Zealand, which is awesome, but New Zealand is yet a different time zone from the U.K. If we could have another one somewhere in the U.K. time zone in that part of the world, then we would have three major times during the day covered, which should be great.
BRAD: Yeah. We actually had one guy. Ian was actually in the U.K., one of our Ians. He was in New Zealand, sorry. He just recently moved back to the U.K., so we lost that kind of Pacific Rim coverage for our support. But, honestly, it hasn’t been an issue, and I don’t expect it to be. The amount of customers we have in that area of the world is pretty small compared to the rest.
PIPPIN: Yeah, the majority of ours are in the Americas.
BRAD: Yeah. People in New Zealand, Australia, and that part of the world, they’re kind of used to waiting for support too. I’m sorry to say that, but it’s kind of true. I lived in Melbourne for a year, and it’s kind of a fact that if you’re watching TV or sports events or something that are going on in the U.S., it’s just everything is out of whack.
PIPPIN: Well, we thank every one of you for your patience.
BRAD: Yeah, exactly. Yeah.
PIPPIN: Awesome. Well, what else have you been up to?
BRAD: I think I mentioned before we’re redesigning our site, so I’ve had a front-end coder working on that. We’re in that phase now, and so that’s getting closer. Daniel Espinoza has been taking up the task of working on our WooCommerce subscriptions add-on, which is a custom add-on we use to do our subscriptions, so renewing your license and stuff. It handles that kind of stuff.
PIPPIN: Are you guys already doing automatic renewals or is that in progress still?
BRAD: That’s what Daniel will be working on.
BRAD: Yeah, that’s kind of the….
PIPPIN: Is that built off of the standard WooCommerce subscriptions add-on or a completely custom one?
BRAD: It’s completely custom. We use the software add-on for WooCommerce that they sell, but we do our own subscriptions add-on completely, separately. Oh, and monthly recurring is the other, kind of the next step after that. I want to be able to do monthly recurring subscriptions with it.
PIPPIN: All right. When you get to that phase, we should have a discussion on that because I would love to hear some of your insights, and I’m sure a lot of people that are listening would love to kind of dive into that. I know there’s a lot of questions and caveats that come up when you look at yearly versus monthly renewals, especially for software.
BRAD: Yeah. Yeah, exactly.
PIPPIN: We’ll have an episode on that when it comes time.
BRAD: Yeah, for sure. Also, built a new server for DeliciousBrains.com and moved everything, moved our site over to it.
PIPPIN: It’s super speedy.
BRAD: Yeah, it’s running PHP7 now and Nginx. I took Varnish out of the stack, so no more Varnish. Yeah, it’s going much faster. It’s running on basically the same hardware, so same number of CPUs, RAM, and stuff. But, yeah, it’s just faster because PHP7, man, it’s so much faster. Yeah, got that running.
We’ve been blogging a bit, so Jeff wrote a post on Amp, so Amping Up Your WordPress Site with Google’s Accelerated Mobile Pages. It was pretty interesting. I really had nothing. I had no knowledge of Amp until I read Jeff’s article, so it was pretty cool.
PIPPIN: I’ve still only seen some of the summaries. I haven’t really dove into it yet.
BRAD: Yeah. It’s kind of a weird thing, Amp, isn’t it? My first, my knee-jerk reaction when I heard about it, I was like, "Oh, that’s just WAP in 2016." Remember Wireless Access Protocol?
PIPPIN: I do.
BRAD: Back in the day when people had Palm Pilots. They built this second Internet. That’s the other thing. I hated the idea of a second tier Internet.
But then I thought about it some more, and this Amp thing is really no different than you consume Facebook in a browser or using a mobile app. There are different views that you could use to consume Facebook. This is kind of just another way to consume articles, right? I don’t really see it as a second tier of the Internet anymore, but anyway.
I wrote a summary of PressNomics 4. It’s kind of just mostly highlights, a few highlights, and Matt wrote a really cool post about automating, setting up WordPress sites locally.
PIPPIN: Yeah. I read that one, and that was awesome.
PIPPIN: It was fantastic.
BRAD: I think most of us have probably thought about doing it. Just never got around to it, right?
PIPPIN: I have always looked at it as, you know, if I’m bored some Saturday morning and I want to just get super nerdy, it’s something that I want to do, but it never actually happens.
BRAD: Yeah, yeah, yeah.
PIPPIN: Now I really want to do it.
BRAD: Yeah. Just so people know, you’re able to set up a WordPress site just by running one command, so you could run Matt’s script, which is install.wp. Then you give it a site name, and then it’ll create the database. It’ll download WordPress for you. It’ll do everything and set up the site on your local server. That’s pretty cool.
I’ve suggested to Matt that he could do additional ones where he automates it some more so like maybe it also configures MAMP for that site and stuff like that, so that’s like completely automated so that you run that command, and then you’ve got your site running and ready to go. Yeah, I want him to do that because then I want it. I want it for myself.
I’m heading to Costa Rica next week for a week long vacation.
PIPPIN: Fantastic. Which part of Costa Rica are you going to?
BRAD: We’re flying into San Jose and then kind of making our way up to the northwest coast in Tamarindo. On the way, we’re going to stop by the volcanos in Arenal.
PIPPIN: Arenal is beautiful.
PIPPIN: The whole country is beautiful.
BRAD: You’ve been to Costa Rica?
PIPPIN: Once. I went when I was in my second or third year of high school. My brother and I and my parents went down for about a weeklong trip and traveled all over the country. I’ve wanted to go back ever since.
BRAD: Yeah. Yeah, it sounds good. I’ve never been there, so this will be our first time. And, our first time my wife and I have traveled in four years without any kids, so it should be an actual vacation versus a family vacation.
PIPPIN: It’s just your wife and you?
BRAD: Yeah, just my wife and I.
PIPPIN: Yeah, that’ll be fun.
BRAD: It should be good. Anyway, what have you been up to?
PIPPIN: We’ve had a few things going recently. This last week has been a bit hectic for me and everybody on the team. We’ve had a couple of very long-term projects that all wrapped up in the last week, and so I’ll tell you about those in a moment.
The first thing, we also have been in hiring mode, so we brought on Drew James to come work with us on Affiliate WP full time. Drew was previously working at 10up and was ready for a change. He reached out to me, and we decided it was a perfect fit.
BRAD: Yeah, that’s huge. We’ve had Drew on the show before, I think, when he was the WordPress core release lead. Is that right?
PIPPIN: Yes, for WordPress 4.3, I believe, or 4.2.
BRAD: Right. Cool.
PIPPIN: He should probably smack me for being wrong if I’m forgetting what it was, but yeah. We’re pretty excited to have Drew on. He brings some excellent skills to the table, and he’s working on Affiliate WP development full time, as well as developer docs and other things as we kind of go through and figure out where we want him to focus and what he wants to focus on. We’re pretty excited to have him. He started on Monday, and so we’re through the first week.
Two weeks ago, I moved into a new office space. I’ve worked from home in my home office for almost ten years, ever since I started freelancing. I guess I would have been in college working from my dorm room, then from my apartment, and then from my house, up until about two weeks ago in my home office. I decided to go ahead and rent an office space in the downtown area of the city I live in and move my office out of house for the first time.
I’ve been here for about a week and a half, and it’s been an interesting change, for sure – mostly good. I’m enjoying it a lot. I’ve always loved working at home. I love being around the family the whole time and having everybody there. It’s been different being by myself, completely by myself in an office space.
BRAD: Right. Getting a little lonely at times, maybe?
PIPPIN: A couple times. I will look around. I’m like I’m the only person here. This is strange.
PIPPIN: But it’s been good so far. I have found that my workdays are shorter, usually, because I can focus better here. There are fewer distractions, and so there are some pros and cons to it, especially like with family. In one way, I’m around family less, but in another way I’m actually around them much more because, when I go home, I’m done.
BRAD: Right. You’re present.
PIPPIN: Or, I go home and, for me, there’s a much better separation between work and home now, which is something I’ve struggled with for a really long time, and it’s something I’ve been wanting to get better at, so I like the idea of being able to go home and shut off. While that’s still been a little bit of a challenge because I’m still in that mode of I work from home, I haven’t completely gotten rid of that yet. But, I think, over a few months, it’ll be a nice change.
BRAD: I work from home as well. Sorry, I work alone as well. I work from home, but there’s no one in the house all day. Yeah, I can kind of relate to your loneliness thing. Yeah, I think you get used to it, though, over time.
PIPPIN: Yeah. I’ve always worked alone in that sense of, when I work from home, I had a home office. When I was working, I shut the door. For the most part, I was in that closed office for the whole day. That’s not that much different.
Interestingly, it occurred to me the other day that even when I’m working alone in an office, and I’m legitimately alone, I don’t feel that way because we’re so closely connected with the team and other people online.
BRAD: Right. Slack, yeah.
PIPPIN: At times it seems a little silly, but it occurred to me how accurate that actually is. Yeah, I haven’t really noticed it. It’s given me a good excuse to get out and ride my bike more, which is nice. The office is just over three miles from my house, and it’s a pretty nice ride there and back, so I can ride about 6.5 miles a day if I ride my bike.
BRAD: You’re in Kansas. Kansas is pretty flat. Is that right?
PIPPIN: There’s not a single hill between the office and my house.
BRAD: Right, right, right.
PIPPIN: What we do have, which can sometimes be worse than hills, is wind.
BRAD: Oh, yes.
PIPPIN: The other day I was riding into about 25 mile an hour wind. That’ll push against you pretty hard.
BRAD: Oh, yeah, for sure. You need one of those speed bikes that get you all tucked in – aerodynamic.
PIPPIN: I’ve been trying to ride two to three days a week. Two days a week, I bring the trailer with me. Then my wife brings the kids around 3:30 and drops them off. Then we ride home together.
BRAD: That’s nice.
PIPPIN: Yeah, so it’s been good all the way around.
PIPPIN: Let’s see–
BRAD: What else have you been up to?
PIPPIN: What else have we been doing? This last week, I mentioned a little bit ago, was kind of the wrap up for several significant projects that we’ve been working on for a long time. These projects started about a year ago, a little over a year ago when we started working on the new recurring payments plugin for EDD. I think I’ve talked a little bit in the last few episodes after we turned on subscriptions for Affiliate WP using the recurring payments plugin.
The second part of that project was to do the same thing for Easy Digital Downloads and Restrict Content Pro. As of this week, both of those projects and those products are now on subscriptions. So, if you purchase a license to one of those, it creates a subscription, and we have automatic renewals for all of those now.
It took us about a year to implement those across all three, so that happened. There were a couple of other big things that happened at the same time. With Restrict Content Pro, we’ve been really wanting to — well, I’ve always considered RCP to be kind of my side project, and I think I’ve mentioned that before. It’s a successful product in its own.
BRAD: The black sheep?
PIPPIN: What was that?
BRAD: The black sheep?
PIPPIN: Kind of. Maybe like the neglected stepchild.
BRAD: Right, right.
PIPPIN: It’s always been a decently successful product on its own, but it’s never been at the same level as EDD or Affiliate WP for us and the team. We’ve been really wanting to elevate it up to the same level, put them all on the same playing field, get it equal attention. And so, for the last few months, we’ve been working on rebuilding the website for Restrict Content Pro, as well as migrating license keys from my old Pippins Plugins website over to the new standalone RCP site, which turns out was actually a pretty difficult process. I might go into the technical details about it at some point because it was kind of an interesting process.
We really wanted to elevate it, and so there were three aspects to that or maybe four. Number one was getting it so it was sold on its own standalone website that we can really flesh out with all of the features, all of the showcase, the use case options, the full product tour, et cetera, making it an actual product website. Second was a new version of the plugin that added a bunch of really needed features that people have wanted for a really long time and we simply didn’t have the time to build them.
We decided to do some investment. We brought in an outside developer to work for about two months on it to build all these features and make it possible for us to release the new version. Then we launched it with subscriptions. Then we also launched a new series of add-ons for the plugin and adjusted the pricing and the business model for the plugin.
It used to be that we sold it with three pricing tiers: just your single site license, your two- to five-site license, and your unlimited site license. We have now changed it so you have the same three tiers in terms of the number of sites you can use it on, but there is now an ultimate license, which is a lifetime, and we’ve also introduced a series of professional add-ons that are available free of charge for anybody who has professional or the ultimate.
Basically, what we did is we adjusted it so that it has the same pricing model that Affiliate WP has. For anybody who is not familiar with that, you might be familiar with the model that Gravity Forms uses. It’s the same model that we’ve adopted for RCP.
PIPPIN: And so, doing all of that took a while, and that went live on Tuesday.
BRAD: I have a question.
BRAD: You had an outside developer do most of the work on RCP. How did you manage that developer in terms of code review and stuff because I’m just thinking hiring an outside developer on the surface sounds like a great idea. It’s going to save us so much time or it’ll allow us to do all these things that we just don’t have time for in-house. But then you still have to manage the person. You still have to review their code. You almost have to integrate them into the team, in a way.
BRAD: How did that work?
PIPPIN: Okay. I think it’s an excellent point because you’re totally right that bringing in somebody, whether it’s from another company, a freelancer, or whoever, somebody who is not actively involved in the project, has a whole series of challenges. It’s not all glorious; you pay them a sum of money and they produce work for you that just magically is perfect. It doesn’t work that way.
For anybody who has managed an open source project, it’s kind of similar to community contributions. You have these developers that maybe they’re very gung-ho about it, and they come in. They’re built this awesome new feature. But then when you look at it, you realize it’s not quite built the way that you want, it’s got a few issues, it doesn’t follow with your code standards, or whatever. These are all kind of the challenges that you face, and it’s the same kind of struggles that you have if you bring in outside developers.
It’s kind of like also when you have a new hire, when you bring somebody else who is new into the team. You have to take some time to get them up to speed with, okay, these are our coding standards, these are the way that we do things, these are our workflows, et cetera. And so, it’s a challenge to bring in an outside developer.
In this case, we were pretty pleased with the results. But, one of the reasons why I think it was successful for us is because the developer that we chose to bring in was already familiar with Restrict Content Pro. He is somebody that had already built a couple of add-ons for the plugin that he was distributing through his own website. He had used it a lot for client sites, and the opportunity actually came about because he came to us and said, "Hey, I’d love to do some work for you. I think this is a great project. Would you guys be interested in that?" And so it just kind of fell into place.
Would we have had the same experience if we had announced, "Hey, we’re looking for a developer to come work for two months"? I don’t know. It would depend on who we picked. But, in this case it worked pretty well for us.
BRAD: Who did the code review? Did your team do it? Did you do it? How’d that work?
PIPPIN: The Restrict Content Pro team consists of four of us, kind of. There’s myself. There is John Paris. There is Michael Beale and then Andrew Monroe. For this, it was largely me and John and Michael doing code reviews and testing.
BRAD: Were there times when you guys kind of dropped the ball and there was a lot of code review that needed to be done, and that got kind of piled up in the queue? I’m just thinking.
PIPPIN: Here’s a challenge that we had. We brought him on, on basically a weekly stipend that said, "Okay, we’d like to see X number of hours a week for this amount in return." And so when we do that, I think there are two ways that you can bring in outside developers for short time periods. There is, you bring them on and you say, "Okay. Here is the project. This is how much we’re paying you for the project. You leave when the project is done," basically, which is very common in freelance. The other way is, "We have you for 30 hours a week. We’re going to pay you this much every single week. We get done as much as we can."
We did the latter. One of the issues that we did run into is there are always edge cases. There are bugs or adjustments that you find, and part of you wants to go back and say, "Hey, we need to get these fixed," but then you realize, well, we’re already at our hour count, or we’re not doing another week, or whatever. That’s fine. That’s just the way that it works.
When we did get done with everything, we did, as a team, spend some time going in and making final adjustments. As we found edge cases, we would dive in and see if we can take care of them. But, overall, it was pretty smooth.
BRAD: Did you do a beta, a beta period, or did you just test it internally and release it?
PIPPIN: We did not do a public beta or a private beta. We did run it on my Pippins Plugins site for a few days, and the site has enough traffic and enough membership signups going through it that it was a pretty reasonable test for us. And, we spent a solid three weeks just pounding on it as well.
BRAD: Right. That’s cool. Congratulations.
PIPPIN: Yeah, we’re pretty pleased for all of those to be done. Oh, and then the other thing, the other six-month to yearlong project that we’ve been slowly working on is the new EDD website. EasyDigitalDownloads.com has a brand new coat of paint. If you go take a look, it looks quite a bit different now.
BRAD: It looks great. Yeah, really nice.
PIPPIN: I’m pretty thrilled with it, so that’s all the work of Sean Davis, who is one of the original EDD team members, has been around with us for a long time, and it’s been kind of his personal passion project. He’s been our site maintainer for, well, almost since the day he started. But, in the last year, he’s really wanted to go in and rebuilt and redesign the whole site, so it’s all his work. It was his project. In the last few months, we decided, okay; here is our deadline. This is the date it’s going live. We’re going to make it happen. We decided to, at the same time, implement subscriptions simultaneously.
BRAD: Right. Was that a good choice or a bad choice?
PIPPIN: I think it was a good choice. All right, so one of the issues that we had or it’s not an issue, but it’s a minor technical challenge is we have about 200 products on the website and every single one of those has to be updated to turn subscriptions on. We wanted to do it all at once, and so we decided it was best if we put the site into maintenance mode.
It actually worked pretty well because we could go to maintenance mode. We could drop the new design on the site. We can go through making the updates we need. We can have everybody come together at one time and each person takes ten products. We each update them, and everything is ready to go in the course of 20 to 30 minutes, and so we only had a little tiny bit of downtime. I think it was good to do them at the same time. It was definitely a pretty stressful two weeks though, but it’s done, and everything is working pretty well so far.
BRAD: Nice. When you guys launched, I saw your tweet, and I checked out the site. I was going through it, and there was a quote from one of your customers.
BRAD: The title or the person’s name was Captain Swallow.
BRAD: Which just sounds totally made up, but I was like, oh, it looks like you forgot some placeholder copy here, and it turns out that is actually one of your customers.
PIPPIN: Yep. It is pretty funny because you’re definitely not the first person that’s noticed that.
BRAD: Right. I apologize, Captain Swallow.
PIPPIN: Oh, no. You’re totally fine. Part of me thinks that maybe we should replace it with a different quote or change the name on it because that’s not the first time that’s happened.
BRAD: That’s just their handle, right?
PIPPIN: It’s a user name they go by.
BRAD: Right, the user name.
PIPPIN: It’s one of those things that probably at some point we should change, but you have a thousand items on your to-do list and get to some of them.
BRAD: Yeah, exactly. Yep. All right.
PIPPIN: Yeah. One of the other things that I wanted to mention that I’m very excited for in the realm of Restrict Content Pro is, with the new add-ons that we launched, we launched four new add-ons at the time. The one that I’m most excited for is the rest API. We’ve introduced a complete rest API for it. It actually runs on top of the WordPress rest API, so the part that’s actually in WordPress core, the authentication and the endpoints, which is cool. That means that it doesn’t require the rest API plugin. It just works off of core.
BRAD: I loved the idea. For some reason, I love the idea of designing an API and building it.
PIPPIN: It was super fun.
BRAD: Who did it? Did you do it or did someone else?
PIPPIN: I did it. Yeah, I built it, most of it, on the plane ride to Philadelphia for WordCamp U.S.
BRAD: Nice. What’s an example of what you would use that rest API for?
PIPPIN: Well, I can give you a quick example that I use it for. I have a Nexus 7 that lives on my desk and is on most of the time. It is simply a stats dashboard of our websites showing revenue and sales for each of the sites.
One of the quick things I built with the rest API was a little stat that goes and shows me the earnings for the current month through the membership of RCP. That’s one very minor example.
Another one, we actually implemented. It’s pretty robust in terms of you could do almost everything that you need. You can query members. You can query payments. You can update members. You can delete members. You can activate members. You can create payments. You can delete payments. You can do just about everything you need to in order to manage your members and your payment records.
The one example, like let’s say that you want to have a custom interface for managing your membership accounts. Maybe you don’t want to use WordPress or you’ve built an app or a custom dashboard that runs on your phone or your iPad or a custom desktop client for managing your membership counts or recording payments, updating members, et cetera. All of this can now be done.
One good example where it’s really needed is we have a couple of issues in the plugin that make it a little bit slow on really large websites that have a ton of membership accounts like hundreds of thousands. And so, we want to build a custom dashboard that gets rid of all of those performance issues caused by some of the WordPress database schemas. That would be an example.
Another would be — actually, there is an add-on being built for this, or at least a custom integration being built would be if you want to create or update memberships from a purchase of, say, a WooCommerce product or an EDD product or a product in Shopify or whatever, so that when they purchase that product in that e-commerce system, it goes to the RCP side and creates a membership account. Even if it’s on a completely separate website, that’s now very easy to do through the rest API.
BRAD: Right. I like that. Yeah, that’s probably a fairly typical setup.
PIPPIN: Here’s a good example of how you could use it. Let’s say that you have a sales website, and you have a support, tutorial, help website, or whatever. That second website is only available to customers. You set up RCP on the help website or whatever kind of material it is that you have there. You set up the memberships, but your actual sales website goes through, let’s just say, a Shopify.
Whenever a purchase is made there, you query the rest API and give a membership on the help side. You can specify all the logins, the passwords, the email address, the status, et cetera. Now, as soon as they make that purchase through your sales system, they have access to the tutorial section as well, the support system, or whatever you want to call it, which is a pretty common thing that people want to do on completely separate databases.
BRAD: Right. Were you guys getting quite a few requests for a rest API, or did you just decide to do it?
PIPPIN: We had quite a few requests from people that build client sites. A lot of the things with rest APIs is the people that run stores, unless they are a developer or a very power user themselves, don’t necessarily know that they need a rest API. They know that they want to be able to do something. They don’t necessarily know that it’s powered by a rest API.
We saw a lot of indirect requests like that, people looking for that kind of setup, and we saw a lot of requests from people that build client websites. It was definitely a pretty commonly requested feature, and it was something that we really wanted ourselves. I personally loved the idea of diving in and building it, building a rest API, and extending the WordPress one. Having built a rest API for EDD previously, it was kind of cool to work with someone else’s API and see where the benefits and the rough points were of both.
Anything else that you want to share?
BRAD: Actually, I’ll share a little story, a little conversation that I had this week with Ashley and Ian about the Offload S3 plugin. We’re switching to filtering. Right now, when you upload an image, let’s say, and it goes to S3, when you insert that into your content, it’ll insert the S3 URL. We’re switching to it just inserts the usual URL. Then when you render the page, it’ll replace it. It’ll filter out those URLs and replace it with the S3 URL.
We’re in the process of doing that. One of the main reasons we’re doing that is because background processing has been fairly unreliable. It’s just kind of a pain, actually. When you a change a setting, you have to run a find and replace on all your content. If you have 70,000 posts and 100,000 attachments, that’s going to take a long time for the background processing to go through all of that content and do a find and replace.
We’re moving to this filtering thing to get away from that. This week, we realized, oh, no; what about all the existing sites that already have that stuff in the content? We’re going to have to do a find and replace on all that to go back to using just the normal URLs. Then we were like, uh, okay. Well, how are we going to do this?
We had like an hour-long discussion. Guess where we landed? Background processing.
BRAD: We’re actually going to have to. We were hoping we didn’t have to go back to background processing and iron out the kinks that have been identified, but it turns out we are. We’re going to work on our background processing stuff again and fix it.
One of the things we do is, like the find and replace, we use an SQL find and replace, so we just run a query that does the finding and replacing. That doesn’t really work so well when applied to 70,000 posts. It tends to kill MySQL, which is actually not the assumption.
The assumption I made, which was a bad one, was that MySQL would just handle this properly. I thought MySQL, if you ran a query that could be intensive like that, they would just say, okay; let’s slow this down; let’s do this gradually; and not spike the CPU up to 100% and not allow any other queries to run while we get this done.
But, yeah, it doesn’t. It just basically prioritizes that query above all else. And so that’s been a big part of the background processing problems that we’ve had, so we’ve got to fix that. Yeah, I guess the moral of the story is don’t make assumptions.
PIPPIN: That’s never bit anybody before.
BRAD: Yeah, exactly. But, I’m kind of surprised with MySQL that it doesn’t handle that kind of thing better. But, I don’t know why. We’re going to have to batch that. Instead of running one query, SQL query, it’ll have to run a query that just looks at ten posts at a time or something and does the find and replace on that many at a time. Yeah, fun stuff, right?
PIPPIN: Fun, fun. Yeah.
PIPPIN: All right. Should we wrap it up here?
BRAD: Should we wrap it up?
BRAD: Yeah. All right.
PIPPIN: It’s been a pleasure, Brad. Once again, thanks to our sponsors, Gravity Flow. You can find them at GravityFlow.io. If you need to do anything that requires workflows or things like that, go check them out at GravityFlow.io.
BRAD: All right.
PIPPIN: Thanks again, everybody.
BRAD: Talk to you next time.