April 24, 2014

Joining us for episode 17 is Jared Atchison, a well-known developer in the WordPress development world with an impressive portfolio of work. Along with learning about Jared’s day to day work, his recent projects, and what he does on the side, we spend some time discussing WordPress 3.9, the new DemoWP Pro service, bbPress, and how massive plugin upgrades can be handled well or poorly by the developer or team of developers.

This episode was sponsored by WP Ninjas, a leading WordPress plugin development team that is constantly innovating and building excellent tools for the rest of us. Recently they announced their new DemoWP Pro system that allows plugin and theme shops to easily setup live demo environments where potential customers can quickly log in and give the plugin or theme a test drive. In their own words:

Do you sell a WordPress plugin or theme? Do you have a demo site that allows potential customers to try out your product? If you don’t, you’re missing a critical tool for reaching customers. If you do, how did you build it? If you’re like most developers, you had to cobble together snippets of found code, backup services, restriction plugins, and prayer. Hoping that the demo would work like some magically imbued golem. Not only is this method sloppy, hard to manage, and a pain in the butt to update, but it doesn’t even make a good demo. What if two users are editing the same part of your demo at the same time? They might think that your plugin is broken because their changes don’t stick. Cross pollination sucks.

DemoWP PRO offers a new way for customers to try out your products. Every time a user visits your demo site, they are given a fresh, clean sandbox version of your demo. In this quarantined environment, they can test every nook and cranny of your product without ever messing with anyone else’s data. You can decide how long a sandbox gets to live, and once it’s grown up and reached the end of its life, all traces of its existence disappear from your demo. Much like a sad, disenchanted golem.

DemoWPlogo

Show Notes:

Transcript
PIPPIN: Hello, everyone, and welcome to Episode 17 of Apply Filters, the podcast all about WordPress development. I’m your host, Pippin Williamson. Joining me, as usual, is my cohost, Brad Touesnard.

BRAD: Hey, everybody.

PIPPIN: And with us today, we have a special guest, Jared Atchison.

JARED: Howdy, guys.

PIPPIN: All right. So today we’ve got a few things that we want to talk about, and we’ll jump in. Primarily we’re going to let Jared tell us all about himself. First, we want to give a nice shout out to the WP Ninjas and their new product that they’re working on launching called DemoWP. It is a system or it is a plugin that allows you to easily set up a demo environment for your plugins or your themes where potential customers can log in and log into the admin and view all the features of your theme or your plugin in a real environment.

And so it’s DemoWP.pro. Go check it out. They’re going to be launching here within a couple of days. Sign up for the newsletter, and keep and eye on it. I played with it today. It’s really slick.

BRAD: Yeah, that’s awesome.

JARED: I’m going to have to check that out.

PIPPIN: Yeah. If you ever sold a plugin or if you’ve ever sold a theme, it’s — I mean, we get requests for this all the time where people just went, like, hey, can I have a demo of the plugin? Do you have a live demo I can log into? And setting that kind of environment up is really challenging for a variety of reasons. One, because you have to think about, well, how do I reset my database every couple of days so that people don’t just see tons of junk data?

BRAD: Yeah.

PIPPIN: And that’s what this takes care of, which is pretty cool.

BRAD: Right. So it sets up like separate, private kind of environments for each user, right?

PIPPIN: Right. So I haven’t seen behind the scenes entirely how it works, but what I’ve heard from them is that you install it on a multisite setup. And each time that a user requests a demo, basically they fill out a form, and it generates a demo for them. It actually creates a new site within the multisite based off of an existing setup. So it basically clones a site for them, and then they can log into that as an admin of that site with some special privileges and go do anything they want.

BRAD: Okay.

PIPPIN: And then that sandbox site gets automatically wiped out after a certain period of time.

BRAD: That’s nice.

JARED: That’s definitely a different take than what I guess we’ve normally seen for demos.

BRAD: Yeah.

PIPPIN: Yeah, for sure.

BRAD: Well, I’ve seen sandboxes before, but it’s like a kind of catchall where everyone ends up in the same sandbox. And it’s like —

PIPPIN: Right.

BRAD: — just a mess, right?

PIPPIN: Right. And that’s how I’ve always done my demos, maybe because I’m lazy, and it kind of works. It usually works for like the first week, and then test users go and muck around with the data enough that it just becomes not very good anymore.

BRAD: Yeah.

PIPPIN: So this one will actually give you, give every single user a unique sandbox from the standard starting point.

BRAD: Right. That’s awesome because —

PIPPIN: Which is pretty cool.

BRAD: — I’ve set these, something like that up before, but it was just on a Cron, so it would just blow stuff away. So a user could be like in the middle of doing something, and then all of a sudden their data would be wiped out.

PIPPIN: That’s awesome.

BRAD: So not my….

PIPPIN: Call it a feature.

JARED: Right.

BRAD: Yeah, I guess so. Cool.

PIPPIN: Yeah, so that’s DemoWP.pro. Go check it out.

BRAD: Awesome.

PIPPIN: All right. Jared, you want to tell us a little bit about yourself?

JARED: Do the intro spiel?

BRAD: Yeah.

PIPPIN: Yeah. Who are you?

JARED: Yeah. I’m an independent WordPress developer. I’ve been working in some capacity with WordPress for probably about the past, oh, seven years or so. I guess the past five years has been when I’ve really gotten into the, you know, nitty-gritty, under the hood development type of stuff. So, yeah, I’m just a developer. I do theme work, plugin work, work with bbPress when I can. I just started doing membership sites recently, I guess, and just kind of, you know, I won’t say jack of all trades because I don’t really like that connotation, but just kind of all things WordPress right now.

BRAD: Cool. What are you using for the membership sites?

JARED: So for the membership sites, I started doing them about six months ago. And the reason is I’ve been trying to find kind of a niche to focus on. Originally about a year and a half ago, I tried getting into bbPress, which I absolutely loved working with. However, the demand for bbPress isn’t really that high, so then I decided to take a stab at membership sites. I follow Chris Lema, and I know that, you know, he kind of predicts that membership sites are up and coming, so I figured that was something for me to take a stab at.

So when I first got into them probably about six to eight months ago, I tried a variety of different plugins: off course Pippin’s Restrict Content Pro, Premise, S2. And so I’ve kind of — I’ve tried a variety of them, and the one that I had settled on, which I’ve been using recently, was MemberMouse. And the thing I did find out is they all have their pros and cons, right? So before I decide on one, I kind of talk to the client and figure out their needs and make sure that we’re going to put them on the right platform for what they need. But recently, it’s been MemberMouse.

However, with that said, I’ve been dying to take a look at the new iThemes Exchange. The stuff they’ve added recently has just sounded —

PIPPIN: It’s really slick.

JARED: Yeah. I mean, the whole idea of having the membership sites or the platform and then, of course, you know, there is a degree of ecommerce in there if needed, which sounds really good because I’ve gotten that request before on membership sites. And, of course, you know the team, Cory and the crew at iThemes are just, you know, absolutely amazing people. And I haven’t looked under the hood of the code yet, but I’m sure it’s great, and extendable, which that’s kind of one of the downsides of MemberMouse, I guess, is they’re not WordPress folks. They’re kind of like enterprise coders, which has its pros and cons. But one of the cons is a lot of the things they do kind of isn’t the WordPress way. So when I need to extend stuff, it just takes a little bit more time to get familiar with their systems.

