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

2020 in review

Boy… where do we start? Well first, if you’re not aware, I’ve been doing retrospectives for a few years now. I think that keeping a record of my journey is important.

That’s why I’d also like to warn you I write these year in reviews mainly for myself. This is especially true this year. In fact, I feel I should have done one every 3-4 months. (We all know how long March felt!)

If you struggled this year, you’re not alone. My hope is maybe reading about how someone else handled it will be helpful in some way. Either way, here we go.

A year like no other

As the year ends, trying to think back to how things were before March is just a struggle. It feels like a foggy dream after waking up. So it’s a challenge to think of how I was thinking this year was going to go.

I know I’d been close to burning out again and felt a bit tired of people in general. I also wanted to do a bit less speaking this year and more personal travel. Because of that, the year started slowly.

First, I didn’t get accepted to speak at WordCamp Phoenix. I decided not to go because of that. I thought, “Well, I’ll see everyone at the next WordCamp.”

That was a mistake. Obviously, I couldn’t foresee at the time that this would be one of the last WordCamps until 2022. But it was and I don’t know when I’ll see a lot of my WordPress friends again.

On the flip side, since I hadn’t burnt out, I was able to do some personal travel including a trip to Colombia in early March. While I blundered with the WordCamp Phoenix choice, I really got the timing of this trip almost to the day. Most of the trip was great and gave me some time off. Only the end of the trip was a bit stressful because COVID lockdowns were starting to happen everywhere.

Quarantine and lockdown

I came back to Canada and headed straight into a two week quarantine. By the time my quarantine was over, we were in lockdown. This first lockdown lasted about two months.

The lockdown started well enough. For a few years, I’d been too poor to do anything. I’d learned the hard way how to stay home and work without spending my days playing video games or watching TV. (That was part of my initial year in review.) I felt that experience had prepared me for what life in quarantine would be.

And, in a way, it had. I quarantined and spent the lockdown at home working. I also took advantage of that time to play a few games in moderation. But mostly, I just worked 7 days a week.

There was also an initial wave of FaceTime and Zoom calls with friends. Lockdowns were starting and everyone wanted to keep in touch. We’d talk about how COVID was affecting things around us, how we thought it would play out, etc.

Workaholism fully enabled

As May rolled by and things reopened, I still mostly stayed home and kept working. I finally announced Ymir, which I’d been working on since last fall. A lot of my consulting work died out during the lockdown, and I just worked more and more on it.

I felt (and still feel) a lot of pressure to use this time where we couldn’t do anything as an opportunity to push it as far as I could. That way, when all the COVID madness ended, I could just go back to travelling and working less. I used that logic to justify my (still-on-going) workaholism.

Workaholism is just one of the many manifestations of my tendencies of overdoing things. (That’s why I burn out almost every year.) But like with excessive partying or playing video games, I’ve developed strategies over the years to help manage that side of me. With workaholism, it was getting out of my apartment and doing social activities like going to the gym, restaurant or bar.

The problem was that those are also some of the most dangerous activities to do with COVID. I didn’t want to risk it with all the long-term consequences of COVID we were learning about. So I just stayed home and worked 7 days a week. (I did develop a home workout plan involving 100lbs of cat litter. Not even joking lol.)

What I didn’t really realize it at the time was that the situation was slowly wearing me out. I’d see videos of people going to a restaurant, having drinks, socializing. I wanted to do those things, but I also didn’t want to risk getting this virus.

I felt trapped in this unending marshmallow experiment. I wanted the instant gratification of doing the things I used to do and helped my mental health. But I also knew it wouldn’t be the same even if I did them. The world was upside down. It just didn’t feel like it was worth the risk, so I kept working.

Speaking at WordPress Buenos Aires meetup

While I was working like crazy, I also accepted to do a talk for the WordPress Buenos Aires meetup. This was a great opportunity to keep practicing my Spanish. At the time, I was in a good phase of translating articles for my Spanish subsite.

But it was also more stress. I wasn’t confident in my ability to give a talk in Spanish. I felt my Spanish was rusty and getting worse. Usually, I was in a Spanish-speaking country being immersed as part of my preparation process. So that wore on me.

The day of the talk came. I ended up speaking to over 100 attendees. It definitely felt less stressful than giving a talk in a conference room.

But I also didn’t feel like I did that great. (Although I spoke for over a hour lol.) All the organizers there were so kind. I hope to go to Buenos Aires and give a talk there in person one day.

The burnout

