Welcome to ManageWP.org

Register to share, discuss and vote for the best WordPress stories every day, find new ideas and inspiration for your business and network with other members of the WordPress community. Join the #1 WordPress news community!

×

I'm Tom McFarlin. I'm the owner and lead developer of Pressware. AMA!

Oct. 12, 2016

Hey, I'm Tom! I am the owner and lead developer at Pressware[0]. We're a small (that is, a two-person) development shop that uses WordPress for building custom solutions for small businesses and individuals. I also work as the Editor for Tuts+ Code where we publish numerous, free tutorials on learning new skills in various languages and technologies.

My background is in computer science, and though I've used WordPress since 2005, it wasn't until 2010 when I began to focus primarily on using it as a foundation for building solutions for others. Now, I enjoy speaking at WordCamps, my local meetup, and talking with others who are using WordPress is any capacity - be it for blogging or a foundation for application development.

I blog daily on my personal blog[1], and I've recently started another one[2] that focuses on running a business, time management, productivity, and things like that.

When I'm not at my computer, you're likely to find me spending time with my wife and our two daughters as well as our two crazy terrier mutts. I'm also into fitness, so I try to fit about an hour of working out into each day. And when I've caught up on everything else (which is rarely, but it does happen :), you're likely to find me playing guitar or tracking some music in GarageBand.

Ask me anything!

[0] - pressware.co
[1] - tommcfarlin.com
[2] - heyimtom.com

Comment
33 votes   Flag
Benjamin Bradley

1) What is your biggest code "pet peeve" you see in WordPress that really drives you up the wall? (Whether it is contributor code, core code, random function snippets...)

2) Do you miss anything about the Standard Theme?

3) Coffee, Tea, or other?

4) Muffins, Scones, Bagels, or other?

5) Finally, if you had one word of encouragement to people wanted to get involved in contributing to WordPress what would it be?

Reply
Tom McFarlin

> 1) What is your biggest code "pet peeve" you see in WordPress that really drives you up the wall? (Whether it is contributor code, core code, random function snippets...)

This is a good question, though I can't say an actual "pet peeve" comes to mind -- even if I sit and think for a moment. If I had to pick _something_, then I'd have to go with two things: Code comments and more focused classes/functions/modules/whatever-you-like-call-it.

Aside from that, I'd love to see more of the following:

- Developers adhering to the WordPress Coding Standards,
- More modular code (not necessarily OOP, though that's my preference), but well-organized and documented code,
- Use of 'newer' language features in PHP (such as namespaces even autoloading, when available),

Some might also say greater compatibility with the PSRs, and I'm torn -- I'd like to see that, but I also understand WordPress' commitment to backward compatibility so changing coding standards will need to be something that has a defined milestone far from when it's planned.

> 2) Do you miss anything about the Standard Theme?

Not really. I had a blast working with the team who built it, and I learned a lot about WordPress when working on it, but I still keep up with most of the guys.

We've all moved on to things that serve our greater interests/passions so I couldn't be happier for all of us, to be honest. We're all doing what we want to be doing, and I still keep up with most of them (as in, I talk with them *at least* once a week - though daily with a couple of them - either via texting or phone).

> 3) Coffee, Tea, or other?

Coffee.

> 4) Muffins, Scones, Bagels, or other?

Right now, I'm on an oatmeal kick but were it not for that, it'd be who grain bagels.

> 5) Finally, if you had one word of encouragement to people wanted to get involved in contributing to WordPress what would it be?

This can be somewhat of a tricky question to answer because the idea of "contributing to WordPress" is so broad. This can be from writing documentation to writing code and anything and everything in between. There's almost something for everyone.

With that said, I'm going to assume you're talking about code since that was part of your first question.

And when it comes to that, I recommend that people work on understanding the coding standards and the APIs first. Yes, this will take a bit of time (so if you're expecting to get your code committed to core quickly, then push pause on that thought). You're going to need to build things, you're going to need to chat with people, you're going to need to share your code and be open to critique (sometimes a lot of it), and it's going to help if you've looked at other patches and the WordPress source code itself.

It will also help to have a strong understanding of how things in the software work - from the database schema up to how information is presented in the templates.

Then I think it's safe to "un-pause" that desire to contribute code, look for a good first bug[0] and try working on it. If your first commit isn't accepted, it's no big deal. In fact, this happens to a lot of people, but so what? Try again :).

There's a worldwide community of very smart people working on this software. It shouldn't be easy to join the ranks, but it's worth the effort.

- [0] core.trac.wordpress.org/tickets/good-first-bugs

Reply
Chris Lema

If you consider the facade pattern, the factory pattern, and the mediator pattern - what would you say they have in common, how are they different (beyond function), and which would prove to be most helpful in a complex application built on WordPress?

Reply
John James Jacoby ⚡️

This sounds like an interview question.

My answer: they're all equally delicious when printed on an ice-cream cake.

Reply
Chris Lema

All my questions for Tom sound like interview questions. :)

Reply
Tom McFarlin

Love this question because it's at the heart of object-oriented programming.

Before answering: "which would prove to be most helpful in a complex application built on WordPress?" I want to define the patterns here for those reading who may not be as familiar with these patterns.

The Facade Pattern is a way to provide a simplified interface (that is, a class interface, not UI) "in front of" a set of more complex classes. This means that the third-party classes which are used to communicating with this collection of other classes now communicate with the Facade.

It's a great pattern to use when you want to work on refactoring the collection of classes behind the facade without breaking functionality. The ultimate goal is that you get all of the refactoring done, yank out the facade, and you have a cleaner interface and refactored classes all ready to go without any interruption all because you had the facade standing in place while working on the refactoring.