PIPPIN: Yeah. They don’t have nearly as many hooks or filters in their collection.

JARED: Exactly.

PIPPIN: …with —

JARED: Eric.

PIPPIN: Eric from MemberMouse recently because I was doing an integration with my Affiliate WP plugin. I wanted to really easily track referrals on new membership signups and things like that. And it took me a while to figure it out because I didn’t have those standard hooks and filters. But it turns out that there was a way to do it.

JARED: Yeah.

PIPPIN: The nice thing about Eric and MemberMouse is that he’s super friendly.

JARED: He’s super smart too.

PIPPIN: And he told me, like, any time if you have a filter in action, you need to just tell me. They’re not necessarily things that we intuitively add, but if there’s ever a clear reason to have one, more than happy to add it.

JARED: Yeah, and that’s kind of why I went and in the past I’ve been using MemberMouse is so I originally started out using Premise, which I won’t really go into that, but I didn’t have great experiences with that at all. So after kind of getting burned on that and shifting to something else, then I just wanted like the, you know, I guess MemberMouse is kind of considered the Cadillac. They have the most — even though they take away some of the extendibility, they offer like kind of the most out of the box, I guess, by the up-sells and the down-sells and all that type of stuff. So I’ve really been pushing.

PIPPIN: It’s a super … for sure.

JARED: Yeah, I’ve really been pushing that recently, but I think on my next project, unless there’s some feature that doesn’t let me, I’m really going to try out Exchange. I’m really looking forward to that, so.

BRAD: Have either of you guys tried Memberful? The Theme Foundry guys, I think do that one.

JARED: No, I haven’t. Chris has talked about it a little bit, but I honestly haven’t ever really used it.

PIPPIN: I haven’t actually played with the system yet. We are looking at integrating with it for Affiliate WP. It’s a little different though, I think.

BRAD: It’s more of a SAS, I think.

PIPPIN: It’s like a hosted service, isn’t it?

BRAD: Yeah, I think so.

JARED: Yeah, exactly. That was my understanding anyways.

PIPPIN: Yeah. I’m not entirely sure how it works in terms of like providing the membership content. But it’s definitely something, considering who is behind Theme Foundry; it’s obviously something that should be looked at because —

BRAD: Yeah.

PIPPIN: The Theme Foundry being behind it is good enough for me to go take a look at it.

BRAD: Yeah, yeah. Those guys just scream quality, right, like the stuff they do.

PIPPIN: Yeah. They’re pretty awesome.

JARED: That’s the thing. I mean, I think right now that people who need a membership site, they’re probably in the best position that they’ve been in, you know, ever, right? I mean, there are some really solid platforms out there now depending on your needs. I mean, Chris has covered those in depth on his site and has even done some infographics that help you decide which one is potentially the best for your needs or whatever. But if you look at the state of those platforms now versus like three years ago, right, all you had was Wishlist, S2, and a couple other things. You were basically screwed. At least now you have some alternatives that, you know, are fairly robust.

PIPPIN: Oh, yeah.

BRAD: Yeah.

PIPPIN: Well, three years ago is right about when I started building RCP. And that’s why I built it because I was — because I wanted to run a membership site.

BRAD: Yeah.

JARED: And you knew better to use what else was out there.

PIPPIN: Yeah. And also, I also worked for a company that was running a big membership site, and they were running on A-Member at the time, and we really wanted to get them off of A-Member. And now they’re still running RCP, and it’s working great for them. I do really like that now there are a lot of options when it comes to memberships because there is no one size fits all.

JARED: Absolutely.

PIPPIN: Honestly, I think that’s part of the problem that we used to have with membership systems is that the systems that were available were trying to be one size fits all. And from a developer standpoint, I really don’t like that mentality. I have no problem telling somebody that, hey, RCP is not for you, or MemberMouse is not for you, or this is the one that you should be using because that’s always going to create a better experience —

JARED: Oh, yeah.

PIPPIN: — for the user and the customers.

JARED: Well, we know what happens when you bolt on the kitchen sink, right? We were just talking about that yesterday on some plugin I won’t mention.

PIPPIN: Oh, yeah.

JARED: So.

BRAD: Oh, I know the one.

JARED: It doesn’t take much to figure it out.

BRAD: Ah, yeah.

PIPPIN: I really — I haven’t looked at the membership portion of iThemes Exchange, but I’ve played with the code base of the base plugin, and it’s really nice.

JARED: Yeah, I think they kind of are taking to the model of what you said, right. Instead of trying to do the kitchen sink, they’re just picking out selective features, that kind of 80/20 rule and just doing them well.

PIPPIN: They are doing them really well. I’m not going to lie. Some of their features with the membership stuff makes me jealous because I’m like, man, I would like to do that. And I’m like, ah, you know what? There’s not enough time. But that’s okay.

BRAD: Cool. So, Jared, do you do — do you release plugins on the .org repo? Do you have any plugins…?

JARED: I sure do. It’s not something I do as much as I would like to because a lot of the cool stuff I write is really just made specifically for a project or a client. So to go back and kind of like rework that code to make it generic or, you know, to work in general use case, a lot of times I just don’t have the time to do that. But I do have plugins on .org. My user name is JaredAtch. Let’s see. I’m looking at them. A lot of them are actually bbPress plugins because, from all the bbPress work I was doing about a year ago. And, at the time, I had a couple clients that were using it fairly heavily, so I did some bbPress plugins. But, yeah, so there’s a few there to check out. Not a lot.

PIPPIN: I still use your bbPress new topic notifications every single day.

JARED: Excellent. Yeah, see that was actually —

PIPPIN: [Indiscernible]

JARED: That was actually kind of an example of what we just talked about, right? Like I put it up, and it did just like exactly what I wanted to do and nothing else. And then first people started requesting all these new features like, oh, we want to be able to segment this and like only put notifications if this happens. And I’m like, no, I’m not doing that. Like, I just want it to do this.

PIPPIN: Keep it simple.

JARED: Yeah, and then people started like doing one star drive-bys like it needs more features. You know, screw you, so.

PIPPIN: Yeah. I totally understand.

JARED: But, yeah, so one of the actual new features that I’ve had pretty good or new plugin, sorry, that I’ve had good reception on is one called basic user avatars. And basically it’s a fork of tin-ups or Jake Goldman’s old, simple, user avatar, I think is what it was called.

PIPPIN: Mm-hmm.

JARED: And I took the old version and basically added front-end bbPress support into it because that was one of the things that, as a bbPress user, kind of annoyed me that there was no easy way for users to set an avatar on the forums. They had to either sign up for a gravatar or you had to like give them back WP admin access, so they could use one of the existing plugins. It just wasn’t a good user experience whatsoever.

PIPPIN: [Indiscernible]

JARED: So I took the existing plugin, forked it, and now you can just manage your avatar from the bbPress profile screen.

BRAD: Sweet.

PIPPIN: This is a new one to me. I had no idea that you’d written this. Awesome.

JARED: Yep.

PIPPIN: That’s actually something that I need to put on my support forms because we’ve had users come in, like, I want to change my avatar. Well —

