• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

officehours.fm

Putting WordPress to Work

  • About
  • Top 10
  • Episode Archives
    • Guests
  • Advertise
    • Previous Sponsors
  • Subscribe

Talking with Tom McFarlin, Episode #83

with Tom McFarlin on November 05th, 2015

Tom McFarlin
FacebookTweetLinkedInGoogle+

I don’t mean to brag, but I have great guests on this show. It never ceases to amaze me the awesome WordPressers that agree to come on the podcast. Tom McFarlin is no exception. Tom McFarlin, y’all!

I’ve long admired Tom for his commitment to sharing knowledge and passion for coding standards. He blogs regularly at tommcfarlin.com and is the brains behind the WordPress Plugin Boilerplate, an object-oriented code base for WordPress plugins. When he’s not busy giving away his knowledge,Tom runs a custom development WordPress shop called Pressware with partner Andy Adams.

Watch this episode

Episode Transcript

List of Resources/books

All things Tom McFarlin:

  • Pressware (Tom’s company)
  • tommcfarlin.com (Tom’s site/blog)
  • DevPractic.es (Tom’s funny tumblr)

Books:

  • Domain Driven Design (Eric Evans)
  • Patterns of Enterprise Application (Martin Fowler)
  • Head First Object-Oriented Analysis and Design (Brett D. McLaughlin and Gary Pollice)
  • Head First JavaScript Programming (Michael Morrison)
  • JavaScript: the Good Parts (Douglas Crockford)
  • The Clean Coder: A Code of Conduct for Professional Programmers (Robert C. Martin)

WordPress News

  • Post Status club by Brian Krogsgard
  • WP Tavern

Favorite online resources:

  • The Clean Code Blog (Uncle Bob Martin)

Episode Transcript

Carrie: Hello! Hello! Welcome to officehours.fm episode #83 where I’ve got Tom Mc”fricking”Farlin in the house today. Hey Tom! How are you?

Tom: Hey! What’s up? I am good. I am Mc”fricking” good.
Carrie: Have you ever had anybody call you Tom Mc”fricking”Farlin?

 

Tom: No. I’ve not. That’s a first. Which is good. Because the majority of people will say something about my last name where they think they are being all original and clever, but I’ve heard it since third grade. So it’s not original or clever and shows their lack of originality and cleverness in their adulthood.
Carrie: (laughs) Well I’m glad that apparently I struck on something original. Even if it might be annoying, I promise to never say it again.
Tom: No. Not annoying. I put up with all kinds of stuff on Twitter so this is fun.

 

Carrie: Sweet. Well we will get to some questions with Tom here in a second. For those of you listening live, so very glad to have you. You can ask questions of Tom either on Twitter with #officefm or if you’re watching via the Google app you can just use Q&A. I got that all jumbled. You’re smart people so I know you can figure that out. So we can roll on in. Tom? We were doing a little bit of pre-chat before the show. Of course I figure most people of the people that are tuning in already know Tom McFarlin and know who you are.  For the uninitiated, will you kindly tell us a little bit about who you are and what you do?

Tom: Yes. So clearly my name is Tom McFarlin.  You can call me Tom, or whatever else because that seems to be what all of my friends online do. Even here in this broadcast. My primary job is to the dedos Matt Medeiros’s primary website any chance I get as well as trolling him on Twitter. When I’m not doing that I run a small WordPress shop called Pressware. We do custom WordPress solutions for other people. That might vary between doing custom theme builds custom plugins or even building web applications on top of WordPress. It wasn’t until recently that people started to ask me what does the name Pressware mean? It’s a combination of WordPress and software. Because I believe that WordPress can be used to build software. I’ve written about this a number of different times and for those of you keeping up with WordPress you know that it is a super exciting time between the activity that is happening around WP-CLI as well as the REST API. This is only going to continue to be a stronger movement and that’s the direction that I’ve been building my career and I’ll continue to do so. That is what we do.

 

Carrie: Awesome! I think the first time I encountered you was actually on Matt’s podcast, the Matt Report and it was an interview from back in your Eightbit days.

 

Tom: Yes.
Carrie: We were really going to the archives on that (maybe three years ago or more).
Tom: Yeah. That’s been a while!
Carrie: Let’s see. We are already getting some fantastic questions. Gary Jones wants to know who is your favorite troll?

Tom: Oh wow! You know I would tell Gary that he would be because of the amount of comments that he will leave in a code review on Github. Except he is not trolling. The dude is providing arguably some of the best coding advice that you can get in WordPress. This is like a PSA. If you have a public repository on Github and Gary leaves comments, he’s not trolling. He is teaching and you need to learn. In terms of who is my favorite troll and by favorite that means the person who makes me laugh the most and the person who normally has the best (what is it that the old people call it? The best zingers?) That’s tough. I’ve got guys like Travis Northcutt, Andrew Norcross, Daniel Espinoza and Matt Medeiros. Every time I look at my mentions on Twitter, somebody is saying something to me. So I don’t know. Everybody’s awesome. I don’t think I have a bad troll and if I do they just blocked.
Carrie: There are some good ones and they’re all quick. Quick with the zingers. I think maybe we need a #Trollpress or something.

 

Tom: Yeah maybe I should fork WordPress and do Trollpress and let everyone hit me. Why not? Twitter is fast but could we be faster?

 

