2012 reflections and 2013 goals

2012 has been a heck of a year, and now is a great time to reflect. The purpose of this post is to help me put my professional life into perspective, so I can go into 2013 with clarity and purpose.

There have been some very good parts of 2012, and some tough parts as well. Here’s a detailed account, numbers and everything, of the various aspects of my professional life.


Let’s start with some post counts across various parts of the internet.

  • This blog – This post is my 40th of the year. I’m quite happy with the blogging I’ve done here. I’ll touch more on it shortly.
  • WPCandy – 19 posts in 2012. Certainly less posting than I expected this year at WPCandy. Though I think one or two of my posts got lost when WPCandy had a big hosting issue a few months back.
  • Infomedia blog – 2 posts. I wrote for our company blog a couple of times in 2012. Though they didn’t get much discussion, I actually enjoyed writing them.

That means that I blogged 61 times this year that I can count, or a little more than once per week. Not bad, but I can do better.

The growth of this site has been a high point on my year. I’ve had only a few posts that didn’t get any discussion, and I had a few that got really, really great discussion. And the traffic has been pretty steady too, though that’s a secondary goal to the quality of the posts and the discussion.

But I know you want to see the stats. Yes, they are still pretty poor. But they are much, much better than before. And the growth is promising:



That’s about a 270% growth year over year. In a year, I’d like to average 20,000 visits per month rather than 27,000 all year, to keep people on my site longer, and for them to bounce less.

I had a couple of spikes during the year. One post on Google fonts (not) displaying on Kindle Fire did pretty well on Reddit (though not a target audience), and my Jetpack post has simply been huge. That post alone has gotten almost 8,000 impressions since I wrote it in July, and there are 84 comments, many of which are from Matt Mullenweg. It is my top post in search results, and gets pretty continuous traffic from poor searchers having woes with the plugin. But what is staggering is that people are reading it. The average time on that URL is almost 9 minutes.

I counted 150 comments between all posts in 2012, which is great! Comments are like blogger caffeine. And what’s really great is that people I respect are commenting. That feels really awesome, every time. New posts are getting between 200 and 500 “day 1” views on average, with my best performing posts getting 500-1100 “day 1” views. I want to turn the best performers into averages next year.

I also finally redesigned this site in December. I’m excited to analyze some stats soon, and finish building out new sections, as I outlined in the post about the redesign.

I have no intentions of slowing down my blogging here. I love writing and sharing my thoughts, and I want to make it a bigger priority, with dedicated time. My current method is to write at a moment’s notice when I just can’t stand not writing. I want to be more consistent, and write thoughtful things about the web and the WordPress community.


I wrote over at WPCandy much less this year than last, about two-thirds less, and my last post was in August. I hope Ryan is successful at WPCandy, but I’ve decided to move on. It’s just not the right fit for me anymore.

I’m glad I contributed there for two years. I wrote around 120 posts in total, and recorded a couple dozen podcasts too. WPCandy was a great place for me to grow in the WordPress community. But I have a lot of things I want to do still, and I need to make room for those things somewhere.

Social Media

One interesting metric to look at for the past year is Twitter stuff. I’m not sure if it’s because it’s addictive, or because it’s professionally valuable, or what, but I spend a lot of time on Twitter. Too much, my wife will tell you. But it’s had some payoff in 2012. I’m thankful to have a heck of a water cooler to sit around and share and talk to you guys. Here’s an image of my year in numbers on Twitter:

I’m thrilled to have new followers, but what I get excited about in those numbers is that I’ve gotten a half decent number of replies, retweets, and favorites on the things I share. The web development community is certainly its own breed, and it’s really fun to be a part of it. I think Twitter is a big part of why I enjoy what I do, and I know I’ve gained both professional contacts and even friends from it. So I thought it was worthwhile for this post.

WordCamp SF

Speaking of relationships, WordCamp San Francisco was absolutely amazing. It was fantastic to meet so many people in person. I made  a lot of friendships “IRL official” (I just made that up maybe) and had hundreds of great conversations. If you are on the fence about going to WordCamps in general, and especially one of the big ones. Stop thinking about it. Go.