JARED: Yeah, and then you tell them, like … avatar, and sign up. You know, it’s just not worth it for me.

PIPPIN: No, it’s totally not worth it, and it’s not worth it for the user either unless they already use gravatar.

JARED: Exactly. Well, yeah, try it out.

PIPPIN: [Indiscernible]

JARED: I mean, if you have any problems, let me know.

PIPPIN: Yeah, will do.

BRAD: I have a question for you, Pippin. Did you — you know that email that everyone — any plugin author should have gotten an email that said —

PIPPIN: Yes.

BRAD: — you should update the compatible —

JARED: Yep.

BRAD: — up to.

PIPPIN: Yep, for WordPress 3.9.

BRAD: Yeah, yeah. Is that new, or did I just not see it before?

JARED: So I thought that too. I don’t recall ever, or at least not recently, for a major release, getting that email until this one.

PIPPIN: I think it’s new because that was the first time I had seen it as well.

BRAD: It worked. I did it. It worked for me.

PIPPIN: But, honestly, I haven’t done it yet. But I’ve been meaning to.

BRAD: Yeah.

PIPPIN: It just takes forever to go through 50 plugins and update them all.

BRAD: I know. I always think of it when a new release comes out, and then I’m like — and then I immediately forget to do it or whatever. But I feel like the email just nudged me that little bit extra, just enough, you know.

PIPPIN: Yeah. I liked it. I thought it was, whether you choose to do it or not, it’s still that nice reminder that says, hey, by the way, you have these plugins that either you should test them or at least update whether they’re compatible or not.

BRAD: Yeah. No, I liked it. It’s good. Cool.

PIPPIN: Jared, have you ever done any contribution to WordPress Core?

JARED: I have not, not directly. I mean, I don’t have props on any tickets. I’ve been involved in numerous tickets, one that talks about the metabox stuff, one that talks about bundling jQuery UI. I’ve done — reported bugs that I’ve gotten fixed and stuff, but I have never directly submitted a patch. There’s no real reason why. I guess I just — when I have time to do stuff like that, I’d rather contribute to bbPress, honestly, is what it kind of came down to.

PIPPIN: Sure.

BRAD: Right. Yeah. I mean, it’s not easy to contribute to Core, really, like to get things through.

PIPPIN: No.

BRAD: I mean —

PIPPIN: Unless you just happen to jump on a ticket that has a simple patch.

BRAD: Yeah, yeah.

PIPPIN: Which usually….

JARED: Yeah, I mean, so my idea was if I ever came across a problem that was, you know, something stupid that no one else had found yet and, you know, I could do a quick fix, I would definitely patch it and, you know, push that upstream or try to. But my thought was, you know, if I have free time to just sit around and, you know, kind of donate my time towards something, I ended up just doing bbPress. I mean, I haven’t been really involved in probably the past 6 to 12 months actively just because I’ve been so busy with paid client work. But for a while there, you know, I was a core contributor and was help leading the dev chats and everything like that. And, I mean, I always, in my talks going to WordCamps when I was talking on bbPress, I’d encourage people, you know, look; it’s not like don’t contribute to WordPress Core, but if you haven’t started that, why not consider bbPress? The barrier to entry is a lot lower, and the developers there will work with you and help you with your patches and everything, which is something that WordPress Core is getting better at, but they’re still not, you know, there’s still that kind of barrier to entry. And, of course the load on —

PIPPIN: Well, and I think there’s a barrier to entry.

JARED: Yeah, and then the code on bbPress is like pristine, right? I mean, so what better way to learn the code than go through the code at bbPress?

PIPPIN: I couldn’t agree more. bbPress is definitely where I started too. I was contributing to bbPress Core for at least a year, a year and a half before I ever really started thinking about contributing to WordPress Core, and it was because of that barrier to entry. And I don’t think it’s necessarily because developers are more responsive, but there’s a couple things. You mentioned the code is pristine. WordPress has a ton of legacy code.

JARED: Oh, yeah.

PIPPIN: So if you get into some of those legacy parts, it can be difficult, either because it’s difficult to interpret what’s going on, or because changing it is a backwards compatibility nightmare. One of the nice things with bbPress for sure is that because it was all rewritten from the ground up like —

JARED: Recently.

PIPPIN: — what, a year and a half, two years ago.

JARED: Yeah.

PIPPIN: It’s beautiful, especially because Jtrip is crazy when it comes to —

JARED: Like super….

PIPPIN: — how clean this code is going to be. I mean, it’s all pristine for sure. And so it’s definitely easier to get into read it, to find where things are happening and, overall, I’d say it’s a little bit of a — I mean, it’s a simpler system.

JARED: Well, and part of it for me was, you know, when I would submit a patch, and this might have been just because, you know, there’s not as much going on, right? So the noise is a lot lower. But when I first got started with bbPress, you know, I would submit a patch and Jacoby, John James Jacoby, the, I guess, kind of the guy who runs that and BuddyPress. You know, he’s kind of the gatekeeper for all that. And he would take my patch and be like, yeah, this looks like a good start, and then would just commit a different patch that was like 90% rewritten, right? But the beauty of that was like he’d let me compare what I submitted to like what he ended up with. Okay, well, this makes sense why he changed this. This makes sense.

Versus you don’t really see that a lot on WordPress Core, at least not that I see. Most of the time if they don’t like your patch they’re just like, no. You know what I mean? They don’t really take the time to go through and say, like, okay, well, that’s pretty good, but here we’re going to walk you through a few things and show you what you could have done differently. And for me, in bbPress, that’s what I absolutely loved is, I mean, my —

PIPPIN: Getting that immediate, quality feedback.

JARED: Yeah, exactly. And then my next patch was better. And then my next patch was better. And, you know, finally my last patch is like, you know, Jacoby was like, yep, looks good to me; going in, you know.

BRAD: Awesome.

JARED: But it’s because —

PIPPIN: Yeah, I had the exact same experience.

JARED: It’s because you worked with me, I got to that level.

BRAD: That’s interesting.

PIPPIN: Absolutely.

BRAD: I think — so why do you think that is then? Like why is WordPress —

PIPPIN: I think it’s —

BRAD: Just the size of the project?

JARED: I think so.

PIPPIN: …the size, the lack of noise. I mean, if you look at the number of tickets in the bbPress Trac.

JARED: Yeah….

PIPPIN: It’s so much smaller. Some of that is because the project is, I mean, the project itself is much smaller. There are fewer people contributing to it. There are fewer people reporting bugs. It’s a lot easier to manage tickets in the bbPress Trac than it is in WordPress simply because of size.

BRAD: Right.

PIPPIN: And instead of having, say, ten people that are the leaders of the project, you have one or two.

JARED: Yeah.

PIPPIN: I guess technically there’s three or four that are more or less leads.

JARED: No, I think there’s three or four core committers.

PIPPIN: Yeah, it’s Jtrip, Jennifer, and Daniel, I think.

JARED: Yeah.

PIPPIN: Are the three. But in general, you still have much more rapid feedback and just the ease of reviewing a ticket is a lot simpler.

JARED: Exactly. So that’s why, you know, when people are looking to get started, you know, if you want to go work with WordPress Core, by all means. But, you know, if you’re looking for more immediate feedback then —