Carrie: There you go. While we are talking about goofy things you have a really fantastic “gif”y site.

 

Tom: Oh yes! Devpractices. I don’t know. I can’t tell there’s anyone in the group chat but I’ll go ahead and put up a link. It’s devpractic.es It is basically subtitled a day and  life of the developer. It is a one post a day tumbler that uses an animated gif and a title describing what’s happening in that gif. It basically explains what is like to do what we do. I should provide a disclaimer for those of you who’s sense of humor is different from mine. That is just in fun. I mean no offense by it. I do welcome submissions. You can see that in the top of the page so submit some devpractices. There is plenty of people that do. Although the queue is kind of big, so I don’t know when you’ll see yours.

 

Carrie: I submitted one once upon time. I don’t remember if it ever went up or not. I do enjoy going over there for giggles. All right. Now that we’ve got the fun stuff out of the way, we are going to talk about dull and boring things for the rest of this hour.  Hope you’re glad about that.
Tom: Serious Tom.

 

Carrie: All right. Here we go. Our first question (let’s set the stage). I take it you’re a humble guy. You do not do a whole lot of bragging on yourself, so I’ll just go ahead and add some brag for context. You have contributed a ton to the WordPress community and have a particular… oh what do the people say… you’re fond. You’re fond of the coding standards. You’ve done a lot to help educate and lift up the community in that regard. One of the things you put out there (this is Jackie’s question). What led to the creation of the plugin boilerplate plugin?

 

Tom: That’s a good question. Thank you for the compliments. Let me back up. So my background is in computer science. I had a focus of software engineering when I was in college. When I got out, I was primarily doing .NET work. By .NET I don’t mean the domain. I mean Microsoft’s framework. During that time I was exposed to a lot of different things. I remember when Microsoft was rolling out ASP.NET. MVC Framework. I got a chance to meet some really influential people. Like Uncle Bob Martin. If you haven’t looked up Bob Martin, I highly recommend it. Read a couple of his books. Similarly, I recommend Martin Fowler and Eric Evans who has done Domain Driven Design. So I’ve got a lot of experience in object-oriented analysis and design. When I was doing contract work (after hours or on the weekends) you know when it’s just you and your wife and you don’t have any kids yet, you have that kind of time.  I was doing a lot of Ruby on Rails and a little bit of WordPress. Then when I decided to go self-employed I was going to divide my time between Rails and WordPress. I found that I really did have a passion for WordPress for a variety of reasons…which we can go into later if anyone’s interested. But I noticed that when building things for WordPress there wasn’t really a consistent way of doing that. Although I would like to see there be a consistent way of doing certain things, I realize that by nature of what open source uses, there probably never will be. A lot of the work I was doing when I first started was writing custom plugins for people. I wanted a good object oriented base from which to start. That is what kind of seeded the plugin boilerplate. I don’t know how it began to garner attention. As it did, I began to try to make it more mature and continued to iteratively develop it and provide a little bit more documentation; etc. etc. It got to a point where people were asking more questions about why and what was the purpose of this class? Why is it structured this way versus how do I use this in a project. So in the beginning it introduced this learning curve. There was a level of complexity that (I don’t want to say I never intended it) but it required some background in object orientation. So that also kind of played hand-in-hand with my blog and some of the other things I was writing for…such as Tuts+. It’s mainly to just help educate other people on the way that I approach problem solving. That’s what computer science is. The thing is, I’m not trying to sit there and say that my way is the right way. I’m trying to say that here’s the way that I’ve approached it.  I’d love to hear your feedback, tweaks, comments, alternatives and whatever. As the plugin boilerplate began to get a little more rock-solid and it settled down a little bit, the amount of contract work I was taking on was exceeding the amount of time that I had available to work on boilerplate. Since then Devin Vinson is now in charge of it. I couldn’t be happier with the direction he’s taken it. It’s still a very active community. It’s still under development. This has freed me up to focus on the next big thing. Sometimes that’s projects for Pressware. Sometimes that may be something I want to do with my blog and sometimes that maybe some things I’m planning to hopefully do next year. I got a note book full of ideas. I just need time.

 

Carrie: Yeah it’s hard to choose which one of those to actually invest in when you got a lot of exciting ideas in your head. That actually rolls quite perfectly into a question that Gary asks. He asked about the next 24 months of Pressware (specifically what you have for the future). Before the show we were talking about whether you might possibly take that in agency direction or continue with the way it is. What are your thoughts there?

