For the last few years we’ve enjoyed interacting and working with Joost De Valk, a 28 year old illustrious WordPress and PHP developer who publishes awesome content at yoast.com. I had the chance to interview him about what he does, how he got there and what he’s got up his sleeves.
Tell us about something exciting you’ve been working on lately.
I’ve been working on a WordPress SEO plugin, which is a scary amount of work. Basically I’ve been merging some of the stuff that plugins like All in One SEO and HeadSpace do. It will allow you to set titles, meta descriptions for posts and pages and what my own, more advanced, SEO plugins did like Robots Meta and Canonical plugin. Plus it adds in XML site maps to try and make an SEO plugin that really covers all the stuff that you should be doing on your blog. It turns out though it’s actually a shit load of work.
That’s pretty cool, I’m pretty proud of what’s there already, but it’s far from done so it’s in public Beta now.
It has forced me to go pretty deep into the core of WordPress again so I had to play with all the new custom taxonomy stuff and had to come up with several things to fix the fact that WordPress doesn’t actually have an API yet to store meta-data by categories, tags and other terms.
Lot of coding, lot of fun, but that was there already; it’s turning out to be pretty good stuff. It basically should be my contender to be the most downloaded WordPress plugin of all; because I like to set big goals… actually most used. Most downloaded is, of course, not a very good metric because if you do a lot of updates you get a lot of downloads.
PHP seems to be one of your favorite programming languages. Do you use any frameworks such as Zend, Symfony, or Cake?
I’ve done a bit with Zend but to be honest I spend 95% of the time coding in WordPress. If I do something outside of it I usually download BackPress, which is part of the core of WordPress, and that’s about it. I’m pretty weird framework wise.
I’ve urched myself a couple times for the last few years to look at stuff like Cake and Symfony because it looks very interesting. I just don’t spend any time on it because I spend so much time on WordPress; we don’t use it there so there’s not real reason for me to do that.
How did you get into development? Is this something that’s been a self-proclaimed passion or have you had some influencers that helped you get into it?
It has been pretty much self-proclaimed. When I went to high school I started coding with some friends who coded a bit. I built my first website and got my fist internet connection at home.
I started coding in a bit of HTML and other stuff but soon rolled into Turbo Pascal and started coding in that. I basically went from there into periods where I did less coding and focused on other stuff; at some point I starting more coding again.
I dove into PHP because I did WordPress already and used it on a couple blogs. I needed to learn PHP better to fix the stuff I wanted to fix. Before that a lot of my time was spent on HTML and CSS. I used to own css3.info; started that back in 2006 when CSS3 was really hot and new. It’s all hot again because it’s finally being implemented, but back then I did CSS3 previews which loads of people like. It was my first experience with having a really popular site. That was a lot of fun.
Basically went from there to doing other stuff. I sold css3.info at a certain point. When I did css3.info I was also doing an awful lot of work in the Web kit community; the Safari Web kit, the rendering core of what is now Safari and Chrome. I am still a committer on the project but not very active anymore. That forced me to learn some objective C and an awful lot about how browsers work with HTML, CSS and stuff like that.
The funny thing is because I was doing that and css3.info I rolled into PHP because I was doing WordPress and found that the WordPress community was actually one of the nicest communities out there to be developing for. So went from there and never looked back to be honest.
What would you tell someone who’s just learning to develop? Do you have common resources you turn to?
Obviously for PHP, php.net is heaven.
I just learned by looking for a code. I was a crap developer at first because I was looking at a lot of WordPress code and the WordPress code back in those days wasn’t the best code ever. I just looked at a lot of code and figured out some stuff could be done more efficiently, etc. I am probably a pretty bad example of how to learn this stuff because I just learned by doing and making a shit-load of mistakes. I learned by doing it an awful, awful lot. That’s basically how I learned most of this stuff.
It’s learning by experience.
What was the deciding factor for choosing PHP as a programming language?
It was the other way around, I chose WordPress first. The thing is, I chose the community and not even the product because the product itself when I chose it was pretty bad. The community was good and had a good vibe to it. I liked the openness and the fact that free was the default; which is also painful now that I make all my money dong this stuff.
I’ve developed about 25 plugins and so far they have all been free. I’ve gotten like 3 million downloads in total over all of them. Didn’t make a lot of money out of that but did have a lot of fun because the community is very thankful, usually. It is a very fast growing community and the core developers are always there to help, even with your plugin, there usually willing to help you to fix it because a lot of people use it.
I chose that and didn’t really choose the programming language or anything else. If I had chose the programming language to be honest I probably would have chose something like Ruby on Rails because it seems so much nicer.
What’s your all around favorite API (Google Analytics Export API, YQL, Facebook, Delicious, Google Maps, Yahoo Boss, etc)? What makes it so cool?
Well you mentioned a couple there and I’m in doubt. The Google Analytics API is awesome, mostly because the data you can pull out. In terms of power I take Google Analytics but in terms of ease of use all Yahoo APIs are so incredibly cool and so well documented. I’ve played with Delicious, [Yahoo] Boss, Yahoo Term Extraction, there’s shit-loads of APIs that Yahoo offers. Because I do a lot of SEO work those APIs are gold mines. I would have to say those two.
Google Analytics, especially the latest version of the Google Analytics API, is very good. They really listened to the community and that’s a good thing to see. There are more and more possibilities to do real cool stuff which I’m working on for my own Google Analytics plugin for WordPress. It tracks all sort of custom stuff like 404s. I can now pull back those 404s out of the API and in a cool way to show to people what pages are 404ing, how people are getting there and from what links. That’s incredibly cool to be able to do that. The new version of the analytics plugin dashboard will show you that data in your dashboard.
What advice do you have for someone just starting programming in PHP (what would you like to tell yourself 10 years ago)?
I’d like to tell myself 10 years ago to stop messing around and learn PHP. But then again I probably wouldn’t have been the coder that I am now if I hadn’t learned the basics of a lot of languages.
That’s probably the first advice; learn a little about a lot of languages. Make sure that you know why these languages differ and what’s important about them. That has helped me quite a bit in finding ways to develop stuff. I started programming in Turbo Pascal which is very functional and only later starting learning objective programming. The fact that you can do both is probably a good thing in your programming skills.
The first thing is just start doing it, the second is learning a little about a lot of languages.
Have a look at those Python and Ruby intros and then pick a language because you think it’s the most elegant and that fits most with what’s your doing. That also means if a certain community or product fits best with what you’re doing then you should be using that.
What is your favorite plugin you’ve created, even if it is not necessarily the most popular? What makes it so cool?
Right now that would be my WordPress SEO plugin, that changes every moth or so… which is a good thing because I only work on my favorite stuff.
I am in the luxurious position right now that I can stick with doing stuff I like. That is because of affiliate payment from companies like WestHost and VPS.NET and some other advertising stuff like that. It earns a decent living.
Was there a plugin that has been more challenging to create than any others?
The new SEO plugin has more lines of code than any of the others combined, so that one is a bit more complex.
The funny thing is that the hardest thing in developing plugins, which ever one, is always developing the UI and not doing the stuff that people think is hard. The UI is the biggest challenge because doing a bad UI always results in shit-loads of questions.
Doing a bad functional implementation of some code, no one will ever care. I could seriously screw up thousands of blogs without them even noticing, I am very sure about that. But if the UI was bad I’d get thousands of emails.
I always end up spending more time on developing UI. I’ve recently gone into actually hiring UI experts to help me improve the UI on those plugins. Even though they are free and people can use them for free there’s a revenue model attached; I get my clients based on all the stuff that comes out of that. Having them be very usable is a big advantage so I try to work on that a lot. But it really is the hardest part on developing a plugin. I think I spent like 30% actually coding functionality and 70% of the time coding UI.
Do you find that it’s more difficult coding the UI for WordPress than for other applications?
We’re slowly starting to develop standards for how these things should be and should look in WordPress. That helps because if everyone made all this stuff look like its WordPress internal stuff it would be a lot better.
So that’s what I try to do I try to stick with what WordPress does internally and use all their functionality to code my UI. UI is about a lot of things not just the fact that you have to have a button. It’s also the copy that you have around that stuff that needs to be good.
At times I do a fix on a plugin where the only stuff I fix is three lines of copy in the admin section… Then to see the number of emails going down tremendously because I changed a number of lines in the copy is just ridiculous but it happens to me all the time.
That has a bit to do fact that I’m not a native English speaker entirely. Sometimes I write these tiny little weird things in sentences that people don’t get. It’s just stuff that makes you learn the language even better. It also helps me because I look at my copy a couple times more.
It’s very hard, being a coder, copy is usually not the thing you’re good at.
What is your favorite plugin (WordPress/Magento) that you did not create?
That’s actually quite easy, I work a lot with Frederick [Townes] and Frederick created a plugin called W3 Total Cache, which is ridiculously large. The total size of the folder for W3 Total Cache is 2.1MB. That is a lot of code for a plugin.
What Frederick has done is, I think, much under appreciated in the WordPress community. I’ve seen servers getting hot where we had a couple hundred WordPress installs on it. We load them all up with W3 Total Cache and we were easily able to load another couple hundred sites on the same server without any problems. We even had people suddenly saying, “My server’s so fast.” I am like, ok, good stuff.
It is a power horse. I think it’s the best plugin to have been released this year.
WordPress seems to be gaining an awful lot of momentum at the moment which is good for all of us. If you have a Drupal, Joomla and WordPress site, which would take the least amount of support and resources? The obvious answer is WordPress but it’s not obvious to a lot of people yet. That’s why it’s growing so rapidly, it’s all about UI which is why I focus on UI so much in my plugins.
It’s not that WordPress has better code, I think Drupal has the best code of the three, but the UI of Drupal is so bad. That alone makes WordPress the product to use.
How many plugins have you created that did not take off in the way you had expected? Why do you think they did not take off?
There is one plugin that I like an awful lot but I haven’t marketed it enough to help people understand what it actually does. It’s my comment redirect plugin.
It’s a very, very simple thing. It redirects someone who comments for the first time on your site, to a thank you page of your choice. You can thank them for commenting and throw some other stuff at them like that. I built that because there was another plugin out there that did something like it but sent them an email instead of redirecting to a thank you page.
The issue with the email plugin is that you don’t have people opting in for stuff like that; it’s actually against spam laws, probably in the US, but in a few European countries. I decided not to do that and do the redirect instead. I still think it’s under-used, more people should be thanking people because they comment on their blog and because they give their thoughts.
For me getting comments is probably more important than getting a lot of page views. It is how I measure the quality of traffic coming from other sites. If less than 1% of people coming from other sites leave a comment, 1% being the average number of commenters, if it’s less it’s usually poor traffic.
How do you decide what ideas (for plugins/sites/tools) get turned into actual projects?
The funny is I basically code all of them. On yoast.com I run about 55 plugins, 40 of which are my own, 20 of which are not released. Most of them are very simple stupid things. I usually only release something when I find that someone else has a need for it.
If I see someone ask a question and I think, yeah I’ve already solved that somewhere, somehow, I’ll usually just package it up and release it. But releasing a plugin takes a shit-load of time and every plugin I release means more questions, more support emails so I try to reduce that, which is also why I’m bundling my WordPress SEO plugin.
With bundling the SEO plugin I’m basically stopping development on five other plugins which will all merge into one, hoping that will also reduce the support requests I get in total. I doubt whether that’s actually true, I think it will actually increase but we’ll see.
A little geek talk: in your entire PHP programming career, what is the single coolest piece of code you have written? Tell us about what it did and how you used it.
I can tell you that now, I couldn’t have told you that a couple years ago. The coolest thing I probably ever coded… back in the day, when Technorati was still important for people, one of the things that all of the big bloggers tried to gain was Technorati authority.
What I did was code a plugin that would automatically scan all your incoming track backs, pings and links on Google blog search to see whether all those links were actually pinged in Technorati; if they were not it would automatically ping Technorati with those URLs.
I installed that on a site of a friend of mine, Copyblogger, and he basically boosted himself from number ten on the Technorati authority list to number two within two weeks of using it. That was like ridiculously fun spamming.
I have some plugins like that which you do not release because the minute you release them they become worthless. If every WordPress site were doing that you’d never be able to get as up high in the Technorati ranking as you wanted to. That was quite a lot of fun. Used that for quite a while even when Technorati got out of fashion there were a couple other blog rankings that were using Technorati rank amongst other things. That was fun.