PIPPIN: Yeah.

JARED: — bbPress is definitely a good place to look.

PIPPIN: It’s definitely a nice intro into like how contributing to WordPress Core works.

JARED: I think so because you get used to Trac. I mean, Jacoby runs, you know, the bbPress Trac very similar to Core, obviously just on a much smaller scale. So it’s very easy, and it’s getting better now that Nacin has spent a lot of time like reworking the Core Trac and everything. But it’s very easy to just, you know, get overwhelmed with Trac, right? Like not know what the hell is going on. There are just all the tags and everything like that. And bbPress, like you said, is such a smaller project that I think it is a good first step to, you know, kind of get familiar with how things work and then, you know, six months of doing that and creating patches, well then it’s hop over to WordPress Core, you know, is really nothing.

PIPPIN: Yeah.

BRAD: Cool.

PIPPIN: Definitely.

BRAD: Should we move on to maybe, Pippin, do you want to talk about what you’ve been up to these days?

JARED: Yeah, let’s hear it.

PIPPIN: Sure. Sure. So my recent thing that I’ve been working on, aside from my standard day-to-day work with Easy Digital Downloads and some other stuff, is we finally got Affiliate WP launched and out the door, so that was fun. We launched it a week and a half —

BRAD: I’d play like a sound effect, but we don’t have any sound effects.

PIPPIN: Oh, we fail.

BRAD: It would have been like clapping and like a hurray, like a crowd applauding, so you can kind of imagine that.

PIPPIN: Now I’m sad and disappointed. But we got that launched just a little bit over a week ago, and we’ve had a really great response to it so far. It’s been fun for me, aside from –I always like launching a new plugin. But it’s been really fun for me because I’ve stepped back on this project and modified my role quite a bit. I’ve always been hands-on with every aspect of a project that I’ve been working on, and so that means that I’m doing the development. I’m doing the support. I’m doing the site. I’m doing the marketing, et cetera.

And for this one, I have Andrew Monroe, who’s been a long time EDD contributor. He’s been working with me on it. And we agreed to split our roles up, so I’m doing nothing but development, and he’s doing all of the support and all of the site. And it’s been really fun for the last week or so to be able to just focus on fixing bugs, making improvements, et cetera, as opposed to working with initial customer support, working getting the site up and going, and things like that. And I think it’s allowed the project to move dramatically faster and have the end result be a lot better and a lot more polished, so that was fun.

Aside from Affiliate WP, I’ve been playing with writing a Pebble app, so I bought a Pebble, the Smart Watch, a month or so ago. And I decided I wanted to try and write an app for it, and so I wanted to write an app that would allow me to quickly view like my current sales stats for a day from one of my sites.

JARED: That’s cool.

PIPPIN: So I could open the app, and it would do a quick query to the API and say you’ve made X number of dollars today, or something like that. And it’s not finished, but I did get it mostly working in the dev environment, and that was really fun. I’ve never, aside from like ten years ago, I haven’t worked with C ever. So writing in C was new. And then figuring out the SDK and then, and honestly, like seeing something happen on my watch that I just programmed was pretty frickin’ cool.

JARED: That’s awesome.

BRAD: Yeah. It sounds like fun.

PIPPIN: And I mostly just did it for fun.

BRAD: Yeah. I did a C course in college.

JARED: Oh, me too. Good God.

BRAD: Oh….

PIPPIN: I did C++ in college.

BRAD: Well, mine was Unix based C, so it was like the projects were like, you know, build a server that would fire off child processes and do other things and stuff. I found it really cool. I really enjoyed it. But I could see, so why did yours suck, Jared?

JARED: It was just our instructor was really hard. Actually, it was funny because, you know, I took this in college, and I had to take a programming elective, and my choices were like, it was something stupid. It was C, Pascal, or Fortran. And I’m like, well, let’s see which one is actually going to be, you know, even remotely useful to me. So I ended up taking C, and I actually liked the course itself because having basic PHP knowledge already, I made a ton of connections. I mean, I was leaps and bounds ahead of most of the people in the course who just had no idea what they were doing just because the functions were somewhat similar named and whatnot, so I really liked it. But, yeah, it was just a tough course.

BRAD: Yeah. I mean, the professor makes such a difference, right?

JARED: Oh, yeah, exactly. And he was one of those professors that, you know, didn’t really give a shit about everyone in his class being lazy and had no problem just failing everyone.

BRAD: Yeah. Isn’t that like —

JARED: [Indiscernible]

BRAD: Isn’t that like the Steve Jobs thing? Isn’t that like don’t take courses, take professors, or something?

JARED: Yeah, yeah.

PIPPIN: Yeah.

BRAD: Yeah, I think that’s a pretty smart way to say it.

JARED: I wish I still had time to do stuff like that though.

BRAD: Yeah.

PIPPIN: The C++ class that I took in college was, it was terrible.

JARED: Oh, yeah?

PIPPIN: It was taught by a grad student that had no idea how to teach a programming class, and it was a little painful.

BRAD: Ah, that’s too bad.

PIPPIN: But I managed to get through it without ever buying the textbook, which I was pretty happy with.

BRAD: Ah, yeah, typical student scheming right there.

PIPPIN: That’s right.

JARED: That’s right.

PIPPIN: I was like, you know what? I know programming. I’m going to see what I can do. I’m going to get through. I’m not going to buy this darn textbook. It’s going to cost me $150. Screw that. And there was definitely times I was like, man, I should have just bought the damn textbook.

BRAD: Yeah.

PIPPIN: But, hey, I made it through.

BRAD: Actually, yeah, there was no textbook for my Unix C course because, like, there’s man pages and stuff, right.

PIPPIN: I’ll be honest.

BRAD: Yeah.

PIPPIN: I think the idea of a programming textbook is kind of stupid.

BRAD: Yeah.

JARED: Yeah.

BRAD: Yeah, there’s something wrong with the program language if it doesn’t have just proper documentation. Right?

PIPPIN: Yeah, well, and like in my case, the course was pretty much reading from the textbook, chapter by chapter.

BRAD: Right. Crazy.

JARED: So I just thought about it. So that programming class was actually the reason I got my very first Mac ever. I was a die-hard PC person, was really familiar with Windows XP, and was actually a computer tech, so I knew all that. And, yeah, so for the C stuff to compile it and everything, you either had to, you know, have a Unix or Mac based system or had to put, you know, Putty or something similar on your PC and then like SSH or Telnet into their servers and like do all your programming there and try to compile it and everything. And so the off, for whatever reason, was always screwing up, and I could never connect to their servers and everything, so I was like screw it. I’m a student. You know, I get like a 15% off discount at the Apple store. Went down there, got me just an old school white Mac book. I think it was the first generation Intel core dual or whatever and, yeah, I started using that to compile my C.

PIPPIN: Nice.

JARED: And then I just eventually ended up switching over completely. So I guess I have then the C class to thank for that.

BRAD: There you go.

PIPPIN: There you go.

BRAD: Nice.

PIPPIN: So what else have you been working on lately, Jared?

JARED: Just a whole lot of little things. I mean right now I’m actually working on redoing the ShareASell blog, which I’m pretty excited about having that project as can be. They’ve been great so far, so I’ve been doing that.

PIPPIN: That’s a pretty high profile project.