Tom:  To give a little background I have had an LLC since I was in college. That was because I was doing small contract projects and when I say small I mean a few hours each week. I do enjoy solving problems for people. I do want to continue to get better at it. Some people see their job as a 9-to-5 clock in, clock out and get a paycheck. I feel extremely fortunate that I was able to take a hobby and convert it into a career. So I get to spend the majority of my time (when I’m not responding to emails) I’m doing things I love! There is always something to learn and I’m meeting a lot of smart people. When I started the LLC, it went under a different name. The name was kind of…I’m not even going to mention it because it would be ripe for trolling,  so it doesn’t even matter. It’s the same LLC. If you look in the state’s database, it’s the same tax code. Anyway, when I named it Pressware, (building solutions for WordPress) I have been very slowly and deliberately trying to take this in a direction that I believe is what I want out of my career at least for the next 8 to 10 years.  I come from a family where my dad started his business when he was 40. My mom works with him and my brother will probably actually take over that business. It’s not a software company. It’s a commercial storefront company. I’m the nerd in the family. That company is 40 employees. I don’t have an aspiration to build 40ish employees. I don’t have aspirations to build a company like that. What I want to do is to basically create a small (what the industry calls an agency) of a handful of people who are doing very good WordPress work. People who understand high quality end to end, building solutions with WordPress. I want to be able to do various projects versus a single product because at the risk of sounding immature…I get bored if I just am working on one thing. New projects introduce new challenges…sometimes new problems…. sometimes variations of an old problem. Over the next 24 months, what I hope to do is to solidify the project backlog that I have for Pressware. There’s a relationship that I have with Andy Adams who is contracted to work with me right now and for he and I to continue to grow Pressware into a name that is more established. So when someone says Hey! I need to get some custom WordPress done. Who can I contact? I want Pressware to be mentioned or thought of in that way.  There are some other fantastic companies that are out there that are at that level. I respect them. Hopefully one day that’s where I’ll be.

 

Carrie: What would be the type of work that you would want Pressware to be known for? Any specific… like we crush it with eCommerce or membership. Any particular niche in there?

 

Tom: I love that question. I was actually just asked that earlier. I had a conversation with someone last Friday and it continued on into Monday. eCommerce sites are great but the way that I normally implement them is through using the expertise that other people have built. Like of course, Easy Digital Downloads. With membership sites, there’s a number of different plugins. I actually do have an idea for something I want to do on my own site with a membership site…but in terms of what we want to be known for…it’s for creating solutions that fit the bill for what the user needs. That’s really general I know. Because you can say what the user needs eCommerce? Can you do that? Yes we can. But we’re very interested in coming alongside you, understanding your business problem, understanding the domain and making sure that we’re not just getting something working for you. We are providing a well-engineered, well-architected solution that fits your business like a glove. I don’t want to ever turn over a project to someone and hear him or her say it works but if I could go back I would change this, that or the other. What I would rather them say is man this is the solution that I didn’t even know we needed. There’s a lot lot wrapped up in that…especially feedback loops and project management…but I want to be able to create the type of solutions for people that…It’s like when you download an app on your computer or phone. This solves that problem! It solves it perfectly. I use the word perfectly loosely a little bit. But that is what I want to be known for. Creating handmade very tightly coupled solutions to a business need.

 

Carrie: Cool! I look forward to seeing the next iteration. Andy? I had him on the show. Officehours.fm Episode 56. He is a fantastic, smart guy. By the way, as a little aside for you guys that are listening, I finally put up a very simple way to search for guests. If you go to officehours.fm/guests you can see just an archive of all the guests that have been on there. It can more easily connect you with particular people. Gary and Jackie were ready with questions today. We’ve got some good stuff on deck. Now speaking of people I’ve had a show…I’ve had Hello Tonya on.
Tom: Yeah!
Carrie: We talked quite a bit about the WordPress Developers Club (for people that missed that episode). She’s basically forming an educational model that is geared toward creating better developers that are following coding standards and maybe bringing some sort of a certification into the mix. The rumor on the streets that I hang out in, is that you aren’t involved with the WP Developers Club.

 

Tom: Yes. I am. To back up a little bit, the elevator pitch for the WP Developers Club is that it’s kind of an academy for those that want to get formal, intense (I hesitate that word) on how to become high quality WordPress developers. Tonya is at the helm of it. She’s an incredibly bright person and I play a very small roll in it. I’m on what is known as the advisory board. When she comes up with the documentation for courses, for lessons or for things like that, I along with a number of different people are responsible for reading that, tweaking that, adjusting that, making suggestions, things like that…or just saying hey! This is good to go. The reason that I am doing that is because I’m very big on education. This is why I do spend a portion of my time working with Envato which is Tuts+, because of the amount of education that they are pouring out into the internet. I know that this has the potential to devolve (not with us) devolve into a conversation about ThemeForest, WordPress and the usual stuff that you are used to hearing. I’m not interested in that conversation. When I have the opportunity to help educate other people or empower other people to educate people, I try to volunteer or work in that capacity. Because there has never been a time like this in history. WordPress Developers Club is something I highly recommend checking out. Go to the website. I’ve blogged about it as well. It’s kind of a summary and then you can get the deep all-encompassing information from the website. There is also a slack group with a number of different channels for depending on what it is you want to do. Tonya does a fantastic job of putting together live broadcasts and other material. There are some other high-profile people like Gary and Mario Peshev (I hope that I did not mispronounce that last name). Carrie? I believe you’re actually in there as well. There are a lot of very passionate people involved behind-the-scenes in order to help others get better at this dream that they’re pursuing or whatever it is they’re aspiring to be.
Carrie: Cool! You get 1 million Internet points for helping teach others.

 

Tom: Yes! Where do I cash those?

 

Carrie: They’re kind of like bit coins. Bit coins that don’t work. If you give me your mailing address, I’ll send you some bubble gum.

 

Tom: Oh ok!

 

