January 15, 2015

In episode 34 we are joined by Patrick Rauland, the current product manager for WooCommerce and a prolific plugin developer and contributor to Ninja Forms.

Patrick had some audio issues that started around 15 mins in. Things go back to normal a few minutes later, at 17:28.

This episode was sponsored by WP Ninjas, the creators of Ninja Demo and the highly popular Ninja Forms plugin.

ninja-forms-540px

Show Notes:

Image credit: Patrick Rauland

Transcript
INTRO: Welcome to Apply Filters, the podcast all about WordPress development. Now here’s your hosts, Pippin Williamson and Brad Touesnard.

PIPPIN: Welcome to Apply Filters, Episode 34. Today, we are honored to have a special guest, Patrick Rauland, joining us. Also, as usual, is my cohost, Brad Touesnard. Today’s episode is sponsored once again by the WP Ninjas who are the creators of Ninja Forms and Ninja Demos.

Patrick, who is with us today, is also one of the developers of Ninja Forms. He’s done some work for them, and he also does a bunch of work with WooThemes on WooCommerce. We’re going to get in and talk to him about all of that work here in a few minutes.

Before we do that though, Brad, why don’t you tell us what you’ve been working on?

BRAD: Yeah, so we go 0.8 of the Amazon S2 and CloudFront plugin out, which is pretty awesome.

PIPPIN: That’s the free one, right?

BRAD: Yeah, it’s the free one. It’s got a new, completely redesigned UI for the settings. I think it’s just way more clear how to configure that plugin. Before, it was just kind of a hodgepodge of settings.

PIPPIN: Nice.

BRAD: It’s a lot clearer.

PIPPIN: I’m looking at your screenshots now and they look really clean and nice.

BRAD: Yeah. Thanks, man.

PIPPIN: I’ll have to give that a look. I’m actually in the middle of doing some S3 work right now, so maybe I’ll go steal your code.

BRAD: Yeah. Do it. Do it, man. That’s what it’s for. It’s free, free open source. Yeah, probably the most proud thing of that UI, the thing I’m most proud of is the preview, the URL preview. As you change the settings, it changes this preview of what your URLs are going to look like, so you can kind of see in real time what they will be like.

PIPPIN: Yeah, that looks really, really nice. I’ll have to give this a go.

BRAD: Yeah.

PIPPIN: I’m not really happy with the S3 stuff that I’m kind of working on right now. It’s our EDD extension for it, and I really kind of want to change how it works.

BRAD: Yeah, yeah.

PIPPIN: I could use a little bit of that for inspiration.

BRAD: Cool, yeah. Yeah.

PIPPIN: What else do you got going on?

BRAD: Part of the pro version of that plugin is going to be an EDD add-on.

PIPPIN: Sweet!

BRAD: Just so that you don’t have to use a hodge-podge of plugins.

PIPPIN: I’m really excited for that. That would probably do wonderful things for us.

BRAD: Yeah, for sure. Another thing we worked on is we reorganized a repo, our Git repo for Migrate DB Pro.

PIPPIN: Nice.

BRAD: We brought all the add-ons into the same repo. Man, it just feels good. It just feels good to have —

PIPPIN: A lot easier for development tracking, I bet.

BRAD: It is. It is. There are little things that are not quite right, like when you create an issue: How do you flag it as, it’s for this add-on and not for the Core plug-in, right? But those really are minor.

PIPPIN: Those are pretty minor things, yeah.

BRAD: Yeah, we’re just using labels, GitHub labels and adding little tags to the title, and so it’s working out pretty awesome.

PIPPIN: That’s great.

BRAD: I’m pretty happy with it so far. Yeah, and then we’re just in the latter stages of testing a big release for the BD files and CLI add-ons.

PIPPIN: Excellent. Any rough timeframe for when those will be out?

BRAD: Probably in the next couple weeks. I usually give lots of buffer because it’s so hard with software, I find, to put numbers on things. As you know, they tend to slip.

PIPPIN: Yeah. Honestly, I think, if you actually hit a release date, probably the only reason you hit it was because you were done a month in advance and you were just sitting on it waiting to push it out.

BRAD: Yeah.

PIPPIN: But the likelihood of that happening is so slim.

BRAD: Yeah.

PIPPIN: I don’t know if I’ve ever hit an actual release date.

BRAD: No. I don’t even know how I used to do it with client projects. I guess we just used to probably cut corners. It’s probably what we did.

PIPPIN: Sure.

BRAD: Right? But with products, I’ve refused to do that – cut corners.

PIPPIN: I’d rather get it right than get it out than rush a release.

BRAD: Yeah, exactly. Yeah. Anyway, what are you up to, man?

