Year One Recap

How my first year of blogging went and where I'm headed in Year Two.

One year ago yesterday, I published my first ever blog post. It’s been quite a ride since then!

Today, I’m going to go over the good, the bad, and the numbers of this blog so far. Welcome to the Year One Recap.

1. Goals for Year One

In my First 50 Days of Blogging post, I laid out three goals for Year One:

  • Publish 50 blog posts.
  • Get a million pageviews.
  • Grow my newsletter to 10,000 subscribers.

Here’s where I ended Year One:

  • Published 31 blog posts and 3 guest posts. ❌
  • Got 642k pageviews. ❌
  • Grew my newsletter to 3,000 subscribers. ❌

All in all, I didn’t hit any of the (pretty ambitious) goals I set for myself this year, but I made good progress towards them.

What Happened?

I got busy.

In August 2019, I started my full time job as a Software Engineer at Facebook. You can see a noticeable drop in my production on this blog after that:

post rate

In hindsight, it was a bit naive to assume I’d be able to dedicate as much time to this blog after starting full time work… next year I’ll be more realistic.

2. More Data

First, let’s dive into some numbers from the past year, which will help motivate the new goals I’ll set for Year Two. If this isn’t really your thing, you can skip straight to Goals for Year Two.

Table of Contents


Here’s a graph of my blog’s pageviews during Year One:


Pretty much all the spikes are from getting posts featured on Hacker News or Reddit.

My top 5 posts by pageviews haven’t changed too much since 6 months ago:

Top 5 posts over the past year

What’s more interesting, though, is looking at my top 5 posts by pageviews in the past 30 days:

Top 5 posts over the past 30 days

All of these posts are well over 30 days old, meaning they’re the ones consistently driving traffic to my blog right now. On the other hand, most of my top posts from the past year were “spiky” - they got tons of views to start but didn’t drive much recurring traffic.

Historically, I’ve focused on writing meatier posts that have a better chance of doing well on link-sharing sites. I thought that optimizing for “hit posts” was the best way to increase pageviews because:

  • Initial pageviews from a hit post make a huge difference.
  • Getting backlinks from high-quality sites to hit posts helps their SEO.

While these points are still true, recurring traffic is a more sustainable way to keep my blog growing, especially now that I’m busier. It turns out what they say is true: SEO isn’t just about getting backlinks. Just look at posts like my Gini Impurity one or my Information Gain one - those never gained any traction on link-sharing sites but are two of my top recurring performers.


Unsurprisingly, the overall users graph looks just like the pageviews graph:


A total of 310k unique users visited my blog over the past year. Of them, 1/3 were mobile and 2/3 were desktop:

users with mobile

If you look at the last few months of this graph, you’ll notice that mobile users are significantly below 1/3 of all users during this time. This is in large part because most of my organic traffic comes on desktop, which suggests that my mobile SEO can be improved. I’ll break this down more later in the Organic Traffic section.

The top 3 browsers my users used were:

Browser% of UsersGlobal Market Share

These numbers roughly align with global browser market shares except for Firefox. This isn’t too surprising given tech readers (who tend to be more privacy-conscious on average) disproportionately use Firefox. Seeing these numbers makes me realize I should be testing on Firefox more.

Organic Traffic

Organic Traffic has mostly leveled off since 6 months ago:

organic traffic

Averaged over a 7 day period, my blog gets around 500 daily organic clicks from Google Search.

My top posts in search results are similar to the top posts by pageviews (last 30 days) we looked at earlier, which is expected:

PageSearch Clicks
Top 5 posts by performance on Google Search

What’s a little surprising / concerning is performance by device:

DeviceSearch ClicksSearch Impressions

Mobile SEO has become very important in recent years, especially with Google rolling out mobile-first indexing. My blog’s weak search performance on mobile is something I’ll definitely need to investigate more.


One interesting metric I like to look at is Subscribers per Pageview, which for my blog is 3k subscribers / 642k pageviews = 0.0047. In other words, I average a new subscriber every 642k / 3k = 214 pageviews.

Let’s see where subscribers are signing up from:

  • 48% came from the Post Subscribe Popup, which appears after scrolling far enough on a post.
  • 28% came from the Post Subscribe Form, which is included at the end of every post.
  • 13% came from the Sidebar, which is included on my homepage and more.
  • 11% came from the Subscribe Page, which is linked to from various posts and other places.

This reaffirms my reasoning for using the Post Subscribe Popup. Yes, I know it can be kind of annoying, but it also works - it’s the largest driver of subscribers for my newsletter. Sorry, ”“.

Going forward, the data suggest that investing in iterating on the Post Subscribe Popup and Form may be worthwhile. For example, I could:

  • Experiment with different text or UI
  • Customize text based on the post
  • Expose the Popup earlier


This blog’s revenue isn’t very important to me, but I might as well mention it because I’m sure some of you are curious. I use Carbon Ads because their ads look good and are tailored for tech audiences.

I made $674.80 in ad revenue over the past year:


My click-through rate (CTR) is on the low side, but this isn’t a priority for me right now. I’m making back more than enough to cover costs!

Maybe in a few years I’ll focus on revenue more, but for now I’m not.

3. Goals for Year Two

  1. Grow Organic Traffic from 500 to 1000 clicks / day, averaged over 7 days.
  2. Increase pageviews compared to last year and raise Subscribers per Pageview from 0.0047 to 0.0075.
  3. Write a post with each of 3 different co-authors.

I tried to set more reasonable and actionable goals for Year Two (read: I’m trying to avoid missing every goal again). The motivation for these goals should be pretty clear if you’ve read all of this post so far, but I’ll also explain each goal below.

Goal 1: Organic Traffic (SEO)

I expect to still have a full-time job for the entirety of Year Two, so I won’t be any less busy. I’m obviously still going to blog, but I want to become less reliant on new content to drive pageviews. There’s a lot I can improve here, so I’m aiming to double my Organic Traffic this next year, be it through improving the SEO of old content or producing SEO-friendly new content.

Goal 2: Pageviews

This goal is primarily about raising Subscribers per Pageview. The “increase pageviews from last year” stipulation is to keep me honest: it’d be easy to increase Subscribers per Pageview simply by spamming readers, but that’s not what I want. This goal is about increasing subscriber conversions without degrading reader experience.

Goal 3: Co-Authors

Writing my first co-authored post was one of my favorite things I did this year. Working with other people is important to me, so I’d like to do more of that this next year. If you’re interested, get in touch!

4. Thank You

Readers like you are the reason I’m building this blog. Thanks for all your support this past year!

I write about ML, Web Dev, and more topics. Subscribe to get new posts by email!

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

This blog is open-source on Github.

At least this isn't a full screen popup

That'd be more annoying. Anyways, subscribe to my newsletter to get new posts by email! I write about ML, Web Dev, and more topics.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.