Carrie: Possible two pieces. One little nugget I did want to extract from there because I know a lot of my audience are freelancers. When it comes to freelancing, you get in your own head. Most of the time, we’re working by ourselves as opposed to a co work environment. Like you said, you’ve got this little notebook full of ideas. We’re kind of jotting things down as the ideas come. One thing that I really love that Tonya did, is create that advisory board. Not that it would even have to be so official as what Tonya’s done…I guess as encouragement to the people who are listening to the show… bounce your ideas off of other humans…even if it’s an informal process. There is so much value in that. I’ve had things that I think that were really fantastic idea… and my family actually. I come from a family that likes to invent businesses. We will email back and forth. Hey what about this? I’ll email back…dude! Somebody launched that service three years ago. You’re late to the party. There is a lot of value there.
Tom:  I would push back against that and here’s why. When I say to people I’ve got this idea. What do you think? There are a handful of people who I will talk to and I don’t mind sharing whom they are in a little bit if it’s relevant. Every now and then you get that person who says well this already exists in x, y, and z format. I think well how times have you gone to the grocery store and seen how many brands of ketchup there are? So like unless you’re creating the exact same thing, there’s room for differentiation. I can’t speak for other countries but in the United States we have the ability to create similar though different products and compete. Idealistically the winner wins, but not always.
Carrie: Yeah. You’re right. There can certainly be competition in the space. But somebody already has got 90% market share, you’ve got to look at what you’re going to do to make a difference.

 

Tom: Yeah. If they’ve got 90% I would probably…I don’t know. That might be an unwise decision to pursue trying to take that down. You’re not going to make the next iPhone. Samsung.

Carrie: Yeah. That’s exactly what I was thinking. They tried.  So getting back to some technical questions or developer oriented questions, Jackie asked for those of us who come from a procedural background (that’s my background) there’s a struggle of adapting to an object-oriented approach. Do you have any advice or like jumping into learning that approach?

 

 

Tom: Yes. I will tell you that I don’t think it’s necessarily a good idea at this point as a beginner to jump into WordPress core. I doubt that’s what was on your radar. But there are some object-oriented places in WordPress. For a number of reasons that aren’t worth going into right now, classes in PHP (especially in WordPress) are treated as glorified name spaces. Name spaces is a object-oriented word and it represents basically a logical grouping of classes. In terms of ways to get familiarized with object-oriented programming (if you’ll bear with me for just a minute) I want to see if there is a book that’s available, or still available. It’s one of the best series. Some people may laugh and say this book looks like it’s a bunch of humor or whatever. I cannot recommend it enough…or even this whole series. There is a book on Amazon. If you Google Head First (two words) Object-Oriented Analysis and Design. It’s geared towards beginners. It’s super easy to read a chapter a night or work through the examples. These aren’t boring examples. You are not going to be writing these examples that are going to put you to sleep and make you wonder why I ever did this? No. No.  You’re going to understand what classes are. You are going to understand what properties or attributes (depending on where you’re coming from) are. You’re going to understand phrases like constructors and public/private and protected methods. You’re going to understand things like polymorphism, which sounds like a word that a scientist would use in a biology lab, but it’s not a hard concept to understand. That’s something programmers…gosh we do it so much…we use these words that sound so big for the most extremely simple concepts. I’m not saying that as someone who’s done object-oriented programming for that long. I’m saying that because of things like inversion of control, or dependency injection. These sound like such medical terms. In reality it’s just the way you’re passing data around. That’s what it comes down to. The reason that I like object-oriented programming is because it fits my conceptual model of how software should be built. When a program begins running, via a WordPress plugin or maybe it’s something via an executable binary I have running on my machine. In my head I have this conceptual model (I realize I now sound crazy talking about things spinning around my head) I have a conception of all the pieces that are moving and how they’re talking to each other. It also helps to make things a bit more manageable, a bit easier to follow and I think it helps organize your code a little bit better. There are arguments against everything I’ve said. I acknowledge that. I’m not trying to preach object-oriented programming. I’m a fan of it. I use that and I think that if you’re very interested in learning just the basics of it lookup Head First Object-Oriented Analysis and Design. That will help you take a problem, analyze it and then design what the classes will look like. Like Forrest Gump, that is all I’ve got to say about that.

 

Carrie: (laughs) If one of the folks that is listening live wants Tweet out a link to that book it would be fantastic.  I will re tweet it. I’m not fast enough to look it up and tweet it all the same time. I want to take in all that good stuff that Tom is sharing. So shifting gears a little bit, did you happen to hear the Chris Colyer that Alisa Park put on. The state of front end development session yesterday?

 

Tom: Sadly no. I did not. You know? When you sit down in the morning and you see your feedly burner (or whatever feed reader you use). It’s just…Oh my gosh! How did this happen between midnight and 7 am? I saw it was coming and wanted to tune in but I did not get to do so.

 