The purpose of this pattern is to help refactor, clean-up, or simplify (whatever you think is best in your situation) the classes for which the facade is protecting while still letting the program function as normal.

The factory pattern comes in two flavors: The Simple Factory and the Abstract Factory. Sometime's they are also grouped in as the Factory Method Pattern. Regardless, I could probably spend an entire blog post explaining and demonstrating each of these (especially the abstract factory). But this isn't a blog, it's a longer comment, so I'll try to keep it like that :).

FWIW, this is one of my favorite patterns but it also assumes a knowledge of class interfaces, inheritances, etc. and that's beyond the scope of this answer.

First, the factory pattern - at a high-level, regardless of which variation - is responsible for taking incoming data and then determining what type of object to return. This pattern works by providing a method into which we pass an argument (and expect a result based on the argument).

The Factory takes the incoming argument, determines what type of class should be instantiated, and then returns an instance of that object to the caller. Here's the thing, though: The factory will use an abstract class implementing a standard interface to return to a class based on the incoming data.

The Mediator Pattern is similar, but its ultimate purpose is different. First, the pattern works by providing an interstitial class with which all of the classes which are used to communicating with one another now communicate with the mediator. The mediator has the knowledge all these other classes and then decide where to route the incoming call and where to send the data that's returned.

Ultimately, the idea is to reduce dependencies among objects.

Okay. Whew. So I hope that's succinct enough for each of these patterns actually to answer the question. But you ask:

> What would you say they have in common?

First, they all work in a way that allows us to introduce refactoring without breaking functionality. I'd the say Factory Pattern is the least like the other two in this particular scenario, but it's not without its uses (and I'll cover that in a minute).

The Facade is temporary and will be introduced then eventually removed once the classes it represents are refactored to the point of sufficiency.

The Mediator, on the other hand, may not be removed. It's one way to reduce dependencies (and thus coupling) which is good, but there are also other ways to do this (like dependency injection containers) which I'm not going to discuss. It's off topic and, I might get burned for saying this, not always necessary.

The Factory, on the other hand, is better for decision making. It, in my opinion, assumes a level of architecture that the other two allow us to implement. It gives us a way to retrieve a particular type of object in a very clean manner with a consistent class interface.

> How are they different (beyond function)?

I think I might have answered this more in the previous reply than intended so I'll try to summarize it rather than give a long-winded answer.

The Facade Pattern is a temporary pattern giving us the ability to refactor classes that sit behind it. The facade class itself, by the nature of the pattern, is temporary. It's something that we can - and should - eventually remove from the program once the refactoring is complete.

The Mediator Pattern gives us the ability to decouple the communication between classes and provides us with a central location into when communication can be sent, orchestrated, and then returned. It may not be removed from the program (or it might depending on how far a refactoring goes).

Because it reduces coupling, it gives us a central point -- ideally -- to improve individual pain points of communication and overall orchestration of sending and retrieving data. The problem is that this class could grow to be enormous and have a lot of knowledge. Thus, it may ultimately become a god class, and that's no good. Multiple mediators, though? That's an interesting thought.

Finally, the factory pattern is, arguably, entirely different in purpose. It allows us to have a central class to which we can make requests for a particular type of object and know that the factory will return this kind of object. For example, if I want a custom post type of, say, a 'Profile' then I can call a ProfileFactory to get it. I don't have to go looking for the class that represents a Profile or anything like that. The Factory knows about it and encapsulates and abstracts all of that away from the caller.

> Which would prove to be most helpful in a complex application built on WordPress?

And now for the big one. The short answer is that one of these patterns would not be the "most helpful" in a completed application like WordPress.

Instead, I think all three are useful *but* they are useful in a certain order. Given my knowledge of the WordPress source code (which, I'll gladly admit is not up to par with what I want it to be, but I'm working on that), I'd say the order in which these patterns can be employed is this:

1. The Facade Pattern. Right now, there are some places in WordPress that need to be refactored. We have classes acting as glorified namespaces. There's little inheritance, few interfaces, no abstract classes (of which I'm aware), and we have to make multiple calls to multiple classes or call odd methods on a single method to achieve a task that could provide a cleaner interface. The Facade Pattern is *perfect* for this because it would allow us to talk to the facade, call an interface with a level of consistency, and then when the classes that nee to be refactored have been completed, we can yank out the facade and then talk to the updated classes in a cleaner way.

2. But then we have the problem of dependencies. To be honest, I've never run any type of tool that generates a dependency map over the WordPress source, but when you go through the source or try to debug something in your code that's not working as it should, you end up finding oh "Oh, I need to use this class *and* this class" or you find "Ah, this class is dependent on this class which is loaded later in the lifecycle, so I need to use a later priority or later hook".

This is where the mediator pattern comes into play. Break up those dependencies! After the refactoring done via the facade pattern is complete work on setting up a few mediators (not one -- we want to avoid god classes) that are relative to their responsibilities in the WordPress source code. Perhaps we have a PostMediator or a MetaMediator or a CommentMediator or whatever. We talk to *those* mediators which will separator some of the dependencies the post-related classes have among one another and then continue our work.

Separating these dependencies can likely also improve testability, for whatever that's worth. But I want to be clear that I think the WordPress source code, when visualized conceptually, has specific areas (like I mentioned) such as Posts, Comments, Users, etc. Each of these areas are where a mediator would be introduced. And perhaps there'd even be a more fine-grained mediator added in places. I'm just giving high-level examples, here.