PIPPIN: We just pushed out EDD 2.2.3, which was just a minor point release, but it actually contained quite a few little bugs because I think we had about 26 different issues that got corrected in it – just a little bit of extra stability. This was a really fun release for me because it was the first release that we’ve worked on where I had a co-lead developer. I think I mentioned in one of the last episodes that we’re getting ready to hire a new, full-time developer for EDD. Anyway, that happened on January 1, so Chris Klosowski, who used to work for GoDaddy, is now working with me on EDD full time as the co-lead developer. And so, 2.2.3 was mostly him just committing tons and tons of little fixes that have been sitting around for a while, which was a lot of fun.

BRAD: He’s just going through them like a machine, right?

PIPPIN: Yeah, he really was. It’s one of the first releases where, I’m involved with every release just as the lead developer on it, but it’s the first time that I’ve ever had somebody slaughter me in the total number of commits for a release. I think I had about 5 or 10 commits for that release, and Chris had about 65 or 70, and it was awesome. It was awesome to have someone else working on it so steadily and getting so many things fixed up, and so I’m really excited for the future of that as well.

BRAD: Not even close, that competition. That’s funny.

PIPPIN: Then the other big thing is, yesterday I pushed out a release for our PayPal payouts add-on for Affiliate WP, which allows you to process affiliate earnings via PayPal from your WordPress dashboard. We pushed out a release because we discovered this really annoying behavior with the PayPal API.

Kind of API 101 is that when you return a response code, that response code should be appropriate for the actual response. If you have to authenticate your request and the authentication fails, you return a proper response code. If everything is good, you return a 200 response code. It’s like API 101.

It turns out that PayPal will actually give you a 200 response code on about 50 or 60 actually invalid API requests, and so they have two layers of response codes. They have a response of 200 and an okay message that says this is great. But then they have another, like their own custom error code that they will return that says, “Oh, the authentication actually failed.”

And so we pushed out this bug fix because we would have false positives. We tried to process a payout, and it would say, “Everything is great. The payout was processed successfully,” because PayPal told us it was. But then there’s no money transferred. We discovered it’s because they have these extra error codes that they return even though they told you the API request was successful, which was pretty obnoxious, and it took us a little while to track it down.

BRAD: Yeah.

PIPPIN: FYI, if you’re building an API, don’t return a 200 response code if you have an error.

BRAD: Okay. So the HTTP header code was fine, but there’s a code in the response that indicates that there was an error?

PIPPIN: Even on an authentication, so when you pass in your API keys, your credentials, and your signature, they have one version of their error code that will actually return — is it 401 or 403 is unauthorized?

BRAD: Okay.

PIPPIN: Then a second version, which is also unauthorized, but returns a 200 response code, so you can’t reliably rely on the response code.

BRAD: Right, right.

PIPPIN: Which is awesome.

BRAD: Right, so they’re using two different sets of codes.

PIPPIN: Yep.

BRAD: Awesome.

PIPPIN: Yeah, it was super fun.

BRAD: Yeah. I have a question about your co-lead developer.

PIPPIN: Sure.

BRAD: When he’s powering through all those bugs, I’m going to guess that someone is not reviewing his work. He’s just committing.

PIPPIN: No, we’re reviewing all of them, so we’re doing peer review. For the last two years, two and a half years, of having EDD up and going, there’s been the basic process where all contributors will submit pull requests for changes. I will commit directly. Just as the lead developer, I would generally commit directly. We’ve changed it now since we now have two lead developers working on it where every single merge goes in as a pull request, and every single one gets peer reviewed. It may take a little bit longer to get in, but there are always two sets of eyes on every single change.

BRAD: Gotcha. And tested as well?

PIPPIN: And tested.

BRAD: Each time? Yeah.

PIPPIN: Uh-huh, so we’ve put in a rule that we don’t ever merge a pull request if a unit test is failing or until the unit test passes, just in general. And, so far, that’s been awesome. Along with all of the other things he did, I think he introduced about 30 new unit tests for 2.2.3, which is awesome.

BRAD: What about tested, like tested by someone else, like a peer review and peer tested?

PIPPIN: That’s part of the pull request review.

BRAD: Okay, cool.

PIPPIN: Yep.

BRAD: Nice.

PIPPIN: And so that’s worked really well.

BRAD: That’s the same process we use as well. Yeah, it does work well. Do you guys do a round of release testing before you push everything out as a release?

PIPPIN: Yes, so usually what we do is we take all of our changes. We merge them into a release branch, and then we’ll do testing on that branch. Then we’ll do one final merge into master right before release. Then we’ll test on that. I usually push the master branch up to one, two, or three of my live sites and let them run for a few days or a few weeks before a release.

