Here we are on the 6th installment of my yearly review (2019, 2020, 2021, 2022, 2023). This cherished tradition continues as the only stable form of writing on this blog.
Highlights:
Personal:
- Bought my first surf board
- Bought my first car
- Completed my first multi-day trail
- Visited Belgium for the first time
- Visited Japan for the first time
- Visited London again after 15 years
- Bought my first gaming console in 10 years
- Fixed my knee tendinitis with 6+ months of physiotherapy
- Made a more serious effort to learn Portuguese. I can now get by in most daily life situations without relying on English.
Work:
- Grew Typefully to $1.6M ARR
- Expanded the team by hiring 2 full-time and 4 part-time people
- Started investing in growth with content and SEO efforts
- Switched to a stacked pull requests and feature flags workflow
- Made 17 changelog-worthy releases for Typefully
Life
2024 has been a year of stability and routine. Now, 2.6 years into the Lisbon move, I feel like I have settled down and can see myself staying here for many more years, potentially long-term. What I like about Lisbon is the mix of weather, accessibility to the ocean, small-town vibe inside a European capital full of expats and tech workers, and how many cool people I have been able to meet since moving here, or simply as a function of being here. I also feel like I now have a stable group of friends here that I regularly meet and also casually encounter day-to-day.
Reflecting back on this year, it feels like not much has happened in my personal life since I have been too absorbed by work, with little time and energy for anything else. Maybe it's just a matter of getting older, but I don't like this routine of coming home exhausted from work and just sitting on the sofa! In 2025, I want to make a better effort to nurture my hobbies and be stricter about how many hours I work, prioritizing my health and leaving energy for other things as well.
Let's talk about work then!
PS: Make sure not to miss the Carveouts section at the end for some juicy media recommendations.
Work
Hiring
More than any other year, 2024 has been the year of bringing amazing people on board and surrounding myself with people smarter than I am, motivating them with the right incentives and letting them push the company forward with their own agency and skills. It has been one of the most challenging and rewarding things I have ever done, and reflecting back on it makes me really proud.
We now have 2 full-time people and 4 part-time working on Typefully, plus me and Fabrizio, of course.
Doing it comes down to:
- Build a cool project that people want to be a part of.
- Advertise the job post: email people (it helps if you have many potential candidates among your users), tweet about the job, tell friends about it!
- Run a process with steps, tests, and calls!
- Test people for the skills required for the job, not relying only on first impressions or preconceptions (DO NOT SKIP THIS STEP!)
- Pay them well and give them equity.
Reading this book on hiring gave me the right mental framework on how to structure the hiring process. Also, talking to my friend Richard helped a lot! He's the one who suggested creating a rigorous testing process in the first place, which makes a ton of sense not just for the test itself, but for the general idea that you want as many touchpoints and interactions with potential future "hires" as possible to assess them and see how they interact with you and how you feel about them.
Better roles and division of labor
A significant improvement has been the clearer division of roles between Fabrizio and me. While initially it worked for both of us to handle everything with blurred responsibilities and a somewhat chaotic process, this approach became inefficient at our current stage. We evaluated our natural inclinations and strengths, then formally divided our responsibilities. I now focus on CEO/CTO duties, while Fabrizio concentrates on Product, Design, and Frontend Development. Having well-defined roles and clear ownership has improved our productivity and accountability. It has also made it more comfortable to follow up with each other about progress and planning. Previously, with shared responsibilities and no clear areas of ownership, many tasks would stall or remain unaddressed.
How we ship features now
Another major change this year that deserves mention is our adoption of a stacked pull requests workflow and, consequently, feature flags. This has been a significant change, ignited by the release of Graphite, the tool we use to manage stacked PRs. This is huge because it has made our development faster, our code reviews better and easier, and our releases less risky.
How? The stacked pull requests workflow with feature flags goes a bit like this: you have a trunk branch that deploys to production (generally main
) and create pull requests on top of it; you branch off of main
into a
to work on a small piece of a new feature, and when you are done, you send it for review. While working on a
, you update utilities, move files around, rename some functions, and make all kinds of small changes. Now you need to work on the next feature while a
is out for review, so you branch off of a
to start work on b
. When you are done, you send b
out for review as well. This can go on indefinitely, creating a chain of PRs that are small and easy to review. As a developer, you are never stuck waiting for b
to be reviewed before you can work on c
. In this workflow, you are always merging, hence the need for feature flags, so you can hide unfinished features from production users. Since you always merge, you catch bugs early, you can test features out in deploy previews. The general objection that some features are "too hard" to be developed under feature flags is kind of bogus. We thought that too, but since then we have released so many things under feature flags that it makes me confident that we can do almost anything with it: a new editor, a new social media platform integration. Soon we are going to rewrite our auth layer too, and I am pretty sure we can pull it off with feature flags as well.
Graphite comes into this workflow as a CLI and web app specifically designed to work with and review stacked pull requests. It allows you to create a stacked PR based on the current changes in the working copy with just one command (gt create
) and to push them out just as easily (gt submit
). When some of the PRs in the current stack are updated, you can bring the changes to all the PRs in the current stack with just one command instead of manually rebasing (gt restack
).
What we worked on
Product
At the end of the year, I always like to take a hard look at our changelog and reflect on what we worked on and where most of our time was spent.
We did a grand total of 17 changelog-worthy releases this year, starting from some smaller quality of life improvements to some more requested features like Calendar view for scheduled posts. But I would say our biggest focus of the year has been making Typefully more multi-platform. This goes from the obvious task of actually adding more platforms, like Threads and Bluesky, to some deep refactors and rewrites bringing all of our platforms' code editors under a single architecture (code-named "atomic editor").
I think this is a consequence of the current fragmented state of social media, with 2023/24 characterized by new platforms popping up left and right (politically and not) and different communities moving to their own platforms. We made the strategic decision to support them all, instead of going vertical on just one platform (like some competitors did to great success), betting on the fact that creators would want to reach their audiences in different places easily without needing to write and schedule from scratch for each platform.
This trend will continue in 2025, and we will lean even more into this by rewriting our auth layer to be Twitter/X independent, allowing people to log in and sign up with email/Google/LinkedIn, and finally breaking free of our X dependence (on paper at least), enabling easier usage from teams and being taken more seriously by creators that are primarily focused on other platforms like LinkedIn, Bluesky, Threads, or Mastodon.
Growth
Another thing that stands out this year is the growth work we have been doing with Francisco. What initially started as a writing collaboration has grown into a part-time growth lead role with responsibilities ranging from writing social media posts and newsletters to coming up with SEO initiatives and scaling monthly impressions on Google to over 3 million per month. I feel like we still need to reap the benefits of all this work in terms of added signups, but we are very close to doing that and have learned a lot in making all these efforts.
Customer support
The big news here is that we hired someone for Customer Support, and we finally have someone handling it for us. We also introduced a more formal process to manage this (again, thanks to Richard for suggesting how to do this!). The idea is that you have a "Contain" team in Linear where support agents can create issues for tickets that need help from engineering to be resolved. You strive to get this queue to inbox zero every other day by "containing" these issues. This doesn't always mean fixing a bug (especially if the fix takes long), but could mean SSH'ing into some server and running a command to kick the machine and fix the issue just for this user, and opening any relevant issues to ensure the issue cannot happen again in the future (to be tackled at a later time).
This workflow has many benefits:
- No customer request gets lost or remains unhandled (even if getting back to some users requires multiple days).
- Engineers have one easy, consistently written, prioritized queue to look at every day instead of having to parse Intercom messages and fix bugs in random order.
- You get a historical archive of all issues to analyze for prioritizing some higher-level changes to be made to the app.
The last piece of the puzzle for this (which we implemented in the last few weeks) has been to introduce a weekly "contain" rotation where a different engineer is assigned to monitor this queue, fix things, or escalate so the others can focus on their active projects. Such a big relief for me, as I sometimes had to invest 2-3 hours per day to manage this queue myself.
Carveouts
A bit like Acquired, here is a section with most of the media I consumed this year and some brief comments on what I enjoyed most.
TV
Here are off the top of my mind the most interesting things I have watched, with a ✨ close to the ones that I think are worth your time if you haven't seen them yet.
Movies:
- Dune: Part Two (2024) ✨
- Palm Springs (2023)
- Encanto (2021) ✨
- First Pixar movie that got me crying
- Spirited Away (2001)
- Money Electric: The Bitcoin Mystery (2024) ✨
- Really well made documentary on the history of Bitcoin that interviews all the most famous people in crypto and makes an interesting new bet on who Satoshi could be
Series:
- Shogun (2024) ✨
- The Bear (2022)
- Nobody Wants This (2024) ✨
- The Diplomat (2023)
- 3 Body Problem (2024)
- Colin from Accounts (2023) ✨
- Slow Horses (2022)
Books
It was a good year for reading. Finished:
- Poor Charlie's Almanack, Charles T. Munger ✨
- The Great CEO Within, Matt Mochary ✨
- A really good primer on how to run a company and be a great CEO with lots of actionable advice.
- Project Hail Mary, Andy Weir ✨
- The best sci-fi I have read in a while!
- Frontiere: perché sarà un nuovo secolo americano, Francesco Costa
- Who: The A Method for Hiring, Geoff Smart
- It was good in giving me a framework on how to think about hiring and how to approach the hiring process.
- Benjamin Franklin: An American Life, Walter Isaacson
- Read the self-biography instead!
- Sakamoto Days 1-3, Yuto Suzuki
- Enjoyed reading this manga while traveling in Japan.
- Endurance: Shackleton's Incredible Voyage, Alfred Lansing
- What's Our Problem?, Tim Urban ✨
- Gave me a really good understanding of what the woke movement is really about.
- Crypto Confidential, Nat Eliason
- A fun insider story on how people get rich with crypto and what's really going on in that industry.
Started, but didn't get to the end:
- Meditations, Marcus Aurelius
- The War of Art, Steven Pressfield
- The Myth of Sisyphus, Albert Camus
Podcasts
Here's a snapshot of my podcast app Overcast:
- The Essential ✨
- Listen to it almost daily for Italian news
- Econ 102
- Moment of Zen
- Accidental Tech Podcast
- ACQ2 by Acquired
- Acquired ✨
- Probably my favorite on this list
- All-In ✨
- Good listen but getting a bit sick of them always discussing politics
- The Bull
- Chiwi Journal
- Conversations with Tyler ✨
- Second favorite on this list
- Cortex ✨
- Yearly themes!
- Dan Carlin's Hardcore History
- Dwarkesh Podcast ✨
- A bit too nerdy even for me, but love some of the episodes
- Experimental Podcast
- Huberman Lab
- The Joe Rogan Experience
- The Knowledge Project
- Lex Fridman Podcast
- The Rational Reminder Podcast
- REWORK
- The Tim Ferriss Show
Blog posts and essays
Here is the best stuff I highlighted in Matter this year (thanks, Claude!)
- The End of The Twitter Era - sandofsky.com
- Bluesky and enshittification - pluralistic.net
- P&B: Justin Duke - manuelmoreale.com
- Work on what matters - lethain.com ✨
- Time Wealth - coryzue.com ✨
- How to get hired - sive.rs
- A Big Little Idea Called Legibility - ribbonfarm.com ✨
- On Self-Respect - vogue.com
- Paying People in Equity and Dividends - sahillavingia.com
- Dear Europe, please wake up - klinger.io
- Why Europe Fails to Create Wealth - substack.com
- Start With Creation - substack.com
- Stop Acting Like You're Famous - ajkprojects.com
- Careful technology - simonsarris.com
- How Do People Get New Ideas? - technologyreview.com
- Tokyo is the new Paris - noahpinion.blog
- The days are long but the decades are short - samaltman.com
- Who is Portugal For? - palladiummag.com
- Luck and the Entrepreneur - github.io
- Erase and rewind - hey.com
- Why you need a "WTF Notebook" - simplermachines.com
- Why Buy a House? - simonsarris.com
- Efforts and Goals and Joy - simonsarris.com
- Small Spaces - simonsarris.com
- Guide to Being an Infinite Player - substack.com
- Rethinking the startup MVP - linear.app
- Apple Watch Ultra vs Edition - arun.is ✨
- No code reviews by default - raycast.com
- The Missing Monuments - kk.org ✨
- Having Kids - paulgraham.com ✨
- Money and Confidence - mrmoneymustache.com ✨
- What I Wish Someone Had Told Me - samaltman.com
- The best general advice - jsomers.net
- Non dovevamo tornare a casa dei genitori per le feste: è stata una pena, e lo è anche adesso - rollingstone.it ✨