Want to learn object-oriented programmming? Get my free course

2019 in review: Moving up the ladder

It’s the end of 2019. This means that it’s time to do a retrospective of my year as I’ve done the past few years. This has been a really good exercise for me so here we are with my fifth one!

And, speaking of that, I’d like to give my usual warning when it comes to these year in review articles. These are articles that I write for myself so that I can look back and see where I’ve come from. It’s also a good way for me to remember what I was thinking during the year and where I wanted to go.

It’s also a good way to be transparent with you. I live a life that’s pretty different from most people in their 30s. (I got to speak about it this year!) This is a way for you to see what that’s like and how I’ve dealt with various situations.

I think it can be useful to read about it. This is especially true if someone shares similar values or life goals. So, if that’s you, I hope that you get some insight from my journey. If it’s not, I still hope this is helpful in some way anyways!

Previously on the life of Carl

Normally, I don’t recap the previous year before starting to discuss the current one. But last year wasn’t a normal year. I struggled with a few things, and that carried over into early this year.

We’re not going to go through everything again. (You can read last year’s review if you want that!) But here’s the gist of what was going on at the end of last year:

  • I was struggling with being home and addicted to video games.
  • I was trying to finish my book, which still needed screencasts. (This is hard when you’re playing video games a lot!)
  • I felt that what I was doing for my newsletter wasn’t really working.
  • I was also pretty bored with the WordPress project. (But not the community!)

Thankfully, I managed to get some through some of these issues. I haven’t really played video games that much this year. I managed to finish the book! (More on that later obviously!)

On the other hand, I’m still not sure what I’m doing for my newsletter. I don’t feel it’s as bad as I did last year because of well the book went. (I’ll talk about that later too.) But I’m not too sure where to go with it either especially now that the book is out.

And this brings us to the last point which is that I’m still bored with the WordPress project as a whole. And finishing the book sapped a good amount of my motivation to write about it. As I’ve kept saying, I’ll talk about all these again a bit later, but that’s the status update vis-à-vis how things were last year versus now.

I travelled a lot this year

So back to our regularly scheduled programming! Let’s dial it back to the beginning of the year. I’m still not feeling that great, but the good news is that, unlike the previous years, I didn’t burn out. (Yay!)

Because of that, I was able to do some serious travelling for the first time during the winter months. In fact, this was my biggest year yet for travelling. There are a few reasons for that besides the lack of burnout.

I spoke at a lot of conferences

To begin, I was in Mexico for most of January and early February. I spent my days working, going to the gym and tanning on the beach. (I know tough life.) That was pretty much the only trip like that this year.

The rest of the year, most of my travel centred around conference speaking. Starting from mid-February through the first weekend of November, I spoke at a total of eight conferences. That’s pretty much one conference a month.

I also attended a few others during that time as well. So, in reality, I was at more than one conference per month. Here’s the complete list in chronological order:

  • WordCamp Phoenix (February)
  • WordCamp Miami (March)
  • WordCamp Atlanta (May)
  • Dutch PHP Conference (June)
  • WordCamp Europe (June)
  • Laracon (July)
  • WordCamp Montreal (August)
  • WordCamp Minneapolis (August)
  • PressNomics (September)
  • WordCamp Panama (October)
  • WordCamp US (First weekend of November)

There were a few short breaks here and there, but it was still a lot for an eight month period. In fact, I was pretty scared I was heading for a burnout again. But I rested a lot before going to Panama, and I was also sick there, which made me sleep a ton. So I think I managed to dodge it again this year. (Woot!)

That said, I think I will do fewer conferences next year. I applied to speak at the first WordCamp Asia, but I didn’t get in. I want to try to do mostly new WordCamps next year. (Except for Phoenix because it’s amazing!)

I had good finances

I also got to travel more this year because my finances were especially good this year. I made quite a bit more money than the previous years. (I’ll talk about that later.) I also managed to get some financial assistance to cover some of my travel.