BRAD: Right.

PIPPIN: Like with 2.2.3, we had it running on the EDD site for 48 hours before release.

BRAD: Right, yeah.

PIPPIN: It lets us test it live, and that way if we’re going to find a problem, we’re going to be one of the ones that are more likely to find it just because of how we use it. I would rather us fight a bug than have a user fight it.

BRAD: Yeah, yeah, it’s much easier.

PIPPIN: Yep.

BRAD: For sure.

PIPPIN: Patrick, you’re here, and you’ve been kind of in the background for the last 15 minutes. Why don’t you say hello, introduce yourself, tell us a little bit about what you do, and where you work?

PATRICK: Cool. Yeah, my name is Patrick. I am the WooCommerce product manager at WooThemes. You’re talking about doing these releases for EDD. I’d kind of be the guy that I plan the roadmap of WooCommerce, so I feel like WooCommerce is big enough that we have a dedicated person just to talk to customers and do customer research, and then to kind of translate that for the developers. That’s what I do in my day job.

PIPPIN: Product manager, does that involve both WooCommerce core and WooCommerce extensions?

PATRICK: Yeah. I view it as one product, basically. Obviously one is free, and the extensions you have to pay for. But it’s one product.

PIPPIN: It’s one ecosystem.

PATRICK: Exactly.

BRAD: Yeah, yeah. Yeah, we’ve gone so far as bringing out add-ons into the same repo, right?

PATRICK: Yeah.

BRAD: I definitely feel it’s one product, for sure.

PIPPIN: You’re really the interface, in a way, between what customers want and the developers. Is that kind of accurate?

PATRICK: Yeah. I think every product manager at every company is different.

PIPPIN: Sure.

PATRICK: In my company, that was the gap that needed filling, so that’s kind of what I do. I think, other product managers, maybe they do some marketing. Other guys will do UI and UX reviews and mockups. But, yeah, for me it’s mostly talking to customers and figuring out what they need.

PIPPIN: Very cool.

BRAD: Cool.

PIPPIN: How long have you been working as the product manager, because before that I believe you were a freelance developer, right?

PATRICK: Maybe like four months or something like that, so not too long.

PIPPIN: Okay.

PATRICK: (Indiscernible) …for about four months before that. Before that, I did WooCommerce support.

PIPPIN: Cool. You were in WooCommerce for support for what, maybe a year or so?

PATRICK: I think exactly a year.

BRAD: Okay.

PIPPIN: Awesome. When did you first get started in WooCommerce development?

PATRICK: I (indiscernible) … back when I lived in Green Bay, Wisconsin. We did some really awesome WooCommerce sites and really, really high-end stuff with lots of custom, you know, they want this here and this here, and change the checkout flow so it adds this extra thing here. We used WooCommerce for that, and it was great. It was one of those times where, like, WooCommerce is one of those plugins, and EDD is one of those plugins, where there’s just hooks everywhere and you can just do anything. I kind of fell in love with it back then. That was probably about a year before I joined the support team.

BRAD: Cool.

PIPPIN: Very cool. You were doing development work before then too, weren’t you?

PATRICK: Yep, yep, so when I was working —

PIPPIN: Go ahead.

PATRICK: Yeah, when I was working at the ad agency, I basically did all of their Web developments. I did mostly WordPress, but I also did some, like CodeIgniter and some other random Web stuff for them.

BRAD: As you do when you’re working at an agency.

PIPPIN: Yeah.

PATRICK: Mm-hmm.

PIPPIN: Is that ad agency what got you into development, or were you doing development work before you were working there?

PATRICK: No. Yeah, another job before that, and I was doing straight up PHP mySQL, custom PHP mySQL applications, which is the craziest thing, like we didn’t use any frameworks. We didn’t use CakePHP or CodeIgniter. We didn’t use anything. It was just straight up PHP mySQL, which (indiscernible) everything from scratch, which was great, but it also took a long time to build a login page.

BRAD: Right.

PIPPIN: Definitely. There are a lot of things that people kind of take for granted when you work within a framework of any kind.

BRAD: Yeah.

PATRICK: Oh, my God.

BRAD: And to build a login page that’s bug free, that’s the hard part. You can build one, and that takes long enough from scratch, but it’s probably going to have bugs. It’s probably not going to be very secure, right?

PATRICK: When I was working at that place, I built a time tracking app, and I did my very best to test it, and I never found a single bug, but I’m sure (indiscernible). One person did an entire time (indiscernible) and no one peer reviewed (indiscernible) all custom. There’s a bug in there somewhere, and I can’t — oh, my God. I don’t know how they’re going to find it and how hard it’s going to be to fix a year down the line.