After the meetup, I felt a lot of relief and a bit less stress. That said, things were beginning to unravel. I felt easily overwhelmed by things. I was more irritable and less motivated to do anything but work on Ymir.

Early in July, I kinda knew a burnout was imminent. I tried a Hail Mary to avoid a burnout. I saw a few friends one on one to be safe.

I was also trying to play video games to keep my mind off work. (It’s been really hard for me to disconnect.) Ironically, I’m pretty sure the video games I played led to my burnout.

How can a video game cause a burnout?

I’m sure you’re wondering how a video game can cause a burnout! Well, at the time, I was playing Satisfactory. It’s a game where you’re on an alien planet and you have to build increasingly complex factories. (Much like Factorio.)

As a genre, factory building games have a lot in common with software engineering. This is a great thing and why I really like them. But, at the same time, they trigger a lot of the same OCD issues I have as a programmer.

And that was the problem. I’d spend most of my day dealing with design issues with Ymir. I’d then “decompress” by solving complex factory design issues with spreadsheets and notes.

It was, in retrospect, a poor choice of game. Towards the end, I probably spent 30+ hours trying to build a mega factory making steel. (I never finished it.) The reality was that this game was just another type of work that was as cognitively demanding as the one I was trying to disconnect from.

Knocked out

This all led up to a fateful Friday night where I was hanging out with a friend. All in all, it was a pretty low-key evening. We just hung out, made some food, played some old SNES games, and then I went home.

I didn’t get out of bed for 16 hours.

This is a pretty typical burnout moment for me. I don’t get a lot of psychological symptoms. It’s mostly physical, and it hits me like a truck.

There isn’t much I can do once I reach this point. It’s all about self-care. I just had to sleep and rest.

And that I did! I went from going to bed at 4am (I’m a night owl) to not being able to keep my eyes open by 11pm. I was sleeping about 10 hours a night on average.


While I slept a lot, I had trouble not working all the time. I tried to give myself some slack. But I felt guilty if I didn’t work a bit every day.

This was new to me. I’d never really felt guilt for burning out before. But I’d also never burnt out from just staying home, working and playing video games.

My usual burnout pattern was just burning it from both ends until my body needed a time out. I didn’t really feel guilty about that. I’d played Icarus and flew too close to the sun. I picked myself up and just tried again with the goal of not burning out the next time. (It’s a recurring theme in my year in reviews.)

But, in this scenario, I felt I didn’t deserve to burn out. I hadn’t pushed myself enough. So I had trouble giving myself the permission to do more than just sleep a lot. This tweet really struck home about the whole mental aspect of it.

Stress build up

I spent a lot of time thinking about the whole situation. I also had some discussions on Twitter and elsewhere. My theory is that this was a low-grade stress buildup over the months.

I kinda alluded to it earlier, but that was because of hindsight. As this was unfolding, I wasn’t quite sure how I’d gotten to this point. I just didn’t feel like I’d done anything to warrant the current state I was in.

But the reality was that COVID wore me down. Not in the usual acute, stressful way that you’re aware of. But as this subtle thing in the back of your mind like debt.

There was just no escaping this situation. So your choices often just feel like picking the least-worst option. Stay home and work all the time. Try to do things like before, but risk getting sick with potential lifelong consequences. And anyway, none of it mattered because a virus doesn’t care about you living your life.

This is just a slice of what was going on in my head. But the key thing is that these thoughts slowly poison you. (Or at least me.) And that’s what I feel caused my burnout.

Getting back on the wagon

I took July and August as much of as I could permit myself. I saw some friends and played games on a friend’s PS4 that I borrowed. (No factory games like Satisfactory.)

I only worked on things I felt like working on, which was Ymir. But that was about it, I stopped everything else. I didn’t write or translate articles. I didn’t do any consulting work.

But mostly I just slept a lot. Eventually, I decided I needed to pick myself up and try to get back to normal. I chose Sept 1st to do it. I started the day by sleeping 10 hours.

Not the start, I had in mind, but that’s normal. Next day was a bit better and so on. The two important things for me were to restart the writing habit and start back doing some consulting work. And while it was touch and go for a bit, I got back on the wagon.

Launching Ymir into early access

Another new habit that I started in September was to send an update about Ymir every week. I felt sure I could launch this year so I wanted to start building up interest. At that point, I only had a landing page that I built with ConvertKit with an announcement video.

I’d been building out features all summer even with the burnout. I figured I could record a video every week or two. Or talk about what I’d been working on the past week.

The list grew to 200 subscribers. I thought that was a pretty great number. I had some good interactions from it as well. So all in all, I felt that was a good move.