3. And finally, assuming that the above two have been done, the factory method would prove useful whenever you need to retrieve a class of a certain type. The first thing that comes to mind is custom post types followed by custom taxonomies. All of these classes would implement a common interface or have an abstract base class. The factory is what we'd talk to in order to retrieve these subclasses.

With *all* of that said (and wow, that feels like a lot), I want to be clear that I don't think refactoring a 13 year old application is easy. The above answers sound like "you add a little of this, a pinch of that, throw it in the oven for 10 minutes, and you're done."

That is *not* by intention and it would be foolish to assume otherwise. This is something that would a significant amount of time and effort to do. Class diagrams of the current software would need to be made. A deep understanding of the current class interfaces, their dependencies, how they relate to both new and old features, and how they interact with classes we, as developers, never have to touch would be required.

That could be *at minimum* a year long project. Then we're talking about a three step process to improve the quality of the application? I can't even estimate how long that would take.

Take, for example, how long it's taken to create the REST API plugin. It's fantastic plugin that's sitting at Beta 13 (if I recall correctly at the time of this writing). It's testable, it's easy to understand with a clear interface, and it communicates with WordPress in a way that gives us a lot of power to work with it without having to use the administrative interface.

And that's "just a plugin" (quotes to emphasize that it's more like an application on top of an application, but you get the idea).

So that's my perspective on what would be most helpful. But I also want to be clear that I'm realistic about the undertaking. We're not making a TV dinner. We're not even creating a meal for a large wedding. We'd be taking an old building, tearing it down to the studs, remodeling it, and then preparing to put it on the market all while people are still using the building.

Reply
Brian Krogsgard

Beta 15!

Reply
Tom McFarlin

I stand corrected and I'm happy to stand as such!

Reply
John James Jacoby ⚡️

Hey Tom; huge fan!

What motivates you to keep producing?

What was your very first experience with WordPress?

What is your favoritest plugin of all time: BuddyPress or bbPress?

Reply
Tom McFarlin

> Hey Tom; huge fan!

Thank you and very much likewise!

> What motivates you to keep producing?

When it comes to working on projects for others, I really like tackling problems that are outside of something I know because it forces me to learn something new.

And I don't mean it forces me to learn something new in terms of a programming technique (though that often does happen), but it helps me learn about a whole other industry or part of an industry that I know nothing about.

Though I may never work in that industry, it's a lot of fun to work in that problem domain.

For personal projects, it's about having the ability to having a computer or an extension of an application do something that I want. That is, if I want my computer to do something to help make my life easier, I can do so by writing a script, a program, or an extension to something that I use.

This requires tinkering with new languages so the learning curve can sometimes get tedious (though sometimes it's exciting), but that same excitement when I had when I was 10 years old and I was editing autoexec.bat to make my computer do things when it booted still happens - admittedly in a different way - when working on personal projects.

> What was your very first experience with WordPress?

Blogging what it was like being a student for the college I attended. From a code standpoint, it was also modifying the default theme I was using for said blog.

This was about 11 years ago. And writing that out has me all o_O.

> What is your favoritest plugin of all time: BuddyPress or bbPress?

I have to go with bbPress because I have more experience with it. This isn't meant to know BuddyPress by any means, but I've used bbPress as a support forum for a now-retired product, but because of the way it's built and how it works, I caught on quickly to how I could write my own plugins for it.

It did what I needed, it worked as I expected, and it was generally easy to follow.

Reply
Nemanja Aleksic

Thanks for being on our AMA, Tom!

1) I have a question for you as a Tuts+ Code editor and WordCamp speaker: sode wise, what are the questions you get asked the most?

2) Pressware question: Which soft skill is contributing the most to your success?

Reply
Tom McFarlin

> Thanks for being on our AMA, Tom!

Yes sir, It's a lot of fun!

> 1) I have a question for you as a Tuts+ Code editor and WordCamp speaker: sode wise, what are the questions you get asked the most?

Hm. I had to think about this one a bit. I get asked a bit about blogging despite the fact that I always talk on the Code track and write code articles.

But when I *am* asked about coding, it's usually something like "How do I learn to get better at writing WordPress code?" And I find that to be a common question because people really do want to build things on WordPress but they aren't sure where to get started.

And if I can be so bold to say that I think there's a difference between coding and programming. I see coding as something people do by the seat of the pants, to so speak. It's kind of like cowboy coding. They need to make a quick change - open a file or a few files, modify a couple of lines, and move on.

Programming is different in that is takes a bit of analysis, design, implementation, probably some frustration, then completion, followed by satisfaction (I hope :).

That said, I'm being a bit pedantic. Coding and programming are used synonymously.

But when people ask me that question, I press (no pun intended) a little further in order to try to figure what it is they want to build. And when they answer *that* question, it usually helps point them in the right direction.

If a person is into themes, I always point them to the Theme Guidelines in the Codex as well as a mention a few free themes and Underscores that I believe they should study. When they hit tags they don't understand, look them up. Tinker with those themes, then work your way into writing your own theme and solicit feedback.

If a person is into plugins, I list of a decent list of APIs that I believe they should study as well as some other plugins they should refer to as high-quality (and even some that I think represent what we *shouldn't* be doing).

I'm not a designer so it's much easier for me to speak about plugins than anything else, to be honest.

> 2) Pressware question: Which soft skill is contributing the most to your success?

Answering this question is odd because I'm talking about an aspect of my personality and that always makes me feel a little bit conceited.

But I'll give it my best shot.

I think one of the soft skills that contributes most to Pressware being able to continue to garner products comes from the fact that I'm far more interested in developing business relationships with my clients rather than churn and burn projects.