JARED: Exactly. That’s what I’m counting on. It’s going to look good in my portfolio, so right now I’m actually building the custom event calendar for them, so that’s kind of been my last few days, and it’s been a real interesting process.

BRAD: Cool.

PIPPIN: Does that mean that you have to use ShareASell for your affiliate system?

JARED: What’s that?

PIPPIN: Does that mean you have to use ShareASell for your affiliate systems?

BRAD: Yeah, right.

JARED: …yeah, so ShareASell is really what I’ve been working on the past week or two. That’s hopefully going to be done in the next week. And then right before I left for vacation last month, we launched the new LeadPages site, which is leadpages.net, and that was a pretty massive sized project, so that took up quite a bit of time working on that.

PIPPIN: When you work on these, are you usually working by yourself, or do you have other people that you work with?

JARED: No, usually it’s just me and the client, and that’s it or, you know, if there’s a designer looped in. But as far as developers, I’m typically the only person.

BRAD: Right. Do you do the front-end coding as well?

JARED: I do. I do. So sometimes there’ll be projects where I just get so many templates and there’s just a ton of work that I need to do on the backend. I’ll actually contract out some of the front-end stuff just so I can focus on the backend stuff. But that’s very rare. I only do that for really large projects where, you know, there’s a lot to do for me on the backend that’s going to keep me from doing the front-end stuff. But typically I just knock it all out myself.

BRAD: Cool.

PIPPIN: That’s very cool. Nice. What about you, Brad? What have you been working on?

BRAD: Well, I had MicoConf, which is a business conference. I guess it was last week, and I spent a couple days vacationing in Las Vegas —

PIPPIN: Awesome.

BRAD: — just before the conference. Yeah, and it was awesome. It was so good. I love talking business. And there are just a lot of passionate people there, and it was kind of a small conference, about 300 people.

JARED: Those are the best though, right?

BRAD: Oh, it was. I just — my only regret is that I kind of bounced around too much, I think. I just wanted to talk to everyone, right? But it was — it ended up being — you know, it’s one of those things, like when I got home, I had so many things to do and catch up on.

JARED: Mm-hmm.

BRAD: I was like that’s the sign of a good conference because there was no time where I was working or, like, doing other things. I was absorbing the conference, you know. So that’s kind of like PressNomics is similar, I think, to that.

PIPPIN: Yeah. I was behind for several weeks after PressNomics.

JARED: Oh, yeah.

BRAD: Yeah. But before MicoConf, I released a little bit of code on GitHub. So I wrote an article about filtering your logs. So like if you’re developing and you have a plugin installed that’s like polluting your log, your error log with all these errors that, you know, it’s a third party plug-in, so you can’t really fix those errors, right? But you can filter them out of your error log. So I wrote an article about that. And the problem is that the solution that I came up with in that article didn’t work when you had XDebug enabled. So I released some code to kind of filter out an Xdebug log.

PIPPIN: Cool.

BRAD: So that’s like really specific.

JARED: It’s pretty wild though.

BRAD: Yeah, yeah, but just check out the article, I guess, and you’ll see kind of why it’s useful.

PIPPIN: Too long….

BRAD: Yeah, TLDR.

PIPPIN: Yeah. It’s pretty cool. I was just taking a look at it, and I mean it’s definitely an issue that I’ve run into before, but honestly I probably never would have thought to jump in and say, hey, let’s take care of this. Instead, I’m the lazy developer that just says, ah, screw it.

BRAD: Yeah. Also I’ve been —

PIPPIN: That’s pretty cool.

BRAD: I wrote an article like a couple weeks ago about — the title was Stop Commenting Just to Say You Did.

JARED: Oh, God, the comments on that were awesome.

BRAD: And it went nuts on Hacker News. It hit the front page and stuff. But the funny thing is with Hacker News is that it really doesn’t do anything for you. It brings a lot of traffic to your site, but like no one signs up for your email list and, you know.

PIPPIN: Well, it’s usually the wrong kind of customer base or user base.

BRAD: Yeah, yeah. Yeah, so I’ve gotten on like the front page of Hacker News like three times already this year, somehow.

PIPPIN: Good for you.

JARED: That’s awesome.

BRAD: And just, well, it’s — but that’s it. That’s all it is. It’s like a vanity thing. It’s like can I make the front page of Hacker News, because there’s really no benefit besides —

PIPPIN: Right.

BRAD: — being able to say that you did.

PIPPIN: Just to say you did.

BRAD: Yeah, which is kind of stupid, right? So I don’t know if I’m going to submit my articles anymore, but I’ll try.

PIPPIN: Nice.

BRAD: I’m going to try to resist. Sometimes you just want to know, right, like is this going to resonate, you know.

JARED: I mean, I thought it was an interesting article. I was reading the comments, and I was kind of siding in the middle of it, right? So I don’t know if you all talked about the article last week or last week, but it was basically just like don’t comment for the sake of comment.

BRAD: Yeah.

JARED: Commenting. And I don’t know. Personally, I guess I kind of end up kind of putting in pointless comments sometimes, but they’re more of like placeholder comments that I’m supposed to go back and expand on later, and then a lot of times I just don’t do it. But it was a good article.

BRAD: Yeah. Yeah. Yeah, and I guess my argument there was that it’s like if you do that then you end up with like — it’s really hard to identify the meaningful comments when there’s a lot of stub comments, right? That was my point I was getting at. But people kind of brought up the idea of like Javadoc, whatever those things are, the documentation generators, like they need those stubs.

JARED: Yeah, they have to have the doc block for every function, even if like it’s pointless just to be able to generate the —

BRAD: Yeah, that seems ridiculous to me. That seems like a problem with your doc generator more than —

JARED: Yeah.

BRAD: But anyways.

JARED: Yeah. Have you ever seen a plugin that’s like click here to see your docs? And you click it, and then all it is is the auto-generated documentation from the dock blocks.

PIPPIN: I hate it.

BRAD: Yeah. And then I immediately hit the back button.

JARED: Yeah. Is that not the most like stupidest thing? I mean, uh.

PIPPIN: Well, I mean, in terms of developer documentation, it’s pretty much worthless. Why don’t you instead just link to GitHub and go to the code base?

BRAD: Yeah.

JARED: Yeah.

BRAD: I mean it’s pretty much the same thing except for: oh, wait, you don’t have code in there. All you get to see is comments. Awesome.

JARED: Yeah, and the comments generally don’t, unless you’re like bbPress, you know, and you just put all this crap in your comments that help you learn how to use the functions and stuff. The doc blocks usually don’t really tell you that much. You’re going to end up going and looking through everything anyway, so.

PIPPIN: Yeah, no. They’re silly.

BRAD: Mm-hmm.

PIPPIN: Sometimes they’re kind of cool just to see whether or not you have your doc blocks written out well enough, but beyond that —

BRAD: Yeah.

PIPPIN: I’ve never found one that I thought was useful for me as a developer not familiar with a platform.

JARED: Yeah.

BRAD: Yeah, same here.

PIPPIN: And, I mean, honestly, that’s what developer documentation is supposed to be is for people to become familiar with it.

BRAD: Yeah.

PIPPIN: Well —

BRAD: Well —

