Want to get more articles like this one? Join my newsletter

2016 in review: #Carl2016

Well, we’re almost done with 2016! Around the same time last year, I did my first year in review. (In reality, it was more of a 2012-2015 review!) I want to continue this trend by doing a review of this year.

It’s a way for me to be transparent about what I’m doing. It’s not something that I’m good at. (The most common question I get is still “What do I do?”) It also lets me document what I’m doing to see if I’m making progress towards where I wanted to go the year before.

This means that this article is more for me than for you. That said, I think there’s a lot of value in reading how people are navigating the complex game of life. (Not that game of life!) That’s why I like reading them!

Building trust

In my opinion, this is the best way to describe what I’ve been doing this past year. One thing that I learned from my past failures is that people want to buy things from people they trust. (Not that I’m selling anything yet!)

I think this is especially true with developers. We want to use the same tools as the developers we admire and trust. And that admiration and trust came from them helping us become better developers.

That’s why my biggest goal this year was to do that. I wanted to build trust that I wanted to help you become a better developer. This meant doubling down on the article writing and public speaking.

Writing articles

With this year in review, I wrote 15 articles in 2016. (I wrote 17 in 2015.) It’s less than I expected. But I also know, without counting their length (it’s hard to do with code samples), that they’re longer.

Writing habit

That’s because I’ve continued to improve my writing habit this year. Last year, I wrote 150 words/day and now I’m at 250 words/day for articles. (I’m starting a separate habit for the book.) It’s not a huge bump, but it’s what I was able to do.

I’m pleased that I was able to stay consistent during the year. I’ve had gaps where I didn’t write anything too. But I was able to get back at it with ease. This shows me that the habit is starting to be well ingrained into my life.

It doesn’t change the fact that I’m still a slow writer. I can’t help but edit as I go which means writing 250 words can take me a few hours. I do enjoy that I get several days to let the idea behind the article mature. I don’t think I ever want to write an article in a day.

That said, I’ve noticed that I struggle when articles take me over three weeks to write. The article begins to weight on me. And I start doubting that what I’m writing is any good.

I saw it happen with every talk I gave this year. Because I always do an article and talk combo, it just takes me a good month to do everything. By the end, I want the whole thing to be over so I can move on. We’ll have to see how I juggle that with the book. (More on the book later!)

Quality over quantity

With the writing habit going well this year, I expected that I’d write more articles as a result. As we saw earlier, I wrote fewer articles this year than in 2015. It’s worth noting that I don’t see this as a failure to write enough articles.

Instead, I see it as a failure to see how far I’d push the length of my articles to make them higher quality. I thought that the articles I wrote in 2015 were long enough and I wouldn’t need them to be longer. Which meant that I’d be able to increase the number of articles that I write in step with my writing volume.

Well, that didn’t happen. Most of the articles this year were a good deal larger than the previous year. I even had to split one in two which is something I never wanted to do. (It would have been over 8,000 words otherwise. It was also taking so long and weighing on me.)

For now, I’ll deal with article length on a case-by-case basis. I’m a long-form reader so I write like I read. I like it when the articles I read are thorough on the subject they cover. (Like most of what Tim Urban writes.)

I want my articles to be the same. I’m ok with the idea that you might not have the time to read them when they come out. I’m happier knowing that they’re as useful and thorough as they can be when you do decide to read them.

It’s also why I created the library page. It’s an acknowledgement that you won’t read all these articles as they come out. But that you might want to refer to them in the future.

Guest posts

Part of my hope for higher article output was that I could move some of that output to guest posts. Of course, that didn’t happen. My output never reached a level of writing output that let me do that.

It’s, without a doubt, something that’s on my radar for 2017. I’m hoping that, once I’m done writing the book, I can use that writing output for guests posts. We’ll see if that ends up happening.

I also think it’s a skill I need to develop. I’m used to writing long detailed articles, but that doesn’t work well for guest posting. I’ll need to learn to find topics that I can write smaller (yet still detailed) articles about.

With all that said, I still managed to get one article republished on Smashing Magazine. But they approached me about it. I didn’t do any outreach for it to happen. So I consider it more of a lucky break than anything else.

Branching out

The interesting thing about that article was that it had nothing to do with programming. It was an article on the modern WordPress server stack. I was writing it for people interested in system administration.