First, I was invited into Pantheon‘s heroes program earlier in the year. They offer to assist you financially for some things. Specifically, they paid for my Laracon US ticket and some of my travel expenses for WordCamp US. (All in all about $1,500.)

I also didn’t really have to do anything special for it. I just had to keep doing what I was doing already. Everything that I did that involved Pantheon I would have done either way without the program. (They’re a great platform for teaching about continuous integration.)

I also got financial assistance from the Dutch PHP Conference as well as PressNomics. But that’s because I was a speaker! So this was just me receiving the benefits from speaking at a more traditional conference. (I’d given myself the goal last year to try to speak at some of those this year.)

That said, it was really helpful because the Dutch PHP Conference paid for my flight to Europe. (It’s by far my most expensive flight each year.) I was able to stay after the conference and go to WordCamp Europe. Without it, I would have had to buy a flight to Europe like I normally did.

It was a bit too much conference speaking

While I didn’t burn out this year, I mentioned earlier that I did feel like I came close to having one. I feel this was pretty close to the upper limit to how many times I want to speak in a year. For next year, I’d like to aim for about six speaking engagements.

Currently, I’m looking at WordCamp Phoenix (I’m a backup for Phoenix currently), Chicago and Europe for the first half of 2020. Like I mentioned earlier, I applied to speak at WordCamp Asia but didn’t make it in. I don’t think I’ll be going as an attendee sadly.

I also want to aim for two non-speaking trips like the one I did in Mexico. They wouldn’t be trips where I backpack around as I usually do. I just want to rent a place for a month or so and live there. I’m looking to go back to Colombia for the first one.

My writing suffered

All this travelling compounded with my lack of enthusiasm for the WordPress project really affected my writing. If we include this year in review, I wrote 9 articles this year. This is even less than last year, where I wrote 11 articles compared to 20 in 2017.

My own writer’s block

I continued to struggle with my writing habit this year. I was even less consistent than last year. Part of the reason for it was that I didn’t like a lot of what I was writing. For the first time, I have a few articles that are sitting either unfinished or unpublished. I hope to get back to them and finish them next year, but who knows.

Ironically, I talked about a lot of what I struggled with this year in my article on writer’s block. That article and the one on following your passion (also linked earlier) were super hard to write. But I’m happy with how they turned out in the end.

That said, they were some of the hardest articles I ever wrote. I definitely had a tough time sitting down and wanting to write while I was writing them. And combined, I probably spent three months writing the two of them. So that was a pretty long period where I had little motivation to write.

Continued to branch out with new topics

But these articles were part of my commitment to diversify my writing. This is something that I’ve mentioned over the past two years. I don’t want to just write about object-oriented programming and WordPress anymore.

As I said earlier, I wrote about writer’s block and following your passion. But I also wrote about how I marketed the book. These were really different articles from what I do normally.

I still wrote some WordPress articles that weren’t programming related. One article was on how to use Bedrock with Pantheon. Another one was on how to do automatic WordPress updates with Bedrock and CircleCI.

I also said I was going to write more about Laravel. This hasn’t happened yet. If I’m honest, I feel some impostor syndrome at the idea of writing about it.

I didn’t feel I’d used the framework enough to write about it, so I’ve been holding off. Right now, I have one article which is sitting unpublished. However, I wanted to have more than one of them ready before I started publishing them.

That said, I’ve been using Laravel most of this year, so I feel a lot better about it now. I also have a growing list of things that I’d like to write about. So there’s a good chance next year will be the year that I start writing about Laravel semi-regularly.

Making some changes

I plan on making a few changes to the site next year. This year, I added a now page where I just write about what I’m doing at the moment. I plan on updating it every three months or so.

For next year, I would like to overhaul the look of the site. I’ve been wanting to do this for a few years but never found a free theme I liked. I didn’t want to use a paid theme because my site is open source. Even if it’s ok GPL-wise, I’d rather not have a paid theme in a public repository.

But I recently found the website of the talented designer Anders Norén. He has this interesting theme called “McLuhan” which has an archive as a front page. I’d like to experiment with it and see if I can maybe bring the library to the front page.