I talk with clients on the phone and sometimes it's a little beyond business. I know people probably knock as this and say that you should keep things strictly business. And in some contexts, that's absolutely correct.

But for me, I'm more interested in having long-term relationships with a few, trusted clients whom I actually know to some degree, rather than having a lot of clients who I don't really know and who I may not work for over more than the course of one project.

Reply
JazzFan Junkie

Would you rather fight 100 duck-sized horses or one horse-sized duck

Reply
Tom McFarlin

> Would you rather fight 100 duck-sized horses or one horse-sized duck

I apologize to anyone out there reading this who is an animal rights activists. Please rest assured that I'm not aware of any duck sized horses nor am I aware of any horse-sized duck.

With that disclaimer in place :), I'd have to say that I'd rather fight a horse-sized duck.

First, 100 duck-sized horses would get exhausted. You're talking about having to engage 100 animals with four hooves in combat. They can run, they can stand, they can kick. That's not something I'd prefer to deal with. So #nope.

But a horse-sized duck? Have you seen The Empire Strikes Back? Take a rope and tie it around its legs and be done with it. What's the worst that could happen? It just and flaps it's wings a bit?

That's fine, I'm patient. I'd wait for the ideal moment to my attack. And it's no big deal. I'm not having to deal with 400 hooves all of which enable an animal to run around - and to kick.

So bring on the duck.

Reply
JazzFan Junkie

Sounds perfectly logical

Reply
Bojan Petrovic

Hi Tom,

As a huge fan of your work, I'm really amazed how you manage to do that much stuff every day having in mind you are actually a family man. I understand that great organization skills are mandatory in this case, but, I would like to know how much of your job tasks do you delegate to your work colleagues as well as how much does your wife help you with all the "housework"?

Cheers! :)

Reply
Tom McFarlin

> As a huge fan of your work, I'm really amazed how you manage to do that much stuff every day having in mind you are actually a family man.

Wow, thanks so much! I really appreciate that. When it comes to "getting stuff done," it's really about time management. At the risk of sounding self-promotional (which I guess I'm doing anyway), I'm writing about this topic right now, actually[0].

But you're right - for me, family is first. They're the priority. Always.

That doesn't mean sacrifices aren't made at times when things need to get done or something needs to happen, but it's always something that's done via discussion and scheduling with my wife. If that means I need to work on part of a Saturday or late one night, then I do.

The same goes for her. She's a stay at home mom who's also homeschooling our oldest (our youngest being too young at this moment) and she does photography as time allows, so her having to do a lot of editing at night works out sometimes because we can both hang out in the office doing our thing while the girls are asleep.

Sometimes it's listening to music, sometimes it's listening to a show on Netflix in the background :).

> I understand that great organization skills are mandatory in this case, but, I would like to know how much of your job tasks do you delegate to your work colleagues as well as how much does your wife help you with all the "housework"?

Good question! I'll divide this into two parts the first being for my work colleagues and the second being for my wife.

First, organizational skills are a must. Not just for the person on the team, but for myself, too. I believe that I need to have a clear conceptual model of where the business is at any given time. Maybe I can't rattle off every single, say, number to you at this very moment but I can tell you a pretty good estimate. But in terms of our projects? I can tell you what we're working on, our phase, and where we stand with each one.

Secondly, I'm no fan of micromanagement. I don't know who is, yet there are people who micromanage. So there's that. But I tend to swing far in the other direction (and I attribute this to being able to have a very, very, very small team -- obviously just two at the moment with looking at bringing a third onboard).

And finally, when it comes to delegation, I think it works best - at least with a very, very small team - when you give someone a task or set of tasks and give them full autonomy that's within the field of their skillset.

That is, if a person is stellar and 100% competent to setting up a development, staging, and production environment, putting together a site based on requirements that require a theme, some plugins, and *maybe* some custom code, then I'll hand the requirements over to them and say "Okay, this is yours. Here are the requirements, here's the touch points where we should communicate with the client, let's chat daily. Go for it."

We're actually one of those teams that use Slack as a hub of all of our information. We have integrations for GitHub, HelpScout, our blogs, Google Drive and Docs, etc. Though it has chat capabilities, obviously, it's a hub for the business. And I don't worry about losing data if they ever went under because that information is just being piped in from third-party services, anyway.

Now to my personal life: When it comes to my wife helping me with "housework" and things like that, we literally just split chores up as needed. We have no set schedule or set "you do this, I do that."

There are maybe a couple of exceptions, but generally speaking sometimes she does the dishes, sometimes I do the dishes. Sometimes she makes dinner for the kids, sometimes I make dinner for the kids. I rarely make dinner for us all unless it's on the grill because if I had to cook anything for anyone I'd never eat anything except sandwiches while the rest starve.

When it comes to things like laundry, I usually do my own just because I'm weird like that. She tends to do the laundry for her and our daughters. If it's odds and ends like sheets and towels or whatever, I'll do it. But some of the clothes for the girls in the house require more delicate instructions than "Throw it in the water, add some soap, and let it spin. :)".

I will say, though, that we do calendar nearly everything. She has a personal calendar, I have a personal calendar, and we have a familiar calendar, and then it's all aggregated in Fantastical so I always know if she or she and one (or both) of the girls have somewhere to be, and she knows what I have or what I have for work going on.

That way, it really helps us to keep things on track. We also try to talk about our day every single day and make sure we're both on the same page regarding what's up for tomorrow for the rest of the week.

And I'd be remised if I didn't mention that she's really the best when it comes to everything we do. She urged me to go into my business for myself when I did, she's been tackling the homeschool material, she's with the girls most of the day, and she still manages to get her photography and editing done.