PIPPIN: We’ve got a little bit of time left. Why don’t we talk real quick about WordPress 3.9?

JARED: Right.

PIPPIN: So 3.9 dropped a week and a half ago, something like that and, overall, I love 3.9. I think it’s fantastic.

JARED: So you’ve updated all your sites and everything as far as you’re concerned, or are you kind of holding off and only…?

PIPPIN: No, I’ve got everything updated.

JARED: Okay.

PIPPIN: Actually, no. There’s on site I don’t have updated, which is a client site. And the only reason we haven’t updated them is because we have a very strict schedule on when we perform their updates just because of the size of their site and availability of people if something goes wrong during the update of any kind.

BRAD: Right. Here’s why —

PIPPIN: We can’t just throw thousands of dollars down the drain if something goes wrong.

BRAD: Yeah. Here’s why I haven’t updated one of my sites: because I’m not confident that the plugins that I have installed have done —

JARED: Absolutely.

BRAD: thorough enough testing yet and I’ve worked out all the bugs. And that’s why I just don’t have the trust.

JARED: I think I’m in the same boat.

PIPPIN: What are some of those —

BRAD: Yeah.

PIPPIN: Not necessarily what are the plugins, but what are the issues that you expect those plugins to have?

BRAD: So I’m running — so I guess the big thing is I’m running an ecommerce site: deliciousbrains.com.

PIPPIN: Right.

BRAD: So if anything breaks, you know, I lose money and have a hard time paying my employees and, you know.

PIPPIN: Sure.

BRAD: It’s a disaster, right?

PIPPIN: I mean, that’s pretty much the same reason that this client site, we haven’t updated them yet. We have updated their staging site, and basically we’re letting their staging site run for a week or two to make sure that everything is running fine.

BRAD: Yeah.

PIPPIN: And so far it’s all good.

BRAD: Yeah. Yeah. I mean, I’ve updated my blog and, I mean, but that’s not much, right? Most of it’s a static site anyway, right?

PIPPIN: I do have to say one really nice thing about running an ecommerce system that you wrote is that you don’t have to worry about whether your ecommerce system works on 3.9.

JARED: Right.

PIPPIN: Because you already know if it does.

BRAD: Exactly. Exactly. That’s a very good point.

PIPPIN: I guess it’s a nice, little position to be in. But, yeah, all of my sites are on 3.9, and I’m really happy. I have not had any issues with anything. I have seen some people or some pretty widespread issues when it comes to TinyMCE.

JARED: Yep, I’ve had clients yell at me about that already. It’s —

PIPPIN: Yeah, TinyMCE 4.0, so there’s a lot of plugins, primarily plugins that added buttons to the TinyMCE toolbar. Some of those failed with 3.9.

JARED: It’s not even they don’t; it’s not even they fail in the sense that like they don’t show up, which would be acceptable because then they’d just reappear when the plugin fixes itself. It’s that the cases I’ve seen with some of my clients, they just nuke the WYSIWYG altogether. So they log in, and they’re just like —

PIPPIN: Oh, that’s awesome.

JARED: — the WYSIWYG just doesn’t load.

BRAD: Oh, boy.

JARED: So, yeah, that’s a lot more inconvenient than like, oh, you know, the whatever …

PIPPIN: Oh, you don’t have formatting….

JARED: …button doesn’t work.

PIPPIN: Right. Yeah, that wouldn’t be as big of a deal.

BRAD: Have you tracked down the reason for that?

JARED: I haven’t. I do know one of the plugins was the zip list recipe plugin, I guess, and that was like a known thing documented on .org, so I’m sure they’ll push a release out for that if they haven’t already, but yeah, it was just weird. It was nuking the editor entirely.

PIPPIN: I would assume that’s just because of the difference between the previous version of TinyMCE and 4.0 —

JARED: Oh, yeah.

PIPPIN: — with how buttons are added. I mean it’s just causing a conflict.

BRAD: Hmmm.

PIPPIN: That does bring up a point that I want to make because I think it’s really important. I had a conversation with a plugin developer last week. They had written a plugin, and it broke with 3.9 due to TinyMCE. And to put it this way, they were pretty much PO’d at WordPress for breaking their plugin.

JARED: That’s stupid.

PIPPIN: And I kind of wanted to say, “Shut up and just deal with it,” because — so first of all, you write a plugin for a platform. So it is your responsibility as the developer of that plugin to make sure that you work with that platform. And I think that’s something that most plugin developers, in general, understand, at least the greatest ones.

JARED: You mean the competent ones, maybe.

PIPPIN: Yeah.

JARED: I mean that whole argument is a farce to me. I mean, if you wrote something that was on jQuery three years ago and now the new version breaks, are you going to be like, well, it’s jQuery’s fault, you know, I mean.

PIPPIN: Yeah, exactly. But beyond that —

BRAD: Or iOS or something, right?

JARED: Yeah, exactly.

PIPPIN: But aside from that, I think it’s really, really important that plugin developers understand that especially if they are running a business with their plugins. If you give plugins away for free, and you don’t want to test them with prereleases, you know, that’s fine. You’ve given away a free plugin. That’s awesome.

But if you run a business off of your plugins, either selling plugins or it’s a service of some kind, F’ing-A, test it prerelease.

JARED: Oh, yeah.

PIPPIN: WordPress 3.9 was in beta for like, what, four weeks?

BRAD: Mm-hmm.

PIPPIN: And was very publicly announced. Hey, RC1 is going out. RC2 is going out. Beta 1, et cetera. We’re all going: all of these announcements were made. There were very clear blog posts. It was very public. And yet here as soon as 3.9 comes out, a whole bunch of plugin developers come in, oh, crap, my stuff broke. Ah, well, you’re running a business on this, and it’s your responsibility to know that you should be testing this and to not do that is entirely negligent to you and your customers.

JARED: Yeah. I mean, if you’re a premium plugin-er, you’re taking money, then I think you definitely have that responsibility. That’s just ridiculous if you don’t, you know. If I was a user of that plugin, I’d be pretty pissed off.

BRAD: Yeah.

PIPPIN: Absolutely. And if you choose to not test the RC versions, whatever. But when you discover that something is broken, don’t ever try and blame WordPress Core for it. Don’t ever go ranting off that something broke because you didn’t test a beta version.

BRAD: Yeah. I think we started —

PIPPIN: We had the same mentality.

BRAD: We started testing —

JARED: It’s same mentality for ecommerce sites that don’t have staging areas.

BRAD: Yeah.

JARED: Oh, God.

BRAD: So, Pippin, it must be like a massive undertaking for you guys because you have so many plugins, like the add-ons for EDD.

JARED: Yeah, what do you all — how do you all deal with so many add-ons and making sure that they comply with all the updates?

PIPPIN: To be honest, we don’t test them every update. What we do instead, which I think actually works really well, is when we have an add-on that is going into the review system, before we ever publicize it to the store, we basically make sure that it’s not doing anything that’s going to break.

JARED: I gotcha.

PIPPIN: So if it’s using —

JARED: By the book.