The other thing that I want to do next year is to update my articles to use namespaces and short array syntax. With WordPress bringing up the minimum PHP version, I can finally start using them. This is part of my desire to keep most of the content here relevant to WordPress developers.

I already started working on changing some articles to namespaces this year. But it’s a huge task that will require some time, and it’s not especially exciting. So I’m going to keep slowly chipping at it.

Looking at the numbers

This is a good time to check the audience numbers for this year. Building an audience is always something that I’m working on. It’s the most important thing that I do because it’s what I feel I need to do to build a sustainable life for myself. (I talked about living sustainably in my article/talk on following your passion.)

For me, there are two metrics that I look at to know how well I’m doing on that front. First is how much traffic this site gets. I just want to know if there are more people interested in what I’m writing about.

The second metric is how many people subscribe to my newsletter. This one is even more important than web traffic. You have to care a lot more about what I’m doing to give me your email.

And it’s not just about someone caring enough about what I’m doing to give me their email. I also have to make sure that what I deliver to their inbox is valuable and helpful to them. So, if I’m retaining email addresses over time, it means I’m doing a good job with that.

Web traffic

I didn’t really know what to expect in terms of web traffic. I didn’t look at Google Analytics all year. I was pleasantly surprised that I did quite well this year.

Compared to last year, my numbers are overall quite better. The stuff in red has more or less stabilized. This is especially true for the bounce rate, which stayed relatively flat.

As far as the green numbers go, the growth of users slowed down a bit. This is for both users and new users. The growth in sessions stayed roughly the same. So that’s nice!

The really positive thing is the number of page views grew quite a bit even with my lack of writing. Last year, it sat at 13.89%, and I thought that it’d slowed a lot because of that. It’d grown 31.33% in 2017 and 98.80% in 2018.

Traffic sources

I also like to look at traffic sources. It’s good to know where people are coming from. Compared to the other years, there haven’t been any surprising changes here.

Organic search still dominates with about 82% of all users. Direct traffic accounts for about 12%. So these two together are 94% of my traffic, which is pretty crazy.

The 1,845.45% growth from email is just weird. I went from 11 users to 214, so it’s still pretty much nothing. I’m really curious about how Google Analytics determines email as a traffic source. It seems pretty random.

It’s also interesting that social traffic grew a bit. I posted even less on social media this year. And you can see it from the statistics below.

Twitter now accounts for about half my social media traffic. This makes sense since it’s the only social media I really posted on during the year. Since I wasn’t writing much about WordPress, I had nothing to share on Facebook or Reddit. (I only post on the /r/ProWordPress subreddit and the Advanced WordPress Facebook group.)

Reddit took an especially nasty drop. I’m not really sure what “WordPress” traffic is so hard to know why that one dropped. But again, social media as a whole isn’t a huge driver of traffic for me, so the drops didn’t matter that much. It’s more something I’m curious about.

Most viewed articles

Another fun thing to look at is the top articles for the year. I’ve decided to expand the list to my top five this year because, as you’ll see, it hasn’t changed much again! (All three articles from last year are on the list.) It’s because I try to write evergreen content. (It’s cool to see it do well year after year!) So here’s the list:

  1. PHP strings and how to format them (12,268 pageviews)
  2. How to use PHP array functions instead of loops (8,282 pageviews)
  3. Getting started with continuous integration and WordPress (8,233 pageviews)
  4. Mastering the use of PHP conditionals (6,328 pageviews)
  5. Introduction to automated WordPress deployments (4,370 pageviews)

The article on PHP strings is still the reigning champion. It’s definitely the best performing article I’ve written so far. It still accounts for over 10% of my total traffic, which is insane.

The second article on functional programming continues to do well and grew over 25% from last year. (It was in second place last year as well.) There’s definitely something about just writing about in-depth articles on programming fundamentals in PHP. That’s why I’m not surprised to see the one on conditionals on the list. It had a 68% increase in traffic this year.

What’s more interesting is the two WordPress articles that did well this year. Both of them are DevOps articles. This is good news because that’s the topic I want to refocus on now that the book is out.