It's awesome and I'm really proud.

There's a phrase that people use in the US sometimes in which they say "they married up" or "they married someone who's better than themselves." And in this case, it's absolutely true.

[0] heyimtom.com/tag/time-management/

Reply
Jeffrey B Reifman

Hi Tom,

It is impressive how much you get done!

What do you think WordPress can do in the future to make the process of blogging faster? Between uploading and sizing images with captions, page refreshes, tags, SEO et al. ... I find WordPress blogging kinda slow and it holds me back.

Note to others - I work for Tom as an author at Envato Tuts+ and part of my job is to poke at him over the web regularly.

Reply
Tom McFarlin

> What do you think WordPress can do in the future to make the process of blogging faster? Between uploading and sizing images with captions, page refreshes, tags, SEO et al. ... I find WordPress blogging kinda slow and it holds me back.

At first, I was honestly expecting a bit of a troll question from you, but I find this one really interesting, so I'll try to take it point-by-point.

To make blogging faster, WordPress needs to take some cues from Medium. The front-end editing is really slick and giving the typical, non-technical users greater parity between what they see in the administration area to what they see on the front-end should improve.

Themes can already do this to some degree, but it's only so far.

That said, handling front-end editing is no easy task and the number of visual builders have tried. We've yet to see one really nail it, in my opinion. But people are trying. We know it can be done, but how it can be done with WordPress is yet to be seen.

That's arguably the number one area in which I can see WordPress working to making blogging faster.