Another year has gone by that I didn’t get props in WordPress core. I. will. not. let. that. happen. again. Now, I’m really on the hook, right?

In addition to contributing to core this coming year, I’m really interested in the docs project. I think that’s a place where I could potentially make a difference.

I do feel like I’ve at least had some level of involvement on other projects though. I’ve been trying to communicate feedback to plugin authors whenever I can. I especially enjoy talking to the fine folks who build WooCommerce. A couple of my feature requests are going into the plugin, and they are just really nice people who make a great product. I’d love to build an extension for WooCommerce this year.

Side Projects

Oh, side projects. I’m always dreaming things up. My struggle has been that I think something is a great idea, then I start on it, and then I convince myself that my idea was the worst thing on the planet, and I move on. There are good and bad aspects to that workflow. The good is that most of my ideas probably are terrible. The bad is that I never let anyone else decide so.


On a bright note, I released two plugins this year: Toolbar Quick View and Really Simple Series. Both are pretty trivial, but I use them both, and at least a couple other people seem to as well (emphasis: a couple).


I’ve also worked a ton on the Happy theme project. I started out what has thus far been a disappointing series on building WordPress themes, with Happy being the example theme. Well, it turns out Happy ended up being more of a base theme, that I’m actively developing and using on new personal and client sites. But I am going to write the series, and I’ll just tailor it more generally and maybe with a less general purpose theme.

So the Happy theme is in a weird place where it doesn’t know what it wants to be. I haven’t fully decided whether to have a separate base theme that’s not really for public release, and then make Happy a version of my site design, or if the base should be a real theme. I’m leaning toward Happy being a less generic theme. I’m kind of over generic themes. Either way, I’ve spent a great deal of time thinking about theme architecture this year, and while I’m behind where I wanted to be, I’m happy with where I am.

New Project

68I have one more side project that is very hot on my mind. The idea has evolved for a long time, and it’s a much-needed thing in the WordPress community, I think. A few folks I’ve talked to about it think so too. It’s going to happen very soon. And I’m beyond that point of “this is a terrible idea” mentioned above ; ) so it’s officially happening. It’s my top January priority.

Freelance and Monetization

I had a goal this year to make $10,000 in freelance and side income. That goal was totally arbitrary, and I basically made zero distinct effort to reach it. I just did small freelance work when it came to me and the situation fit, and didn’t if it didn’t. I ended up making less than $5,000 in extra income this year, not including freelance / overtime work I did specifically for Infomedia, where I work full-time. I don’t know the exact figure under $5k, as I have to cobble together all of my invoices, but either way: weak sauce.

It would be pretty easy to make this number higher next year. I just have to do less stuff for free, and more stuff for money. But sometimes I like building websites for free when I can really help a great organization. So we’ll see. Either way, I’m available for some freelance work periodically, if you’re ever interested. How’s that for a sales pitch?

I’d rather spend more efforts next year monetizing my blogging and perhaps monetizing on some side projects, than worrying about freelancing too much. I get to work with some pretty awesome clients at Infomedia, so I like to spend more outside time doing my own thing than selling my time to other people.

Specifically, I want to introduce tasteful affiliate links in my blog(s). That’s why I’m building my toolset section of this website. I explain more in my post about my site redesign if you care. I’d also love to sell a theme, perhaps even on (gasp!) Themeforest. Or maybe I’ll do something totally different. Who knows! But one thing is for sure, I’m human too, and side money is good money. Next year, I’d be pumped to make $20,000 on the side. Like, really pumped.

Work and skills

This is where 2012 really shines for me. I’m so happy to say that I learned more about WordPress, web development, and even design in 2012 than ever before. It’s been a great year for my brain.