This is another field that I like a lot. I find that system administrators don’t do enough to share knowledge and build tools. I want to do more about it next year.

All this to say that I want to branch out a bit. Right now, I’m a person who talks about advanced programming topics (object-oriented programming mostly) in the WordPress community. I want to be a person that you trust to help you become the best developer you can be.

This means that I have to diversify what I write about a bit. That’s why I also started writing articles about more general programming techniques. So far, I’ve written about conditionals, loops and strings.

I just have to be careful to not spread out too much. But I feel that I’m already so niche (I joke that I’m a niche within a niche within a niche) that I have a bit of room to do it. All these other topics are pretty niche too.

Public speaking

My goal for this year was to apply to speak at six WordCamps. But I only managed to do five because I didn’t have that many choices in the fall. So here are all the WordCamps I applied to this year:

  • WordCamp Miami
  • WordCamp San Diego
  • WordCamp Europe
  • WordCamp Los Angeles
  • WordCamp US

Out of those, I was only accepted to three: Miami, San Diego, Los Angeles. I didn’t get accepted to speak at the larger regional ones. I’m not sure if it was a problem with my submissions or just that they had too many submissions to pick from. (WordCamp US had over 500 submissions!)

I’m still going to aim to apply to six WordCamps in 2016. After all, I only got accepted to speak at three WordCamps this year. I don’t know if I could’ve handled it if I’d gotten accepted to every one of them.

Still writing companion articles

That’s because I’m still doing a new talk at each WordCamp. And each talk always has a companion article. This is something I started doing last year and I still enjoy doing my talks this way.

The only issue is that it’s time-consuming. I’m a slow writer so, to be safe, I have to set aside one month to do everything. This gives me the time to write the article and create the slide deck without feeling rushed.

That said, I feel like it’s been beneficial to do it this way. I think it’s hard to approach advanced topics like mine in a WordCamp. The companion article allows an attendee to go over things on his own time.

There’s also not a huge audience for advanced topics at most WordCamps. The companion article is a way for me to ensure that it reaches people that weren’t able to attend. It’s a better way to give back to the community.

The only negative thing about doing things this way is that it doesn’t allow me to improve the delivery of my talks. I also tend to have a lot of slides in my slide decks. (Understatement of the year lol.) The reason I like doing slide decks that way is that it makes them readable later.

But I know it’s not the best for the talk itself. It can feel like I’m reading off the slides and interacting less with the room. I’m not 100% sure what I’ll do about it yet, but I’m keeping it in mind.

Spanish talk

An important goal for me for next year is to give a WordCamp talk in Spanish. I’ve been taking Spanish classes for over five years and I think it’s a cool way to challenge myself. I’m still brainstorming how I’ll approach doing such a talk, but I want to do it.

I’m currently looking at WordCamps in Spain. They have a vibrant community and a lot of WordCamps. I don’t think I’ll be able to do one in spring next year so I’m looking at fall next year. (I’m currently looking at Seville which was at the end of September this year.)

Increased travelling

This is as good of a time as any to bring up the topic of travelling. My goal has always been to have a semi-nomadic lifestyle. Last year was the first year where I could afford to travel again so I didn’t travel that much.

My goal for this year was to increase that and see how far I could push it. Here are all the locations that I’ve been to this year:

  • Boston
  • Miami
  • Phoenix
  • Las Vegas
  • San Diego (Twice!)
  • Toronto (Three times!)
  • Spain (mostly Catalonia)
  • Los Angeles
  • Philadelphia

Less North America. More Europe.

This is quite the increase over the previous year where I only visited four locations. But, as you might have noticed, except for Spain, all my visits were in North America. This is because it’s quite a bit cheaper for me to take a plane to the United States than anywhere else. (It’s even cheaper than a plane within Canada.)

That said, I’m hoping to shift some of that travel to Europe next year. I’m already on track to at least double my number of visits to the old continent. But the best case scenario could be as high as four visits to Europe.

Balancing work and travel

So far, most of my trips lasted either a few days or around two weeks. I still haven’t done any trip that was longer than that. There are a few reasons for that.

The biggest one is balancing work and travel. (Yes, I know. It’s quite the first world problem.) I’ve tried to do it on the shorter trips this year. I can only say I was successful on one of those trips. (The one to WordCamp Los Angeles and San Diego.)