I don’t have a lot less to write about for object-oriented design in WordPress. But I still have much I want to talk about in terms of continuous integration and testing. It also ties well into the new project that I’ve been working on. (More on that later!)

Newsletter subscribers

Now that we covered the rosier web traffic numbers, it’s time to talk about the newsletter subscribers. On paper, my newsletter numbers look really good this year. You can see it in the graph (shown below) of the total subscribers for the last year.

I’m up to 1500 subscribers, which is a 50% increase from where I was at the same time last year. This should be a cause for celebration. The issue is that most of my subscribers came from the book launch, which is the large spike in March.

If we look at the net subscribers’ graph above, we can see this clearly. I had a net gain of 283 subscribers in March. Afterwards, I had a decent two months with 30+ subscribers. But otherwise, it’s been single-digit or low 10s. I even had one month with negative growth. (Although that one is probably because of my shenanigans lol.)

On top of that, 447 out of the 1500 subscribers in my newsletter are cold subscribers. That’s a 70% increase from last year. ConvertKit considers subscribers that haven’t opened an email or clicked on a link in over 90 days as cold. 447 subscribers means that almost 1/3 of my list is cold, which is really not good.

I don’t know what to think anymore

At least, it doesn’t seem good to me. In reality, I’m not actually sure if those numbers are terrible. I know that my avg open rate (54%) and click rate (15%) are quite good.

The truth is that I’m not too sure if my newsletter is really broken or not. I know that last year I felt that what I was doing wasn’t working anymore. I still think that because I’m having such a tough time adding subscribers.

It feels like I’m not doing my job properly and that I’m not worth giving my email address to. There’s only one problem with that line of thinking.

It’s the book.

The book did really really well

It’s hard for me to even write about how well the book did. It just feels so surreal and humbling to me. But before I continue, here are the sales numbers for the year:

So the book sold for $18,000 USD worth of copies. There are even a few sales missing that I did via PayPal because there was some issue with Gumroad. (<3 Gumroad) So it’s maybe closer to $19,000 USD.

If you’d told me that I’d do this well before the launch, I would have laughed at you. This was a book on object-oriented programming for WordPress developers. You couldn’t find a smaller niche. That’s why I always joked I was a niche within a niche within a niche.

So I did my research, and I looked at how well people did in general. Sure, you have outliers like Adam Wathan who can make $138,835 writing about functional programming. (It’s a great book btw!) But based on my research and just how small my newsletter was, I figured, if I did $3,000, that it’d be amazing.

Original tweet here

Well, I did $4,000 USD in sales in the first 24h. And, by the end of the first week, I’d done $11,000 USD in sales. Sales numbers I hadn’t even dared to even think about.

Thank you for your support!

And that’s why I can’t help but feel thankful to everyone that supported me. (Even if you didn’t buy the book!) This has made me really think that one day I might be able to support myself the way I want to. We’re not there quite yet, but it feels closer than ever.

I also want to keep giving back. I know writing this book was a really daunting experience for me. I’m sure there are people who want to do the same and don’t know where to start.

That’s why I started writing about what I did for the book. The first article was about marketing it. I have another one in the works about how I wrote the book in markdown and built an app to turn it into a PDF. (It’s one of the unfinished articles that I mentioned earlier.)

Will there be another book?

With that kind of success, it might make sense to double down and try to work on a new book or a course. I spent a good part of the year thinking about it. I came to the conclusion that I don’t think educational products like the book are right for me.

I mentioned over the years that writing the book hadn’t been the easy process that I expected it to be. I thought that because I spent so much time writing large articles that it would translate well to writing a book. It did in some ways, but mostly it didn’t. And maybe it would with more practice.

But the larger issue is that I just don’t feel comfortable selling educational products. I have a complicated relationship with money. (A huge understatement if you know me at all!) I feel money is a resource that you have to use wisely and carefully. (This has been an important element of my journey.)