I’ve had outstanding opportunity at Infomedia to have control over what we do, WordPress-wise. And it’s been great. I’ve learned a ton about PHP and other languages from the very, very talented Brian Dichiara. And I consider David Hickox to be a mentor on both design and web perspective in general. I learn from all of my coworkers, and I love what we’re doing at Infomedia.

I feel more versed across the board technically. In fact, as you may expect, I’m utterly ashamed of any code I’ve written before… well, take your pick when. I learn every day, from coworkers, from the Google, and from you. I love learning, and I don’t intend to stop.

Specifically, I want to continue getting better with PHP next year, and I want to wrap my head around JavaScript too. WordPress is likely heading toward more JavaScript based development, via Backbone, so I want to stay with the program. I shudder as I type.


2012 was a fantastic year. I learned. I grew. I made friends. I don’t think I made too many enemies. I’m very pleased with it.

In 2013 I want to narrow my focus. Really concentrate on what’s most important, and be willing to say no to other things. A year from now, I want to be writing about how I reached my goals, launched my personal projects, and really went for it even more than this year.

I’ve been incredibly blessed in 2012, and am so thankful for every minute of it. So cheers to all of you for reading these 2,000 words (if you made it) and here’s to whatever the next year holds in store!

Serve different Google Ad slots based on window size

I’m wrapping up a responsive site where the client uses Google Ads to manage their ad sales. Google Ads inserts iframes for their banners, and it’s impossible to resize them when necessary. So, to handle areas of the design where I need a smaller ad size, I’m using this snippet that is based on an article I read that does it much the same way:

I don’t like this concept very much. For one, it only works on page load, not window resize. But hey, it works. And surely Google is going to figure this stuff out and help us utilize responsive ads soon.

Personally, I’d rather deliver ads locally and then I can do whatever I want, without iframes. But so much of the ad industry apparently works this way, so for now, this is all I can manage.

How are you handling advertisements for responsive design?


Bill Erickson on consulting – a must read for WordPress professionals

Bill Erickson wrote a really great post in defense of consulting businesses. He lays out an extremely logical argument comparing consulting services to product services. The scalability opportunities for product businesses is an alluring one, so much so that I think (as does Bill) that many product sellers forget the support burden they can create for themselves, which can be just as concerning as the “selling time for money” concept often assigned to consultants.

I consider Bill to be the cream of the crop of freelance WordPress developers, and you really should read and digest his post if you are a WordPress professional of any sort. I especially love where he talks about how he justifies raising his prices every year, and why he chooses the type of work that he does.


Let’s fork “Hack Day”

Siobhan McKeown wrote a great post at WP Realm about how the vocabulary and mentality around Hack Days for WordPress events (or any events really) need to change a bit. There are people dedicated to the WordPress project, and not all of them are developers. She explains it in detail, noting the many things non developers can contribute to such days. And I made my own comment as well.

In short, these events should be open to anyone that wants to contribute back to the project, and not be an exclusive event for developers only. Doing so, I believe, will only making the project as a whole better. Let’s fork the name “Hack Day”. I vote we call them “I love WordPress” days.

wp-enterprise Enterprise wants to fill a gap. Does it?

wp-enterpriseI saw this evening that has released an in-between service called Enterprise. At $500 per month, it’s a lot cheaper than their VIP service, which starts at $3,750 per month. It’s a big move for the hosted platform, and I’m sure one they’ve planned for a long time. I know there’s been no shortage of sites hopping on their full fledged VIP plan, so I’m sure they’ll get quite a bit of business from this significantly cheaper option. To me, it seems this move targets managed WordPress hosts like WP Engine, Pagely, and Zippy Kid more-so than offering the bridge they’re talking about between their “pro” (very cheap – $100 / year) accounts and full fledged VIP.

The managed WordPress hosts listed above have grown like crazy in recent years, and perhaps minus the degree of traffic scalability, can offer the same functionality as is touting in their Enterprise service, and then some. For cheaper. I mean, managed hosts restrict some plugins, but they certainly aren’t limited to 70ish like VIP, and they allow completely custom theming, versus the strange Javascript and custom CSS add-ons is saying. For $500 per month, that seems bonkers to me.