BRAD: Yeah. No kidding. That’s why I think a lot of people are considering using WordPress as a framework, or at least that’s what I’ve been hearing people say, just for that reason, just so that they don’t have to deal with all the user management stuff because it’s a huge pain.

PATRICK: Yeah.

PIPPIN: Patrick, I want to hear some more about some of your WooCommerce work, as well as some of the roadmap stuff for the upcoming WooCommerce release 2.3. But before we do that, why don’t you tell us a little bit about what you do with Ninja Forms

PATRICK: Sure. I don’t know if you know this, Pippin, but I actually found Ninja Forms through you. I think you were reviewing Ninja Forms (indiscernible) and found this link, and found Ninja Forms. Believe it or not, at the time (indiscernible) 7, I’m ashamed to say.

PIPPIN: I did not know that. That’s awesome.

PATRICK: I found Ninja Forms, I loved it, and I tried to get my agency to build some extensions in Ninja Forms, but they didn’t understand, so I just (indiscernible). I think I have nine Ninja Forms extensions now on there, on the marketplace, for lack of a better word.

PIPPIN: That’s excellent. That’s all on the side, right? That’s not in any way related to — you own those and now WooThemes, right?

PATRICK: Correct. I own all those. Through that relationship, I think I suggested — yeah, somehow WooThemes wanted to build a Ninja Forms add-on for WooCommerce, and then I was the logical guy. I connected them, and I built the extension myself since I have built for both systems. That was pretty cool.

PIPPIN: Can you tell me a little bit more about what the extension that connects WooCommerce to Ninja Forms does?

PATRICK: Sure. I’m sure you have customers that want really custom products, maybe like a product builder or something that takes a lot of different pieces. This plugin is really good for that, so I’ll take a Ninja Form and put it on the product page. Then people can use all the Ninja Form fields to customize their product. The cool thing is that it uses all of the magic that’s in Ninja Forms, so stuff like conditions. When they select this field, then give them two more fields that show up for them to fill in. Then you can add all that to the cart. It comes through as a regular product in the backend.

PIPPIN: Does that let you adjust the prices based on the options they choose too?

PATRICK: Yep, yep, definitely. You can say this thing is worth — this option is worth three, and all the others in this dropdown are worth four. Then when you have this thing down here, double the price.

PIPPIN: That’s really cool. Does all of the information inputted in that field then get added to the order meta so that the store admins can see it?

PATRICK: Mm-hmm, yep, so I don’t think it does it on a per — it does do it on a per sort of field basis. It’ll say this field costs $9, this is $8, this is $5, so all of that together is [$22].

PIPPIN: Sure.

PATRICK: Yeah.

PIPPIN: I was thinking of an example where someone might use that would be if you had custom projects or you sold some sort of product that you could have people add signatures or engravings and things like that too. You could add all of those options where they choose from and then, after they submit the order, the store admins can see what they chose to know how to configure the final product.

PATRICK: Exactly. Yeah, in the back you can see all the things they selected. Yep.

PIPPIN: That’s really cool. Again, I can imagine that there’s one of those for Gravity Forms in WooCommerce too, isn’t there?

PATRICK: Yep. Yeah, so there’s one for Gravity Forms. I built the Ninja Forms one, but I really like that one. I really like the Ninja Forms one better because I think one of the things we learned with Gravity Forms is there are ten different checkboxes, like hide labels and click here, then the price is refreshed with ajax or something. There are all these options for Gravity Forms. For Ninja Forms, there are no options. It’s: Add a form to this page. Which form do you want to select? Save.

PIPPIN: Nice. I always love it when you can build something that doesn’t have options, but is really powerful.

PATRICK: Absolutely.

PIPPIN: I’m still intrigued by this extension. Where is the overlap between product variations and adding a Ninja Form to it? I may not be familiar enough with product variations, but can’t you add a lot of that option meta to variations as well?

PATRICK: Yeah, so with regular product variations, that’s really good for when you’re selling a T-shirt that comes in three different colors and four different sizes. Then with variations, you can kind of say they’re all $10 or all the smalls are $8 and all the mediums are $9. What you can’t really get though is when someone selects this field and it’s red, add $3 to the price, and when someone selects this field, add $4 to the price. When they select this, subtract $5 from the price. You can’t quite get that with product variations.

PIPPIN: Got it. It makes sense.

PATRICK: Yeah.

PIPPIN: That’s very, very cool.

BRAD: Cool. Should we move on to the big ticket item, WooCommerce 2.3?

PIPPIN: Yeah. Patrick, how long has 2.3 been in development?

PATRICK: A couple months. I’d say four or five months.

PIPPIN: Okay.

