The Freelancers’ Show 063 – WordPress with Curtis McHale
Panel Curtis McHale (twitter github blog) Eric Davis (twitter github blog) Jeff Schoolcraft (twitter github blog) Reuven Lerner (twitter github blog) Charles Max Wood (twitter github Teach Me To Code Rails Ramp Up) Discussion 00:37 - Reuven Lerner Introduction 01:10 - Curtis McHale Introduction WordPress The Coderpath Podcast 01:57 - Consulting, Tools & Apps fvrb (Curtis’ Ruby Brigade) Billings Pro Ronin Trello Evernote Dropbox Evernote Hello Evernote Skitch Napkin Mailbox IFTTT (If This Then That) 10:21 - Ronin FreshBooks Harvest Harvest Online Invoicing & Time Tracking: Curtis McHale Multiple Currencies Marketcircle: Daylite Complete Review of Daylite 4: Curtis McHale 13:16 - Customer Relationship Management The Trello/Evernote Combo Highrise Salesforce Curtis’ Trello Gist Podio 15:50 - Trello 17:18 - Booking Out Work 18:38 - Consulting in WordPress 21:33 - Getting Leads & Establishing Connections 23:15 - Application Development with WordPress Tom McFarlin 25:51 - Advantages of WordPress Joomla/Mambo Drupal 29:18 - Dealing w/ new WordPress Versions Security Issues Metasploit 34:39 - Resources curtismchale.ca WP Theme Tutorial Become a WordPress Development Professional by Curtis McHale sfndesign.ca Picks IRS Cracks Down on Independent Contractors - What it Means for Your Small Business (Eric) WordPress Core is Secure - Stop Telling People Otherwise (Eric) One Tab Chrome Extension (Jeff) Arrested Development (Reuven) ridiculous_fish (Reuven) zsh-syntax-highlighting (Reuven) Hanping Chinese Dictionary Pro (Reuven) iOctocat (Chuck) ioctocat on GitHub (Chuck) Kinesis Freestyle Keyboard (Curtis) Unfinished Business Podcast (Curtis) The Trello/Evernote Combo (Curtis) Next Week Social Media Transcript [Hosting and bandwidth provided by the Blue Box Group. Check them out at bluebox.net.] CHUCK: Hey everybody and welcome to the Freelancers Show Episode 63! This week on our panel we have, Eric Davis. ERIC: Hello! CHUCK: Jeff Schoolcraft. JEFF: What's up! CHUCK: I'm Charles Max Wood from DevChat.tv. We also have, Reuven Lerner. REUVEN: Hi there! CHUCK: We also have a special guest, and that's Curtis McHale. CURTIS: Hey! CHUCK: So I'm going to have Reuven introduce himself first, and then we'll have Curtis introduce himself. REUVEN: Sure! So I'm a web developer mostly doing Ruby on Rails and Postgres stuff; I've been freelancing since 1995. I would say I divide my time between actual programming and consulting, and then I'm off a lot of training as well; I teach a lot of courses. And I live in Israel, which you might not figure out from my accent. CHUCK: Yeah, we have 3 time zones, 4 time zones represented on the show right now. [Reuven chuckles] CHUCK: And Curtis, you want to introduce yourself? CURTIS: Sure! I'm Curtis McHale. I actually started, I guess many years ago now, doing some frontend Rails and Ruby stuff. But now, I pretty much only do WordPress work. That's what I do; I've been building sites and stuff since 1996, I guess. That's when I started dabbling in it in amidst to have a psychology degree. CHUCK: Yeah, I have to say I remember listening to you and Miles on the Coderpath Podcast. CURTIS: Yeah, that's when I was doing my list of it, like I was saying earlier just before the show, I went to Mountain West and did a bunch of stuff, but I did not come in as frontend Rails so I needed to pay the bills and that's what I did. CHUCK: That makes sense! [Curtis chuckles] CHUCK: So I'm a little curious, we got you on here to talk about WordPress, we also got you on here to talk about your consulting in general, so how do you wind up making that transition? Did you just take the work that was coming in, and that was WordPress? Or, was there more to it than that? CURTIS: Well,
[Hosting and bandwidth provided by the Blue Box Group. Check them out at bluebox.net.] CHUCK: Hey everybody and welcome to the Freelancers Show Episode 63! This week on our panel we have, Eric Davis. ERIC: Hello! CHUCK: Jeff Schoolcraft. JEFF: What's up! CHUCK: I'm Charles Max Wood from DevChat.tv. We also have, Reuven Lerner. REUVEN: Hi there! CHUCK: We also have a special guest, and that's Curtis McHale. CURTIS: Hey! CHUCK: So I'm going to have Reuven introduce himself first, and then we'll have Curtis introduce himself. REUVEN: Sure! So I'm a web developer mostly doing Ruby on Rails and Postgres stuff; I've been freelancing since 1995. I would say I divide my time between actual programming and consulting, and then I'm off a lot of training as well; I teach a lot of courses. And I live in Israel, which you might not figure out from my accent. CHUCK: Yeah, we have 3 time zones, 4 time zones represented on the show right now. [Reuven chuckles] CHUCK: And Curtis, you want to introduce yourself? CURTIS: Sure! I'm Curtis McHale. I actually started, I guess many years ago now, doing some frontend Rails and Ruby stuff. But now, I pretty much only do WordPress work. That's what I do; I've been building sites and stuff since 1996, I guess. That's when I started dabbling in it in amidst to have a psychology degree. CHUCK: Yeah, I have to say I remember listening to you and Miles on the Coderpath Podcast. CURTIS: Yeah, that's when I was doing my list of it, like I was saying earlier just before the show, I went to Mountain West and did a bunch of stuff, but I did not come in as frontend Rails so I needed to pay the bills and that's what I did. CHUCK: That makes sense! [Curtis chuckles] CHUCK: So I'm a little curious, we got you on here to talk about WordPress, we also got you on here to talk about your consulting in general, so how do you wind up making that transition? Did you just take the work that was coming in, and that was WordPress? Or, was there more to it than that? CURTIS: Well, I guess I've started with WordPress. And I went to the local Ruby Brigade mainly because it was the only programming thing I would hear. Miles and I nailed Coderpath talked a bunch of times about how a lavenous little tiny town and there's not a lot way out here; some would doubt if we had no traffic or good traffic, it's like 2 hours from Vancouver. And there's not a huge text scene out here, really, especially in kind of WordPress with what I did. So I showed up to their local Rail Ruby Brigade and they said "So, what are you doing in Ruby?" and I said "I hear it's a web language, doesn't 37signals build something on it?" [Chuck laughs] CURTIS: That's like I literally had no idea; I had stolen my wife's Mac because I had like a really old PC tower, and we set up on Rails! CHUCK: Awesome. CURTIS: Yeah, so I did some of that, getting connections. And then WordPress just kept becoming more and more what I did and not Ruby. So I didn't sweat it. CHUCK: Yup. I guess the next question is, what is it that you do with WordPress? CURTIS: Most of what I do is build things that don't exist. Often there's a bit of like a thinning or the blog end in the pages just to make the site look like it should, but a lot of the projects I build is I said "Don't accept that don't exist". So recently for a corporate trainer, I've built a tool for his companies; so you can divide his company, the people in that, up into teams, and those teams can get points based on their comments. And we have a whole kind of interactions so he can make through following up like on their ways to break corporate rules. So I've built that whole system, really gets application for his site based on WordPress. CHUCK: That's wild. So you're basically treating WordPress as kind of a framework? CURTIS: Yeah, really a web application framework. It has like user management, it has custom content types, it has any kind of text on that means you need already, right? I guess this management is divided more at present to roles and capabilities so you have an administrator, but the administrator can do tasks A, B, and C, and the next level down point to B and C, and then the next level down we have only C. So, it allows us to define all of that easily. And the nice thing is there's so many plugins even. So for the corporate management 1, I took a plugin that allows you to earn points for comments and modified it so that we could have points in a different way so we didn't have to build the whole point system necessarily; we just had to spend 3 or 4 hours modifying an existing one that had a whole UI for him to administer it already. CHUCK: Cool! I want to get into what you use to run your consultancy. CURTIS: Okay! I'm used using "Billings" by Marketcircle for a long time to do all my billing. But starting this year, I decided that it was a pain in the butt to send an invoice out on PDF and then going to Paypal and do another one. So I actually moved over to "Ronin"; that's what I use for my invoicing and time tracking now. And I've had a bunch of even long term clients that I had starting 5 years ago say "This is so much better now", so that's what I use for all my invoicing. For my project management, I use "Trello" and "Evernote" actually combined. I had tried a bunch of different other stuff, but that's kind of what I've settled on right now, mainly Trello because it's free. And Font Creek has enough credit that I will rely a business process on something free, and then Evernote I pay for as well. CHUCK: Nice. I like Evernote; I haven't really used any of these other ones. CURTIS: Yeah. I didn't use Evernote really until this January again; I dabble in it off and on as like in "Everyting Bucket" they often called, and I hated that for an Everything Bucket - I could search something and find it within a minute or two anyway so I just didn't see why. But what I use it for like I'll send my emails inside of Google apps to it for a specific project and tag all the projects and I'll send kind of any files I need, too. As a Pro user like I've loaded like a 100 megabyte database yesterday; just plugged it in, accept it down and then plugged it in so it's smaller. And so I have all of that in one spot. I'd like to eventually be scaling up to have other employees when they feel working with me. And then Evernote has a business package where I can allow certain people into the each notebook based on client so then they don't need to go find everything for a client; it's just all in one spot and easily searchable. CHUCK: I remember Evernote being just a text thing; I guess you can upload images to it. I'm trying to get my head around exactly how you will use it to manage your project. I guess you just -- CURTIS: It's more of a storage for all the documents we need. So even now kind of the side Skype, I've got the Ruby Freelancers checklist and it's got the PDF that you sent me, and it's embedded so I can read it right there; it's fully text searchable because it was OCR-ed. And then above it, I just typed in the 3 or 4 picks that I have for later. CHUCK: Oh, nice! CURTIS: So it's fully OCR-ed, it'll OCR images right; I find it ways you to find stuff there. I often keep it in a folder and file as well, but it's faster for me just to open up Evernote search and then find what I want. It's got kind of advanced operators that you can search by client and then I can kind of narrow it down to the file types I want or whatever else I'm looking for. And it's way faster than finding it even with a good kind of Google App's Gmail Search; it's way faster in Evernote. CHUCK: Yeah, I've done similar with Dropbox, but it doesn't have all the nice search features you're talking about. CURTIS: Yeah, and I store all the kind of the files also in Dropbox as a backup just in case I have ever decide Evernote is terrible. CHUCK: Interesting. REUVEN: Yeah, I must say I've seen lots of people use Evernote. I never actually understood what the advantage was above and beyond just being able to sort of search text or store their files. So it affected all my [inaudible] to all these things that actually makes it sound kind of attractive. CURTIS: Yeah. Now, that might be a Pro feature, but at least in Pro it OCRs and it OCRs images as well. So like [inaudible] I use "Evernote Hello" now as well, which is for business cards or if someone has a business card, I can take a picture of it and then even hit the "Find them on LinkedIn" button and it'll put everything in half of LinkedIn and I don't even have to make sure their email address is correct if they get me a picture and everything else. And then from there, you can just send it over to your contacts on my iPhone. CHUCK: I was going to say, one of the nice things about Evernote is that it has all these neat little apps that hook into it like the Evernote Hello. There are few other ones that are kind of neat looking, but that's the one that I was introduced to that had the real wow factor to it. CURTIS: Yeah, I played with the Food one and some of the other ones, but Evernote Hello is the only one that didn't get deleted shortly off my iPad or off anything else. CHUCK: Yeah. Looking at Evernote, it looks like "Skitch" also will push stuff to Evernote. CURTIS: Yeah, it will. Skitch is okay; I actually use "Napkin" for that type of stuff -- JEFF: They bought it. Right, because Evernote bought Skitch a while ago, maybe a year ago. CURTIS: Yeah, I never used it before, like before it was the original Skitch and everyone says it was way better. I just find Napkin to be faster, easier to use, although I hate the little napkin they put behind it. JEFF: Yeah, Skitch was nice and then Evernote bought it and there was a nerd uproar and everybody moved off it to other stuff. CHUCK: Yeah, they changed some of the workings, and we can talk about that maybe at a later time, but now I couldn't just sign into it the way that I did and it added some -- Anyway, there was a little bit more barrier to it and I didn't like it. JEFF: It's interesting to use Evernote for your email because that's my -- on a phone or the tablet, on an iPad with Gmail search sucks where you can't find any messages you haven't been downloaded and then you've archived on a server, it says it's going to go search on server and maybe I've misconfigured it, but search for me and mail on the phone and iPad suck. But Evernote seems like that would fix that problem pretty easily. CURTIS: Yeah, I find it to be pretty good. And it's even I have values Mailbox; they're on my iPhone so I just set up a folder to send everything to Evernote from there via IFTTT as well - if this then that. CHUCK: Hah! So what do you like about Ronin versus some of the other ones out there? I know that Evan's a big fan of “FreshBooks”, and I've been using “Harvest” for a while, is there something about Ronin that makes you happy? CURTIS: I had looked at -- somewhere back on my blog, which I can find later -- I wrote a big review of Harvest on the things I didn't like at that time, and the FreshBooks' pricing has never accept well with me, limited by number of clients. If I remember correctly, that may have changed and I haven't looked at it in a while, so I didn't like FreshBooks for that reason. And I got a good recommendation for Ronin and started using it in December on a trial and then decided that it was good enough! REUVEN: Do you have to deal with multiple currencies? Because that's something I deal with all the time in Israel, and that dramatically reduce the number of programs I could look at. CURTIS: Yeah, and it does it! So I have mine -- I'm in Canada -- but I have mine defaulting to US because probably 80% of my clients are US, and I just grab the dropdown and pick. I wish it logs you accept currency by client, so I could say this is a Canadian client that always want it in Canadian or in US, but that's really the only two currencies that I deal with - a US and Canadian - even for other international clients I've had like in Germany or something. CHUCK: Harvest, I believe, lets you setup by project. REUVEN: It's also a waste. That was one of the reasons why I've started using Harvest, until my accountant found out and he said "You are not to show the Harvest invoices to anyone inside of Israel" because apparently, you have to get government approval to have the software to invoices. So I now have like Harvest for keeping track of time and the actual like local Israeli thing for doing actual invoicing, which is a shame because I really actually liked the multiple currency humbling in Harvest as well as many other things. CURTIS: Yeah, you set up by project in Ronin as well, like I said, by client would be way better. Because I have 3 or 4 clients that are there in Vancouver or there in Ontario, and I just needed to be Canadian all the time, but I have to remember. Luckily, there are long term clients at this point so I've sent them a US invoice and they just write back and say "That was USA, Curtis". [laughter] CURTIS: And I go "Oops! Sorry!" and just like go in and like click at dropdown and change it to Canadian and then send it back out. CHUCK: That's interesting. JEFF: You missed the CRM show a bit. I know you played with boys at Daylite also from Marketcircle for a while; do you used to use that? CURTIS: No, I don't use that. Again, I wrote a fairly lengthy review of that and I have to think now, there's a bunch or just robs that like the lock in, all your data is only there, you can't get it out; it's stuck in their system. It's a per seat license of like $250, which I guess isn't that much when you look at like software as a service. But I just, I don't know, I didn't like it. And then there's synch via WiFi to your other devices, which is a bit [inaudible], that I don't want to have to make sure everything's on the same WiFi network, so I stopped using it. I still get emails about that; I got one yesterday asking me what I use instead, which is Trello and Evernote. CHUCK: So you use Trello and Evernote for your CRM as well? CURTIS: Yeah! The biggest problem with Trello at the beginning was it's so wide open that you don't even know where to start. So I have a bunch of list now, and I don't take them exactly, but it's like prospects, book to call, estimated, and then follow up like long-term, follow up say for another agency I know that has overflow work sometimes so I just ping them every couple of months if I'm looking for some extra work, and then I have kind of a one lost. The bad thing about that is there's not really a great way to like "Hey, let's get all of my lost projects" where I hear and see why. There's not a good way to get that. You can tag things, but it's just kind of a colored label. So it's not great reporting at something I don't love, but it works for now. Like switching systems all the time is of no use either, so if I get through Trello for a year and there's a bunch of real terrible pain points, there's the business scales I'll look at a switch then. But I don't think that, at this point, of the big deal. CHUCK: Yeah. My problem is -- I use “Highrise” for a while and I didn't get into it, I didn't really use it on a regular basis just because it felt like I had to jump through a whole bunch of hoops to get my process going -- and then I've signed up since then for salesforce and it's got like way too many features. And really what I want is, I just want some basic process management, like what you're talking about that says "I've talked to them and I understand what they want. I've estimated the work, I've got the contract and I've got a retainer so I can just check the boxes and work through the process". And these things, they just have way too much going on for me to really be able to use them. So I'd really love to see your process for managing them through Trello and Evernote. CURTIS: Yeah, my Trello post is almost done and it makes short mention of Evernote in it, and it's got kind of my recommended workflows for how I'm dealing with these things as well. The biggest thing would help me with Trello is on a friend of mine who was using it just screen shared with me and showed me all his client projects and everything and how he was doing it. Then I saw "That's how we can use this! This is excellent!" I've actually tried so many; “Podio”, I've tried, and again, it just seems so wide open like you go and look and there's so many different options for how you can set things up that I just forget it. I'm going to spend 5 hours to try and find something that doesn't work, and then I'll spend 5 more hours to try and find another one that doesn't work. CHUCK: Yeah. REUVEN: So Trello is one of those things that I've heard a lot about and it sounds like it's worth investigating. But is it something that is just for you and the people working on your team? Or, does it also expose information to the client so you can share documents or project planning? CURTIS: It's you either let someone onto aboard; so in a big project, a pool project should be aboard, or you don't. So once they're on that board, there are no private comments; there's no private stuff like you can do in Basecamp. It depends on the project; I have some that's just a very basic WordPress theme and I'll create just a card for that project. I guess another spot where it falls down, some projects has its own board, and some it's just in the main projects board. So I have a main projects board that kind of just follows "This is the ones I have coming up, these are the ones that I'm doing right now, and here's the ones that are done, and then here's the ones that are paid". So again, there's no (I was thinking about this one), there's no big overall view of how many projects do I have going right now; how many hours, or how many points, or like how long are these things going to take. So how long am I truly booked out for? That's something that Trello certainly false down on for me that I've been thinking about and trying to find some way. I would switch if I could find a way where I could have like "Here's all the projects I have and this is how busy I really am" and I need to stay on track. Or, instead of guessing that I'm booked out for the next 3 weeks or 4 weeks, which is partially what I'm doing, is actually have some real metrics to gauge that. CHUCK: Yeah, that would be interesting. One other question that I have, you're talking about how long you're booked out, so do you just go off of like how long you've estimated it's going to take you to do the work for your clients and do you just stack them back to back to back? Or, do you ever work on things concurrently? How do you manage all that? CURTIS: Right now, I'm stuck working on things concurrently. One of the big projects I was working on had a way more infrastructure than I originally realized. So even stuff like -- Friday, I was supposed to get all their recurring emails going to remind people of phone calls that are coming up for the coaches 24 hours after they book it and then an hour before it happens and all this stuff. And I just thought "Are you guys -- like is there anything in place to log all these emails instead of emailing all our clients up the development servers?" because I've already shut down all the outgoing email for my servers on my laptop, but not in I said "We have to build that" and there's been many things that didn't take this like that infrastructures. That project is taking so long that it's running over top of other projects right now. I have 5 on the go, which is not what I like at all. I'm having a hard time trying to shut this big one down so that I can concentrate on all the other ones. Though, unfortunately, really I guess mainly, I look at what I have and this is how long it should take and then I pad a bit, but it feels more like a guess than actual real stats and metrics. CHUCK: So, if there aren't any other questions about your consultancy, and I'm sure that will come up with more, I'm a little bit curious about just consulting in WordPress. This isn't something that I'm necessarily going to do myself, but it's always interesting to know how the consulting space is out there. So I'm wondering if you can talk for a minute about how you find clients and just the general way that people approach projects in WordPress. CURTIS: At this point, I'm really lucky that I know a bunch of other good developers and I'm on a 10 or 12 developer kind of sharing list for projects, and most of them are co-WordPress contributors; I think I'm the dumbest one there. I just kept projects 10 to 10 most of the time. Like even to the order of like $15,000 and $20,000 project, someone calls me and says "Tom said you were good! Tom doesn't have time. Let's do this!" [Chuck laughs] CURTIS: And that's, like it's up two day I estimated on it, and they say "Okay, let's go! Here's your deposit." When I started, I trolled the jobs forward everywhere. I was on Craigslist, and I had a delicious bookmarks list of all the places; I looked and I looked and looked and looked just to get any money coming in. At this point, I couldn't even tell you the last time I really went looking for work because when someone emails me, it's large project and I say I can't take it on for a month and a half. REUVEN: How long have you been consulting for? CURTIS: I have been doing this full-time, probably halfway through my third year now - fulltime. I was doing it for 2 years before that on the side and doing other development in house at different shops; I guess at different in house to a paddling shop and then a Christian Ministry up here, I did that. CHUCK: So somebody comes to you and says "Hey, I've got this project and I want you to build (I don't know) some widget for my WordPress website", what's the process do you usually go through with them to figure out (a) if you want to do it, and (b) what is going to take to land the client? CURTIS: First off, we always clarify. I had one where they wanted some sort of Google analytics thing and they couldn't tell me what plugin they were using for their shop already and they couldn't tell me a lot of other stuff. So I said "You need to know all these things before I'm even interested". And when they came back, they're using a terrible eCommerce plugin that just has terrible code called "MarketPress", if you can avoid it ever in any project, don't use it, and I just said "No, I'm not interested. Yeah, I tend to have a fairly good feeling about people now so I just say no if I don't want it. Past that, I assume most site builds include like a blog and normal WordPress pages. And then we start to scope it out; I'll usually, if the project is big enough, I'll even share a Trello board or some sort of scoping document with them so that we can say "These are the proper scope items", generate and estimate in Ronin and they accept it and we figure out things from there. CHUCK: Awesome. The other question I have is related to -- you said you're on a list where people share leads and things like that -- how do you connect with a list like that? How do you make those friends? CURTIS: In that instance, I just got invited to it. I was, I guess, one of the founding people of it; and it includes people I guess like Mark Jaquith (who is a very well-known in the WordPress field), core developer, and a few other people like that. I guess I originally got on it because I got head hunted by the guy who started it; I can't remember his Twitter handle - Brad is his name. He runs a company in the other side of the country here in Canada for Canadian WordPress developers. So he called me many months ago to see if I wanted to work for him and we maintained talking since then. I didn't end up working for him because he found someone else who he can improve the situation more who was working in house for someone else and hated it as opposed to working for themselves and saying that they wanted every Friday off to go biking, which is what I do. CHUCK: [chuckles] Nice. CURTIS: Yeah, I just got on that through them - through Brad. And then most of the people on the list, I know well already; we've emailed, or they're well-known in the community. Most of what I do now is kind of odd enough that even when you look for a way to do it online, there's no way. Or, there's some guy 3 years ago posted at something about it, but that's not even valid because it's so old. So, I have a core group of people; many of which are on that list already that I would say "Hey, how do you think you'd approach this?" and they may email me that as well. So, it's very rare that what I build normally is talk to vote anywhere for me to take a look at. REUVEN: I must say, that's just like amazing to me because obviously, like I know people who use WordPress, I use WordPress, but like actual application development with WordPress, am I wrong in speaking with that, puts you on a very small minority of WordPress developers as opposed to the folks just like "I'll set up your blog for $50!" CURTIS: Oh, absolutely! But, it's been growing and growing. I've been using WordPress as kind of an application framework, much like you'd use Rails for, I guess, 1 1/2-2 years now. But when I first started talking about it a bit even on Twitter or in any forms, there was nobody who did it but me. And now, there's 5, 6, 7 people who do it that quite 80% of them used to do Ruby development actually and have now moved over to WordPress because they loved the platforms so much. CHUCK: Interesting. ERIC: Yeah, actually in the past, I've started in PHP and worked in WordPress for a while and I built a couple, which you would consider an application in WordPress as plugins. And knowing Rails, I basically ported all the Rails conventions and layouts into WordPress; I did write a lot of my own codes because there's nothing around. But yeah, you can do it. It's interesting to look it at that way, but it actually works quite nicely when to get it figured out. CURTIS: That's the biggest thing. It seems to me, and this is probably a PHP thing, that the quest for code quality is much higher in the Ruby field than it is that we see in the WordPress field. And we're not even talking about just getting things to work sometimes because sometimes, that's all you have can do is get something to work when you're under deadline. But even, like few years ago, I almost left the WordPress community because I just got in touch with Rails and I was talking with Dan Kubb who does DataMapper about performance optimization. And so I started investigating in WordPress, what’s the proper way to get our scripts in a folder. And I was told by a fairly well-known WordPress community member that I was basically more on "Before you're even thinking about that, and you'd never do that". [Chuck laughs] CURTIS: Yeah. And I kind of sat back and scratch my head, and I was like "I don't dance pretty smart" like I don't know a ton, but I'm pretty sure dance as smart guy. And he handed me like 9 different books on the topic that I already had gone through. So, I have found that there's often more of that resistance, or there was. Now, most of the people that I interact with on a regular basis are really having a good quest for code quality. Some of the good people to follow for that is Tom Mcfarlin, he blogs a ton about that; I could grab you that link as well. He blogs a ton about WordPress as an application framework and code quality, and he's just excellent. REUVEN: I'm curious as to someone who -- I've done PHP projects here and over the areas, and I've played with WordPress a bit -- but, most of the people I know who sort of moved from doing blog creation WordPress to doing applications, they use Joomla or Drupal. I know that's not like the focus of this conversation, but I'm just sort of curious, how would you compare these systems? What are the advantages of WordPress? CURTIS: I have used Joomla twice, and it's for my cousin who said "Hey, I need help getting my site done", and I helped them and I said I would not help her anymore. That's my experience with that. [Reuven laughs] CURTIS: Honestly, that's my experience. I finished it twice and said "I don't care if you're family; I am not doing it even if you offered to pay my regular rate as opposed to family rates. I will not touch that ever again". ERIC: I'm going to second that, because I used Joomla and then Mambo way long time ago. Like I used WordPress in the early days and then I tried those, and this is when I was an employee, I set up a couple of companies' sites using them and I ran away from them as fast as possible, like it was so bad. CHUCK: Well, Mambo is Drupal now, isn't it? Or, did that become Joomla? I don't remember which one it morphed into. ERIC: Joomla and Mambo are the same whatever historic would that base… CHUCK: Oh, okay. ERIC: I don't remember which one is the forked community version or whatever, but I got in to write when the fork started so it was like tons misinformation, too. CURTIS: I'm pretty sure that Joomla was the beginning, and the fork was Mambo. And then my Drupal experience was, I was doing a fair bit of WordPress stuff at the time, but certainly not to the level I do now, and it was at the Christian Ministry I worked that here. And even basic stuff, like getting an RSS feed for a certain side category in WordPress, was like this: nine-day back and forth thing about how to get an RSS feed for it. And yeah, I guess while they were looking at Drupal 6, Drupal 7 had been on the horizon for like months and months, but they were just never coming. I don't think that Drupal is necessarily a terrible option, but I think that all the stuff you get for free in WordPress now just makes it that kind of silly. I don't know that's my thoughts. And at that time when I was starting with it, like the custom post I've said that WordPress has, I was using them kind of in beta that didn't come out for 2 months after I had started using them instead of using a Drupal site to do custom-content types. ERIC: Yeah, and I think Drupal just has a huge learning curve. I've set it up a long time ago on a main site, and I've had a friend who configured his Drupal to kind of walk me through I had to do everything. And I couldn't figure it out right now, even if I sat down. It's changed so much and there's so many moving parts in it. I think that's why a lot of people use it because it's powerful, but it's also, for a newbie, it's really hard to get going. CURTIS: Yeah. And when I was coming at all of this -- like I said I have a Psychology degree, I have a BA in counseling technically -- and I was learning kind of programming, dabbling on the side, because I was always interested in tech a bit, and Drupal just seem like a big thing to learn more as WordPress came fairly easily right from the scratch, which is how I taught myself. CHUCK: Yeah, the documentation on WordPress -- because I've done some modifications to my own stuff -- it's pretty decent. CURTIS: Yeah, generally the codex is pretty good. Most of what I build now, I end up having to find or search for the source, which is not the typical WordPress developers day. CHUCK: One other question I have for you then regarding WordPress is, whenever they release a new version or things like that, are you usually already on top of that stuff? Or, does it mess you up sometimes? CURTIS: No, any WordPress version is fine. I have, that on my side, I have a plugin called "AutoUpdater", and it just updates everything for me as soon as it comes out, and I have never had issues. I usually tell safer big clients where we're running a few thousand users or something, we're now running developing locally or running a development environment, and that I'm running a live environment and I'll upgrade local first on some of them. Or, I always tell my users to upgrade development, make sure everything works, and then upgrade live after they've done backups. But I have almost never been beaten by an issue. REUVEN: That's very impressive. But I guess WordPress is aimed at many many people who are less technically savvy. And so making sure that it's easy for them to upgrade is probably a high priority. CURTIS: Yeah. I can't count them over time where someone says "Oh, I'll have an upgrade it's because something's going to break" and maybe they're two versions behind then I look at it, but something's broken now. And I just set autoupgrade and we fixed all the problems. CHUCK: Yeah. The other thing is, WordPress has become a large enough target to where people are finding security issues with it and you need to stay up to date. And they're really good about keeping it secure and keeping it clean, and so just go for it. If you're using WordPress, just upgrade. You'll use it way better off. CURTIS: All the big security issues we heard about, I guess last year, there's a couple fairly quick with like big hosting providers having bit issues. It came down to the hosting providers fault. It wasn't necessarily WordPress was insecure; it was set up insecurely, like wrong file permissions on a certain file that they didn't think about or something. So let's say I'll tell clients that they absolutely should be there on version 3.4, they should be doing 3.4.1 because that's security released and 3.4.2 security released. If they want to hold off on 3.5 for a week or two, fine. But by the time they want 5.1comes up, they better be on 2.5 already. ERIC: Well, it's like that in the Ruby community, too. With Rails, one comes out and everyone has to upgrade. And anyone who holds back is exposed, especially if like Metasploit and all those automated scanners now; it's easy to just break into sites with using known vulnerabilities. REUVEN: Yeah. Well, the two different things are: one is the security issues that we're taking care of, but that not everyone necessarily upgrade it. But upgrading your version of Rails has been difficult in the past. If you're staying within the same version, that's pretty reasonable. But it sounds like WordPress has done a pretty impressive job of make it easy to move forward no matter where you are. At least my experience actually is that. CURTIS: Yeah. I even did (when was it?) probably a couple of months ago, I installed just the default one-click installer on a host because that's often easiest and fastest way to install it for a client. And when I logged in, it had installed like 2.2 or something, like a really ancient old version. Another said "Aahh, I'll left the [inaudible] files over top and [inaudible] upgrade and see what happens. And I hit upgrade and logged in, it went "Okay, we're running!" it's like a 5-year version. So with their WordPress, the offer has been very good. They have many issues of stuff like WP eCommerce, which started before we had custom-contact types and even custom metadata on content. And they had some issues when they did the upgrade from their own database setup to the custom-content types, but they've been on their "proper WordPress way" now for months, probably for a year actually now that I think about it. So, I wouldn't hesitate now when we're upgrading from their own database and migrating to a whole bunch of table destruction other stuff, then it was a little more iffy if you want to do it or not. [crosstalk] ERIC: If you're doing an upgrade, you need backup and then make sure stuff works, but doesn't roll back. I can't think of a single project or application that's had some kind of problem with database upgrades. REUVEN: I was just sort of curious, Curtis, like if your client come to you because you are you, or because they want WordPress? Or, they just want a solution and they couldn't really care less about the technology involved? CURTIS: I guess there's been a lot of them come to me because partially that they want WordPress. There are the odd one that says they just want a solution and here it is, and I say "Well, I don't see any reason not to use WordPress here". And I certainly have referred to friends that do Rails work in the past for something that just didn't seem like a big stretch for WordPress. But I even have like I write WordPress tutorials on my own site, wpthemetutorial.com, and I did an eCommerce tutorial that has something that's broken. And I had a guy call me up 2 days later and say "Hey, that's broken [inaudible]. And I see you have it fixed and I see how it works, but I can't do that", and that turned into like probably $15,000 contract for the last year and a half just fixing stuff. Because I may got them to its side, it was 300-301 redirects to make stuff work because they just didn't know how the WordPress template hierarchy went. CHUCK: So I have to ask, you've mentioned a couple of different websites so you've mentioned the WP thing tutorial, or something -- CURTIS: Yup! CHUCK: And you said you have your own blog where you blog about. For example, you said you have one on Trello that you're working on, you have another blog post that you wrote up on Harvest. Can you tell us where all of your websites are? CURTIS: Sure! Right now I run, I guess my own, it's curtismchale.ca. And that has kind of everything; you'll see some cycling in there because I like road biking mainly, and you'll see a bunch of other end business and just everything. And then, you can also find wpthemetutorial.com; that's where I write specifically WordPress theme tutorials. Typically around Best Practice, I actually even wrote a book there called "Becoming a WordPress Development Professional”. And it was even meant for, I guess, experienced Rails programmers that need to build something a WordPress kind of as a one off and they can read through the book in the afternoon, and I have the at least the road signs so they know they're working at the right path for building something good in WordPress. Or, for the beginner who's building some themes and needs to learn the general best practices. CHUCK: Nice. So how much work do you typically get off of these websites? You said that one tutorial on there got you a well-paid contract. CURTIS: Yeah! And I have another one, like I've even had people be referred to me from someone else. And the one guy I talked to last week, he said he spent like a whole day reading through my own blog just to get an idea of what I am -- because like I'll state my income on my blog, I'm pretty free with whatever. And I've had even clients say "Was that post about me?" and I say "Yes, that was about you." [Chuck laughs] REUVEN: [laughs] At least they're really involved, right? CURTIS: Yeah, they are! So, that's how I get most of it. Like my personal site, I'm actually moving that over to a business site I suppose, as my main business driver. So I'd like to scale the business, now I'm thinking it's a little harder just doing it under my own name mainly. So I'll be spending out my own site called sfndesign.ca, which is technically my business name, SFN Design. CHUCK: SFN? Does it stand for something? CURTIS: Some Funky Name...because I had to come up with some funky name for this site -- [laughter CHUCK: Nice! CURTIS: That's what it stands for. Right now, it redirects to my personal site. But I'm getting a design in UI done right now for my main, so I can move over to that and kind of advertise that I do eCommerce, custom builds, done in [inaudible], done some clean up some stuff, yeah but the sites just wasn't working and it's because the person you built it had no idea what they're doing. And then I even like to get in some more staff augmentation and training that come in and help the team write better code and be more efficient with their staff. CHUCK: Awesome. Alright, we're about at the end of our time. Are there any other tips or tricks that you've learned as far as finding clients or doing good work or running your business that you'd like to share with our listeners? CURTIS: I think the biggest thing is to realize that it takes time, which I suppose lots of people say - it takes a lot of time to get to that point. My income between last year and this year had doubled. I already made last year's income so far, and I was living comfortably before, but I'm doing much better now. It just took time, suddenly turned the corner, and connected with the right people that referred me work. So out in the WordPress community, releasing plugins, helping people out when I could, even jumping on Skype when someone who had a problem that I already wrote a solution for, I don't have to do everything for them, but here's my code, go around with it and solve your problem. And then 3 months later, they referred $10,000 client my way. CHUCK: Nice. CURTIS: That's why I find pretty much everyone in the WordPress community is very very helpful. It is very rare that you'll ask if anyone has done something. And if someone has, they'll just say "Here's all the code, here's that whole plugin I wrote for someone else, take a dig through it, and here's the parts that will be useful for you, or for your application". So, get out there in the community and release some plugins, write some tutorials, help people out…that's how I started. CHUCK: Awesome! Alright, well, let's go ahead and get into the picks. Eric, what are your picks? ERIC: I got two picks. First one I just saw randomly reading, its title is "IRS Cracks Down on Independent Contractors - What it Means for Your Small Business?" Basically if you're in the US, there's a bunch of laws around like if you considered an employee or an independent contractor. Basically, if you try to do freelancing stuff and IRS pre-classifies you as an employee, you and your client basically get burned pretty bad. So it's a post talking about I guess the IRS is kind of doing a bit heavier auditing of that. So it just has a couple of tips to like make sure that you stay on the right side of it instead of getting classified as an employee and have to pay a lot of back taxes. The second one I want to post about or talk about is on the WP Engine blog, it's "WordPress Core is Secure - Stop Telling People Otherwise". Basically, WordPress has kind of -- like people think it's really insecure, and if you go on like Hacker News, anytime there's a WordPress update that's all you're going to see. But I've worked in WordPress for a while, and I found there's probably been like maybe 2 or 3 security bugs in WordPress itself, the rest of them have always been plugins or themes or, like Curtis was talking about, just the hosting provider has something screwed up. And the problem is, all of those get long tend to WordPress itself is insecure. And so this post kind of goes through and talks about it. And if you're doing a lot of WordPress work or very high end server host in a WordPress, the WP Engine, their blog has some pretty good stuff on there. I just a couple of more about security stuff, so it's a good read. They have a nice little picture for the blog, so check it out! CHUCK: Alright. Jeff, what are your picks? JEFF: I sort of just got one, it's a Chrome extension called "OneTab". It's interesting it'll take all your open tabs and basically create an HTML or [inaudible] it with links to them. And the idea is that if you got 40 tabs open, it's consuming 40 times the memory of a similar tab so it classes all the tabs into one, and you can share it as it uploads the HTML to on the OneTab site. I'm not sure if it does it always or just for sharing, but it's interesting idea if you have a lot of tabs open like I tend to. That's the one for me! CHUCK: Nice. Reuven, what are your picks? REUVEN: Alright, well, first of all, you might have heard of "Arrested Development" is returning this coming week. And even though up here in Israel, we remember the show back from when it was on the air in the US -- I'm very excited, at least I hope it's worth getting excited -- so it's not technical pick, but I think an exciting one nonetheless. On the technical side, I've been using Zsh for the last, I guess, year or two on my mission. I've been very happy with it, and I've started to see more and more people mention this on other show called Fish or Ridiculous Fish, it's at ridiculousfish.com. And I was sort of hesitant whether I should use it, whether I should not use it; I still haven't served jump wholehog into it, but I did find a plugin for Zsh that does "syntax-highlighting" while you're typing. So basically if, as you're typing like you're typing "L", if "L" was in your path, then it will be green; and if it's not in your path, then it will be red. It's almost like spell check in a Word processor; tells you right away whether something is in your path and whether it's executable. So I found that to be pretty exciting and nice. And the last one is, I'm going to be in Beijing next week teaching a Python course, I'm really excited about that; I was there last week teaching. And the one thing I was really missing was an app for my phone that would do Chinese translation. I tried to learn a little bit of Chinese, very very little bit of Chinese, but having something that will allow me to tell my cab driver "I really need to know how long it's going to take until we get into my flight, which is leaving soon", that would really come in handy when I was sitting in traffic. So I found this app for my Android phone called "Hanping Chinese Pro". I haven't actually used it in China yet, but I'm sort of hoping that it'll come in handy and allow me to make up for my lack of vocabulary. So anyway, those are my picks. CHUCK: Awesome. So I've got a pick this week, it's just one, and that is "iOctocat". It's an iPhone app. It is basically an interface to GitHub. It does everything except Git basically, so you can't add it code on your phone or iPad or whatever anyway, but you can get in, you can see what changes people are making to the projects you’re on, you can look at issues, you can look at poll request, you can do all that good stuff; really really neat app. And it's also all open source so you can actually go see the source on GitHub if you'd like. So I'll put links to those in the show notes. And Curtis, what are your picks? CURTIS: I've got 3 for you today. First one is the "Kinesis Freestyle Keyboard". I have the Freestyle1, it's basically a fully split with a tether keyboard. So my two hours in my keyboard or sitting shoulder with the part at any angle you want and they have risers you can get. I have Carpal Tunnel Syndrome from many years of poor wrist position while I'm mountain bike racing in my younger teens and early 20s and this has taken it all the way entirely. It's noisy as whatever, though; certainly not something you'd type in when you're trying it to podcast. Second one is, "Unfinished Business", which is a barely new freelancer business podcast, I found it really useful. Actually for business and freelancing, I will listen to that one and I will listen to the Freelancers Show; that's the only two that I've stuck around. One thing they talk about a ton is weekly pricing, which I am toying with moving to weekly pricing. And then my last one is the "Trello/Evernote Combination" that we talked about a bunch for running your projects and running your business. CHUCK: Yeah, I'm going to have to say if I can talk to you into making a video on how you do some of that. CURTIS: I'm entirely willing! I just need to find some of that time. [Chuck laughs] CURTIS: But, I have to say I have a Trello post that I've had somebody emailed me yesterday and say "Hey, you wrote about this. What are you using now?" and I said "Here's the half-end complete markdown formatted post that you can read before it's totally done with just points and notes in it", and I've sent that out, I think twice now for two weeks. So hopefully I'll have the Trello when done this week, maybe next week. CHUCK: Nice. CURTIS: And then the combination of Evernote and how all that works after that. Oh! And there we go another request for that half-complete post. CHUCK: Yeah, we'll let you guess who was that asked for it. [laughter] CURTIS: I'll throw it up on a gist if you want a link to it for what I have right now, and then I'll send you that link. CHUCK: Okay. So, it looks like we have two requests for that half-complete post. So, is that a full-complete request for post or something? CURTIS: That looks like it. JEFF: Or, is it a quarter-complete request? REUVEN: I'll take a quarter...exactly! [laughter] CURTIS: Yes, I'll put that up in a gist so you can see what I have at this exact second, and then I'll keep writing it. ERIC: Wait, can Reuven get the first one and I get the second one? Would that work? [Chuck and Curtis laugh] REUVEN: I'll get the odd letters, you get the even letters. CHUCK: Yeah, and then you can do a mind meld... [Reuven chuckles] CURTIS: Yeah, that would totally be a get off to figure it out, write a script to do that instead of writing the post. I'll be an excellent user of everyone's time [laughs]. CHUCK: Yeah, you're wasted in WordPress. CURTIS: [laughs] Yeah, starting a whole plugin and I'll spend at the Vagrant VM for it and everything, that's awesome! [laughs] CHUCK: Alright, we'll wrap up the show. Thanks for coming, Curtis! It was awesome to talk to you. CURTIS: Thanks for having me! CHUCK: I'm still a huge fan from the Coderpath days -- CURTIS: Oh, thank you! Even from that, I had a guy on Twitter thank me like 2 days ago, and I said "We haven't done that in years now", but I know you got to keep an eye on it, though, because I'm fairly sure it's something else will be spinning up at some point with Miles. CHUCK: Yup. Alright, well, thanks for coming! We'll catch you all next week!