Carrie: You know what? There’s no public flogging that is going to happen here.
Tom: Yeah. You say that but I’m going to signoff this and people…there’s going to be a new website up about it in like 40 minutes.
Carrie: Well they’re going to throw eggs at me too for what I’m about to say. There really wasn’t anything earth shattering in that session. The thing that I did take away (I actually do have a question for you that’s following up on this) but they started it off by naming 1 billion things under the sun. Like does this fall under the title/umbrella of front end developer? HTLM. Of course. CSS. Of course. On down the list they would go until it got a little bit more hairy. Ok. Like JavaScript. How about these Javascript frameworks? They came up with this mile long list of things that could apply to a front end developer. My take away was there is no one definition for a front end developer. It can look like a lot of different roles. My question to you that is coming out of that (if I can find it back in the Twitter stream) it really lost it’s impact when I had to stop and search Twitter. Jackie asked what makes a WordPress developer stellar in your opinion? It could be back end or front end regardless of which technology you’re feeling proficient in. What makes them really stellar?

 

Tom: Ok. I’m glad she qualified it by my opinion. So let’s kickback for the next 90 minutes, chat and wax philosophical about.

 

Carrie: Let’s do it!
Tom: I’m kidding. What do I consider a stellar WordPress developer? Is it just a stellar WordPress developer or a stellar front end WordPress developer?

 

Carrie:  I framed it with front end but it could be of any sort of developer.

 

Tom:  Ok. I will try to start broad and then narrow in on front end. I’ll probably talk about some backend stuff because if I take that quote out of context, it’s going to sound very bad.  Server-side… I will probably take in some server-side stuff because that’s what I like. That’s what I have a strong interest in. So a stellar WordPress developer. They have a strong understanding of the WordPress coding standards. This includes the PHP coding standards, this includes the JavaScript coding standards, and this includes even a tangential understanding of the PHP standards that are out there. These are available on Github. If you just Google GitHub and PSR you’ll fall down the rabbit hole of all things for the PHP standards. The WordPress standards are little bit different. You’re building things for WordPress. Therefore, you should be following the WordPress coding standards. So there needs to be an understanding of that.  The next thing is that there needs to be a passion to learn or to constantly learn because WordPress moves fast! People talk about technology moving fast. We all know that. But the speed at which WordPress moves is something that should not be ignored. I recommend reading sites like Post Status. I recommend if you have the financial ability to become a member so that you can get these emails dailyish that Brian puts out. I recommend reading WP Tavern. They will keep you abreast of the things that are happening in Wordress and in the WordPress economy. You need to know what’s going on with the toolset that you’re using. Getting a little bit deeper, I would say that you need to be able to distinguish between what would go in a theme (which should generally be presentation) and what would go in a plugin (which will generally be functionality). There is some overlap sometimes. This is probably not the best podcast for that. As far as front end is concerned, you’re talking about JavaScript, CSS3, markup, HTML5 and the CSS Preprocessor that that has won over is Sass. You can find that on the web. I believe it sass-lang.com. It’s like a super set of CSS. It makes it easier to write CSS if you’re already an expert. If not; don’t sweat it. You can learn it but learn CSS first. For JavaScript; the JavaScript library that you will most likely need to be familiar with is JQuery. There’s some other ones that are used for WordPress. I would not recommend trying to jump in and understand that until you have a very deep understanding of JavaScript as a whole. The two books that I recommend for learning JavaScript are Head First JavaScript Programming.  Once you completed that book, read JavaScript: The Good Parts by Douglas Crockford. It’s a super skinny book but incredibly dense material. Not dense and boring but dense and you will walk away with a very deep understanding of JavaScript. As far as HTML and HTML5 that to me has been something that I found to be pretty easy to pick up. If not, there are plenty of great materials on the web for that. I’m sure you can find recommendations for that. I think it’s important to study other people’s code. I know underscores is a pretty big thing. There’s a pretty popular theme on the web… on GitHub right now. It’s kind of a starter theme. I am probably going to get a little flack for this. I not a huge fan of starter themes but if you’re someone who just getting your feet wet, then taking a look at underscores will not hurt you.  The reason I’m not a fan of them is because when I sit down to start building something for someone else…a single starter theme…I end up yanking things out and that is creating more work for me then if I start from a clean slate. As far as the server-side goes, you will need an understanding of PHP. Now you can learn that by poking around other people’s code and the trying things and Googling. You’ll come across stack overflow or a similar site. Please! If you copy and paste code (which I really do not think you need to be doing) but if you do that, take time to understand what the code is doing. Do not just paste it in and say oh! It works. I built this. No, what you did is you took something else that someone else wrote, dropped it in your project and now you have functionality. When you begin to understand how things in PHP work and how functions work you are going to begin thinking in terms of PHP. When you’re faced with this problem again in the future (you will because problems consistently arise) you will know oh! This is a perfect place in which I should be using something like you know the string comparison function or this should be somewhere I need to be using the array unique function things like that. Then you have the WordPress API. There’s multiple WordPress APIs. I am kind of using that as an umbrella term. There are a number of those (all of which I think you should understand) these include things such as the settings API, the options API, the Theme Modification API, the Metadata API, this includes the new Term Meta API. It sounds more intense than it really is. If you’re new, I do understand the learning curve that is presented with this but if you’re used to post meta, user meta, comment meta and post meta, then term meta is not to be any different for you. Then you need to understand the relationship between when you’re writing code (like I’m going to add some metadata to this user) understanding how that’s connecting to the database. When you see how the data flows from the database up through WordPress, up through the code that you’ve written, up to the templates that you have written, styled with your CSS and tweaked with the behavior of your JavaScript; you have got the full picture. I think I probably just unloaded a lot of information really quickly. If I inundated you with information I didn’t mean to do that. Luckily, this is recorded. Hopefully there can be some bullet notes or something like that if you go back.

 