And the bit about saving businesses the price of a theme developer falls a little flat for me too. Any company willing to pay $500 per month should also be willing to fork over at least $10k for a custom theme that integrates with their brand. And who’s going to write that custom Javascript and CSS? And if they can’t afford a development shop, then I’d presume that company’s not in the market for $500 per month hosting anyway.  I’m sure they’d just stretch a $50 VPS until forced out. Maybe I’ve got the restrictions on custom development all wrong. I’d love to learn more.

I’m sure thousands of businesses will prove me wrong here and flock to this new Enterprise offering. I say so because this space is just growing so rapidly, it seems inevitable. But I’d guess it’ll be more of the “some eBay blog” types, versus the primary website for a legitimate “enterprise”. We shall see.

Here’s a nice fluff piece from The Next Web if you want to read a little more. Techcrunch and WPCandy covered it too.

edit: Christina Warren, of Mashable, posted a very nice post on this as well, and I agree with much of her analysis. Also note her comment below.

Screenshot of the new design.

New design!

Welp, here it is. I’ve been talking about a new design of this blog for what seems like a year. It’s about time I actually ship something. So I did… all in one night.

It’s based off of the base theme I’ve been creating for many months, Happy. While I’m overall pretty pleased with the direction the Happy theme is going, I’ve delayed redesigning this site because I keep tinkering with the base theme. Well, forget that. It was beyond time to replace my previous, very outdated theme.


This color scheme is definitely outside of my very small comfort zone. But I’ve liked DarkSlateGray ever since I saw it on the 147 Colors website, and this color scheme is just a lighter version of that. So we’ll see how it stands the test of time.

For typography, the body font is Adobe’s Source Sans Pro. It’s the same font that ships with the Happy theme (though I may remove having any embedded font in that theme), and I’ve like it for a long time.

The headlines are Trocchi, which I didn’t discover until I saw Rafal Tomal’s Typespiration site. I’ve always liked slab fonts, but they feel too harsh sometimes, and this one seems just right with its little round bits. And I’m sure that summation tells any real typography dorks just how little I know about it. But when I saw the demo on Typespiration paired Trocchi with Source Sans Pro, I was sold.

I certainly look forward to any design feedback y’all may have. I’m not a designer. So this is me – out there – on a limb.

Oh, Content

I’ve added two new sections to the site: My work and My toolset. Neither is filled out yet (you don’t expect that in one night too, do you?), but I’m excited about both.

The section for work will obviously be a simple portfolio. A relatively boring but necessary thing for someone that advertises themselves as a consultant.

For the toolset section, I plan to host reviews, or something like that, for the development tools, plugins, and services that I use in my workflow. Hopefully it will be a good opportunity to share with people what I use to make websites, and also offer a way to monetize this space a little bit. So, when I mention one of my tools in a blog post, I can link to one of the items in the toolset, which will give a thorough description of the item, and a disclosed affiliate link. That way, affiliate links I use are honest, and people gain some insight about what I’m linking in my blog posts. Hopefully it’s a win, win.

The about section is also going to get a makeover. I at least put a picture on that page to try to be a bit more personal.

Plenty to do

In addition to lots of content review, I’ve got plenty else that still needs work around here.

For one, all my feature images were designed around a 580px max width. So I’ll need to go back my more popular articles to make them not look so bad with the new wider layout. I also need to give some love to single post styling, especially for image and heading margins, and list styles. They are all still the Happy base styles, which are intentionally light.

I also need to create a custom page template for the homepage. The sidebar is pointless on the homepage, and I want to feature feeds from my portfolio and toolset in some way. But I wanted to go ahead and get version 1 out of the way. And I’d rather fill out that content first anyway before putting it on the homepage.

I’m aiming to make December a big month for my personal projects, and this is step one. So keep an eye out, because I’m not done with announcements yet!

WordPress and SQL: baby steps