But I think it was more of a fluke than a real success. California’s nightlife ends pretty early so I couldn’t shoot myself in the foot. (Unlike Spain where I saw the sunrise most days!) This helped me maintain a somewhat regular schedule so that I could get some work done during the day. I was also lucky that I had friends offer me some space to work in Los Angeles and San Diego as well.

Regardless, I’d like to make a serious attempt at a month long trip. I’m not sure if this will be possible next year. (It might not be possible from a financial perspective. Another challenge.) That said, I still need to work on improving this balance when I travel next year.

People are awesome!

I have to say that the best part about all this travel is that I got to met so many new and old faces this year. It’s without question the highlight of my year. (I hope it stays that way each year!) I didn’t quite realize how much I missed it until this year.

I backpack a lot when I travel. I find that it’s a great opportunity for me to meet individuals with a wide range of life experiences. From British marines on leave in San Diego to a guy who’d hitchhiked from London in England to Johannesburg in South Africa. There’s no question that I met a wide range of interesting characters backpacking this year! (I also met up a friend I made backpacking in Germany 10 years ago!)

Spending time in the WordPress community

But the most obvious way that I met people this year is through WordPress. (Duh!) I talked to a lot of people online on Facebook, Twitter, comment threads, Slack and so on. Still, I was also lucky enough to meet some of them in person throughout the year.

The contrast between WordCamp US this year and last year was drastic. Last year, WordCamp US was also my first ever WordCamp outside Canada. I didn’t know that many people and I didn’t feel that many people knew me either.

Meanwhile, this year I saw a lot of familiar faces from the other WordCamps I attended in the United States. But I also got to met a lot of new people through just introductions from other community members as well. And I felt people knew about me before I was even introduced to them which felt new and a bit weird too. (Not in a bad way. More in a humbling way!)

That said, it felt good to feel part of this larger community. (I always felt part of my eastern Canada WordPress community! <3) And I think it showed that I spent a lot of time there this year. This is another reason why I want to go to Europe more next year so I can do more to be part of that community too!


And, speaking of feeling part of a community, it wouldn’t feel right if I didn’t talk a bit about CarlBoard. (Shown in the feature image.) I had a lot of great people moments this year, but this one stands out above the rest. It just shows how awesome everyone is in the WordPress community.

If you’re not familiar with CarlBoard, it’s a cardboard version of me. I didn’t have any hand in its creation. It was all done by the WP Crowd. It’s a podcast that I’m on once in a while.

They like to sponsor smaller WordCamps and do whacky things with their sponsorship. They sponsored WordCamp Ottawa this summer. I couldn’t attend that WordCamp because I was travelling in Spain. So they decided to make a cardboard version of me as a “substitute”.

It was a huge hit! I was getting a ton of pictures from the event as people took selfies with CarlBoard. It was pretty surreal.

At that point, people wanted CarlBoard to attend their WordCamps too. That’s when CarlBoard started its journey travelling to various WordCamps using whatever means necessary. The whole thing culminated with a presence WordCamp US early this December.

It’s worth pointing out that we created this rule that I couldn’t be the one transporting him. (Yes, it’s a person!) It had to be someone from the community that had to do it. This added one more element of community involvement.

So far, everything about CarlBoard has been crowdsourced or crowdfunded. I don’t want this to change. (It’s a community thing to me.) If there’s interest in having it continue then perfect. Otherwise, it’s had a good run!

Audience metrics

Alright, so this year I focused a lot on building trust and being part of the larger WordPress community. But was it worthwhile for me to do so? Was I able to increase my presence in the community?

There’s two metrics that I look at to know if things are going well. There’s the obvious website traffic. That said, the one I consider the most important one is newsletter subscribers.

Website traffic

Let’s start with the easier website traffic. All that I do is look at the metrics from Google analytics. You can see the metric comparison between 2015 and 2016 below:

Google Analytics Overview

As you can see, things look pretty good! You can see green almost everywhere. The only exception is new sessions which is down a tiny bit. (I’m not sure if I should even expect this to be green in the long run.)

Sessions and page views almost doubled this year. I also saw a huge increase in the number of users that visited my site. This is great for me since my goal was to increase my reach in the WordPress community.

The numbers themselves are still quite small. (60,000 page views isn’t anything to write home about.) But that’s fine with me since I’m catering to such a small niche. When I look at it from that perspective, I think my numbers are fantastic.