But as I was doing that, I never felt closer to actually launching. There was always a feature I felt I needed to have. The coding OCD was creeping up again.

Setting a date

Towards the end of October, I could feel myself slipping again. So I decided to be bold and announce that I’d launch Ymir in early access in November. I hoped that it would reduce all this anxiety and help me focus on the important stuff.

It worked. I looked through everything and made a list of must-haves for launch. And then I went at it.

Right away, I felt a lot of the stress wash away. I knew what I had to work on and just went at it with increased focus. It was great.

That’s pretty much all that went down in November. French Canada had gone back into lockdown on October 1st. So I was again in a situation where I didn’t really feel I had anything to do but work.

Troubles incorporating

One task I had to do for launch was to incorporate. I needed business bank accounts to connect to Stripe and I couldn’t get them without it. I figured I’d be able to sort all this out in no time.

It started off feeling that way. By November 4th, I’d incorporated Ymir as a federal corporation. I just needed to do it for Quebec.

I thought I hadn’t received my corporation number, so I waited for it to come. Little did I know, I already had it. (Doh!) So off I went to get incorporated at the provincial level.

There, too, I waited to get my corporation number. Well, after a quick call, seems like I hadn’t paid my incorporation fees. Apparently, I never saw an option to pay them so that never got done.

Yup, so mistakes all around! By the time I had all I needed to open a bank account, it was the end of November. I decided to launch without having any billing in place. This ended up being a good decision.

Early access launch

As the end of November creeped closer, I realized I wouldn’t hit my launch date. I still had some things I needed to finish up. I also had a launch video that I wanted to record.

I tried to aim for the end of the first week of December. I ended up deciding to hold off because I felt pretty worn out by that point. Instead, I took the weekend to try to chill a bit, and I launched on Monday, December 7th.

I was so nervous going into that launch. I kept thinking of all the worse case scenarios. Tons of support issues and scrambling to fix things at the same time.

But none of that happened.

I emailed about 220 people. By Wednesday, I had about 20 accounts created. So about 10% which isn’t bad. But out of 20 people, only two actually tried to use Ymir.

That said, even with two people using it, I still ran into a bunch of bugs and issues. I also got some great feedback. (Thanks Till Krüss!) So I’m partially glad more people weren’t using it. I assume the whole thing would have been a bit of a dumpster fire.

Thoughts about the early launch

Obviously, this wasn’t the most ideal outcome for an early launch. I would have liked to see more usage and maybe some word of mouth. But it was also the most likely scenario. It’s a lot harder to try a new hosting solution than buying a book.

On my end, I feel I did the usual playbook right. I did the landing page. I communicated often and talked about the product. People who replied seemed excited.

That said, I also only leveraged my existing email list and Twitter followers. I didn’t publish anything on Reddit or in Facebook groups. I don’t know if it was the right move, but it was an intentional decision on my part.

I felt and still feel that I need early adopters at this point. I need people willing to deal with an imperfect product with some rough edges. I don’t think Reddit or Facebook is where I’ll find those early adopters.

But, at the same time, I’m not sure where they are either. That’s something I’m going to have to sort out next year. I need to find good marketing channels for Ymir.

For now, I think the plan is to just continue what I was doing so far. I’m going to write articles and just keep talking about it regularly online. Hopefully, I can find my first few customers that way.

How I feel about Ymir so far

As this year ends, I’m left with a lot of mixed feelings about Ymir. You’re often told with products that your first version should embarrass you. If it doesn’t, you launched too late.

Well, I am. I’m embarrassed that the few people who gave it a good shot ran into problems. I wish it had a lot more features already. I’m pretty sure anyone who launched a product feels the same way.

But I’m also glad I launched. If there’s a silver lining with COVID, it’s that it gave me nothing else to do than to work on this. If this had been any normal year, I’d never have launched. I’d been lucky if I’d even accomplished a third of what I did this year.

I worry a bit about when things get back to normal. Will I have things in a good enough state that I can travel without working all the time? Will I have enough customers to replace the income I need to travel?

Can I get enough customers?

This brings up another thing that’s constantly in the back of my mind: customers. I constantly wonder if there are enough people to sustain this as a business. If I can get to 100 customers, that should be more than enough I think.

That said, getting 100 customers seems daunting as hell still. Yes, the WordPress market is gigantic and 100 customers is nothing when you run 39% of the web. But still, is it achievable for a product such as this one?

