Tom McFarlin is a well known author who has written a lot about WordPress. He is highly respected for his contribution to WordPress training and community. He has worked on major open-source projects.
In this interview, Tom McFarlin talks about his input to open-source community, his writing projects and his contributions, especially to WordPress. If you’re a developer, designer, or a blogger who is passionate about WordPress, you can follow him on Twitter.
Cloudways: Hello Tom, Tell us a bit about yourself. We learned that you are a credible web developer. What was the main reason of pursuing a career within the respective field?
Tom: When I was about 9 or 10 years old, my family got our first PC. It was a 386 with about 8MB of RAM. Previously, we had an Apple IIe, but I was too young to really do much on it other than play a couple of the games that we had on the 5.25” floppy disks.
Along with the PC, we also had copies of Wolfenstein and Doom II. Once I saw those games, I was hooked. I spent a lot of hours playing both games, and shortly thereafter, we signed up for our first Internet service provider – Prodigy. It was fine, but it didn’t really grab my attention in terms of what was possible as far as a “global network” was concerned.
But then we swapped to AOL. Immediately, I was fascinated by being to find so much information on the web, and I loved being able to talk with people all over the world. At some point, my curiosity piqued: How were things I was seeing on screen actually being display on my screen? How was the information transmitting to and from my computer? How did RAM work? How is data written and retrieved to the hard drive?
And from there, everything began to spiral. I don’t recall the order in which all of the following happened, but I learned HTML and put together my first website. This initially hosted on AOL, but I then found other services like GeoCities, Tripod, Xoom, and AngelFire all of which I had to try. For the record, GeoCities was my favorite.
Around the same time, I was also interested in writing desktop applications. My first copy of an actual compiler was Visual Basic 3.0 Professional – it spanned nine 3.5” floppy disks. Between some of the documentation that was online and the various people I knew in chatrooms and forums online, I was able to pick up enough to write really basic Windows applications. At this point, I didn’t have the understanding to really build network-enabled applications, nor did I have the understanding to really get the event-driven design pattern (coincidentally enough given that the web and WordPress use it, as well).
After that, I upgraded to VB4 and then eventually VB5 and began reading through Dan Appleman’s book A Guide To The Win32 API. To say I was in over my head would be accurate. A lot of kids are able to pick that stuff up at a young age, but I wasn’t one of them. At least, it didn’t happen quickly.
So at this point, I paused Windows development and began to take interest in Linux. I had a friend mail me a copy of Slackware Linux (literally via the US mail) because I was still on a dial-up connection. My video card wasn’t supported by the drive’s so I could only use a black and white copy of Xwindows which wasn’t very interesting, but being exposed to another operating system was interesting enough.
I bounced back to Windows and grabbed a copy of Borland C/C++ and a book and I began to work on learning C. This came very, very slowly. But the more work I put into it, the more I began to understand things that were going on in terms of memory and the processor. I didn’t really grok threads, mutex locks, and all of that stuff until college but I understand very basic pointer arithmetic, file operations, string operations, and array manipulations.
Suffice to say, from a very young age, I knew that I wanted to pursue a career in computing. As I went through school, I continued trying to take part in any activity I could find that revolved around computing (I mean, I still had other hobbies like music but computing was always the central theme).
As Internet speeds increased, ISPs changed, and my understanding of programming developed, I decided to pursue a degree in Computer Science. During my time in college, I had to work with everything from C to Java and from PHP to Ruby on Rails. One of the biggest things I found when working on projects for school was that I really enjoyed focusing on distributed applications where a portion of it would reside on a server and portion of it would reside on the client machine.
Then transmitting data back and forth and allowing a person to use a solution regardless of where they were as long as they had an Internet connection really took hold of my interest. And to that end, I decided to pursue web application development.
Over the years, I’ve worked with PHP, .NET, Ruby on Rails, and now WordPress.
Cloudways: When did you first discover WordPress? If there was no WordPress then what other options would you have considered?
Tom: I discovered WordPress back in 2005 which I believe was the Strayhorn release. I used it primarily as a way to blog about my experience as a computer science student for the school at which I studied.
They set me up with a free hosting account, promoted it under the public relations part of the prospective student’s website, and urged me to talk about “a day in the life” of a computer science student.
I didn’t do a lot of WordPress development at this time. The most I did was some minor theme customization that usually resulted in writing some custom PHP functions and hooking them up to the templates.
This really doesn’t qualify as WordPress development and it didn’t really follow the “right” way to do things at the time, but I didn’t know any better and I didn’t really care. I was more focused on just making sure the site did what I wanted it to do while I was running it.
And so for a couple of years as a student, an intern, and so on, I used WordPress exclusively as a blogger rather than a developer.
Cloudways: You have your own blog TomMcFarlin. Can you please highlight, what are the reasons behind initiating your own blog?
This was before Stack Overflow and the ultimate goal was to publicly document what I was learning just in case someone was Googling around for a similar problem they were having.
As time passed, I began to focus on writing round-up posts of interesting things I found during the week – sometimes, this would be neat programming concepts, other times it would be neat utilities, newsletters, browser tools, libraries, etc.
Then when I made the shift to self-employment, I began to talk a bit more directly about Ruby on Rails and WordPress (as those were the two technologies was I using). But as the business picked up and I began to focus more and more on projects or others, the demand for WordPress and solutions capable of being backed by WordPress became far more interesting.
So as I scaled the business back to focus solely on WordPress, I began to focus my blog specifically on that, as well. And when you do that for several years, you end up being able to draw from this pool of experience you’ve had.
This doesn’t make me an expert any more than the next person. In fact, a lot of the feedback I get or questions I get are really good and I don’t always have an answer. Sometimes, others will come in with a better way or an alternative way to do something. And when they do, I really like being able to learn from them, as well.
So I’ve basically come full circle: I initiated my blog as a way to publicly journal information that I was learning. Now, I’m doing the same but I also try to position it as “Here’s the problem I had, here’s how I’ve solved it, what questions or comments do you have?” Though I don’t explicitly say that, that’s the my blog posts usually take.
Cloudways: You have been contributing in open source communities since a long time. You’ve also worked as a Microsoft MVP. How will you compare proprietary with open source communities?
Tom: Being a Microsoft MVP isn’t really a position that you hold in terms of a job. Instead, it’s an award that Microsoft gives out each year and you have to be nominated for it. I don’t know who nominated me for the first time, but I kept up with the award for years after.
When the time came to submit contributions to the open source community last year, I didn’t participate. It’s not because I didn’t value or respect the award, but it was simply a matter of time. I had priorities and responsibilities with a growing business and growing family. So when the time came to try to submit my contributions, I didn’t have any time left.
That said, it’s hard to compare the communities in some ways because many of the closed source communities I’ve worked in are very “enterprise” in nature. They are expensive to license, going to conferences and hiring consultants is expensive, and it’s something that I’m not sure I’d be able to do on my own.
There seems to be far less opinions on any given technology and what should be used because it seems like any given shop simply has the stack and library of tools they use. And since the software and technology is handed down to them from a provider, you get what you get, you know?
With open source, everyone can have a voice, input, can try to submit code or some type of other contribution, and when personalities and opinions differ, it can result in really good, insightful conversation or it can escalate into something far more political and generally more negative.
This isn’t to say one is better than the other. This is also based purely on my experience. So when it comes to either community, I tend to prefer open source because of all that it affords, but I don’t discount the closed-source counterpart either.
This may sound like a non-answer. I don’t know. The bottom line is that I don’t have an opinion on which is better. I just know that I prefer open source community, a certain segment of that community, and that I don’t see myself wanting to depart from it anytime soon.
Cloudways: According to your experience, what will you suggest for plugin and theme beginners?
Tom: For theme developers, the key is to understand that themes are meant for presentation and display and plugins are meant for functionality. I tend to be a purist when it comes to these two topics.
This isn’t to say that plugins don’t sometimes need similar ideas from themes or that themes don’t need some type of unique functionality, but I think we’ve blurred the lines far, far too much especially with regard to themes incorporating functionality.
To that end, I think beginners need to determine what it is they want out of WordPress and what it is they want to contribute (either a free or paid) solutions for others. Oftentimes, I think designers and frontend developers can really thrive as theme developers. They can also stretch their skills with plugin development.
At the same time, I think programmers who are coming from other parts of the industry and who may enjoy more of the ‘software engineering’ or ‘software architecture’ type of approach will likely plugins especially because I see plugins as “apps for WordPress” in a sense.
This is changing a bit because people are beginning to see that WordPress can be used as a foundation for web application development, but I’ve found that many of the same techniques and approaches that are applicable to generic software engineering are applicable to plugin development, as well.
Cloudways: You’ve a vast experience in WordPress Development. Can you share some of your most proud project you’ve worked on by far?
Tom: This is a hard question for me to answer because I’m fortunate enough to be able to work on a wide variety of projects. Since I don’t primarily focus on products, I focus on custom solutions for others. To that end, I’ve worked on some really neat things.
For example, some of the projects that I’ve worked on have been for intranet-based educational platforms, others have been for industries in which I thought I’d never work such as the moulding industry and the interior design industry.
But that’s what make software development so interesting – you get to learn a lot about working on a wide variety of things that you may otherwise never encounter.
All of that to say, I don’t know if I can point to just one project that I’m most proud to say I’ve worked on, but I can talk about one specific feature that I’m really proud to have built. It’s not necessarily the definitive thing I’m most proud of (I don’t know if I really have one of those), but it’s something with which I’m happy, nonetheless.
A couple of years ago, I needed to build a solution that would take incoming map information, parse it, and integrate with the Google API. It would then need to present the user with information about each location and also be indexed so that users could search using a standard search field. Furthermore, the map would use the user’s current location (as approximated via the browser) to center the map as close to where they were currently located.
In and of itself, the Google Maps API leaves a lot to be desired. But once you overcome its learning curve, you’re then faced with a number of different issues such as making sure that you’re properly caching location information, clearing the cache when something new is entered into the system, and generally making sure that the site is as fast as possible for each user.
And when you’re doing this at the country level, it can take a combination of different things ranging from transients and other caching mechanisms to automated cron jobs that will periodically refresh the cache so that no single user will feel the impact of landing on the site for the first time forcing the cache to load.
That was a really fun project that I remember presenting a number of different challenges all of which were interesting problems to solve over the course of the project.
Cloudways: The core of WordPress is not known for its speed. What best practices do you think should be used to improve the speed of WordPress?
Tom: This may make me sound technically ignorant, but I’ve never really been much concerned about the core WordPress application. It has served me well in both large and small projects.
When it comes to working on a project for someone, all of the above apply, but I also try to take advantage of transients when possible. If the system supports it, I will also install several other caching mechanisms.
If there are direct queries that need to be made (versus, say, using something like WP_Query), then I’ll make sure they are written in such a way that only a subset of the data is returned per each request. Similarly, with data from WP_Query, I will page data. I’ll rarely, if ever try to grab as much information from the database as possible in a single trip. That’s just expensive, unwise, and can greatly bottleneck the application.
I use other profiling tools to try to identify where problems may be. Sometimes this is other plugins, sometimes it’s my own. If it happens to fall on my own code, then I work to try to optimize that as much as possible.
In short, I try to control what only I can control and leave the rest to the theme developers, the plugin developers, and the native speed of WordPress core (which, again, has never seemed to be lacking in performance for me).
Cloudways: What about WordPress security? Do you think it has been reduced with the release of its newest version? What is your most favorite feature in WordPress 4.5?
Tom: In terms of security, it’s really easy to fall into the trap of having a lot of FUD spread around through blogs and other outlets about the security of software.
This isn’t to say that WordPress is insecure, but it’s software that’s constantly undergoing development. The same can be said for a wide variety of other CMS platforms that are out there. But the larger the reach of a given product, the more of a target it becomes.
Furthermore, there are also products that people download that they shouldn’t. I’m not placing the blame on them — after all, when you google “Free WordPress Themes” and hundreds of thousands of results come up, how is an end-user supposed to know what’s secure or not?
So in that respect, there are varying degrees of security. Whatever the case, I always recommend making sure that you’re downloading or purchasing themes and plugins from a reputable place, and I also recommend purchasing a service such as Sucuri to monitor to your site.
The software may not be completely secure (and I don’t even know if that’s possible), but if you follow some of the approaches above and use a service who’s specialty is security, you’re in a far better position.
Finally, this isn’t so much an issue about WordPress 4.5 or any past or future version. It’s about the software as it evolves over time.
Cloudways: Tom, you’ve contributed in WordPress core and WordPress codex. The newest version 4.6 is on its way. What would you like to see in this newest version?
Tom: Honestly, the way that I get work done with respect to building solutions for others on WordPress isn’t driven or motivated by what’s coming in the next version of WordPress. If something exists or will soon exist, great; if not, there’s a chance that I’ll need to incorporate it either via custom code or someone else’s library to solve that problem.
With that said, I’m really liking the way the new Internationalization functionality is going to work. The way it’s going to dynamically look for the localization files based on the locale set at the application layer is really nice and it takes a step out of writing often-duplicated code across projects.
It may not be the flashiest feature and it may not be the most interesting feature (especially because there’s not really a UI for it). It is, though, something that I’m excited to see and to take advantage of once the final version is release.
Cloudways: You’re the owner of “Pressware”. What inspired you to start your own business? Can you please tell our readers about your agency? And what are your responsibilities there?
Tom: I knew from a very young age that I always wanted to work for myself. I’d watch my dad and my mom build a company from the ground up (although it was a very different type of company) and I don’t know if that desire was passed on genetically or if it was something that I saw, wanted to achieve, and found it most appealing out of all of the options that are available career-wise.
As far as starting a business was concerned, I officially formed an LLC when I was in college out of which I was doing small amounts of contract work. I kept the LLC active when I was first working and would often spend time working on those projects after work.
When you’re married and have no kids, you have the kind of time to do that 🙂
But when the amount of work I had was beginning to increase, my wife urged me to make the leap. She, being the wiser of the two of us, was right, so I did and it’s worked out well. I love what I get to do and I love how I get to work.
The thing is that I sort of always thought I’d be working for myself but I thought it’d happen in my late 30s to early 40s. I didn’t think I’d be 24 and starting my own business. But I did and it’s worked out so far, so I have no plans to changing that any time soon.
As far as the agency is concerned, we focus on building custom solutions for others using WordPress. Sometimes this might be creating a custom theme (though I don’t do much of that any more) to developing custom plugins and application-like functionality (which I do a lot of). I also have someone who works with me, Eric, who does site integration or site builds with a predefined set of assets, themes, plugins, and so on.
In terms of my responsibilities, I wear a lot of hats. I read and respond to all of our email. I provide project estimates, I make sure our testing and deployment processes are in place, and I handle a small portion of the bookkeeping (though I do have one friend and CPA who help with that, as well).
If you were to ask me if I want to grow, the gut reaction would be to say “yes” but I honestly don’t know. I like the position I’m in right now and so I’m taking it very, very slow with respect to adding anyone else to the team. I’m in no hurry.
Cloudways: We’ve seen you attending and speaking at many WordCamps. What did you learn from there and how these meetups are beneficial for you as well as WordPress Community?
Tom: One of the things that I’ve learned most when attending WordCamps is to go with an open mind and to seek out not only talks that seem a little bit out of your area of expertise (because how else are you going to learn?), but to also seek out people to meet.
Some of my favorite experiences at WordCamps have come from simply sitting in the hall or outside with a group of other people who I just met that day or who I’ve known via Twitter for sometime and have made a face-to-face connection.
When I attended WordCamp San Diego, I actually had a seat next to a fellow developer who’s blog I’ve admired for quite sometime. We ended up getting to talk shop for hours while on the plane and I now consider him a good friend in the WordPress space.
None of that would’ve happened had I not been willing to go to a conference, put myself out there, meet people, and listen to what they had to share.
Cloudways: Tom, you’re a web developer, WordPress theme & plugin developer, blogger and a contributor of the WordPress community. What are your lifehacks to manage all these stuff at the same time?
Tom: I don’t really consider any of the things that I do “lifehacks.” I consider it time management; however, I also admit that it’s a personality thing.
First, I keep a calendar of everything that’s going on in my life and when. This includes when I have calls, when products are due, when milestones are due, when appointments are, and so on.
I also use a TODO list and the GTD method of getting tasks done. I apply this in both work and in my day-to-day life. I keep a notebook with me almost at all times so that anytime anything pops into my head, I can get it out of my head, down on paper, and plan or schedule it later.
All of this is connected between my phone, my wife’s phone, and my desktop so that I have a clear picture as to what any given day will look like.
To that end, it might mean that it takes a while to schedule things; other times, it means that I have to rearrange some stuff. Some things are non-negotiables. Others I’m more flexible with scheduling.
The bottom line is that I think it’s important to find the schedule and routine that works for you and then play up to that strength. What works for me may not work for you (or it might). Ultimately, find the things that help you get the most done that you can and repeat the process each day.
But with the application’s commitment to backwards compatibility, I don’t see this happening. Too much of the web is dependent upon its current infrastructure. Furthermore, you’re talking about rewriting the entire thing in another language. But what would be the most compelling reason behind doing that?
From a business perspective, I can’t think of why this would make sense.. PHP is still a solid language for the web, it’s moving forward (with PHP7 being a really nice release, in my opinion), and WordPress gets to reap the benefits of the gains made in the advancement of those languages.
Cloudways: With the release of Calypso and shift to Node.js of WordPress.com, do you think this move is welcomed by the larger part of the WordPress community?
Tom: For me, it depends on who the “larger part” of the WordPress community is. I mean, if you’re talking about a breadth of developers, I think it was a welcome thing because it showed what could be done with using a headless version of WordPress and an alternative set of technologies.
In that regard, I think it was a good thing and I assume it was welcomed. At the same time, I don’t know how it fits into the solutions that developers and business owners can provide to their customers.
On the flipside, if you’re a blogger who uses WordPress as a means to an end, I’m not sure if it’s something that was well-received or not. I personally don’t know anyone who uses it more than that browser-based or traditional web application, but I’m not a representative sample.
Furthermore, a lot of the presentation of Calypso was geared towards the developer-types from its release on GitHub to its language about how it was built. These are the things programmers care about. These are the things that mean nothing to end-users.
If it was presented as the WordPress desktop application that offers featured X, Y, and Z and that would solve problems A, B, and C better than the traditional application, I could see its appeal.
But, right now, I honestly don’t know. It seems to be more interesting to developers than anyone (and understandably so).
Cloudways: WordPress adoption rate can be credited to its powerful community. Do you think that the WordPress community has more market space to diversify?
Tom: I think the easy answer to this question would be that “yes, there’s more market space for it to diversify.” But I see this in two ways: I see it both in bringing even more people from other cultural backgrounds into to use WordPress as a means to an end as well as to bring their technical prowess to the platform.
But I also see it as a way to bring open source software to other areas in which technology is not as prevalent. Because the nature of WordPress is so extensible, we’re really just getting to the point where people see WordPress as an application foundation.
And when we start building full-fledged applications on WordPress much like others do with other types of software, I think we’re going to see a lot more solutions arise in ways that we’ve yet to see – and that diversity in solutions is just as exciting as new people being brought in to using WordPress as part of their daily lives.
Cloudways: You are an active member of the WordPress community, your work is credited by many. Throughout the years of progress, who do you consider among your best friends within the WordPress community?
Tom: This is a hard question to answer because I feel like as if I have met so many terrific people in WordPress. This means when I start listing people out, I’m inevitably going to leave someone out and that never feels good for me or for the people who are left out.
So, out of respect for those who I consider my friends (and I think they know who they are as it’s reciprocated), I’d prefer to leave the answer to this question as-is.
Cloudways: We know it is hard to take out time from work, however, we all need to relax. So what do you like to do during your free time?
Tom: During my free time, you’re going to find me hanging out with my family (my wife, my two daughters, and our two dogs). You’re likely to find me exercising, playing guitar, watching movies, reading, or hacking on side projects that I still have.
To be honest, I try to keep rigid hours: Once the end of the workday hits, I try to disconnect and be fully present with my family. Some days are better than others (and I think – or hope – this is the case for everyone), but I think letting my girls know that I’m 100% focused on them when I’m with them is important.
Cloudways: Finding the best WordPress hosting is always a difficult task. How would you compare a Managed WordPress Hosting on Cloud like Cloudways integrated with advanced caching technology with traditional WordPress hosting?
Tom: Finding the right WordPress host depends on a number of factors such as the nature of your blog, how much content you provide, how frequently you blog, how many visitors you have, and then what else you run in addition to just WordPress.
For example, are you hosting a lot of images (or other assets)? Do you have a membership area to your site? Is there some type of application-like functionality built into your site? Things like that are important.
If a person only has a blog, I don’t know if there’s a compelling case to use managed WordPress hosting unless the site is extremely popular and active with visitors, comments, etc.
That said, if the person is looking for speed, hardware, and infrastructure tailored and optimized for WordPress regardless of how their site functions, then using a managed WordPress service is important.
Furthermore, it’s important to research which one would match one’s needs the most. Sometimes, basic WordPress hosting is enough. Other times, you may want something more powerful.
Personally, I’ve not used Cloudways hosting so I can’t speak to the quality, experience, or how it stacks up against other WordPress managed hosting services. But I do know that this is a space that’s important especially for those who have WordPress as a central part of their business (be it hosting a marketplace, serving as a content channel, etc.).
So I’d urge readers to do their research, evaluate their options, identify how important their site is to their business, and see what fits their budget the best.
Just to acknowledge our readers, can you please send us an image, What does your desk or workspace look like? 🙂