An Interview With Tom McFarlin

Tom McFarlin – the perfectionist on Pressware, Boilerplate and everything else.
A popular hangout for hardcore WordPress development posts is Tom McFarlin’s personal blog – tommcfarlin.com. You will mostly find Tom coding, writing, speaking and blogging about WordPress. He also offers development and customization services through Pressware – an LLC that he founded during his college days.
Happy to present Tom McFarlin today. He talks about his projects (including the epic BOILERPLATE project at wppb.io) and shares lots of insights and resources for getting WordPress development right.
Tom McFarlin on WordPress and his personal blog
You come across as a WordPress Application evangelist – How long do you think it will be before applications sound as natural as themes and plugins within the WordPress community?Any particularly interesting WordPress-based apps that you’ve come across ( or developed )?
I think that we’re still years away from people using WordPress as a foundation for web applications. I think there are a number of reasons for this the least of which is not the fact that WordPress, unlike frameworks such as Rails, Yii, and so on, is already an application in and of itself.
It’s an extensible application. This means that it can serve it’s purpose as a content management system, or it can be extended to do much more.
Until more people are using it as a foundation for applications and see what its API makes possible, the further we are from having it treated as a real contender for a application foundation.
tommcfarlin.com – Your personal blog is using – a theme that you coded. Did you code it out of personal need or what’s the story behind Mayer?
The story behind it is two fold: I wanted to create a theme for myself that was built from the ground up, and I wanted to sell a theme in WordPress.com. There’s not much more to it than that. It’s built out of a felt need that I have had and figured that perhaps others would like it, as well.
At this point, Mayer is about a year old and my blog has grown and changed a bit so I’m actually in the process of working on a new theme – yet to be named – that I’ll likely end up using as a replacement for Mayer. It’s also being built out of having a need to have a solid foundation for contract work, so there’s another dimension to it, as well.
What do you think about drag and drop themes like Divi. Any word of advice for Divi developers?
As far as drag and drop themes are concerned, it doesn’t make much of a difference to me. People are going to create them and people are going to buy them and that’s great. You’ll never get the flexibility out of a builder that you do from someone working on something that’s handcrafted, but I don’t think people really expect that either.
As far as drag and drop themes are concerned – and this includes Divi – I think that creating the interface such that it feels like a natural extension of WordPress and that it’s very intuitive as to *what* you’re actually building. People should be able to conceptually “get” what the page will look like from the drag and drop interface; otherwise, it’s not doing it’s job and a true drag and drop solution.
As far as advice is concerned for Divi developers, I’d say that everything above applies to them and anything that’s relevant to typical theme development matters: Have a solid process, follow the coding standards, document your code, test your code until you’re sick of it (both with unit test data and on multiple devices), and offer it up for others to tweak and critique.
Tom on Pressware
How were your initial days as a freelance developer? How did Pressware happen?
Pressware is basically an incarnation of an LLC that I’ve had since I was in college.
When I was in school, I was doing small contract jobs here and there and was invoicing the work out of an LLC. Throughout the years, I continued to do work on the side – still while working a 9-to-5 – but eventually began to slow it down when life began to get busier.
Once I decided to jump ship from my corporate job, I was combining my time with the LLC and with one other WordPress-based company some friends and I were building at the time. Once we opted to shut that operation down, I rebranded the LLC and decided to focus exclusively on WordPress-based projects (whereas before, I was a little of Rails, a little vanilla PHP, normal web stuff, some WordPress, and so on).
Thus, the idea for WordPress-based software yielded the name Pressware.
You create custom products and offer customization services through Pressware. Tell us a little about your most challenging project.
It’s hard to say, really. Maybe that sounds like a cliche but the truth of the matter is that I really enjoy the majority of the work that I do and each one presents its own challenges with it. Sometimes the challenges result in stressful situations, sometimes it’s just the nature of having to figure out a problem and enjoying all of the learning that comes with it.
Take for example right now: I’m working on a project where users of one role type get to edit data for a custom post type in the dashboard, but users of another role type are able to edit the same data but using a more limited set of information on the front-end. On top of that, there’s this mapping component to it where all of these addresses that are placed into the app are then pumped into Google Maps which then, in turn, requires the JavaScript API in order to tailor the display to fit the needs of the project.
It’s not as complicated as, say, some of the more advanced WP_Query work that I’ve had to do in the past (where performance matters because page load time matters), but it’s complicated in that there are a number of moving parts talking to the database and to third-party services at once to create this entire cohesive experience.
You’ve shared how Stephen joined your crew. How did you get Nathaniel onboard? Does a team of just 3 people suffice for all the work that you seem to be taking on?
Nathaniel came on during a period of time where I had an overflow of contract work that I wasn’t able to really get done in a reasonable amount of time. Once I hit that point, I knew I needed to find another developer who was interested in WordPress, was self-motivated, and would be able to help with the work load.
I met Nathaniel via Twitter and then in person at WordCamp Atlanta a few years ago and kind of tracked with him over the next year or so. When the time came for me needing another developer, I tapped his shoulder and he was interested in some of the projects I had available.
Tell us something about your code review process. Which are the areas that you pick up first? And do you have any tips for site owners who would like to do it themselves?
The code review process is generally done so at the core theme/plugin level. If you come to us and say “I’d like a code review for my theme,” then you’ll get a tailored review of your theme but it will primarily – though not only – focus on functions.php and tertiary files like that.
Sure, we look at templates and things like that, but people are generally more curious about the code they’ve written being up to par with WordPress standards, with the WordPress API, and so on than they are with the organization of their markup.
This isn’t to say those things don’t matter – they absolutely do – but that’s not usually what’s at the height of a person’s priority list.
Do you see any pattern in the code areas which almost always need to be optimized? I mean are there any areas within a theme that almost always can do slightly better?
If you ask 10 people this question, you’ll likely get 10 different answers. For me, I’d say that developers could (and should!) take more advantage of template parts (or template partials, as they’re sometimes called) in order to remove and modularize parts of their templates.
That is, abstract parts of the same code that are used in multiple places – perhaps like pagination controls – move them to a template part, and then just use `get_template_part` to call that template part into the full template for a page load.
It makes maintenance so much easier.
Please recommend some resources for learning WordPress development.
– Find good people on Twitter to follow. This isn’t hard to do.
– Read the WordPress Codex
– Study other people’s code
– Participate, even passively, in the WordPress Stack Exchange
– Try to commit to someone else’s project (even if your patch isn’t accepted, what you’ve learned will be valuable)
– Read blogs such as Post Status (at PostStatus.com) to keep up to date with WordPress news
I know you’re more looking for a bulleted list of resources, sites, and tools that are worth following, but it’s generally hard to nail those things down because the economy and community change so quickly.
It’s better to cast a wide net on the available options rather than try to pinpoint a handful of things to religiously follow.
Tom McFarlin on Boilerplate
And the inevitable – tell us just once more about your BOILERPLATE project. And why you think that it’s a good stop for budding plugin developers.
The WordPress Plugin Boilerplate is a project that, simply put, aims to take some of the initial groundwork out of the equation when writing plugins (especially more advanced plugins).
It handles things such as:
– Internationalization
– Dashboard functionality
– Public-facing functionality
– Shared functionality
– …and more
The project is one that’s constantly under development and that I try to work on as time allows. Lately, I’ve not had as much time as I’d like, but that’s the nature of hobby projects.
Anyway, the Boilerplate aims to try to create a “convention” for “a place for everything, and everything in its place” as it relates to creating plugins. It tries to bring a little order to what could be potentially a lot of chaos.
Some neat things have sprung up around it such as [this generator](http://wppb.me), and I’m currently working on some tutorials and videos for documentation of how to get started using the Boilerplate.
Tom McFarlin is pretty active on Twitter – Make sure to catch his tweets @tommcfarlin.
Leave a Reply