BRAD: Wow.

PIPPIN: What are some of the major points for this?

PATRICK: We always codename our releases, so this is 2.3 Handsome Hippo.

PIPPIN: Nice.

PATRICK: Handsome Hippo because it’s basically a UI refresh. I don’t know if you do this, but we’ve kind of, for the last two releases when people have UI suggestions that would require some architecture changes more than just a simple add a drop shadow, we kind of pushed them to this release. We’ve had a couple releases worth of UI changes that we’ve just been pushing back and pushing back. Then we were able to make all of the UI changes in this one big release. I think that’s good because some changes, of course, affect multiple areas.

PIPPIN: Is this for the more flat UI…?

PATRICK: Yep. Yep, so it’s more flat, but it’s more than just changing the buttons from round to flat. It was we also changed some of our templates. Do you use templates in EDD?

PIPPIN: We do. Not as many because we don’t have nearly as much front-end display stuff, but we do have them.

PATRICK: But I’m sure you know, like, you don’t change a template unless absolutely necessary.

PIPPIN: Right.

PATRICK: Hopefully you can do it in such a way that if someone has an old template, it doesn’t explode their site when they upload to the new version. We’re very careful when you should change templates.

BRAD: Yeah. I like the way that WooCommerce versions the templates at least so that if you’ve overridden a template and the version number in yours is older than the version in the core, it basically tells you. It says you’ve got a template that needs to be updated.

PIPPIN: Oh, I didn’t know that.

BRAD: Yeah.

PIPPIN: That is very nice.

BRAD: It’s pretty neat.

PATRICK: Yep, yep, and that has come from pain points. That was probably contributed by someone in the support team who said, “Oh, my God. I am so sick of people having outdated templates. I am going to write something in the system styles.”

BRAD: Sure.

PIPPIN: We see that with EDD, for sure. Our main template file that gets modified is the checkout screen for mostly the shopping cart. When that template file was still pretty fresh, after the first couple releases after it went in, we had a lot of people modifying it. Then, because it was so fresh, we had changes that went into it, and we had a few sites that didn’t necessarily break, but they didn’t see a new feature or something like that because they had a new template file. I really like that idea of versioning them and showing a message. I might have to steal that.

PATRICK: Totally. It’ll help you. It’ll help your support team for sure.

PIPPIN: Yeah, that’s great. Are there any expected places where you think there will be break points? Obviously with something that’s as large as WooCommerce with so many millions of sites that there’s going to be something that breaks somewhere. Is there an anticipation for what those points will be or the most likely pain points?

PATRICK: In the past, the most likely pain points have been third party themes, whether they be on WordPress.org or on a marketplace or on someone’s own site that they’re selling. Third party themes that are bundling our templates and selling them to other people because then they usually bundle old templates, and they don’t update them more than once a year. That’s probably where people are going to have the biggest problem.

What I actually did with this release is I looked through our support system and figured we can parse our system status through our ticketing system and figure out how many people are using each theme. I looked at the top ten themes and reached out to every single one of them and said, “Yo. Yo, dog, we’re changing our templates. Please make sure you update them and send out a release before we release 2.3.”

PIPPIN: That’s smart.

BRAD: Cool.

PATRICK: I hope they listen. I don’t know how many will, but I sent out a whole bunch of emails about that.

PIPPIN: Anyone who is seriously selling a theme, if they don’t listen, they would be a fool to not.

PATRICK: Right, right.

PIPPIN: Anybody who is not really seriously selling a theme that doesn’t have nearly as many users won’t be as much of an issue.

PATRICK: Mm-hmm.

PIPPIN: There is another change that I wanted to ask you about and see any feedback you have on this. The main reason I’m interested in this is because, actually, we made the exact same decision in EDD about six months ago. That’s the changes you guys are making to the coupon system.

PATRICK: Ah, yep.

PIPPIN: The big one that I’m referring to is taxes.

PATRICK: Mm-hmm.

PIPPIN: The discounts before taxes versus after taxes.

PATRICK: Mm-hmm.

PIPPIN: What can you tell me about that?

PATRICK: Yeah, so we actually made a whole post about that on our develop blog.

PIPPIN: That’s how I knew you guys were making it. I hadn’t seen it until then.

PATRICK: We do that just to explain things, and so when people send us in tickets about things, we’re like here’s why we do it.

PIPPIN: Yep.

PATRICK: Yeah, it’s really hard when you’re a developer and someone tells you this is how taxes work in your country. You go, “Okay, cool. I’ll have an apply coupon before tax option.”

PIPPIN: Right.

PATRICK: Then there’s just random people talking to you on GitHub, so we eventually talk to legal experts and figured out that, oh, maybe this applying a tax before the coupon discount doesn’t make sense. Yeah, we’re talking that out.

