My year in review 2020
Published: 2020-12-17 05:25:02

---
title: My year in review 2020
published: true
description: 
tags: 
cover_image: https://miro.medium.com/max/4800/1*3TJxYt1noF5bvvYpwE_fwQ.jpeg
---

I remember this time last year in December 2019, I spent almost every single bit of my free time on [Puma](https://github.com/pumaswift/Puma) because I want a Swift friendly version of fastlane that suits my need and leverages Swift 5 features. 

Here's my review of my work in year 2020.

## Blogging

I started blogging on GitHub issue, starting from [Issue 1 Hello world, again](https://github.com/onmyway133/blog/issues/1), now I have over 670 issues, which were generated into blog posts at my website https://onmyway133.com/

🍏 I used to use onmyway133.github.io domain, but then it feels right to have my own domain 
🍎 I used to write a lot at Medium https://medium.com/@onmyway133 for many publications and my own Fantageek publication, I have got 2.3k followers with around 60k views per month
🍓 I list my most favorite articles, usually articles that I spent most time polishing here https://onmyway133.com/writing/

One of my very first articles published on Flawless iOS publication was [A better way to update UICollectionView data in Swift with diff framework](https://medium.com/flawless-app-stories/a-better-way-to-update-uicollectionview-data-in-swift-with-diff-framework-924db158db86) gets the highest traffic ever, and was rated most trending Swift article for 2018.

My one of few articles published in Medium in 2019 was [How to make Auto Layout more convenient in iOS](https://medium.com/flawless-app-stories/how-to-make-auto-layout-more-convenient-in-ios-df3b42fed37f) got featured in iOS Dev Weekly, and used to promote my library [EasyAnchor](https://github.com/onmyway133/EasyAnchor)

My big article this year is [How to test push notifications in simulator and production iOS apps](https://onmyway133.com/blog/how-to-test-push-notifications-in-simulator-and-production-ios-apps/), which was also featured on iOS Dev Weekly, used to summary the changes in push notifications from iOS 7 to iOS 14, and to promote my push notification testing tool [Push Hero](https://twitter.com/pushheroapp)

My blog at https://onmyway133.com/ has around 15k views each month. I can write proper, lengthy articles to get more views but I don't want to. I want to write blog about solutions I have found, so that my future self can benefit from it without searching too much.

![views](https://user-images.githubusercontent.com/2284279/102402948-cfb8fd80-3fe5-11eb-9f7a-b7a85d0ad450.jpeg)

## Open source

I have done quite a lot of open source, you can view here [Open source](https://onmyway133.com/opensource/). These have helped tons of apps, with 45k+ apps touched, and 3.4m+ downloads as stats on CocoaPods

My 4 libraries this year get inspired by SwiftUI and property wrappers

🍌 [Spek](https://github.com/onmyway133/Spek) leverages property wrapper to provide Spec syntax, similar to Quick, but simpler and can generate tests
🍈 [Micro](https://github.com/onmyway133/Micro) imitates SwiftUI State and ForEach syntax but use UICollectionView with diffable datasource, powered by my another library [DeepDiff](https://github.com/onmyway133/DeepDiff)
🍑 [EasySwiftUI](https://github.com/onmyway133/EasySwiftUI) contains many extensions and useful modifier that I use in my SwiftUI apps
🥝 [FontAwesomeSwiftUI](https://github.com/onmyway133/FontAwesomeSwiftUI) I was tired of using bitmap with dark and light variants, and I can't use SFSymbols as I want to support macOS 10.15, so FontAwesome is a perfect choice. I couldn't find library that has support for SwiftUI and easy to use with Swift Package Manager for iOS and macOS, so I made one

Besides, for all my libraries [EasyStash](https://github.com/onmyway133/EasyStash), [EasyAnchor](https://github.com/onmyway133/EasyAnchor), [EasyTheme](https://github.com/onmyway133/EasyTheme), [EasyClosure](https://github.com/onmyway133/EasyClosure), ... I have now support Swift Package Manager, which is nicer to integrate. Thank you CocoaPods for all these years.

Lately, I open source [awesome-swiftui](https://github.com/onmyway133/awesome-swiftui) which I curate all SwiftUI resources, articles and libraries that I find useful for my apps

❤️ One day, I got sponsor from my dear friend [Chris](https://twitter.com/zenangst) for my GitHub open source. Chris is my open source idol who ignited my desire for open source. No one loves open source more than Chris

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">This means the world to me! If everyone was as lucky as me to just get to inspire one person, the world would be an amazing place. Let&#39;s make it amazing together! Keep rocking because you are amazing &amp; you can bring out the best in others! ❤️ <a href="https://t.co/pJx9obWH7I">https://t.co/pJx9obWH7I</a></p>&mdash; Christoffer Winterkvist (@zenangst) <a href="https://twitter.com/zenangst/status/1309403013237403649?ref_src=twsrc%5Etfw">September 25, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## Apps

I started making some apps late last year, first I published them on Gumroad, but it didn't feel right, and then I published all my apps on AppStore. I like sandboxed apps from AppStore because they limit what the apps can do.

Apps without Twitter account and landing page seem off, so in May I started revamping my websites, and I wrote my [apps](https://onmyway133.com/apps/) page firstly with pure HTML and CSS, then I rewrote in React, because I like React and Javascript.

Notably, early 2020 I made [Push Hero](https://twitter.com/pushheroapp), [PastePal](https://twitter.com/PastePalApp) then I made a complete overhaul lately with more features, thanks to all the feedback. I also took the time to revamp landing pages a lot, you can check landing pages for [Push Hero](https://onmyway133.com/pushhero) for example because I have a white label solution

Learn how I did [white label landing page using React](https://onmyway133.github.io/blog/How-to-make-white-label-React-app-for-landing-pages/)

I have a lot of ideas, but very little time.

## Learning

Coding can be done, but design is never finished. When making apps, I feel like I'm not certain at some design decisions and no matter how I landed with some designs, I didn't feel happy. Then I took some design courses and books.

Below is my tweet that I share some design resources that I found useful

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Developer with design skill is like tiger with wings. Here are my recommended courses<br><br>The UI Design Bootcamp by <a href="https://twitter.com/designcoursecom?ref_src=twsrc%5Etfw">@designcoursecom</a> a massive UI design course teaches you to build beautiful and well-functioning user interfaces using HTML and CSS.<a href="https://t.co/vfusXamuhJ">https://t.co/vfusXamuhJ</a></p>&mdash; Khoa 🔥 (@onmyway133) <a href="https://twitter.com/onmyway133/status/1320464953548091393?ref_src=twsrc%5Etfw">October 25, 2020</a></blockquote> 

## Listening

I used to listen to tech podcasts, then I was bored. Discussions like whether to use MVVM vs MVC, SwiftUI vs Catalyst, Swift vs Objective don't interest me anymore.

If you ask me for choices, my default answer will be NO. Those who are super passionate about their idea will just ignore my advice and do it anyway.

Then I listen to indie and product development podcasts, it was inspiring. Once I got the mindset, they also became boring.
Now I listen to mostly books on Storytel, some books about habit and making time really make my days.

## Tweet

I came back to Twitter early this year after quitting it for a while because I got enough of all negative and nonsense political debates. But then I found that I can decide who I can follow and what content I want to view. Then I started organizing List, making my own Chrome extensions to automate things and control what I want to view. I have followed quite many indie developers and great product people, I've learnt a lot. The downside is I'm overwhelmingly inspired, I can't sleep.

I try to tweet more about what I've learned, sharing articles that I have written. For example here I share about how to gain product idea

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">How to gain product ideas?<br><br>1) Scratch your own itch. If you don&#39;t have any itch to scratch, stop here. This is awkward. Go travelling. Go exploring the world. The world always has problems and needs solution. <a href="https://t.co/07gIoJfJet">pic.twitter.com/07gIoJfJet</a></p>&mdash; Khoa 🔥 (@onmyway133) <a href="https://twitter.com/onmyway133/status/1330399823921557507?ref_src=twsrc%5Etfw">November 22, 2020</a></blockquote>

## WWDC Together

Notable this year is the website I make [WWDC Together](https://wwdctogether.com/) as a place for developers like us to hangout and watch videos together. Each video acts like its own chat room, you can also create private chatroom. My colleagues use this and we watched WWDC together with coke and pizza, it was a lot of fun.

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">I&#39;m excited to launch <a href="https://twitter.com/wwdctogether?ref_src=twsrc%5Etfw">@wwdctogether</a> as a free place to watch and hangout during WWDC. We can now view upcoming and previous sessions via modern playback, with a chatroom for each session. Hope this provides a similar WWDC vibe during this hard time ❤️🔥<a href="https://t.co/0SgGnUAqst">https://t.co/0SgGnUAqst</a> <a href="https://t.co/f9H9wDi62P">pic.twitter.com/f9H9wDi62P</a></p>&mdash; Khoa 🔥 (@onmyway133) <a href="https://twitter.com/onmyway133/status/1273243022826835970?ref_src=twsrc%5Etfw">June 17, 2020</a></blockquote> 

I had the idea like 2 weeks before WWDC, so I had to make it quick. Working with React is fun to me, it is like playing video game.

I was lucky to be asked by John to write a guest post [Behind the scenes of WWDC Together with Khoa Pham](https://wwdcbysundell.com/2020/wwdc-together/) on his website.

It was also mentioned by Paul in his WWDC wrap up [WWDC20: Wrap up and recommended talks](https://www.hackingwithswift.com/articles/222/wwdc20-wrap-up-and-recommended-talks)

> One area that absolutely flourished this year was community organization. Sites like https://wwdcwatch.party and https://wwdctogether.com took a huge amount of work to organize, but meant that people had the chance to have some interaction – had the chance to actually chat about WWDC and share their excitement. I’m really grateful to Michie, Khoa, and other community organizers for making this happen.

I also got to share about in in a well known Norwegian tech website [orske WWDC Together lar oss se på Apples konferanse sammen](https://www.kode24.no/kodenytt/norske-wwdc-together-lar-oss-se-pa-apples-konferanse-sammen/72584043)

## Speaking

In 2019, I made several meetup talks, and one pre conf talk for Mobile Era conf

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">An overview of what we as mobile developers have for <a href="https://twitter.com/hashtag/MachineLearning?src=hash&amp;ref_src=twsrc%5Etfw">#MachineLearning</a> in the session by <a href="https://twitter.com/onmyway133?ref_src=twsrc%5Etfw">@onmyway133</a> at <a href="https://twitter.com/mobileeraconf?ref_src=twsrc%5Etfw">@mobileeraconf</a> Community Evening <a href="https://t.co/bgcE3huGkI">pic.twitter.com/bgcE3huGkI</a></p>&mdash; Mobile Meetup Oslo (@mobileoslo) <a href="https://twitter.com/mobileoslo/status/1192154165751033856?ref_src=twsrc%5Etfw">November 6, 2019</a></blockquote> 

In 2020, I'm lucky to be invited to talk in some events

🍅 WWDC Watch Party

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Thank you <a href="https://twitter.com/JohnEstropia?ref_src=twsrc%5Etfw">@johnestropia</a> <a href="https://twitter.com/thesunshinejr?ref_src=twsrc%5Etfw">@thesunshinejr</a> <a href="https://twitter.com/onmyway133?ref_src=twsrc%5Etfw">@onmyway133</a> for sharing your experience to the community about Open Source Life and thank you for making our dev life better because of your projects! You are all awesome! ❤️<a href="https://twitter.com/hashtag/WWDCWatchParty?src=hash&amp;ref_src=twsrc%5Etfw">#WWDCWatchParty</a> <a href="https://twitter.com/hashtag/WWDC20?src=hash&amp;ref_src=twsrc%5Etfw">#WWDC20</a> <a href="https://t.co/tfsX7PtKcO">pic.twitter.com/tfsX7PtKcO</a></p>&mdash; wwdcwatchparty (@wwdcwatchparty) <a href="https://twitter.com/wwdcwatchparty/status/1277214349246042112?ref_src=twsrc%5Etfw">June 28, 2020</a></blockquote> 

I'm happy to be invited by Michie to talk along side with [John](https://twitter.com/JohnEstropia) and [Łukasz](https://twitter.com/thesunshinejr), whom I really admire for their awesome open source contribution, to talk about how to start and contribute to open source

🥦 Bitrise webminar

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">During the 4th installment of our BUG <a href="https://twitter.com/hashtag/webinar?src=hash&amp;ref_src=twsrc%5Etfw">#webinar</a> series, our main focus was <a href="https://twitter.com/hashtag/iOSDev?src=hash&amp;ref_src=twsrc%5Etfw">#iOSDev</a> and <a href="https://twitter.com/hashtag/WWDC20?src=hash&amp;ref_src=twsrc%5Etfw">#WWDC20</a>. Let&#39;s recap what we discussed with our guests, <a href="https://twitter.com/StuFFmc?ref_src=twsrc%5Etfw">@StuffMC</a>, <a href="https://twitter.com/axbotkin?ref_src=twsrc%5Etfw">@axbotkin</a>, <a href="https://twitter.com/Moatazeldebsy?ref_src=twsrc%5Etfw">@Moatazeldebsy</a>, and <a href="https://twitter.com/onmyway133?ref_src=twsrc%5Etfw">@onmyway133</a> in our freshest blog post! ✨🔥<a href="https://t.co/rrA8cyYXus">https://t.co/rrA8cyYXus</a></p>&mdash; Bitrise (@bitrise) <a href="https://twitter.com/bitrise/status/1283431144726368258?ref_src=twsrc%5Etfw">July 15, 2020</a></blockquote> 

I shared my thoughts about my favorites at WWDC and the future ahead

🍇 Contributing.today

During Hacktoberfest 2020, I was contacted by my friend [Maxim](https://twitter.com/webmaxru) to share about open source 

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">I had a pleasure to interview <a href="https://twitter.com/hashtag/OSS?src=hash&amp;ref_src=twsrc%5Etfw">#OSS</a> contributors from Norway <a href="https://twitter.com/DrMowinckels?ref_src=twsrc%5Etfw">@DrMowinckels</a> and <a href="https://twitter.com/onmyway133?ref_src=twsrc%5Etfw">@onmyway133</a> for CONTRIBUTING project. October 2nd we kickoff <a href="https://twitter.com/hashtag/Hacktoberfest?src=hash&amp;ref_src=twsrc%5Etfw">#Hacktoberfest</a> by online meetup about getting started with Open Source at 16:00 CEST. Join our sessions &amp; workshops: <a href="https://t.co/hKkMKEOJJe">https://t.co/hKkMKEOJJe</a> <a href="https://t.co/1yr2AhQ4B6">https://t.co/1yr2AhQ4B6</a></p>&mdash; Maxim Salnikov (@webmaxru) <a href="https://twitter.com/webmaxru/status/1311674525604622337?ref_src=twsrc%5Etfw">October 1, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## Work

I'm happy to continue another awesome year at Shortcut and DNB, where I have awesome and super nice colleagues. I 've made lots of friends who I can talk with, who invited me to play badminton, tennis, football, swimming, hiking. Why didn't we meet earlier?

I was lucky to attend a workshop hosted by John Sundell at work, I learned a lot

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Ran my first ever large-scale remote workshop today, with over 25 participants, 10 different ongoing video calls for pair programming, and a ton of live coding 😀 Was so much fun!<br><br>Thanks a lot to the wonderful team at <a href="https://twitter.com/shortcut_no?ref_src=twsrc%5Etfw">@shortcut_no</a> for inviting me 😊 <a href="https://t.co/CE4P8Slo1G">https://t.co/CE4P8Slo1G</a></p>&mdash; John Sundell (@johnsundell) <a href="https://twitter.com/johnsundell/status/1298992825422327808?ref_src=twsrc%5Etfw">August 27, 2020</a></blockquote>

## Life

Thanks for a memorable year, despite all the lockdown. And remember, balance work and life. You don't need to be super rich to be happy. Having lots of money in the bank while living alone is not fun at all.

Another year is coming to an end. When looking back, do you miss the time you didn't spend with your friends and family, or do you miss the time you didn't get to do your work?

May your code continue to compile 🙏