Secondly, sizing images has never been a problem for me (though I don't use a DSLR or anything -- just usually photos from my iPhone) and I use a plugin to also help speed up image compression.

Are there better libraries for crunching images, resizing them, and adding them to the media library? Maybe. I've not done enough research to know. But I know how the media library is built and sometimes I wonder if there isn't room for overhauling parts of it (or all of it) ... again.

If anyone on the core team reads that, they will hate me. And I don't mean to incite that. I just mean that the idea of dragging and dropping images is so much more intuitive than using the Media Uploader, you know?

I see the Media Uploader as more of a media manager and then the process of uploading and captioning images as part of the drag-and-drop process.

`alt` tags are necessary, `titles` are helpful, and captions are optional. These are things that I think we all need to plan on editing for the sake of accessibility. I don't always use captions, for what it's worth, but the ways I do it - clicking on the image inline - usually seems the fastest.

SEO and Tags and all of that are so specific to how each person sets up their blog that I'm not sure what to recommend other than a good theme and a consistent strategy :). Sure, you can use plugins that help but I don't think they are requirements.

Maybe helpful, but it does slow down the process of getting a post out of the door.

Finally, regarding page refreshes, yes that's a bit slow because WordPress is stateless so the whole thing has to be reloaded with each page load. That can be cumbersome in some situations especially if there's a lot of media on a given page or if there is a plugin (or plugins) that are doing a lot during the rendering lifecycle (but I know you and I doubt that's the case).

So at some point, you may have to call it what it is: WordPress offers enormous flexibility in a lot of ways that other platforms don't. So do you work on optimizing WordPress through your own development efforts through plugins or through ideas for core contributions, or do you move to a new platform?

I don't have an answer. Just food for thought :).

> Note to others - I work for Tom as an author at Envato Tuts+ and part of my job is to poke at him over the web regularly.

I don't know if it's "job," his "calling," or his "lot in life." But it's definitely one of those.

Reply
Norcross

At what point do you abandon / cut loose old projects? What determines that for you?

Reply
Tom McFarlin

> At what point do you abandon / cut loose old projects? What determines that for you?

This is a tough question because I *hate* letting projects essentially rot (especially those that are publicly visible on GitHub). In fact, I've considered going nuclear and deleting everything on there that wasn't current.

The short version is that I will cut pet projects loose when they are either no fun for me anymore or they are taking valuable time away from me (where I determine valuable time as time that I could be working).

I have hard boundaries between work and family so no project is going to interfere with *that.*

But if a pet project starts to creep into billable hours, then I either need to figure out a way to monetize it (which, to this point, hasn't really happened saved for a few plugins), or I need to cut it loose. And when I cut it loose, I always look for someone to adopt the project first. I don't want to just throw something away without giving someone else a chance to continue working on it.

A slightly longer background behind this: I was talked out of my some other people who said that it's better to leave that code there should anyone else stumble across it and issue their own pull request to better it. And, if nothing else, it shows a paper trail of things you've worked on and progress you've made.

Even still, having some of that old, nasty code out in public irks me. It feels like clutter and that it doesn't represent me well. But it doesn't seem to have hurt me so I still follow that advice.

Reply
Brian Krogsgard

What, in your opinion, is the biggest market related challenge for WordPress? What should WordPress do to be appealing to an entirely new group of users?

Reply
Tom McFarlin

> What, in your opinion, is the biggest market related challenge for WordPress?

This is a hard question for me to answer because my approach to WordPress comes from a development perspective, not a user perspective (though I do obviously blog with it).

So I'll *try* to do my best to answer this question:

First, from a development standpoint, when you're talking with someone about what you do for a living and you say you build solutions on WordPress, other programmers kind of furrow their brow and give this impression of "what?"

So you have to explain how it can be used as a foundation for web applications, talk a bit about the REST API, talk about the various APIs already included, and talk about how plugins are more like "apps for WordPress." You may even have to go into how you can apply engineering principles to WordPress-based projects.

And I think part of that is because, quite simply, the name "WordPress" has become a built of a household name as a blogging platform and/or content management system.

It's not seen as something on which developers can build things. Part of that, I think, is the name. And part of that is how the software is marketed. That said, if it had some other cryptic name, it might be more welcoming to developers, but then you'd turn around users.

So I see two large marketing problems related to WordPress one being related to developers and one being related to users.

First, for users, the mobile experience is just no fun. When I look at what other platforms are doing - be it Tumblr or Instagram or applications like Day One - and so on, the WordPress mobile experience is no fun. I have tried multiple times to use it for mobile blogging and it's a real pain.

But when I look around my neighborhood or local coffee shop or wherever I am at any time, people are on their phones. They sharing content. But instead of sharing it (and *owning* the content), they are using services like Instagram (which people *are* now starting to use as a way to blog whether they would call it that or not) to give others insight into what's going on in their lives.

If a person who is a non-journalist wants to share their day-to-day life, the experience not only has to be this attractive user interface and experience, but it's got to be near frictionless. And WordPress just doesn't have that. There's a lot more I could say, but I'll stop there for the sake of writing yet-another-ebook like I did to Chris Lema.

For developers, one of the things that I notice about other platforms like Laravel, Yii, Rails, and so on is that they aim to be extremely welcoming to developers. They try to entice to developers to try them out, to let them know how much fun it's going to be, and how much of a pleasure it is to use their work.

WordPress doesn't offer that, either. Sure, we have great documentation and we have good resources for learning how to do things, but would I say that "WordPress is a pleasure to work with as a developer?" I'm torn. There's a lot of stuff I've gotta wrap my head around to get started and knowing where to start isn't always easy.

These other options that are out there provide rich getting started guides, they provide a documentation and complete examples, and along with a detailed API reference.

I know: Some of these aren't open source projects so they have the funding to pay others to create this stuff. And WordPress' Codex and Code Reference isn't bad! Even in the last few years, it's increased so much and that's great! I love seeing all of the improvements (and even contributing to them when I can).

But that still doesn't give someone who's getting started with "learning to code" or someone who's looking to begin leveraging WordPress as a foundation a good starting point.

That's the other part of the marketing that I see missing.

> What should WordPress do to be appealing to an entirely new group of users?

My gut reaction is to talk about data ownership but I think that ship sailed so long ago it's a fool's errand to try to go after that.

So if I sit back and I try to think of a new group of users, who comes to mind? I mean, we have journalists, writers, authors, neighbor HOA's, and bloggers of all types. But what group type of group of people do we *not* have?

Families come to mind - specifically, I think of use cases for families. For example, I love the fact that my wife and I can share photos via iCloud and do albums and all of that fun stuff. We also set that up with my grandmother and her iPad so she can keep up with the kids.

But there's a limit to that stuff in terms of space, look and feel, and so on. But what if we were to be able to take WordPress and the REST API and build something that offered a type of family-based social network that one could run hosted or for pay (much like ORG and COM) that came with status updates, albums, comments, likes, location sharing, all of that.

I know there's already BuddyPress and AppPresser that offer a lot of this functionality -- but the question doesn't ask what options are there *for* this type of functionality, the question asks what group of people can we focus on? And I think there's an untapped market for families. Even if it's just group blogging or group status updates that we've yet to do.

My family and I use a third-party app to do it because we're a mix of Android and iPhone. Eventually. my kiddos are going to grow up and though I know other software is going to compete for market share of texting and emailing and groups and status and all the usual stuff of a social network, how neat would it be if I were to be able to set up one one that was completely self-hosted and that I could even extend myself for the needs of my family?

I don't know -- the answer feels kind of weak, but it's something that I do think about more than I'd care to admit because there's a need that I've yet to find an app that does it *well.* And I think WordPress has the ability to do if the functionality was properly built and marketed.

Reply
Joe

How's your online course going? What challenges have you had with generating interest, if at all?

Reply
Tom McFarlin

It's going well!

We're just now wrapping up the second class/course/iteration at the end of this month and then we're going to take a break for the remainder of 2016 to evaluate what went well, what didn't, and what we can do better.

After that, we're going to try to continue to release it in 2017 but in a slightly different format for customers (rather than doing it in batches).

In terms of generating interest, I haven't had *too* much of a challenge, but that's really by my own standards. I usually do a few blog posts, and some others will retweet or maybe mention it on their blog or in a newsletter and then I get sign-ups that way.

This time, though, for the first time even, I've been getting more and more people signing up for the mailing list who want to take it when it's available again. So I suppose word of mouth and the long tail of blog posts have helped with that.

I'd love to say that I've had this huge mountain to climb in order to get it to where it is today, but it's still very small (and I like it like that, for now) and it's sold well and, as best as I can tell, people have walked away from the course with positive words tos hare.

Reply
Josh Eaton

Big fan, first time caller.

- How do you fit writing into your daily routine? Are you zen-like at 5am or racing at 11:30pm to finish up a post?

- You write frequently about standards and best practices. How do you determine what really matters for your projects?

- What's your favorite thing in your office/workspace?

Reply
Tom McFarlin

> Big fan, first time caller.

Glad to have you on the show!

> How do you fit writing into your daily routine? Are you zen-like at 5am or racing at 11:30pm to finish up a post?

At this point, it's part of my daily routine and it doesn't really matter which blog you're talking about. It's become such a part of what I do during the day, that each morning I have this whole Type-A order of things I go through and one of them is writing.

I don't get up any earlier than my kids wake up (though I used to be a *super* early riser) and I don't normally stay up past midnight.

The way I see it: Writing begets writing. And if you're writing about what you're doing for a living, there's almost always something to write about. At this point, I'll be going along during the day and notice something that might make a good blog post. So I make a note in the notebook I have beside me (usually at all times) and then I get back to work.

So I'm not super zen about it. I'm just regimented, I guess.

The most challenging part is making sure I have content stacked for those periods where I know I'll be traveling. I keep a list of things specifically for times like that, though, and when it comes I'll try to just churn those posts out over the course of a few hours, schedule them, then manage the promotion of them via Twitter.

> You write frequently about standards and best practices. How do you determine what really matters for your projects?

I'd love to say any and all things matter for each post. That's the pie in the sky thing, though.

Instead, I do two things:

1. I look at how much time there is to complete a project,
2. I simply ask the client if they want certain things (like unit tests).

From there, I'll evaluate what's reasonable and then get to work. Sure, there are some things that really grate against my nerves when working on a project that I wish I could do a little differently, but that problem is on me and no one else.

But the projects that have the most flexibility, autonomy, and understand the need for the best practices, those are some of the best. Of course, it's not either/or, either. Heh.

I've worked on some projects that I got to employ all that stuff but the project wasn't that fun. Then I had some rush jobs to do, but the clients were fantastic.

Anyway, it all comes back to the two points above.

> What's your favorite thing in your office/workspace?

That's tough. All of my guitars are in here. My dogs are in here for at least half the day (even if they are asleep), and my computer and coffee maker are in here.

At the moment, though, I'd have to say that the combination of my TV, free weights, and some other fitness equipment are my favorite things in the office. I set a personal goal for myself at the beginning of the year regarding fitness and having those things within eye site has made it so easy to stay committed to that goal.

So right now, I'd have to say that it's fitness-related stuff. It's what keeps me from sitting (or standing) at my desk for too long and helps me work other muscles than just those in my hands when typing.

But asking me again in 6 months and I may have a different answer for you.

Reply
Ahmad Awais

Hey, Tom!

Huge fan! I have always had a great deal of respect for the work you do and your contributions back to the community.

So, here are a few questions:

— How much backlog do you have for posting daily on your blog? I know there is one ;) How many posts currently scheduled and ready to go (right now)?

— I have tried shorter posts, they didn't work well, I have tried daily blogging (have mixed feelings about it) — how do you measure the ROI on blogging daily as a WP dev. For me, I normally write long posts on my blog, I think each and every post on my blog should add enough value which is why sometimes I end up building a free plugin, a workflow automation tool or a sublime package while writing one single blog post. This is both good and bad. But I don't want to be writing just another blog — don't want to be a guy who has to say something about everything :P What are your thoughts about this? How do you compare daily short posts with weekly/fortnightly long posts?


— I have managed to somewhat move away from client work (which I think is a one-off thing — you spend time on it, a year or two later you don't even have a site to put in your portfolio coz. your client decided to abandon it, even if it was a $45K project) now I am more and more into building products and selling them (yes, I know the market is pretty saturated for anyone to jump in and start building products right now, but I am trying out my luck for the second time here and have been working on a giant project for about a year). That said, when I look at you, it's a complete opposite in your case. You seem to have started abandoning your products in the last couple of years and are moving back to the freelance agency model with Pressware (like 8Bit)? What's with that? How do you see it as a sustainable business?


— Any major career shifts we can expect from your end in the next two years?

— JS is eating up the world, its hard to choose a JS framework which will retain itself (if your product will take a year to be built), one and a half years ago, Backbone.js was it, and now no one even talks about it. I have been teaching Vue.js in a local startup, that's pretty cool as well. With all of that in mind, what do you think would it be like to a software developer 10 years from now? The speed at which our tech stacks are improving is already out of control. It's hard to keep up.

That'd be all. Other questions I wanted to ask have already been posted above.

Looking forward!





Reply
Tom McFarlin

> Huge fan! I have always had a great deal of respect for the work you do and your contributions back to the community.

Thanks so much - I really appreciate that! And likewise :).

> How much backlog do you have for posting daily on your blog? I know there is one ;) How many posts currently scheduled and ready to go (right now)?

Right now at this very moment, I just have 1 scheduled post; however, there are times where I have as much as 5. Though I have a backlog, I don't always just let it sit on autopilot.

There are times where I decided "Hey, I'd rather cover this instead of [whatever is scheduled] today," so that's what I do and I just bump posts around.

But yeah, as of now, there's one scheduled post. However, I already know it's going to be bumped and I'm going ot be writing about something different than planned tomorrow :).

> I have tried shorter posts, they didn't work well, I have tried daily blogging (have mixed feelings about it) — how do you measure the ROI on blogging daily as a WP dev.

I don't really much about the ROI on blogging daily. I do it because I enjoy it. Sure, an audience has built up and yes, it's helped garner work but that' not the reason that it started and that's not the reason I'm going to continue to do it.

I like to write and I like to do development so people able to bring the two together into a single site has been fun. But it's not the only site I write for now[0]. Will this second site take off? I've no clue. But i get enough questions about certain things and they are all things I enjoy talking about so I figured why not just write about them, as well.

I know this is a non-business answer to a more of a business-leaning question, but I simply don't view my efforts towards blogging as a business decision.

> For me, I normally write long posts on my blog, I think each and every post on my blog should add enough value which is why sometimes I end up building a free plugin, a workflow automation tool or a sublime package while writing one single blog post.

If that's what works for you and it's what you feel most compelled to do and it's what brings you the most enjoyment (and ROI :), then go for it. There's no single right way to go about blogging.

This particular approach is a lot of work so being able to churn out even two of these a month would be impressive, though I imagine one would be more common.

Of course, you can also de-couple the whole "building projects" from blogging, release them, and then cover them in short in a blog post. That's another way of looking at it.

But that's just it: It's all in how you look at it and it's all in how much you enjoy it. If blogging feels like a chore or something that you don't really want to do, then seriously look and see if it's something that you want to do or not.

> But I don't want to be writing just another blog — don't want to be a guy who has to say something about everything :P What are your thoughts about this? How do you compare daily short posts with weekly/fortnightly long posts?

I don't think about it too much because there are so very many blogs out there. Couple that with posts on Medium, things on Twitter, Instagram, Facebook, whatever other social networks people are using to share their content and it's going to be about near impossible to really say "This is the definitive rate and the definitive platform you should be using."

But when it comes to "writing just another blog," I don't think that can be possible. If you're unique, which you and everyone else, and you're offering your perspective on something then it's inherently going to be unique permitting your motivation is truly to write (and not just to get words out on the web).

Some people, sure, they have something to say about everything. That's what journalism is for. Others, they write about a variety of different topics and do so daily. Some posts are going to strike a chord with others, and some aren't.

That's okay.

Not every post has to appeal to every person. But the majority of the posts should appeal to most of the audience (it's the whole 80/20 rule, at play).

Finally, I don't compare daily short posts to weekly/fortnightly posts because they are usually two completely different types of posts.

It's like comparing short tip on how to do something versus a massive tutorial walking through how to build a program. That's really comparable. At least, perhaps not in this field (obviously, I'm only talking about a slice of the industry with which I"m familiar - nothing I'm saying the prescriptive to other types of blogs).

> I have managed to somewhat move away from client work (which I think is a one-off thing — you spend time on it, a year or two later you don't even have a site to put in your portfolio coz. your client decided to abandon it, even if it was a $45K project) now I am more and more into building products and selling them (yes, I know the market is pretty saturated for anyone to jump in and start building products right now, but I am trying out my luck for the second time here and have been working on a giant project for about a year). That said, when I look at you, it's a complete opposite in your case. You seem to have started abandoning your products in the last couple of years and are moving back to the freelance agency model with Pressware (like 8Bit)? What's with that? How do you see it as a sustainable business?

Pressware has been a sustainable business because I've an ongoing revenue stream of clients needing custom solutions ever since I first started the agency. I've been doing this for 6 years now which is longer than I worked for my last major company. Pressware pays my bills, it helps me pay my contractor, and it's allowing me to really take the time to build the life that I want to live.

I'm able to work from home so I can see my family more often, my wife is able to stay at home (though I've talked more about her in earlier posts) and we're able to do a lot of the things we want to do because of the freedom that working like this allows.

This doesn't mean I don't have a few products planned nor does *that* mean I'm looking to shift into the product business. It just means that there will be additional verticals into which Pressware will expand. Personally, I'm not a fan of using terms like that when I'm *such* a small shop.

But I have a clear mission and vision that we've worked up and we use to help drive our decision making in terms of the work that we do.

So in terms of sustainability, I don't *really* see how it's not sustainable. I've new clients, long term clients, and the work continues to come in -- I enjoy it, I want to form relationships with the people for whom I work, and I'll continue to strive for that.

> Any major career shifts we can expect from your end in the next two years?

I see none on the horizon, but who knows -- a lot can happen online in that period of time.

> JS is eating up the world, its hard to choose a JS framework which will retain itself (if your product will take a year to be built), one and a half years ago, Backbone.js was it, and now no one even talks about it. I have been teaching Vue.js in a local startup, that's pretty cool as well. With all of that in mind, what do you think would it be like to a software developer 10 years from now? The speed at which our tech stacks are improving is already out of control. It's hard to keep up.

I think everything will converge more and more towards JavaScript, but the sheer variations of JavaScript and its standard is a headache to even think about let alone try to understand.

To that end, sticking with the type of technologies other people are using, reading blogs, articles, and so on and basically trying to keep your finger on the pulse of what's growing and what isn't.

For example, all signs are pointing to React at this point. I've been toying with a few React technologies, namely React Native, in order to expand my skillset. That doesn't mean React will be around in 10 years, though. 2 years? Likely. 5 years? Probably. 10? I have no clue.

In the last 10 years, I've watched Ruby on Rails go from this magnificient framework for web applications that people love and adore to yet-another-framework that's out there. It's still great, but the web is constantly attracted to shiny new things.

And if you're going to base your career on shiny new things, then it's never really going to get deep enough to go anywhere because those shiny new things always fade.

There are exceptions: I think neat things are happening with Laravel, Yii2 seems to be doing some neat stuff in PHP, Swift looks like a really neat language, Angular 1/2 and React and JSX seem like a lot fun, too.

But I can't know what a decade will bring. That's the excitement of this field though. We get to constantly learn, be challenged, adapt, and move forward with new things.

Reply
Ahmad Awais

Thanks for taking out time to answer my questions. Those blogging questions, I guess I was not able to explain them well, I was trying to come at that point from your perspective i.e. You have written both short posts and long posts on your blog, which ones do you think have worked better for whatever criteria of judgment or motivation you have to write a blog.

Cheers!

Reply
Tada Burke

Is Mr. Robot a fraud?

Reply
Tom McFarlin

The degree to which I am a fan of this show will require that we set aside time for a face-to-face discussion over hours and hours to dissect it :).

Reply
M Asif Rahman Ⓦ

Tom, how you are this awesome? What are your secrets of being super awesome at so many things?

Reply
Mark Calkins

Tom, what are your biggest pain points running your own development company?

Reply