PIPPIN: Yeah, we had the exact same thing where there was a checkbox that says, “Would you like taxes to be applied before or after discount codes?” Man, that was, I think, the biggest pain point that we had ever had in taxes and discounts because it complicated so many things, especially when you start getting into the idea of products that are inclusive or exclusive of tax.

I was really glad to see that option come out, for one, because it helped to validate our decision to take it out and, two, because we also just ran into a big bug with that in Affiliate WP. We discovered that affiliate coupons where, if you have a coupon that’s connected to an affiliate account, any time that coupon is used it rewards a referral to the affiliate. It turns out that they don’t work at all if taxes are applied before discounts, which we didn’t know. You guys actually have fixed a bug for us without we doing anything, which is kind of nice.

PATRICK: All right!

PIPPIN: We were able to just tell people, “Look, it’s going away. Sorry. Don’t use that option.”

PATRICK: Awesome. Glad to hear it.

PIPPIN: It made me happy.

PATRICK: God, yeah. Taxes. I don’t know if I can go into rant mode, but taxes in e-commerce, that is the worst part of e-commerce is just figuring out —

PIPPIN: The worst by far.

PATRICK: Figuring out taxes. Then when someone from, like, Germany messages you on GitHub or leaves you a message on GitHub and says, “This is how it works in Germany,” and you don’t know.

PIPPIN: Yeah. International tax laws are difficult as a whole. German tax laws are about 100 times harder.

BRAD: Is that right? Huh.

PIPPIN: They’re obscene. We’ve had so many issues from German users that just say, “This is a law here. It has to be this way in order for my site to be legal.” Sometimes we just want to say, “Well, sorry. We don’t know what German laws are. What do you want us to do?”

Sometimes we can fix it. Sometimes we can’t. But some of them are pretty crazy, like requirements to show amounts at the top and bottom, requirements to show the cart items on a separate page before you ever get to the checkout page, requirements to show the items that are in the cart both at the top and the bottom of the checkout screen. There are a bunch of them, and that’s only just some of the top few.

We got really lucky because the developer that wrote a VAT add-on for us just happens to be in Germany, and so he just handles all of it, which is kind of nice. If he runs into an issue, like the core API doesn’t support making some adjustment, he tells us and we make it, but we don’t have to worry about it nearly as much now.

BRAD: Wow.

PIPPIN: Yeah. German tax laws are painful.

PATRICK: Mm-hmm.

BRAD: I’ve gotten requests from German customers about our invoices not being good enough.

PIPPIN: We get that all the time.

BRAD: Yeah, so I had to implement some, add some extra information to our invoices and stuff.

PIPPIN: Yeah. We actually have an extension that got released a month or so ago, actually from WPBeginner and Syed and OptinMonster and all the guys behind those projects. It’s specifically designed to allow the customer to go generate their own invoice and to update it with their own customer meta, anything like their VAT numbers or their company names, and they can do it any time they want, as often as they want.

BRAD: Just give them a blank — just give them a Google doc.

PIPPIN: Just so that we don’t have to handle it.

BRAD: They could just write their own.

PIPPIN: Yeah. Basically give them a blank invoice that has the amount and the products they purchased, and everything else they get to input.

[Laughter]

PIPPIN: It’s kind of nice.

BRAD: Nice. That’s hilarious.

PIPPIN: Yeah. I have gotten that request. That happens in Restrict Content Pro as well where someone says, “I need to add this little piece of metadata.”

I go in and look at them like, “There’s nowhere for me to put this metadata. Can I drop it on your company name? Does that work?”

They’re like, “Sure. It’ll work.”

BRAD: Nice.

PIPPIN: Yeah, taxes are painful. About every month, sometimes, like almost every month we’ll have some bug or change … taxes. Every time, one of our developers jokes, “You know, we should have just never put taxes in. Our user base would be about 100 times smaller, but our lives would be so much easier.” Or, “If we just said we’re not putting taxes in, but we’ll build a tax cloud add-on. And we’re just going to offload all taxes to third parties. Our lives would be so much easier.”

PATRICK: I would think about it, Pippin. If I had to sell stuff on my site, I would think about it, just offloading all taxes no matter what.

PIPPIN: Yep. We’ve seriously considered it quite a few times.

BRAD: For WooCommerce, are you guys using geo location to deal with the EU VAT stuff?

PATRICK: That has something to do with, yeah, the new EU VAT laws. It was a last minute decision to add it in there, but it does help with getting someone’s — boy, it’ll get their IP, and it’ll show them the correct taxes without them having to be in the checkout screen. I think it’ll show them on the cart page.