I have to admit, writing a title like “WordPress and SQL” is pretty scary. I am by no means an expert. I’m very much a beginner. But I’d like to briefly walk through an introduction to working directly with the WordPress database, because as long as you know how to respect it, working directly in the database can be quicker and easier than other methods.

Edit: Based on great comments by Konstantin Kovshenin and Tom McFarlin, I realised I should have noted that when you can use WordPress functions to achieve what you need to do, do so. That way, WordPress APIs won’t be ignored by your changes (see Konstantin’s examples). But for certain tasks that you know will not have negative effects, what I describe here can be a good solution. Just be sure to test before you do these things in a live environment.

The first time you use a tool like phpMyAdmin or a third party tool like Sequel Pro (my preference), it’s a bit nerve racking. Once you make a change, there’s not an undo button.

So start off right: backup your database. A simple export should do the trick or you can use a tool like BackupBuddy.

In this simple example, we’re going to do two things:

  • A select query that makes seeing what’s in the database easier. The code snippet below selects all posts where comment status is closed.
  • The second line runs an update in the posts table to change all posts that have closed comments to “open”.

The code should speak for itself. Just read it out loud, and it will help make sense. You would only run one line at a time, of course. In Sequel Pro, you have the option to run a selection, so in the query tab of Sequel Pro, I just highlight the line I want to run, and then run that selection.

The asterisk (*) in the first line means that you want to select the entire row of the given table. So we are selecting all rows in the wp_posts table where the comment_status field is set to open, and limited those we select to published posts of the post post_type.

We run this select query because we want to see how many rows will be affected when we actually update. So, after we do that, we know what we should be changing with our update.

With the update, we are actually going to set the comment_status field to open, but only if they are currently closed, and only for published posts of the post post_type.

Once you get comfortable with this idea, you can see that much more can be done. You can replace essentially anything you want within the database with this format. However, beware, because you have a lot of power working in the database, and of course a lot of responsibility. But for changing comment status, post status, post author, various post meta fields, etc, it can be really useful.

It’s worth noting most of what you would do from a SQL client can also be done in WordPress functions, using the wbdb class. The codex article has quite a few nice snippets that you can use.

So: be careful, but have fun!


MaxGalleria plugin for managing WordPress image and video galleries

I’ve had an opportunity to provide development feedback for MaxGalleria, an image and video gallery plugin, and I think it’s a plugin you will like.

Managing galleries in WordPress can be a pain. In WordPress 3.5, default gallery handling will improve a great deal, but MaxGalleria goes well beyond what the default gallery system does. Rather than being a feature centered around posts or pages, galleries are managed independently, so you can manage them however you like.

In reviewing the plugin and talking to Dave Donaldson, my contact at Max Foundry, I think Max Galleria will offer some features that both users and developers will love:

  1. Both image and video gallery management. Default WordPress galleries only handle images.
  2. Multiple built-in skins and also custom templating so we’re not limited to default WordPress gallery markup.
  3. Built to work both out of the box and have flexibility for developers.

Dave has done a nice job, in my opinion, of making a thoughtful flow pattern for adding galleries, while maintaining balance with the native WordPress UI. I think it will mesh very nicely with the UI updates coming in 3.5.

I’ve always avoided NextGen Gallery (de facto WP standard for galleries) because it didn’t feel right, and Max Foundry agreed. They’re hoping to help you make the switch easily, even offering a built-in importer.

If you’re looking for more basic non-native gallery management (images only and fewer templating options), maybe try Shutter by Scott Basgaard. But if you’re looking for advanced gallery management for video and images, I recommend giving MaxGalleria a try.

It launched today, and purchase plans start at $39 – otherwise known as less than an hour of billable time on your next client project.



You are valuable


The keys: Be open. Be honest. Be willing. Be passionate.

Result: Be valuable. Be employed.

Full story

WordPress is exploding in popularity. This is an obvious statement if you look at statistics for sites that use WordPress, but have you thought of what that means to you if you know how to work with the platform?

It means you are valuable.

And people want to hire you.