PIPPIN: If it’s using an API that’s not stable, or it’s using something that we know is going to change, we say don’t use it. Use reliable systems. In general, APIs in WordPress and hopefully APIs in your platforms, in this case would be like EDD, hopefully they’re stable and they’re there to stay, and so that people should be able to rely on them. And so as the project manager, if we know that, hey, this API in EDD is not going to be here anymore or is changing, we make sure that it gets deprecated early and that new extensions are not allowed to use it. And so a lot of it is being cognizant of what future problems might happen. And so far that’s been awesome, and we’ve had very few extensions break due to WordPress Core updates or EDD updates.

BRAD: Hmmm.

JARED: That’s good.

BRAD: That’s good, yeah.

PIPPIN: I think, over the course of two years, we’ve had three or four extensions that failed after an update for some reason.

JARED: That’s a pretty low failure rate there —

PIPPIN: Yeah.

JARED: — given how many updates and extensions that have been in play there.

BRAD: Yeah.

PIPPIN: Yeah.

BRAD: For sure.

PIPPIN: And I think a lot of it is because of that, the idea of, hey, let’s make sure that before something is released that it’s stable.

JARED: Yeah.

BRAD: There must be some plugins that you have, like the more complex ones, that you must test a little bit.

PIPPIN: Oh, of course.

BRAD: Like the software add-on and there’s probably a couple others.

PIPPIN: Well, I mean, a lot of the core ones that we use, like I use them day-to-day on the EDD store itself and on my personal store and some other stores. And so they’re getting tested every single day.

BRAD: Right.

PIPPIN: I think the ones for this particular discussion are more like the popular ones that we don’t use, but we still want to test them before release.

JARED: Right.

PIPPIN: But most of the really popular ones that we’d have to worry about those are being constantly developed anyway, so that, I mean, that is our testing phase.

JARED: Yeah.

BRAD: Right. Cool.

JARED: So speaking of plugins and updates, I wanted to get you all’s opinion on something real quick. I don’t know if you all —

PIPPIN: Go for it.

JARED: — were involved in this kind of Twitter stream going back and forth yesterday. So you all are familiar with the advanced custom fields plugin, correct?

PIPPIN: Yes.

BRAD: Yep.

JARED: So I used that on a good, fair number of my sites, and on many of those sites you use some of the premium add-ons, which are like the repeater field, the gallery field, the options page field and a few other things. So Elliott, the developer, is a great guy. All his updates and stuff, for the most part, are usually typically pretty solid and well tested, has been working on a new version, 5.0, which is right now in beta and going to have a bunch of some speed improvements and things are done with ajax to not, you know, bring down your site if you’re using a select box that has 1,000 posts and stuff like that. So, overall, it’s going to be, you know, it looks to be a good update.

The problem being is, at least as of a few days ago is, the way he was thinking about handling the update. So the way it is now is, 4.0, the 4.0 release, you can just download off .org, and then you go to the advanced customs field site. You purchase your paid add-ons, and then, you know, you just activate those separately on your site, and everything just works.

Well, what he’s going to do now with 5.0 is basically have a pro-release, so you have a lite version that’s going to be on .org, and then you have a pro version that you install, put in a serial, activate, and it just has all of the add-ons in it already, so there’s not any of this, you know, going and managing two different things.

BRAD: Sure.

PIPPIN: Sure.

JARED: So the issue with this is his upgrade path that he was thinking about doing, and I’m hoping he’s going to consider, and it sounds like he might, is so when 5.0 hits and, you know, your users are going to go in and be like, oh, yeah, update. Update. Well, it’s going to update to 5.0 lite. And so you’re going to lose your premium add-ons until you know that you need to go in there and put in the serial key and activate the pro version to basically get the new versions of the add-on back, which, you know, my clients won’t do.

BRAD: Right.

JARED: So basically, you know, it’s going to be….

BRAD: I know why he’s doing — I know why he’s doing that too. I know why because you can’t — he won’t be — he wants to get his pro code out of the .org repo, right?

JARED: Yeah.

BRAD: And so updating the .org plugin, that’s really the only way that he’s going to be able to do that. I can’t even think off the top of my head how he would go about it any other way. Like what’s the alternative?

PIPPIN: Yeah. I guess the shitty thing is it seems it’s a crappy situation to be in because you can say, well, this is the model that, for whatever reason, it needs to go to for the future. How do we get people to that model? I don’t have an answer for that.

BRAD: Yeah.

PIPPIN: But for people like you and other people that are managing client sites, that’s pretty crappy for sure.

JARED: Oh, yeah. I mean, like me and Bill Erickson and Travis Northcutt and some other people were talking about it and, like, I mean, we’d just flat out be screwed, right? Like, I mean, the three of us combined probably have hundreds of sites using that plugin, most of which are using the premium add-ons. And so for when that update hits, you know, all the clients are just going to go in and hit update and not really know any better. And then all of a sudden a core functionality that, you know, like the repeater field or the gallery field just breaks. And they don’t know that, like, well, shit, I should have bought a pro version, and I should have gone and put in that license first. And so I think it’s going to….

BRAD: I guess my argument there would be like: should clients be updating plugins anyway because, like, the shit could break anyway.

PIPPIN: Personally, I think they should be.

BRAD: They should be?

PIPPIN: But I think that’s a different discussion.

JARED: Yeah.

PIPPIN: So from a product manager’s perspective, a couple things: number one, I think any decision that is going to cause 50%, 90%, 20% of your user base to break is a problem.

JARED: A decision, right?

PIPPIN: No matter what the goal is to get to, I think that’s a problem.

JARED: Yeah.

PIPPIN: And there has to be a better way around it. I don’t know what the answer is for how to get around it. I’m not super familiar with the plugin or how that ecosystem has worked. But I think, with a commercial product, choosing an upgrade path that results in major failure is wrong, regardless of what the reason is. The only time I think that should be acceptable is if that is the only option. I don’t know what the answer is for how for him to move his users over to the new system.

JARED: Yeah.

PIPPIN: I kind of like what Mike Jolly did with Download Monitor.

JARED: What was — how did he do that?

PIPPIN: Okay. So he had an old version of a plugin that he’d worked on for like three or four years. And it had a lot of legacy code. And he rewrote it from the ground up. The problem is that the new version simply did not work with the existing version. And so anybody that upgraded, it would just break.

And so what he did is he said, okay, I’m going to re-release this. It’s the same plugin, but I’m going to re-release it in such a way that I don’t break any existing sites. Instead, I’m only going to release it such that new users get the new system. If somebody wants to migrate from the old one to the new one, they still can because we’re going to provide them an upgrade method, but it’s not going to be through the automatic update. And so what he did is he had version like 4.5 was his current version. And when he re-released it, he changed his version back to 1.0.

JARED: Oh, that’s smart.

PIPPIN: And so this is 1.0 that’s really 5.0.

JARED: Yeah.

PIPPIN: But the cool thing that it did is it prevented anybody from auto updating because WordPress will always say, oh, well, this is a lower version, so you can’t update. But so it allowed new users to install the brand new plugin that’s been rewritten from the ground up, but didn’t break any existing sites unless somebody went in there and manually said, “Let’s install this.”

JARED: So what was his policy with the 4.0 version? Did he basically say, look, this version is, you know, it’s going to work, but obviously development is discontinuing?

PIPPIN: Yeah. Discontinued, there’s no support for it, things like that.

BRAD: Yeah. Wouldn’t he be overriding?

