While at WordCamp San Francisco this weekend I had the opportunity to sit down with the Operations Manager for ServerPress, the group behind the popular DesktopServer application that helps you quickly setup and manage your local development environments (amongst other amazing features). The first thing I wanted to do was have a ‘Trunk’ install of WordPress so I could get the nightly releases.

This didn’t seem obvious at first, and there was a guide listed on the ServerPress documentation, but it was somewhat difficult to follow, so I figured I’d lay it out here, step by step.

We’re going to use the Blueprints feature here, as well as some command line so bear with me.
Read Full Article

It’s the hot topic all developers talk about. Their tool sets…and why their toolset is better than yours. Why [insert IDE here] is better than [insert another IDE here], and why you need an IDE over a simple extensible text editor. What debugging methods you use, somehow, means you are either a hack or a professional. You can try and deny it, it happens whenever two or more developers get within an earshot of each other. Heck, we’ll even jump into a conversation (sometimes leaving the one we’re in), because we overheard “how much better” something is.

Guess what?

We are ALL wrong

Read Full Article

Back in June, I was informed I was part of a social experiment. Topher DeRosia of X-Team sent me a tweet, that simply stated:

I was very intrigued by this, and when I questioned it, he said I was the only one in it. This lead to more intrigue. Over the next few months, Topher and I had many conversations on Twitter, surrounding WordPress, Geek Culture, and just downright fun topics. He’s an organizer of WordCamp Grand Rapids, which I just wrapped up speaking at. During foundation day we ended up at lunch together, sitting directly across from each other. It wasn’t until that day, on August 15th, nearly 6 weeks later, he told me what “experiment” I was a part of.
Read Full Article

I’ve previously written a few posts about using WordPress Actions and Filters to better extend your plugins and/or themes. This time though, I want to talk about leading by example, and using your own hooks and filters to add functionality. What does this mean? It means where a hook or filter exists, you should use it to add your built in functionality. It’s probably easiest to explain by example…so here is a recent issue I ran into. I wanted the ability to create an arbitrary number of ‘tab’ sections in a plugin settings page I was building. Something like this:
Read Full Article

The other day I got an interesting support thread for Easy Digital Downloads, asking for the list of files, and their sizes be displayed when viewing a product. Being that I only use it to sell WordPress plugins, it seemed pretty minor, but if you were dealing with larger Audio/Video files, or your consumers used their mobile devices frequently, I could see how this would be useful. So I put together a quick, single file, plugin that is now available in the EDD Library Repo on Github.

First, here’s the primary function that is run:
Read Full Article

Recently I was working on a ratings website, and needed a quick way to consistently generate the current star ratings of the items. Many of you are familiar with the ‘dashicons’ font that is shipped with WordPress, but if you aren’t, it’s a simple icon-font available to theme and plugin developers. You’re probably more familiar with it than you think, it’s used to add icons to the WordPress admin dashboard menu: Read Full Article

It’s tossed around on resumés, touted as why someone should be paid more, and used to taunt our prowess in the ever so changing world of software development. People with 18 years of JavaScript (but it was Mocha back then) experience, people who remember writing COBOL, and those who hang on to assembly as their crowning jewel of achievement in their development toolbox. Don’t get me wrong, all these languages and accolades hold their place in something each person should be proud of. If these people are still software developers though, the one thing they should be touting is, their ability to adapt.

Over time the languages, theories, practices, and tools of the software development trade change. One thing, however, remains the same: Change, and your ability to accept it. If you don’t, you become irrelevant and loose value. I was recently reminded of this by someone with FAR more development experience than I. Someone who can even add sections of the Windows 8 experience to his list of achievements. Even if you don’t like Windows 8 from a functional aspect, you can respect the level of software development it takes to write an operating system. The point is, unless you shift your point of view to see the larger picture, instead of your local problems, you’ll quickly loose ground in your career.
Read Full Article

Ask most sales/marketing people and they’ll tell you, pitches are a numbers game. The more people you offer to, the more sales you’ll get. They aren’t wrong, it’s a statistical fact. If you ask more people, you’ll eventually get more sales. Let me be the first to say, I hate this strategy. It’s inefficient.

I’m not your target audience

The other day I was walking through a supermarket to grab one thing, and one thing only. I knew where it was, took the most direct route, and still got caught by a pitch. DirecTV happened to be there trying to sign people up. Now, some of you might know, my family has been without Cable (or Satellite) for almost a year and a half now. The conversation went something like this: Read Full Article

So .club domains released today, and I decided to grab edd.club to help quickly showcase some of the top contributors on Easy Digital Downloads. Not sure where else I’ll go with it, but we’ll see.

Well that was embarrassing! Day 1 of a plugin release. One of my first customers. Boom, Fatal Error. (╯°□°)╯︵ ┻━┻

In short, it was a simple mistake on my part, by using a function in PHP that wasn’t supported by versions of PHP lower the 5.3. Now, some of your purist developers and site owners might think “Well, that’s their fault for not having a modern version of PHP”. Let me remind you, WordPress still requires PHP 5.2.4 or greater. I write WordPress plugins, therefore I must support PHP 5.2.4 or greater. I’ll take full responsibility for that.

Read Full Article

You can’t be a good software developer without reading. That’s just a straight up fact. Whether it’s blog posts, documentation, or good ole’ fashioned books, you have to keep educating yourself. The most common question I get from newer developers is “Do you have any good books you recommend?”

This is a pretty difficult topic as each person learns differently, and frankly, most don’t learn from books easily. There is a plethora of writing styles and book formats for software development, but here you go, some books I recommend anyone getting into software development should read.
Read Full Article

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