Traffic sources

And where did this traffic come from? As far as numbers go, organic search (12,293), direct (10,239) and social (9,947) were all pretty close. But organic search had a monster growth this past year.

Google Analytics Traffic Sources

Google Analytics doesn’t show information on organic search anymore. Most of it is under (not provided). That said, you can use webmaster tools to look at the last 90 days of search queries. Looking at it, it seems that most of the search traffic is going to this article on formatting PHP strings. (More on it in a bit!)

Google Analytics Social Traffic Channels

The other channel worth looking at is social. Most of it comes from four sources: Facebook, WordPress, Twitter and Reddit. I’m not quite sure what “WordPress” is as a social traffic source. (I’m thinking that it might be links from other WordPress sites.)

Top three articles

Here are the three best-performing articles of this past year:

Each article has a good reason for being there. The first one was the companion article for my WordCamp San Diego talk. It was so popular that Smashing Magazine asked me to republish it.

The second one was the result of an interesting experiment. I have a series of posts that go in-depth on some WordPress systems. I decided to try linking to them in the codex where it made sense to do so. This seems to have worked well for the rewrite API.

The third article was the first article I did that focused on the PHP programming language. It did well because someone posted it on /r/PHP and people upvoted it a lot. People also share it a lot (more than any other article) on Twitter.

Newsletter subscribers

But what about newsletter subscribers? Did this increase in traffic translate to more of them? Well, let’s look at the numbers from ConvertKit.

ConvertKit Overview

There are a few things going on here. First, we have the number of subscribers. Right now, I have 748 subscribers. At the same time last year, I had 467. So that’s about a 60% increase over last year.

But if we look a bit closer, we can see that I added 515 subscribers over the last year. That’s a difference 234 subscribers. Did that many people unsubscribe to my newsletter? (That’d be horrible!)

Cleaning up my newsletter

No, that’s not what happened. In September, I decided to clean up my newsletter. I saw that I had a lot of cold subscribers. These were subscribers that hadn’t clicked or open an email in over 90 days.

ConvertKit Cold Subscriber Email

I sent them this email to know if they were still interested in my writing. If they opened the email and clicked on the link, this would flag them as active. After a week, I removed everyone else. (In case that you’re curious, only one person clicked on that link.)

This removed about 180 people from my newsletter. So that means that only about 54 people unsubscribed instead of 234. (That’s a much better number!)

So why did I do this? Well, I think that teaching object-oriented programming with WordPress is pretty hard. It’s even harder if a lot of my readers are inactive.

I’d rather have a small but active newsletter than the opposite. That way I can know if I’m doing my job right. That’s what counts for me at the end of the day. I don’t care about vanity metrics.


So things are going quite well on the audience side of things. What about products? What’s going on with that? Why am I not trying to sell anything yet?

Well, the truth is that I was hoping to create a product to sell this year. But that didn’t happen. I didn’t feel I had the audience yet to spend that much time on it.

I don’t feel that way anymore. That’s why I started working on building a daily habit to work on a product. If I want to be serious about building products, it needs to be something I work on every day like writing.

But a habit takes time to build. So, even if I don’t have the audience for it yet, it’s important that I get the ball rolling anyways. That way, the habit will there once I have a good-sized audience. (I think 1,000 newsletter subscribers is a good-sized audience so it’s soon.)


So this is why I mentioned that I was building a separate habit for the book. The current habit is to write 150 words each day for the book. But, so far, I haven’t been 100% consistent with it.

That said, I still have about 3,000 words written for the book already. It’s nothing write home about, but it’s a good start. My goal is still to release it next year.

This means that I’ll have to start promoting it. The first step is going to be to create a sample chapter that I can send to you. I can also use it as an incentive on the book signup form.

But I’ll also send updates to newsletter subscribers throughout the year. I keep hearing from other authors that it’s a useful way to get early feedback. So I want to try it out myself too.

DebOps for WordPress

The other product that I keep working on is “DebOps for WordPress“. This is the open-source WordPress server configuration tool that I built last year. I didn’t give up on it and even tried to promote it a bit.

In fact, that was the underlying goal of my talk on the modern WordPress server stack. I wanted to see if I could do content marketing to raise awareness about the project. It worked pretty well! The project has over 220 stars now.