PIPPIN: I think that model —

BRAD: Wouldn’t he be overriding like version 1.0 though?

PIPPIN: Yeah.

BRAD: Like if someone wanted to go back and get it?

PIPPIN: Yeah, but, I mean, if you think about it, if you have three years of history or two years or whatever it is.

BRAD: Right.

PIPPIN: Overriding 1.0, the only problem with it really is for historical sake.

BRAD: Yeah.

PIPPIN: I mean, no one is going to go back to install 1.0 when you’ve gone through 50 versions.

BRAD: Yeah. And you could still dig it out of version control.

PIPPIN: Sure. And I’m sure he kept it somewhere. He probably has it tagged.

BRAD: Yeah.

PIPPIN: But the point is that he introduced this new version for all new users. The plugin maintained all of its download stats on WordPress.org, the same URL, the same everything, but he didn’t break any existing sites via the automatic install.

BRAD: That’s a good solution.

JARED: Yeah, I agree. I think that was a — that’s a nifty workaround for sure.

PIPPIN: Yeah. We actually — we had a Skype conversation on how to do it before he did the release because he was worried about the exact same problem because he has half a million downloads on the plugin and was like, I don’t want to break everybody. It’s going to be a nightmare. And so that was the solution that we came up with for him to do. And I think it worked well.

There were still a bunch of users that were pissed off because they did. They’re like, oh, hey, there’s a new version. I’m going to install it, and didn’t realize that all of their downloads that they had created would be incompatible and things like that. But it was still those users that chose to manually install the update.

JARED: Huh. So was there any sort of add-on or anything that migrated, or you were pretty much —

PIPPIN: Yes.

JARED: — just stuck with —

PIPPIN: No, he created a legacy migration tool.

JARED: Oh, okay.

PIPPIN: I’m actually going to test that out on my site sometime soon because I’ve been using Download Monitor for two years, something like that, and I’ve got a bunch of downloads in there that I want to migrate. I just haven’t done it because it takes time.

JARED: Yeah, I think when these problems come up that it really gives you kind of a sense of appreciation, right, for some of the massive plugins like Gravity Forms or, I don’t know, BackUpBuddy or anything like that that, you know, you know these problems have probably come up, but luckily we just don’t really ever see them, as an end user.

BRAD: Right.

PIPPIN: Well, and I think if you’ve done things right, you don’t see them.

JARED: Yeah.

PIPPIN: Honestly, I understand that there are some problems that you have to find a way to get around. I mean, if you have to change an API, you have to change an API. But I have never been convinced that the solution that results in thousands of sites breaking is ever the right solution.

BRAD: Yeah, yeah, I think you’re right.

PIPPIN: I don’t care what your end goal is.

BRAD: Right.

JARED: Yeah, especially when you’re taking money from these people of the sites that’s going to break.

BRAD: Yeah, that’s true.

PIPPIN: I mean, I don’t like to point fingers, but now this is kind of — in this case we were just talking about Mike and how he handled Download Monitor. I think my personal opinion is like when WooCommerce 2.0 came out and they broke all the payment gateways.

JARED: Oh, yeah.

PIPPIN: Honestly, I think they made a mistake because it broke tons of sites. Now I understand that they need to introduce that new API because maybe the old one was crappy or it had a limitation. But the point is that it still resulted in massive breakage. And for that reason alone, something wasn’t done the way it probably should have been.

BRAD: Yeah. I agree with that.

PIPPIN: And I think WordPress Core is a nice indication of that as well in that, over ten years, there hasn’t been that massive breakage because of an API change. And that’s part of the reason why we have so much legacy code too because backwards compatibility is a big deal.

BRAD: Yeah. Yeah.

PIPPIN: So anyway.

BRAD: Well, I’m really looking forward to chatting some more with both of you at WordCamp Miami.

PIPPIN: Yeah.

BRAD: In like two weeks’ time.

PIPPIN: Two weeks.

JARED: Gosh, already.

PIPPIN: Yeah, it’s going to be great.

BRAD: Yeah.

PIPPIN: There’s going to be a lot of people there for sure.

BRAD: So it’s May 9th.

PIPPIN: The attendance list is —

BRAD: Yeah, May 9th to the 11th is when it is.

PIPPIN: Right.

BRAD: So two weeks.

PIPPIN: Yeah, and the attendee list is looking awesome, so I’m really looking forward to it.

JARED: Well, it looks like it’s probably the biggest one of the year, short of San Francisco, right?

BRAD: Mm-hmm.

PIPPIN: It’ll definitely be close to it. Jared, you’re speaking there as well, aren’t you?

JARED: Yes. I am giving bbPress 1.0 at the BuddyCamp, which is Friday.

BRAD: Oh, nice.

PIPPIN: Fantastic.

BRAD: Cool.

PIPPIN: Yeah, if anybody wants to go learn about BuddyPress, sorry, bbPress and what is — or BuddyPress.

JARED: Or BuddyPress, yeah.

PIPPIN: It’s really the bb camp.

JARED: Yeah.

PIPPIN: It’ll be a great place to go.

BRAD: Cool.

PIPPIN: Jared, you’re obviously well qualified to give that 101 talk, so I’ll be there.

JARED: Yeah, I am. I don’t think I’ll have too much of a problem with that.

PIPPIN: Yeah. Awesome. Well, Brad, do you want to wrap us up?

BRAD: Yeah. Well, thanks, everybody. And catch you next time.

PIPPIN: Yeah. It’s been fun. And thanks, Jared, for coming on.

JARED: No problem. You all have a good one.

BRAD: Thanks, Jared.

  • Email links back to episode 15 😉

    • Pippin Williamson

      I know. I failed again 😛

      • Lol… at least you have a kickass podcast to make up for it!

  • Thanks again for a great episode, and I apologize in advance for being a bit off-topic. As a day-developer and night-electronic enthusiast, it was cool to hear a bit about your C/C++ experience. My latest favorite is https://www.spark.io/, a wifi-enabled microprocessor complete with cloud API. This fits perfectly into my niche of web development and electronics design, as you can make JSON calls to this thing and have it display information.

    I know you guys probably sit in front of your computers all day with the necessary windows open, but I’ll ask anyway – what kind of online notifications would you like to see in an external interface? Support requests, sales stats, blog posts, traffic counters, tweets or comments?

    I would nearly die of happiness if we could run a project to bridge the gap between WordPress and an electronics interface. Any ideas?

    • Pippin Williamson

      I LOVE seeing integrations with external devices that give sales stats from Easy Digital Downloads. Since I use it to run 4 different e-commerce sites, it’s a huge part of my business (not just because I run my business around the plugin as well).

      Stats that are important to a business are always awesome.

      • Did Brad ever switch over to EDD or is he still running his own system? I’ve got some ideas on integrating Spark with WP…

  • Great podcast guys. Especially loved your thoughts on developing to core vs. bbPress. I haven’t contributed to either. I guess one issue with both is the use of Trac; I’ve found it a lot easier to contribute to plugins with Github repos simply because I’m familiar with Github.

    • Pippin Williamson

      Trac is definitely a different beast that can take time to learn to navigate. Andrew Nacin has done some amazing work with core’s trac recently that makes it so much easier to work with. Login and take a look: http://core.trac.wordpress.org