Looking back at 2020
- 2442 words
- 13 min
What is this about?
2020 has been a hell of year.
Global events have hit us all like a truck running at full speed and each one of us is trying to collect the pieces after the impact, in their own personal way.
It feels like my life has been put on hold for 10 months - but looking back, things happened.
I am turning around to look back at the year as a whole and draw a balance, including both failures and successes.
This year I am doing this reflection exercise in public, including numbers and plots!
It will hopefully be useful data to others embarking on similar journeys - I have learned a ton from reading similar pieces written by others in the tech community.
If nothing else, the whole article will keep me accountable for my 2021 goals - the internet never forgets!
- The blog
- The book
- Open source
- Next year
Let's start with the blog itself!
I published my first article here in June 2018, but I didn't really post much in 2018 and 2019 - 9 entries in a year and a half.
2020 is when I got serious!
Starting in March (UK lockdown) I published 14 articles - 1 every ~3 weeks.
Consistency does not come easy to me (more on that later) but it paid off: you can see the blog audience growing steadily throughout the year.
On the awesome side: 66 thousands readers throughout the year!
That's 3 times more than 2019 (22k) and 12 times more than 2018 (5k).
The growth rate is amazing, although I admit I feel the pressure of the audience size when publishing new content. Trying not to think about it too much.
The plot tells you more though - do you see the bumps? Some higher, some smaller?
Those are new articles getting published!
How many do you count?
Definitely less than 14.
While a few pieces were met with great enthusiasm (On the shoulders of the giants or Choosing a Rust Web Framework - 2020 edition) most attracted moderate interest and some were almost ignored.
When you put ten hours or more into a post it sucks to see it disappear in the void, but it happened and it'll keep happening so I am trying to be less sulky about it.
I have also learned to appreciate the difference between "instant best sellers" and "long sellers".
On the shoulders of the giants got to the frontpage of Hackernews in March, yet it attracts little to no traffic today.
Are we observable yet? did not make a big splash when published, but it's one of the pieces I am most proud of and it consistently gets referenced in discussions and forums.
Often it just takes time.
Breaking down those 66k readers by source leads me to another of the trends I am particularly happy about:
The number of readers finding my blog through organic search (mostly Google) is growing steadily (10x compared to January 2020) - some articles are consistently returned among the first few entries for popular queries.
I have not put any deliberate effort into search engine optimisations, apart from covering the basics (meta tags) - looking to work on it more in 2021.
In 2020 I started writing a book, Zero To Production In Rust!
If you had asked me "Do you want to write a book?" in 2019 I would have probably answered "It'd be great to have a book published, but it's not worth the effort."
It all started with a tweet:
How much interested would there be in a series of blog posts on how to build a production-ready(ish) API in @rustlang from scratch?— Luca Palmieri 🦊 (@algo_luca) May 10, 2020
Think database setup, domain layer, API layer, non-functional requirements (logging, tracing, metrics), integration tests, benchmarks, etc.
(The typo in that tweet still haunts me at night. With all my other Twitter typos.)
The enthusiasm (and the magnitude) of the response caught me off-guard.
I felt I had stumbled into something that was worth pursuing.
I bit the bullet and decided to do it!
That is how Zero To Production In Rust was born, six months ago.
Throughout 2020 I managed to publish 6 chapters, roughly 150 pages.
I changed the table of contents multiple times - shuffled topics around, changed the narrative, deleted some sections - but I believe my initial estimate of 13 chapters and 350 pages is still on point.
Each chapter gets published on my blog and I initially planned on keeping a two-weeks release schedule. If you do the math, you'll see that I failed (consistently).
It takes me a long time (25 hours? Sometimes more?) to write a chapter and I learned that I cannot reliably get one out in less than four weeks.
I am also easily distracted - I am curious by nature, I get excited about stuff and I want to dive straight into it!
I took me a while to adjust to the idea that I'll be working on this project for a year or more and, no, I cannot take on other side-projects. I somehow made the mental switch, but a few things slipped through the cracks in my determination (see the later section on open source).
What about reception?
At the beginning I was afraid of committing to a huge workload basing my assessment of the project potential on a very ephemeral signal - Twitter reception. It's easy to like a post, or even to retweet it. But how many would actually read the content? How many would be willing to pay for it?
If there is something I learned early in Open Source is that a huge project over a long time period with no clear monetization strategy is a perfect recipe for burnout. Not interested, thank you.
That's why I launched a newsletter as soon as I announced the project: entering your email in a form requires more buy-in than interactions on a social media.
I used ConvertKit to get started with minimal effort and the numbers gave me confidence I truly was onto something.
A mailing list was also a good idea to consolidate an audience - subscribers are a baseline audience for any new chapter and they ensure that it will have a minimum reach. Then it will soar or fail on its own merits.
As I said before, I was planning to sell copies of the book since the beginning of the project. But I was still not sure - do I truly want to commit to it?
Once somebody pays for it, you have to finish it. No other option.
I decided to take the next step after I published the third chapter - 25% of the whole book according to my plan. I bought a HTML+CSS static website skeleton, set up an account on Gumroad, messed around with Pandoc and stepped into the void.
4 months, 3 chapters, 70 pages, 51827 words later...— Luca Palmieri 🦊 (@algo_luca) September 13, 2020
I am so happy to announce that "Zero To Production In @rustlang" can now be pre-ordered at https://t.co/UXXdVwPovC 🎉🎉
It includes the book code, PDF, ePUB and MOBI.
Feeling quite proud right now. pic.twitter.com/p2VOA8ZOXP
I subscribe to several newsletters because I find their content interesting, but I would only pay for (maybe) 5% of those if they asked me too.
I am giving people the opportunity to buy early access to a book that is already available (with no restrictions or cuts) on my blog.
Is it worth the 35£ I am asking for?
It seems it is!
12k dollars is a substantial amount of money.
When I started I set the lifetime goal of the book to 1000 sales - I managed to sell 264 copies in 2020 alone before the book was even finished!
Looking at the conversion rates I think I can hit that 1000 goal post in 2021, but I am not planning to optimise the book sales before it's actually finished.
I'll let the content speak with the free chapters on my blog, linking to the book website.
Overall, if I have to point at one 2020 achievement I am incredibly proud of, that's the book. Without a doubt.
Although I tried to avoid starting any side-project on top of the book itself, I ended up picking a couple or more up along the way.
Some of them were related to the book (
cargo-chef) but it's fair to call it a convoluted justification for my procrastination.
My Open Source motto for 2020 was small and self-contained.
I realised I do not get a lot of energy or joy from maintaining projects over a long period of time and I am definitely not suited to steer OSS projects whose full potential will take years to materialize.
That's why I handed over
linfa, the Rust ML framework I started in 2019, to the Rust ML working group. That's why I reduced my involvement in the
I just don't have the energy or the motivation.
Nonetheless there are many opportunities in the Rust ecosystem to make a significant contribution with crates that do not require a lot of maintenance over time - assuming you invest upfront in proper documentation and testing.
cargo-chef is tiny, yet it massively sped up our Rust Docker builds.
wiremock is a great swiss army knife to test HTTP calls to other services in Rust applications.
tracing-bunyan-formatter have a tiny API footprint but provide a great experience to the user.
They were downloaded between 5k and 10k times each, they did not generate many issues or PRs making demands on my time.
Overall, I am satisfied.
It has been a hell of year at work as well, with a positive spin though.
TrueLayer has grown massively.
We are now ~200 - they were ~20 when I joined!
The company is now distributed - we have opened new offices in Dublin and Milan, on top of our existing points of presence in London and Hong Kong.
Milan, in particular, is our second tech hub - it has been growing rapidly and I am delighted to see that our bet on the talent pool of my home country, Italy, is paying off.
What have I worked on this year?
A few different things.
For the first half of 2020 I led our international expansion across Europe, wearing a hybrid engineer manager/tech lead hat.
An interesting challenge, but I realised that management is not what I want to get into - at least not at this stage. I learned a ton though and I'll bring those lessons with me going forward.
I got my hands dirty again at the beginning of June - tech lead of a small team with a bold mission: launching a new product before the end of the year.
And we did it!
Payouts API is live with a few early customers.
It has honestly been the most complex project I have ever worked on - an event-driven architecture, an event-sourced banking ledger, complex compliance requirements, high liability, a new stack (Rust!), a massive urgency to go to market.
I stretched way outside my area of comfort and I am much better engineer at the end of it.
Thrilled to see what 2021 will bring!
I baked, as it was mandatory during lockdown.
Not bread, mostly cakes, just to avoid being too mainstream.
What else happened?
Uh, yes - I got engaged!
In other personal news...— Luca Palmieri 🦊 (@algo_luca) July 15, 2020
She said yes!💍 pic.twitter.com/y5WeuuDEGz
Let's see if 2021 will be gentle enough to let us go through with the wedding itself!
I'll keep it brief (and doable?):
- Finish Zero To Production In Rust, including a paperback version - either self-published or with the help of a publishing house;
- Sell 1000 copies;
- Build in public! Both when it comes to my blog/book (see here and here) and my side projects;
- Launch a small SaaS as a side-project. Something is already brewing, you'll hear more about it in the next couple of months;
- Speak at a conference that is not Rust-related;
- Get one PR merged into the Rust compiler;
- Travel when it'll be safe again (not much I can do here I am afraid).
See you in 2021!