Business isn’t static either. At the very least, I need new people to sign up to replace customers that churn. But I’d also like to grow large enough to pay myself a real developer salary finally. I’d need 400 customers for that which seems absolutely bonkers to me right now.

All that to to say that there’s a lot of marketing stuff to figure out next year. I’m hoping I can figure it out like everything else I’ve done. But who knows?

This needs to exist

At the same time, I believe this needs to exists. I’m friends with the co-founder of a top managed WordPress hosting company and he even thinks so. Every technical person I know in the hosting space shares the same feeling.

And it’s not just because it’s some new technology hype thing. It solves actual problems, especially with WooCommerce. But even without that, there’s just something magical to just have your website online without worrying about a server at all.

But because of all that, I feel very committed to the product. I don’t know if that’s a good thing. The general rule of starting a business is that you’re not supposed to get attached to an idea like that.

Except that a few days ago, Jason Fried wrote this excellent short article on validating ideas. In it, there was this quote that really stuck with me. And it really resumes a lot of how I feel.

Truth is, you don’t know, you won’t know, you’ll never know until you know and reflect back on something real. And the best way to find out, is to believe in it, make it, and put it out there. You do your best, you promote it the best you can, you prepare yourself the best way you know how. And then you literally cross your fingers. I’m not kidding.

So that’s what I’ll keep trying to do over the next year. Just keep giving it my best and get an answer to the question, “Market, what do you think of Ymir?”

Audience statistics

Ok, so I think this covers most of what happened this year with COVID and Ymir. The next thing I like to cover in my year in review is audience numbers. I’ve always felt that having an audience was important to achieving my goal of financial independence. Although, I’m not as sure after this past year.

That said, I enjoy teaching. There’s something rewarding about helping others. So I plan to continue doing it.

I usually look at two metrics to see how well I’m doing at building an audience. One is the amount of traffic that visits the site. The other is how many subscribers I have on my newsletter.

With web traffic, I used to be interested in page views. But over the years, I’ve started paying more attention to what types of articles drive traffic to the site. I use it to give me an idea of what topics I could write more about.

The subscriber count is important because it shows trust. If you’re willing to give me your email, it means you have a lot more trust in me than average visitor. I’m also interested in seeing if I can keep these subscribers. That’s because if I can’t keep you subscribe to my newsletter, it means what I send isn’t valuable or helpful.

Website traffic

Let’s start with the website traffic. I didn’t really look at the numbers during the year, so I didn’t know what to expect. But it was good!

Page views and other traffic numbers are still going up quite a bit. The rate in percent slowed down. But the actual number of page visits increased by about the same as last year.

This is a good trend after how poorly things went in 2018. I’m glad to see that more and more people are visiting this website and finding useful information. I hope this will continue next year.

I don’t have much to say about the negatives. They haven’t changed significantly. And I’m not trying to optimize for that either.

Traffic sources

What I’m always curious about is where my traffic comes from. That said, this also hasn’t changed much over the last few years. Search engine results still dominates over all other traffic sources.

I’m glad that search engine results work well. It’s mostly a few articles that do the lion’s share of it. (Good old Pareto principle!) And we’ll discuss that when we look over the popular articles.

Investing in social media traffic

I decided to try to invest a bit more in social media traffic next year. To do that, I signed up to Missinglettr because they ran a lifetime promotion. Next, I’m going to start setting up campaigns for new and previous articles.

Another thing I’m trying out is republishing articles on dev.to. It’s supposed to be a good place to post your content. The canonical link still points to my original article, so it doesn’t affect my SEO.

I’ve also tried branching out to other subreddits. Something I said I’d do for a while. I published my last article to /r/PHP

We’ll see how these things play out next year since I just started doing them. But I’m not really expecting something drastic. That said, it shouldn’t hurt to try.

Top articles of 2020

This is always one of my favourite parts of doing the year in review. I like seeing what content does well or keeps doing well. I expanded the list last year because the top of the list has gotten pretty stable as some content has become evergreen.

  1. PHP strings and how to format them (12,833 pageviews)
  2. What is software complexity and how can you manage it? (8,894 pageviews)
  3. How to use PHP array functions instead of loops (8,218 pageviews)
  4. Getting started with continuous integration and WordPress (7,892 pageviews)
  5. Mastering the use of PHP conditionals (6,098 pageviews)

I said the list got pretty stale, but I had a new article blast its way to second place. This article on software complexity isn’t new either. I wrote it early in 2018, but I’m happy to see it do well! It’s a companion article for a talk I enjoy giving. (I want to give it Spanish one day!)

