All Posts

It’s no secret I’m a fan of Easy Digital Downloads as I’m a contributor and support technician for the project. I’m also a HUGE fan of the Software Licensing Extension that Pippin built for it. While it’s a verify flexible extension, the vast majority of people use it to sell WordPress Plugins and Themes, as it enables users to update the items from within their WordPress admin. I needed to take it a bit further though.

I’ve been working on a project to help ease the promoting of WordPress content on Twitter. During the development of this project I found it necessary for the plugin to periodically “call home” (once a week in this case) to postpromoterpro.com to get updated social media tokens and data necessary for proper functionality.

The key here though, was I didn’t want just anybody to be able to access my API. I wanted any customer with a valid or expired license key to be able to retrieve this data. In your case, you may just want valid, but in my case I found it beneficial to the users to allow this to work after expiration, they just won’t get updates to the plugin itself. So here’s what I did.
Read Full Article

The work you do while you procrastinate is probably the work you should be doing for the rest of your life.

- Jessica Hische (letterer, illustrator, and type designer)

In my last 4 years as a software developer for GoDaddy, I’ve had the chance to work on one of the largest scale WordPress sites that I’ve ever worked with. Both on a traffic and complexity scale. I’d share numbers but I’m not sure if that’s allowed at this point in time. I’m sure there are larger sites out there, but this was my largest. There were many custom plugins, frameworks, integrations, and modifications that we implemented in order to make WordPress work the way the stakeholder’s wanted. When I joined the team it was a codebase with a large number of core hacks and ‘bolted on’ parts. This wasn’t due to bad developers, just a result of not having WordPress developers. It worked for what was needed and got the job done. When I joined the team, throughout the four years of working on it, we were able to reduce that to 2 core hacks and a LARGE number of plugins and theme features. Due to the improvements my team and I made over the years, we were able to reduce the hardware requirements in half and increase performance to the point that our Database engineers said there were significant drops in load.
Read Full Article

Although widely used for piracy, Torrents have their place in the legit world too. I use them quite often to download larger Linux distributions as well as other large open source projects. Sometimes these will take an hour or two to complete…but I want to know when it’s done without leaving the sound on my desktop turned up to 11 (or 12, or 30). So I set out to use some Bash scripts, daemons, and Pushover to complete this task.
Read Full Article

The Problem

Recently, I was working on a support thread where the user was attempting to override the default functionality of Easy Digital Downloads by using the remove_action() function. This was being done in a custom plugin. This function allows you to negate any add_action() created by another plugin, theme, or WordPress core. Their code, at a basic level, looked like this:
Read Full Article

No matter how many personal projects, open-source projects, or GitHub repos you’ve submitted changes to…nothing can prepare you for the arduous process that enterprise level software development can be. I moved from the ‘DIY’ development realm into an enterprise level position almost 4 years ago now, and while I’ve found many things that just frustrate me to no end, there are a few things that I’ve taken into practice in my own personal projects that make my life easier. These are lessons from the trenches of enterprise software development, and I hope you find them useful.
Read Full Article

Anyone who tells you doing customer support is easy, is either lying, naive, or insane…or some combination of all three. It’s a hard role that will try your patience on a daily (sometimes hourly) basis.

How do I know? I did it for 2.5 years. My experiences ranged from being the person you talked to when you wanted to buy a domain, all the way up to tracking and identifying trending issues to either get the operations center and developers out of bed at 1am, or provide detailed steps to reproduce a bug identified by our customers. I preferred the latter of those two. Developers are grumpy at 1am.

That was almost 4 years ago now.
Read Full Article

So this morning I was updating my local development environment and getting the latest code from the upstream repo of a project I have forked on GitHub. For some clarity, my method of forking is done as suggested by GitHub themselves.

The project I’m working on has recently split a new branch for an upcoming 2.0 version, while nightly work is done on master and will likely be released as something like 1.9.5. I have been taking care of some tickets on a branch named release/2.0 but this morning was going to check something out in master.
Read Full Article

Over this past weekend at WordCamp Phoenix, I had the pleasure of sitting down with the 3/4 of the Easy Digital Downloads core development team. Pippin, Dan, and Chris traveled from their respective hometowns to attend a WordCamp in my backyard. This was the first time I’d had a chance to meet Dan and Chris in person, although we’ve gone back and forth on many of GitHub issues.

Which brings me to the point of writing this. At one point I believe Chris had stumbled upon a bit of code he wanted to commit, and when asked what ‘issue’ it was related to, we all had a small discussion on commits and how they should always be tied to an issue (or ticket, project, etc). I use the word ‘issue’ as that’s the way GitHub tracks a project’s bugs, enhancements, discussions, etc.
Read Full Article