I also kept adding features and fixing bugs during the year. The key highlights for this year were:

  • Changing the supported LTS version of Ubuntu from 14.04 (Trusty) to 16.04 (Xenial).
  • Replacing HHVM with PHP 7.
  • Adding support for “Let’s Encrypt” SSL certificates.

While it might not make money from it, I still see this project as a product that I support. I’m still not sure if I’ll ever build a paid version like Laravel Forge. Whatever I decide, odds are that it won’t happen next year.

At capacity for now

That’s because writing my articles still consumes so much of my time. I feel that working on these two products uses all the free time that I have left. I don’t think it would be wise for me to spread myself out more.

Instead, I’m going to focus on releasing the book next year. I can then use the freed up time to work on my next product. I’m also hoping that I have a better idea of what I want to work on next by then!

Personal finances

The final topic to cover is my personal finances. (Or as others like to say my hate for money!) As usual, I’ll mention that I’m Canadian. This means that all amounts mentioned will be in Canadian monopoly money.

Bank account

Let’s start with the status of the bank account. At the end of last year, I mentioned that I had $11,234.32 in my bank account. At the end of this year, I sitting on $13,669.62. That’s a profit of $2,435.30!

I’m super happy about this. As you’ll see next, I ramped up my expenses this year because I’ve been travelling a lot more. (A lot of things broke too.) It’s good to see that I was able to manage everything well and stay in the black.


I’m doing a bit better at tracking my expenses this year. (Having to start paying taxes will do that to you!) So while everything is still going through the one bank account, I’m keeping track of what I’m spending money on. Here are the rough numbers so far:

  • Travel: ~ $7,000
  • Software (with phone): ~ $2,400
  • Rent: ~ $7,000

These are gross expenses and not what’s going on my tax return! But it should give you an idea of where some of the money is going. This doesn’t include things like food, leisure, etc.

I also had to replace a lot of my things this year. (I’d mentioned this was going to happen in last year’s review.) Lucky for me, I don’t own many things. But it’s still not something that I enjoy doing.

I have buyer’s remorse when I buy almost anything. I think it’s the key factor behind my ability to manage expenses so well. You can’t have expenses if buying stuff is always a painful experience.


So that’s the money coming out. But what about the money coming in? Well, that’s gone up a fair amount. I estimate my income was around $34,000 this year. (It’s a bit more complicated to calculate this year.)

That’s almost double from last year where I made $18,897.50. That said, the sources of income haven’t changed. I still rely on consulting for more than 90% of my income. I’m hoping that’ll begin to change next year if I manage to finish the book.

Global Voices

Global Voices is still my only consulting client. They run a complex WordPress installation in over 40 languages. Some of the code has been around for a long time. The website started before multisite existed. (That means that there are over 40 individual WordPress sites with a shared code base.)

My friend Jeremy (The handsome gentleman hugging CarlBoard!) and I work on maintaining it while adding new features at the same time. This year most of the focus was on improving their server architecture. This was a pretty demanding project and that’s why the consulting hours went up a lot.


The other 10% of my income comes from ProductPress. This is a small plugin that I built with Justin Jackson. It connects your WordPress site to the Gumroad so that you can charge for content that you create.

In June, Justin approached me about taking over his part of ProductPress. He was looking to simplify his life so he could focus on his other initiatives like MegaMaker. I said yes so I’m now the only one supporting ProductPress.

At this point, the plugin itself is on autopilot. It’s stable and seems to be bug-free, but I won’t develop new features for it. Like I mentioned earlier, I’m pretty maxed out from product development perspective. On top of that, the whole plugin business isn’t something that appeals to me a lot right now.

That said, this was a fantastic product experience and I’m happy to have done it. It was great working with Justin. I hope that we get an opportunity to collaborate again in the future!


So that’s the status of things at the end of 2016. I tried to be as thorough as I could. I think it’s important for future Carl to know as much about what I was thinking at this point and time.

But, as this year ends, I feel once again grateful to you. You have made this whacky life experiment of mine a success for another year. I wouldn’t have made it this far without your trust and support. (Even if you’re just lurking!)

I also love that I got to meet more of you in person this year. I hope I can do better next year. But we all have to start somewhere!

So thank you once again! And, as usual, if you have any questions, feel free to ask them in the comment section below.

Photo Credit: Jeremy Clarke

Creative Commons License