BRAD: I see.

PIPPIN: Wow, that’s pretty clever.

BRAD: Yeah, and then it’ll default country selection as well? It’ll do that kind of thing?

PATRICK: It’ll probably do that. This was literally added just a few days ago, so I actually haven’t tried it since then.

BRAD: Okay.

PATRICK: It should help. One of the parts that’s so tricky with this new EU VAT stuff is showing people the correct taxes all the time based on where they are.

PIPPIN: Right.

PATRICK: Which, of course, you don’t usually know until the checkout page.

PIPPIN: Right.

BRAD: Right, and you have to show them with the new rules? You have to show them the tax?

PIPPIN: Technically, if you want to be 100% compliant, yes.

PATRICK: I think different countries are different. I think, in the UK, you’re always supposed to show it with VAT included. In Germany, you have to show it with maybe VAT included, but you also have to show what percentage of the total is the VAT. It’s unbelievably complex, and I only know just a fragment of it.

PIPPIN: All of the VAT stuff is pretty painful. We’ve had to face quite a bit of it too. It’s really, really obnoxious.

PATRICK: I’m so thankful that we created or that we — it looks like you guys did too — created a Taximo integration.

PIPPIN: Yeah.

PATRICK: I think that’s the best thing for anyone who wants to sell digital goods to Europe is just to install that. You don’t have to worry about having —

PIPPIN: Just be done.

PATRICK: Yep, just install it; be done.

PIPPIN: Yep. Yep, we had one. There’s one for Restrict Content Pro that’s getting finished up as well. I actually was not really involved with writing either of them. I had just kind of talked with the people that were building them to get them built, helped facilitate some of the development of it, and I’m just really glad we’re there. For one, because aside from my own sites, if I want to be compliant with VAT, when we have a customer that says, “Hey, this is what I’m dealing with,” all we have to do is point them to Taximo and be like, “Look. This will take care of everything for you. You’re done.”

PATRICK: Yep, so nice.

PIPPIN: So, so nice. We’ve got a little bit more time left. What is next for you in your WooCommerce work or anything else, anything else related to your WordPress work?

PATRICK: Okay. I think I’ve got two things I want to talk about. One, I’m writing a WooCommerce book, which is really exciting, but I had no idea how draining writing a book would be, and writing a book on a schedule. I’m sure you guys have had that thing where you try to write a blog post every week. The first two or three weeks, it’s easy. Then you start — it’s like that.

PIPPIN: Yep.

BRAD: Yeah.

PATRICK: It is totally draining, and I’ve got two chapters left, so that’s about two weeks, and then I’m going to be done.

PIPPIN: What’s the focus? Obviously the focus is WooCommerce, but is it a developer’s book? Is it a user’s book? Who is the target audience for it?

PATRICK: That’s a good question. The way it’s formatted, it actually works really well for both, so there are ten chapters and, in each chapter, there’s ten how to do this. I’d say the first seven are really easy and usually installing plug-ins and clicking settings. The last three usually dip into code and how to customize this and customize this, use hooks here, and do all that. Regular users can read through the first, I’d say, seven or eight in every chapter, and then developers can take it a step further with the last couple ones.

PIPPIN: That’s awesome.

BRAD: Is this going to be something you’re going to sell, or you’re just going to give it away? What’s the plan?

PATRICK: Have you guys read Authority by Nathan Barry?

PIPPIN: I’ve heard of it. I have not read it.

BRAD: The same.

PATRICK: First of all, definitely go read it. It’s awesome. He totally convinced me to self-publish, and then I realized how much work it was. I was losing motivation, and then a publisher reached out to me through some other WooCommerce people, and they recommended me to this publisher.

PIPPIN: Nice.

PATRICK: When the publisher knocked on my door, I’m like, “Okay. This seems easier,” because they have a format. They’ll do all the marketing. They’ll put it on Amazon. They’ll put it on their own site, that type of stuff.

BRAD: Cool.

PIPPIN: This is going to be just an e-book, right, or are you also doing a physical version?

PATRICK: Yeah, there’s a physical version.

PIPPIN: Awesome.

PATRICK: I don’t know. I would be really, really, really happy if it was in my local Barnes & Noble. I don’t think so. I don’t think there are that many of those books out there, but maybe I’ll request it at Barnes & Noble will get it. Then I’ll just leave it on the shelves there.

PIPPIN: That would be very cool. Have you done a lot of writing before, or is this really a whole new area for you?

PATRICK: No, I have no idea what I’m doing.

PIPPIN: Awesome.

PATRICK: I’ve been blogging.

PIPPIN: (Indiscernible) immediately over their head, but keep going through.

BRAD: I read a book about writing, and now —