Carrie: Yeah. We are going to go back. I’m going to rewind this 30 times to get all the books that you have said. Joe wants to know if you have an Amazon referral code for those.

Tom: I appreciate it Joe. I don’t. Just buy the books and pay the authors for their good work. I appreciate it…but a couple of pennies here and there…no big deal.

Carrie: I think he was trolling more than he was wanting to give you his pennies.

 

Tom: Joe? Never tweet again.

 

Carrie: I don’t know. Joe is  a pretty straightforward serious guy. He probably wouldn’t troll. We’ve got Jessie trolling. I’m actually shocked at the lack of trolling by Matt. He might have had to run off for an emergency phone call or something.
Tom: I know people who know people who may have done something to people that I know like Matt so that he is not around.
Carrie: Interesting.

 

Tom: Watch your back everybody!

 

Carrie: So if we read on WP Tavern tomorrow that there was a kidnapping in the WordPress space and Matt was hauled off in a blindfold to a non-disclosed location for a random hour…it didn’t have anything to do with the show.

 

Tom: Matt is the only person in WordPress that could technically be kid napped and…he might be napping. I don’t think the guy does much. It could be any those.

 

Carrie: Oh! It’s good stuff. Ok. So you brought up a little of the point about the difference between themes and plugins and what belongs in which. You said that was maybe not a good conversation for this venue. I’m telling you it is a good conversation. We’ve talked about this on the show before. I blogged about it. When I first started working with WordPress, I learned to just toss everything into functions.php. As I matured in my code, I now understand the importance of splitting out some of that functionality. Can you elaborate on that?

Tom: I can because I think that’s something that everyone starts out doing. Oh functions.php! This is the place in which I can put all my own custom functionality. I would say if there’s an analogy in object-oriented land we would call this a god class. A god class is an anti-pattern. We use the prefix anti where we are normally saying “I am against this”. So with WordPress themes, what comes to mind when you hear the phrase WordPress themes? Normally, it’s I want a theme that makes my site look good. No one says I want a theme that’s going to make my site do something cool. I need that SEO theme. I need that cashing theme.  That doesn’t make any sense. You want to put makeup on or you want to out on a nice suit and tie on. You want to present your best to the audience of the Internet as you walk into that amazing party that it is. There’s people in the corner who have been drinking way too much. So a theme in my opinion is primarily the way your site looks. That means it should be primarily composed of markup, template tags which which is WordPress vocabulary for ways to talk to WordPress that allows you to render things like your title, your post title, your page title, your categories, your comments, things like that . It also incorporates your CSS and your JavaScript as necessary. Here’s the thing. There are types of WordPress themes that are beginning to emerge that we’re hearing referred to as app themes or application themes. I’m going to defer to that. If you want to rope me back into that, that’s fine. That is not the direction I want to take this conversation because I think it might be confusing. Think of themes as presentation. Think of plugins as apps for WordPress. Apple was really probably the first to popularize the word app (short for application) short for…when you think about the word application it’s easy to think about it in terms of computing, but think about it in terms of a broader context. When you’re in math class in high school, or when you’re in math class in college and they say what is the application of doing the integral of this function? Well it’s to find the area under a curve. That is the application of this mathematic. What’s the application of this physics? So it’s just the way of finding a solution to doing something. That’s what apps are. That’s what plugins do. They are a way…ok. I need a way to optimize the search engine optimization of my posts. I need a plugin for that or I need an app for WordPress for that. So you go and you get whatever the most popular one is (which right now I think is called Yoast SEO) I think they changed the name from WordPress SEO. Maybe you need something that allows you to stick categories at the top of the category archive page. So you go and you get your category sticky post plugin. So sometimes plugins are small and sometimes they’re extremely large. This is normally where a debate about Jetpack will ensue. I’m not getting into that. Sometimes you want to do something that allows you to write comments back via email. That’s where Postmatic comes in. It’s a plugin that you install that allows you to manage your comments from your e-mail inbox rather than from the dashboard of WordPress. So plugins are more functionality. This doesn’t mean that they can’t have presentational aspects. For example, let’s say you want to display a counter on your website and a person needs to set a time of hey! In one hour and 15 minutes, something needs to happen on the front end. So maybe they want to show the counter on the front end. You’ll need to write a little bit of front-end code to be displayed. But a plugin is not a theme and it shouldn’t be. There is a little bit of blurring in the lines in that in plugins (I’m not saying you’ll never write front-end code). In themes I’m not saying you’ll never write back end code, but for all intents and purposes there is a separation of concerns between those two.

 

Carrie: Excellent. I like how many things there are that you’re not going to get into. You are the ultimate avoider of even coming in the neighborhood of WP drama. Fantastic! Gary has a really great question. I have to admit, I was about this myself. But he wants to know how long did it take you to find a t-shirt that was the exact same shade as wall that you’re sitting next to?
Tom: You know Gary? I need to alter your question a little bit. My family and I just moved into a new house.

 

Carrie: Let me talk to you real fast. I don’t believe that there was a filter around Gary’s question for you to change the output.

 