Educational products are often things that we buy and never use. (I’ve done that a few times myself.) I feel a lot of guilt knowing I was part of that even if the person who bought the book is happy with their purchase. That’s also why I had this entire section to warn readers at the beginning of the book.

And the truth is that this is all in my head. I’ve had maybe 3-4 refunds out of 250 purchases. I clearly made something that the people have been happy to pay for.

That said, I want to make money on my own terms and in a way that I feel good about. So, for now, I’m not going to work on another paid educational product. I’ll keep educating people for free like I’ve been doing all the prior years.

What am I going to work on then?

So if I don’t want to create another educational product, what are other things that I can create? Well, I’ve always wanted to build tools for developers. When I started writing on this blog, it was to try to build interest in Helthe.

Helthe was an error monitoring tool for WordPress that I was building at the time. As I mentioned in the first year in review, I had a lot of issues generating interest for it. Part of the reason was that I was trying to solve a problem no one had.

But the other issue was that it’s hard to get early adopters if no one knows about me or cares about what I do. But, based on how well the book did, I feel that this wouldn’t be the case this time around. I think that I’d be able to find a few people to take a chance on me this time around.

The next rung in the ladder

In very serendipitous fashion, Nathan Barry published this excellent piece on wealth creation. While I have a pretty unique view on wealth, what struck me about the article wasn’t so much the wealth creation aspect. It was his discussion on how making money is a skill and your progression learning that skill.

This is something I was aware of back in 2015. In my year in review that year, I mentioned that a lot of what I did then wasn’t helping me get better at business. And, to be honest, a lot of what I’ve done since then hasn’t either.

I mostly spent the last four years learning to build an audience. But the reality is that that’s really what I needed to do. (I still think I need to keep working on it too.) If you look right before he started ConvertKit, that was the last thing he learned as well.

The business stuff I already knew a lot about. I spent 2012 to 2015 absorbing all the information I could about marketing, product development, user onboarding, and so on. I applied it to products no one wanted, but the knowledge was still there. I just needed to apply it to something that people wanted this time around.

And that’s what the book allowed me to do. As I discussed over the years, the hard part of the book was never marketing it. I already knew how to write a long-form sales page and how to build interest prior to launch. And the fact that the book did well shows me that I seem to understand those fundamentals well enough.

That’s why the article was so fortuitous. It confirmed something I’d been feeling as I was pondering what to work on next. It’s that I feel ready to try building a SaaS product again.

I already started to work on it

In fact, I started this summer. But, in pretty typical Carl fashion, I’m going at it slowly. So I don’t have anything to show yet. (I don’t even have a name for it. I just use “placeholder” instead lol.)

I’m trying to chip at it a bit every day. This was a bit harder to do when I was speaking and travelling this fall. Now that I’m home for the next few months, I’ve been doing a lot more work on it.

The first few months were mostly about getting a proof of concept going. Once I was sure that I’d be able to build it, I started working on the actual product. And that’s where I still am today.

I haven’t really done anything marketing-wise for it. Once I have more of a minimum viable product, I plan on shifting most of my focus to marketing. My hope is that that’ll happen in February.

What is it?

While I don’t have any marketing material yet, I don’t mind talking about it a bit. As I mentioned over the years, I’ve always had a fondness for servers. Servers are often a painful problem for developers, but you can’t get around them. (It’s one reason why a lot of my consulting work has been as a sysadmin.)

In 2015, I wrote about the importance of having good servers for WordPress. I created DebOps for WordPress to help developers create high-performance servers on Digital Ocean. I’ve maintained it on and off over the years.

During those years, I mused at the idea of building a product on top of it akin to Laravel Forge. That’s pretty much what the lovely people at Delicious Brains did. They built SpinupWP which does exactly what I had in mind all these years.

I didn’t want to build something like SpinupWP. That said, I still wanted to build something in the same space. I think that the intersection of DevOps, system administration and WordPress is a good spot for me. (As we saw, those were the most popular WordPress articles this year.)

Vapor for WordPress

Luck would have it that Taylor Otwell announced his newest product this summer. It was a server product called Vapor. I decided to go ahead and build something similar for WordPress.