The rest of the real world is figuring out just how good of a content management system WordPress is. It’s user friendly, constantly iterated, easier to maintain, and easier to extend than just about any other mature platform. But that doesn’t mean it’s simple. It still takes talented people to build consistent, high quality websites.

I am not the best WordPress developer in the world. I look up to hundreds of other people around me. But I am valuable. I can build just about anything with enough time and energy and as long as I keep my constant thirst to learn more about the industry I’m in. If you are like that, then you are very valuable too.

But I don’t know how I stack up

I cannot say this strong enough: just be honest. Be very straightforward about what you are currently capable of, what you are interested in, and what you’d like to know a year from now, or two years from now.

A challenge for people hiring “WordPress developers” is that there are massive differences in people that call themselves that. People hiring have a very hard time deciphering between an entry level person that knows HTML pretty well and a few WordPress functions, versus a seasoned PHP developer that specializes in WordPress development.

So… Just. Be. Honest. Show people sites you’ve worked on, and say what specifically you did on a particular site.

Can you customize a preexisting theme’s CSS? Do you know how to make custom templates? Do you know how to write custom queries? Do you know how to create widgets and settings pages? Do you know the WordPress database architecture? Could you be given a type of content (say like a restaurant menu) and give a detailed outline of how you would structure and organize the data? Do you have experience working with advanced meta data and custom meta boxes? Do you know jQuery or raw JavaScript? Do you have PHP experience with other frameworks? Are you obsessed with page load speeds? Have you created any public plugins or themes? Do you have design experience?

It’s not as important what your comfort level with these things is as your openness describing what you are good at and what you are not.

Oh, and don’t let me forget: if you can communicate really well to both clients and within a team, and you know how to prioritize your own work, then you have an huge advantage before even starting to talk about your development skills.

When I got my full time job, I wouldn’t have considered myself an “expert” at much of anything. I was decent at a few things, miserable at a few, but pretty good at two things: the right places to use which WordPress functions and methodologies, and how to look things up and learn.

A year+ removed, I’ve drastically improved across the board. What has benefited me most was knowing what I know, knowing what I don’t know, and having a strong desire to learn.

If you can resonate with this at all, and are on the fence about going full time WordPress, or wondering if you are valuable, or maybe you’re struggling freelancing, then maybe it’s time to market yourself and get hired.

Keep in mind there is more than freelancing available. Interactive agencies and ad agencies and dedicated WordPress agencies and WordPress product makers are all hiring. And they need a vast array of different skills from maintenance to new development to support to you name it.

If you’re convinced you’re not ready, then just build websites and you will be soon enough.

If you really excel at any of the skills I’ve mentioned, then you are in very high demand.

You are valuable.

Slow down and inject value into your client projects

I’ve been reading about pricing lately. I’m accustomed to project based pricing, and seen some downsides from it. I’ve thought many times that perhaps it would be beneficial to utilize blocks of time and price the time. But a couple of blog posts I’ve read recently have helped me shape in my mind what makes a successfully priced project.

From A List Apart, an excellent article by Jason Blumer:

Inject value into your client’s experience with your service. You simply have to charge more. That is a totally strategic move, and one you can’t do unless you have the guts to do it. But you can’t charge more for crap.

Of course, before even this, we must clearly understand the needs and goals of the client:

Slow down how, when, and who you take on as clients. You need time to determine a client’s needs before you price their projects. You must know what outcomes they desire.

I do believe that if we hold to some core foundations, project pricing can be quite successful. But if you abandon a focused process, it can also be disastrous, and cost your firm thousands of dollars. But I absolutely agree with Blumer’s summary:

[W]e should strategically charge clients for what we do by pricing our services (not our hours). Take new clients slowly, show them your intent to take care of them and give them a wonderful experience. Deeply consider where you have developed your thinking on the creative profession and its worth, and then step out with some guts to charge your clients for your true value.

I also recommend reading Chris Lema’s post on why he never charges hourly. He too focuses on valuing your own value as a creative professional.