Earlier this year, I decided to re-implement analytics for my site after discovering a viable privacy-aware (and open-source!) alternative to the user-hostile spyware garbage that we call Google Analytics. I have really enjoyed using GoatCounter and I highly recommend it. Now that I have this data, I thought it would be fun to share my top 10 most popular posts in 2020.

All of my analytics data is publicly available so you can view it too. You might notice that the data begins in April 2020 — that’s when I implemented GoatCounter. Next year, I’ll be able to filter by the entire year.

I have decided to create two separate lists because “top posts of 2020” could be interpreted in multiple ways. There is one list for the most popular posts that I wrote in 2020 and one list for the most viewed posts during the year 2020. I think it will be more interesting to see how all posts rise and fall in popularity over time. For example, one of my most viewed posts for this year is from 2015!

You can view the data here.

  1. Why is Apple acting like an Asshole?
  2. Xcode 12 drops support for iOS 8 and how to fix deployment target warnings in CocoaPods
  3. How to fix the incomprehensible tabs in Xcode 12
  4. Time Machine failing on macOS Catalina
  5. My experience replacing CocoaPods with SwiftPM (iOS Dev Weekly #445)
  6. Swift tip: marking unused required initializers as unavailable (iOS Dev Weekly #457)
  7. Fully automating perfect status bar overrides for iOS simulators with Nine41 (iOS Dev Weekly #452)
  8. Swift globals and static members are atomic and lazily computed (iOS Dev Weekly #465)
  9. Implementing Dark Mode and using CGColor
  10. Time Machine error 45

The #1 post was most popular because it made it to the top of HackerNews and was linked by The Verge. I did not anticipate either of those things happening. Also, it really skews the page view graphs on GoatCounter. Another interesting note is that 40% of these top posts were linked in iOS Dev Weekly. Anecdotally, I would have told you that getting linked in the newsletter drives a substantial amount of traffic to your site, but it is interesting to confirm just how significant an influence it has on the iOS community. (And I think Dave continues to do a great job with it!)

Most viewed posts in 2020

You can view the data here.

  1. Why is Apple acting like an Asshole?
  2. Xcode 12 drops support for iOS 8 and how to fix deployment target warnings in CocoaPods
  3. How to fix the incomprehensible tabs in Xcode 12
  4. 2018: How to run sysdiagnose on iOS (iOS Dev Weekly #339)
  5. Time Machine failing on macOS Catalina
  6. 2015: Swift enumerations and equatable
  7. 2018: Why optional closures in Swift are escaping
  8. My experience replacing CocoaPods with SwiftPM (iOS Dev Weekly #445)
  9. Swift tip: marking unused required initializers as unavailable (iOS Dev Weekly #457)
  10. Fully automating perfect status bar overrides for iOS simulators with Nine41 (iOS Dev Weekly #452)

It is really interesting to see which older posts the iOS community is still reading — or, which posts are surfaced by search engines. In particular, I think “Swift enumerations and equatable” (#6) is interesting to see here. I think this emphasizes how unintuitive is it to write Equatable conformances by hand for enums that have associated values. However, as of Swift 4.1 (SE-0185) the compiler will synthesize Equatable conformance for you, so it is odd to see this post is still popular multiple years later. For the other two older posts — “How to run sysdiagnose on iOS” and “Why optional closures in Swift are escaping” — those remain top hits on search engines.

Finally, for what it’s worth, Time Machine is still failing with error 45.