Tom: Well Gary has changed my code enough to where I feel like this is my chance to change his question. So it’s open source and I am putting in a filter and I’m going to be changing it. The question is not how long did it take for me camouflage myself against the wall? The question is how long did it take me to find a house that matched my shirt? The truth is that I am set up in a bonus room above the garage with a make shift office. I have my computer, microphone and coffee mug set up on a table against a slanted wall and the wall is white. I’m sorry. The roof is white. The wall is this blue and my shirt is gray. I don’t know if you are colorblind but that is three colors so I don’t  completely blend in. But to answer your question this morning I got up and I noticed my calendar I was coming on office hours. How can I coordinate with my environment? Because if Gary Jones is going to be present in that chat I need to make sure that I am presenting myself in a way that will not only be appealing but will invoke curiosity.
Carrie: Well done sir! Really what it does is just highlight your face because we can’t see the rest of you. You are camouflaged into the wall so it’s excellent. I’m glad you found a house to match your shirt.
Tom: Yes. I could be sitting outside but it’s raining. I don’ think I’d be on the podcast long if I was outside.

 

Carrie: No. It’s not good for the computer. Are you familiar with the Genesis framework at all? Have you used it?

Tom: I have actually. I’m working on project right now that uses it. In terms of being familiar with it (as have I ever heard of it) absolutely! Have I done a lot of work with it? No. I’ve seen the diagrams, I know how many hooks it provides. I’ve seen the diagrams of how you would hook into it and where you can make your changes and things like that. I don’t have any bad things to say about Genesis.
Carrie: All right.

 

Tom: They paid me $700 to say that.
Carrie: Are you kidding? $700 bucks? They only paid me $600.

 

Tom: No. $700 man. It’s because I blend into my wall.

 

Carrie: Yeah. I chose my outfit wrong today. They recently put in their latest release. They included a lot of accessibility enhancements; things like skip links and better drop-down menus. What are your thoughts on accessibility in WordPress? Its current state and what’s being done to push it forward.

 

Tom: Based on the way that you asked question, I would say that I’m a huge fan. We need to make the web more accessible. When you’re powering a quarter of the web you need to make sure that (23% if we need to be precise). You need to make sure that the things that you have put in place are going to be as readable or as accessible by as many people as possible. But here’s the thing. WordPress can’t do it alone. Your work has to play a role in it. Which means you have to get educated in it. I am not an expert on accessibility. I tend to be a pragmatist in that if a job that I’m working on requires knowledge of this then I will go learn it. Sometimes I’ll even go consult with someone who is an expert. There are people in WordPress that are experts in accessibility. Tweet out about it. You will find someone very quickly. I will say this. I don’t think that every single theme or every single project needs to be accessible and here’s why. I don’t want to be carried to the stake and burned alive. When you’re building a custom solution for a client and they are a small team or they’re an individual or someone like that and they don’t have accessibility needs, that is something that is not needed. Similarly, if you are building something for someone who is a native English speaker, you don’t need to internationalize your code for the sake of translation if it’s never going to be translated. So you have to know your client and/or you have to know your audience. So accessibility is good. Don’t do it for the sake of doing it. Do it for a good reason. Same with internationalization. Don’t do it  “just because”. Know what it is that your building, for whom your building and then be practical about it. Don’t dismiss accessibility. Do what you can to educate yourself.
Carrie: So I hear what you’re saying. Let me argue with you just a little bit. Take internationalization. If you go into write a string, do you go ahead and wrap it in translation function because you’re just used to doing that?

 

Tom: It’s a trap. The truth is that it is almost a habit for me because so much of the work I’ve done prior to these custom solutions for people were in themes that were sold on pretty wide markets. That was just part of what I did. So when a project starts out, what I will do is ask the person, ask the client or whoever it is I’m talking to, will this ever need to be translated? If not, then I won’t use double underscore or underscore e or any of that. But I will say that it feels funny not use it. But using it for the sake of using it is not a good reason. You know? I don’t think that using it for the sake of just using it when it will serve no purpose in the long-term is not a good reason for using it. I know people will argue with me. I am completely fine with that.

 

Carrie: Ok. I was going to keep on arguing but I’m not going to get into that. We’re going to do a separate podcast where we just it into everything.

Tom: Ok.

Carrie: We’ll just have a throw down. We’ll bring all the trolls and popcorn.

Tom: We will bring that. I will not match my wall. I will put paint on under put my eyes and I will work out.

 

Carrie: (laughs) On the show?

 

Tom: Gosh no! What kind of show are you trying to run?
Carrie: I don’t know. You just said I’m going to work out.

Tom: No. I’ve got to get big if we’re going to be fighting.
Carrie: Yeah. Got to get ready. Do some yoga. This is a total non sequitur, but on the WordCamp US schedule, it’s got on the first day of WordCamp, from 8 to 9 is registration and yoga.

 

Tom: Are you kidding or are you being for real?

Carrie: No. I’m being completely serious. Now I know that Matt Mullenweg is a yoga fan. I don’t know if that’s where that comes from. They’re were two things that I didn’t expect to see. I was expecting maybe registration and coffee or registration and mix and mingle. But it’s going to be a registration and yoga apparently. So who knows?

 