But other than that, the list hasn’t changed much. That said, I’m seeing some movement with some article. For example, the article on how a PHP application works was the top article this month.

Diversifying my writing

Some potential articles that might do well next year are articles I wrote this year. I said a few times that I wanted to branch out my writing. I did a lot more of that this year. I also managed to write 11 articles which isn’t bad all things considered.

I wrote two Laravel articles and one for Symfony. There was also an article on GrumPHP which is one of my favourite PHP development tools. I wrote about type safety and how I wrote my book in markdown.

Overall, I’m pretty happy to have done that. We’ll see next year if some of them break through next year. One of the Laravel ones looks very promising!

Newsletter subscribers

Alright, so that takes care of the web traffic portion. Now, let’s move on to the next metric. That’s the newsletter subscribers.

The past few years have felt a bit rough with the newsletter. I’ve had a tough time adding and keeping subscribers. I’ve had a tough time looking at things and figuring out if it’s broken or not.

I’m happy to say that this year looks a lot better. I started the year at 1,500 subscribers and ended close to 1,900. That’s a 25% increase.

This is lower than last year, but last year most of the subscriber gains were from the book. This year there were some book sales (more on that in a bit), but not enough to cause this.

This is a lot more obvious from the net subscriber graph. Last year, I had one big spike for the book. I had one in May when announced Ymir, but nowhere near as big as the one I had for the book.

Keeping subscribers

I’ve also done well keeping subscribers. My net subscriber count averaged a bit over 20 this year. It was in the single digits last year with one month that was negative.

I’m up to 720 cold subscribers. It’s a bit more than a third of my list, which isn’t great. It’s definitely a higher percentage than last year (30% vs 38%). I’m not sure if it’s a problem yet.

I can’t see how the emails themselves did for the year because of ConvertKit only tracks stats globally. But that’s fine, because I’m trying to not rely on tracking pixels anymore. I can’t disable them in ConvertKit, unfortunately.

Privacy switch

This is a good time to talk some changes to the site! I did the redesign using the “McLuhan” by Anders Norén. I also created a new logo. (Although I forgot to save the SVG. Doh!)

That said, I’ve also made some other changes. Starting this month, there’s no more Google Analytics tracking. I switched to Fathom Analytics (rare referral link because it gives you $10 off) which is a privacy focused analytics platform.

I’ve also removed the Disqus comments. I replaced them with ReplyBox which is also a privacy focused commenting system. Bonus is that it’s made by some awesome WordPress people.

Money matters

Wrapping things up, the last thing to cover is income. I had a great year last year. This year started off well, but, as COVID hit, so did the lucrative Laravel consulting work.

I decided to use that time to focus more on Ymir instead of trying to do more consulting work. It’s not like I could travel and spend the money I’d make, anyway. This felt like an excellent opportunity.

As usual, I’d like to mention these numbers are in Canadian dollars. Some income is in US dollars, but to keep it simple for me. I just do it all in one currency except for the book income.


That said, I made a decent amount of money until April doing the same Laravel consulting I was doing last year. That came up to about $14,000.

The rest of the income was from Global Voices. That was about $6,000. The rest of the income came from COVID federal aid.

The products also did ok. I didn’t promote the book at all, but it still made $5,000 USD. ProductPress also did about $900 USD in sales with no help on my part.

Totalling everything up, I’ve made maybe $40,000 in gross income and ended the year with about as much money as I started with. That’s about half of what I made last year, but a bit more than I used to do before that. So it wasn’t famine, but that’s mostly thanks to the Canadian government.


So while I made less, I also spent a lot less this year. That’s not too surprising considering I haven’t left my apartment much since March. The usual culprits are:

  • Travel: ~ $4,800
  • Software (with phone): ~ $4,200
  • Rent: ~ $9,700

Travel expenses are for the first quarter of the year. Otherwise, rent costs went down a bit while software keeps going up. I don’t track my food costs, but I don’t eat take out at all so I’m estimating it’s probably around $4,500.

The year that wasn’t?

One thing that kept coming up writing this is how this pandemic affected my perception of time. It feels like the longest year of my life. Events that should have been easy to recall seem distant. And any thoughts of things I did last year border on the surreal.

Yet a decent amount of stuff still happened. I built and launch a SaaS product this year. I got a bit of travelling done early in the year. My finances were ok thanks to the Canadian government.

But for now, that’s it! 2020 is almost out the door. It’s still impossible to imagine how everything will feel like when this is over. But I know one thing.

I’ll be happy to be around people again.

Creative Commons License