PIPPIN: I thought I would try it. Great.

PATRICK: That is how I deal with life is, if you want to learn to swim, you jump in the deep end, and you struggle for like the first few minutes. You’re like, “Oh, my God. I’m going to drown.” Then usually you figure it out. As long as it’s not lethal, you’re good.

PIPPIN: That’s exactly how I do things. I love it.

BRAD: Yeah.

PATRICK: It’s a great way to learn.

PIPPIN: Trial by fire.

PATRICK: Very much. The other —

PIPPIN: Yeah, what’s next?

PATRICK: The other thing is, I’m really excited. Since I’ve been in this role, we’re still kind of catching up with projects that had been started before I took on this role, and so we’re just now getting into the beginning of 2015 projects that I had started when I took the role. Stuff like I planned out a Square integration, and I’m just really excited that people who use Square just for conferences can now do cool stuff like sync inventory between their Square store and their WooCommerce store. I love little things like that, and it should be one of those extensions where you set it up. You say, “Synch products both ways,” and then it just does it.

PIPPIN: Yep

BRAD: Yeah, for sure.

PIPPIN: That’s excellent. Does that also integrate? I’ve never looked at the Square API or how it works, but does that integrate with the Square marketplace, or is it just for their POS system?

PATRICK: What do you mean by the Square marketplace? What do you mean?

PIPPIN: Is it marketplace.square? Let me see. Let me find this real quick. They actually have an online catalog of merchants that are selling with Square.

PATRICK: Mm-hmm.

PIPPIN: But I’m not sure if every Square merchant is automatically part of it. Yeah, it’s called SquareUp.com/market.

PATRICK: Yeah, I’m looking at it. I didn’t see anything in their API about this, and no one requested it, so I don’t know. I’ll have to look into this more. It looks like it’s random products from various stores, which is kind of cool.

PIPPIN: It does. I bought something from it once, and it was a pretty cool experience. It works really well, but I had no idea how to get stuff on here, so this is the first time. I think you’re the first person I’ve ever talked to that’s worked with the Square API.

PATRICK: Mm-hmm.

BRAD: Oh, man. I love Square.

PIPPIN: Square is awesome.

BRAD: I want to start selling beer cozies at the farmer’s market or something.

PIPPIN: Both of my sisters are artists, and they go to art shows every now and then, and they both use Square to sell their stuff. My mom does too, and it’s awesome. I have a square reader. I have just the little swiper, but I think someone in my family has the actual cash register thing. It’s just so cool.

BRAD: Yeah.

PATRICK: Yeah, it is really cool. I love —

PIPPIN: I just want to sell stuff to people and swipe it.

BRAD: Yeah.

PATRICK: I just love seeing it, like at coffee shops. I don’t know. I just know they’re using a system that’s lean and mean and not some really crappy, old POS system.

PIPPIN: Yeah. My local coffee shop here uses a system called ShopKeep. Every time I go in there, I always want to just, like, “Why didn’t you use Square? Why didn’t you use Square? Do you guys know about Square? It’s really cool. It works way better than yours does. Yours goes down, like, every day. You should use Square.”

BRAD: Yeah. It’s funny that you just said crappy POS system. POS also stands for —

PIPPIN: It’s a very appropriately named system.

PATRICK: It is. It is.

BRAD: Yeah, nice. Should we wrap it up, Pippin?

PIPPIN: That’s very cool. Keep us updated, Patrick, on the release of your e-book and if that ends up hitting stores. I’ll be very interested to check that out.

PATRICK: Cool. Will do.

PIPPIN: Why don’t you tell everybody where they could find you, the best way to get in touch?

PATRICK: If you just want to chat about WooCommerce, the best place is probably on Twitter. I’m just @BFTrick on Twitter. That’s a long story why I have that handle. Then I have a million WooCommerce tutorials on my blog, on my programming blog, which is SpeakinginBytes.com. That’s another long story why I have that URL.

PIPPIN: Nice. Awesome.

PATRICK: Yeah.

PIPPIN: I’ll give a quick shout out to Patrick. I’ve had the opportunity to work with him several times. Great guy. Top-notch developer. If you’re looking for a developer or just want to talk to someone, go hit up Patrick. We’ll be seeing you next week at PressNomics.

BRAD: Yeah.

PATRICK: Looking forward to it.

PIPPIN: Anybody who is listening is also going to be at PressNomics, say hi. We’ll all be there.

BRAD: Yep. Don’t be shy.

PIPPIN: Thanks for coming on, Patrick.

PATRICK: Thanks for having me, guys.

PIPPIN: All right, adios.

BRAD: Thanks, Patrick.

PATRICK: All right, bye.