Tom: Well I will say…this will probably come back to bite me. I try to do yoga about once a week. It’s not my primary form of exercise. I think we talked about this before the show. I’m a runner. That’s my go to thing. I do think yoga has its benefits. I do think that it helps with the usual stretching and it actually does have benefits for your muscles and all that but I think it’s going to be very weird…I don’t know how weird it’s going to be…but it’s going to be something else. It’s going to be an interesting thing…to register and then hop into yoga class at WordCamp US.

Carrie: You know? I think I’m just going to be the troll that periscopes it.

 

Tom: I’m sorry. Could you please repeat that? You’re the troll that what?

Carrie: The troll that periscopes the whole thing.
Tom: Oh yeah! Periscope from the front because from the back if people are doing weird moves like downward dog, it’s not going to be good.

 

Carrie: I mean somebody from the standards committee will be on me in a hurry. We’ve only have a few minutes left here together. You already named off a ton of resources. But if you wouldn’t mind sharing, what are your go to podcasts? How do you find out about these excellent books? What are your sources?

 

Tom: So is for in terms of podcasts, this is going to be very unimpressive. I actually don’t listen to any WordPress podcasts now that I’m looking at it. I’m looking on my phone to see what I have. I have been listening to a few episodes of what Brian’s been doing over at Post Status. Occasionally, I’ll listen to the Distance Podcast. Basecamp  has 37 signals. The podcasts that I do tend listen to are like business minded or like consumer minded. Making smart decisions in the marketplace around things like that. Probably putting the officehours.fm is probably… I think the audience probably just signed off. In terms of finding out about books…I try to keep my finger on the pulse of what’s coming out. All of the books that I recommended; I’ve read. I have a shelf full of other ones I would recommend. All of those were read before having kids. Right now I’m reading a lot of things after they are asleep. To be honest right now I am reading the Star Wars Shattered Empire comic books. I am not the book nerd that I might be coming off as. I think that it’s important to A) take a look at what’s going on in in the kindle store. B) take a look at what’s going on in the iBooks in the iTunes store. It’s kind of weird that we buy books and movies in iTunes (but I digress).
Carrie: We are not going to get into get into that.

 

Tom: No. I’m not going to. Thank you. See what other people in WordPress are reading. There are some people who are going to be reading some really interesting things. This is why Twitter is so great. This is why blogs are so great because you can just ask to comment. Hey! What are you reading? Sometimes you can email someone. Would you just do a blog post about what you’re reading and why? What are three books that you recommend and why? In terms of how I find them, it’s usually staying up-to-date on blogs. Staying up-to-date on what’s in the Kindle Store. Also it’s also a matter of seeing what other people recommend. Very rarely (but sometimes) if you ever visit product time on product ime.com. You will see people in the comments talking about how did you get an idea for this? What did you use to build this. They’ll talk about blogs and materials and things like that. There’s also some educational apps that show up product time every now and then. That’s another one of the places that I try to check daily.

 

Carrie: Nice. Well if anybody who is listening to the show does not walk away with at least one resource to go check out…you were multitasking and not really listening close enough because we got a ton of them. Just a quick reminder before we go. If you want to subscribe to officehours.fm, you can do that at officehours.fm/subscribe. All that means is that you get one email a week. It’s a reminder of the show either on the day or the day before the show. I promise no pestering. I also do have transcripts available thanks to Patte Shetler. You can find them over at officehours.fm along with the full archives of all past episodes. So Tom? Where can people find you to either throw the eggs, burn you at the stake, troll you or just say you’re awesome!

 

Tom: Most of the things that you said at first, I will gladly accept. The other things I will not. I am very hard-working. I want help other people and I want other people to do the same. So with that said, you can find me on Twitter @tommcfarlin. You can find me on my website TomMcfarlin.com. I’m always back and forth about Instagram. You can find me on there. My address is @Tom.Mcfarlin. I guess that’s it. I’m not really in all the major social networks. I’m one of those that might Instagram and then go private tomorrow. I don’t know. That’s where you can find me. Honestly, the primary place to reach me is on Twitter and my blog. I’m there every single day. I prefer to be reached by email. Right now, slack is the hip/cool place. I’ll get emails from random channels of people saying hey! Are you there? I’m not there. I’m in my inbox or on Twitter. So try to reach me there.

 

Carrie: Awesome! Thanks for coming on the show and sharing from your wealth of wisdom. Yeah. We are going to have to talk about all the things that we didn’t get into today in a separate episode.

 

Tom: I would love to come back. I know that you asked me to do an altro commercial.I don’t have any cheesy music to play. But I will say in my and mostly radio friendly voice or most theatrical voice I will say: Hello everybody! Thank you for tuning in today to officehours.fm. This episode has been brought to you by Matt Medeiros who doesn’t care about anything, who has nothing to do with anything and he has asked that if you have listened to this episode, please send him a random Tweet of the most random picture that you can find either on imager, Google search or anything else. Thank you very much for your time. Ok. So I guess that should do it for officehours.fm.

Carrie: Well dang! I can’t sum it up any better. With that, we will wrap episode 83. Folks, we will see you all next week. Bye!

 

Tom: Bye everybody. Thank for coming. Thanks for having me Carrie!

 

Primary Sidebar

Proudly powered by Liquid Web Managed WordPress Hosting