Without even going into the serverless hype, I still think there’s something there. Cloud computing platforms are quite complicated and intimidating to developers. (Even I have nightmares from my Windows sysadmin days whenever I go on the AWS console.) There’s something to be said about offering a layer on top of them so that you can run WordPress without worrying about them.

The ability to run WordPress on AWS Lambda definitely has some benefits over traditional hosting. It also has some drawbacks as well. That’s why it won’t be a product for everyone.

But I think there are some use cases (like WooCommerce) where it’ll really shine. So it’ll be up to me to see how I can market it. That said, I feel pretty confident I should be able to find some customers.

Personal finances

With that out of the way, the last thing to talk about is MONEY! While all the book numbers were in US dollars, all the numbers in this section will be Canadian dollars. (Or as I like to say Canadian Monopoly money.) So just something to think in mind, since most of us think US dollars when we hear “dollars”.

I did very well this year

This year was the first year since I quit my agency job where I made really good money. Part of it was the book which made almost as much as I made all last year. (The book made $25,000, and I made $31,000 last year.) On top of that, I got a retainer working on that Laravel application I audited last year. I made 3x more per hour doing that than I did doing WordPress work.

Because of this, I won’t be able to do my usual bank account snapshot. Most of the book money went straight to my RRSP (Canadian equivalent to the 401(k)) bank account. The rest went to my regular bank accounts.

Meanwhile, my billable work was roughly $57,000. A bit more than $9,000 was from Global Voices, who were my main client for all the previous years. I started the year doing a fair amount of work for them, but I shifted to doing more Laravel later this year.

The Laravel work was the rest of the billable hours this year. Like I said earlier, I’m charging a lot per hour, which is nice. The work is very similar to Global Voices in the sense that I work on both servers and code. (Except that it’s Laravel code and not WordPress code.)

There’s also a bit of ProductPress income too. I’m surprised that it still keeps going with no real input on my part. It did about $1,200 in sales this year.

All in all, I’m looking at over $80,000 in gross income. And about $38,000 of it is sitting in various bank accounts. Needless to say, I’ll have to pay taxes this year. This is the first time that I’ll have to since I’ve been self-employed. So I’m not sure how much of that $38,000 will go to taxes.

Where did the other half go?

So this means that I spent a bit more than half the money I made this year. I track all my expenses for tax purposes. Most of these expenses are in three major categories which are:

  • Travel: ~ $21,200
  • Software (with phone): ~ $3,600
  • Rent: ~ $10,200

Most of my expenses stayed roughly the same as last year except for travelling. I spent about 75% more travelling this year than last year. That said, last year, I’d spent a fair amount less than 2017 because I travelled to less expensive destinations. (It’s about 40% more than 2017.)

This year, not only did I travel more, but none of it was to inexpensive destinations. I did spend money a bit more liberally. For example, I bought day passes for gyms and high-protein food from supermarkets.

But that’s about it. I still stayed in hostels unless it was a comped hotel for a conference. I didn’t do restaurants or take more expensive flights.

This didn’t feel like I thought it would

So, as I wrap this up, I’m looking back at this year and I’m not sure how I feel about it. On the one hand, I did a lot of great things like finish the book and made a profit. (I actually forgot what that felt like lol.) But those achievements didn’t bring me the satisfaction I expected.

I think part of the reason is that I wasn’t sure what to do next for the longest time. (I don’t really do the sitting on my laurels thing very well.) I’d had this goal of publishing a book for so long and I’d refused to split my attention between other projects. This was a good thing, but I wasn’t quite prepared for the “What now?” that came after.

But now, there’s this new SaaS project. And I’m really excited to try to pull it off. So I look forward to seeing how the next year goes with that. It’s definitely going to be a big focus for me. (At least, I hope that I can make it a big focus!)

That said, regardless of how I feel about my achievements, I couldn’t have even done them without you. And, for that, there are no words of gratitude that are strong enough. I’m lucky to have you in my corner. Thank you.

Creative Commons License