2019 in retrospective

Enrique López-Mañas
13 min readDec 27, 2019

This year is over. During the last 365 days, I fulfilled some of the goals I meticulously established at the beginning of the year. In other goals, I failed without palliatives or anesthesia.

During the last 9 years, I have been following a process to determine my goals for the upcoming solar rotation. I sit at a coffee place next to my home in Munich, order a ginger tea and take notes. I reflect about how the previous year went, and determine where I would like to be in the upcoming one.

I have been writing on a notepad my daily thoughts , feelings and events for years. This has been one of the best habits I have acquired. I can literally go to any random day in the last years, take my notepad and see a detailed description of my life at that time. That is very helpful to put everything under perspective, and see whether things are getting better or not.

Spoiler: life tends to get better.

Both as a principle of transparency and self-reflection, I would like to summarize this year in terms of achieved milestones, failed ones and see how to improve them facing the upcoming 2020. This will serve me as a public note to come back through the upcoming months, and see whether I am doing well or not. If it helps other folks to improve their process or take some ideas, it will be already worth it.

Towards the end of every year, I used to establish a set of targets I wanted to achieve. Each target needs to fill some requirements:

  • They need to be concrete (“saving 10.000 EUR”, for instance). If a quantitative determination is not possible, try to get as close as you can.
  • They need to be rather challenging and even outside of my current abilities. I included this rule after reading the story of the Archer and the Moon, by Alejandro Jodorowsky. The sort TL;DR: of this story: upon a time, there was an archer that wanted to shoot an arrow to the moon to become the best archer in the world. He tried and tried and could not succeed, and everybody mocked him while he was relentlessly training. He never got to reach the moon, but his commitment and the million arrows he shot made him undoubtedly the best archer in the world. This has worked out for me in the past: I have failed at some established targets, but they pushed the final result more than I expected. Following the previous example of saving money: if you commit yourself to save 500K EUR in a year, you will need to absolutely change your mindset to A), earn more than 500K and B), save the necessary amount. It might not even be possible in a year, but it will set the foundations for future years.
  • If last year the target A was accomplished, the following target must necessarily be more challenging (for instance: if last year your target was to save 10.000 EUR and you saved 11.000 EUR, this year it cannot be less than 11.000 EUR).

I have divided my review and goals in 5 categories that today are very present in my life: running, programming, books, investing and miscellanea. Let’s start with running.

Running in retrospective

2019 has been the most prolific year in terms of running in my life. I smashed all my previous running records, except 10K. I run a total of 2.348 KM. I also run my first ultra (71K in DaNang, March 15th), and the highest (and hardest) ultra (Zugspitsr ultra, 62K and 3.639 elevation climb). I paced my first half-marathon (Saigon, 8th December at 1:50). I started registering for races in 2017, and this has absolutely paid off.

These aseptic numbers and statistics hide a tremendous amount of pain, blood and tears.

Every race I run today is a potential candidate for a PB. I run faster and smarter than ever. I have been during some seasons running marathons weekly, and I can say this is related to the point mentioned above: challenges must be rather challenging. A few years ago I could not even imagine running a marathon, and today I can probably go out running anytime and improve my previous PB.

  • 5KM: I run the 23rd of November 5K at 19:32. This was after buying the Nike Zoom, and it is early to say if they influenced my running — my initial impression about them is very positive.
  • 10K: I could not defeat my previous PB of 36:49 from October 2017. This was a flat run in Zürich — and I also felt especially fast those days. Right now I cannot seem to beat this distance — my best 10K this year was 46:57 on December 6th. Next year I will not focus on beating my PR in 10K, since I am focusing on distance running.
  • 21K: I run my fastest half-marathon this year near Seoul at 1:39:56.
  • 42K: I run my fastest marathon this year in Kyoto at 3:28:51
  • I joined the Spartan Trifecta Tribe after completing a Sprint, Super and Beast in a calendar year.

Unfortunately, I developed a tendinitis on my right feet, and depending on its evolution I might need to adapt some goals. It is currently not tragic, but it does prevent me from running when it is painful.

Running goals for 2020

  • Running the Chicago Marathon: this is part of a bigger goal, the 6 Abbott Stars. I have run so far in NYC and Berlin.
  • Running a marathon in a different continent: I am currently considering the marathon of Nairobi and the marathon of Sydney. This is also part of a bigger goal — running a marathon in each continent.
  • Running at least 100K.

Long term goals

As stated before, I have a few long term goals when it comes to running:

  • Running the 6 Abbott Stars (depends too much of when I can qualify for Boston)
  • Running an ultra on each continent (finishing by 2023). Here Antarctica is an issue — there is only one ultra, and it is particularly hard to get in.
  • Running a marathon on each continent (finishing by 2023)
  • Running a marathon under 3 hours — and hence qualify for Boston.
  • Running the Barkley’s marathon.

In 2020 I will not be focusing on speedrunning, but on distance running. I want to switch my focus to run faster marathons, but this will not happen in 2020.

Programming in retrospective

Some time ago, I observed my GitHub contribution graph to determine that I was following a routine when it comes to programming. Over time I have completely discarded this metric — it is just highly misleading, and does not correlate with any learning or goal achieved, besides programming for a number of days in a row.

Instead, at the beginning of 2019 I came up with the following objectives:

  • Working on a real project using Golang.
  • Working on a real project using Rust.
  • Working on a real project using Scala.
  • Writing one technical book.
  • Finish the book “Seven Languages in Seven Weeks”.

I am happy to have been able to work on a short gig on a backend using Golang. I have been developing software professionally for 12 years, and although I have been mostly involved with Android I kept an equal engagement with the backend side of the things (mostly Java, and lately Kotlin).

I have finished innumerable tutorials and small projects with Golang, Rush and Scala, but this was never enough to jump into the more advanced aspects of it. Any tutorial or small project does not need to scale too much, and I know that this is a crucial aspect that can barely be learned in the free time.

Hence, at the beginning of 2019 I started answering to those recruiters that were a bit confused with the mix of keywords. All software engineers receive random messages from recruiters talking about roles they barely relate with, and I understand most of the time this becomes annoying. However, I took the decision to answer all of those recruiters. Particularly the recruiters asking me for Golang roles and gigs.

I followed an approach that I tried in the past, and it was to state the following:

“Although I do understand and feel comfortable with Golang, I have not worked in any real project with it. I truly want to learn more about it. I have over 12 years of experience in Software Engineer, and I am willing to work on this gig part-time for a lower hourly rate“.

This is a technique I have used in the past to learn other technologies, and it has helped me quite a lot — and I think it also helped the companies hiring me. They get a fairly seasoned developer for a lower price. Seasoned engineers will catch up with a technology or a language rather fast, and get the project done. I have been working in real-world projects developing a full backend with NodeJS, Python and even Haskell in the past.

I had a great experience working for a Berliner Startup for a few months working on their backend, and learned a lot while doing it. I also helped them quite a bit setting their CI/CD environment, which was still quite immature. They ended up very happy with the results, and now I occasionally help them with some Code Reviews.

I am very appealed by the use of Go in backends — Google has been using it intensively. It is fast — really fast- robust and efficient. It is great to use it in parallel processes. I was very happy with the experience, and now I feel I am ready to work on wider Golang projects.

Unfortunately, I was not able to work on any Scala or Rust projects. To keep it short: I want to learn more Scala to make my FP foundations stronger, and I want to learn Rust since I ready a bunch of articles exposing its virtues. So if your company is hiring and would like to have on-board an experienced engineer with dedication and commitment to learn, ping me.

Unfortunately, the next goal (“Writing a technical book”) could not be fulfilled. I am still working on it, but is not yet ready to be announced.

The last goal, finishing the book “Seven Languages in Seven Weeks”, could not be completed either. I am taking all those unaccomplished goals into 2020.

Even if professionally 2019 has been great and I have learned a lot — I have been working on really challenging and interesting projects at my client, and I have a big sense of accomplishment and belonging there — I just did not complete all my goals for 2019. This was disappointing and needs to be solved in 2020.

Programming goals for 2020

I will be keeping the unaccomplished goals, and adding a few more:

  • Finding a part-time gig to work on a real-time project using Scala.
  • Finding a part-time gig to work on a real-time project using Rust.
  • Publishing a technical book.
  • Finishing the book Seven Languages in Seven Weeks.
  • I have developed an API with Kotlin and ktor for my private investment template. I will either open-source the entire API, or monetize it offering access with some license plan.
  • I will publish at least one open-source library.

Books in retrospective

2019 has been a mixed year. I always try to read 50 books each year, and most of the years I accomplished this. This year has been more busy than usual, and I failed on this goal.

I published “Living by the Code”, which has received really nice and positive feedback since it was released. Since I read “Tools of Titans” and “Tribe of Mentors” from Tim Ferris, this was always an idea hovering over my mind. I wanted to know what other folks in tech think and do, and how they could share their ideas with a very wide community, hungry for inspiration. “Living by the Code” lived up to its expectations, and this project will continue in one direction or another.

I have been working on a technical book that is not yet ready to be published. I hope to reach a state in the upcoming months where it can be announced.

Book goals for 2020

  • Work on a sequel for “Living by the Code” — and determine whether this should be a completely new title, a series of podcast, an update over LBTC, etc.
  • Publish my technical book.
  • Read 50 books.

Investing in retrospective

2019 has been the year where the dividends of my investment strategy are (literally) paying off. The following goals were accomplished:

  • Together with my colleague Kevin Read, I started the podcast “I/O Investing”. We also started together the “Munich Investor Meetup”.
  • I also started a Slack group, the “Investment Study Group”. We have nice discussions over there of the things we are doing and learning, and many people are currently contributing with their knowledge.
  • I smashed my forecasts for dividends and growth of my portfolio. I do not like to compare myself with the evolution of the S&P or any other index, since I am exclusively following a DGI approach. However, even in this particular good year (the S&P500 went up 29%), my portfolio beat the index — it went up by 31.2%. Dividends were up 3.4% more than I expected when I forecasted it at the beginning of 2019.

For the upcoming year, my portfolio and investing strategy will just keep the same cruise speed as in 2019. I will keep investing an amount of money every month, reinvest all the dividends and do DRIP when it is possible, and also invest all the extra cash in my portfolio growth. I will be able to cover my living expenses in 14–18 months, assuming a dividend increase of 4% and inflation of 2%. It might move a few months back or forth, but this inflection point should happen rather soon.

Here there are some graphs of my current portfolio — this information is particularly interesting to be contrasted at the end of 2020.

Pie chart with portfolio representation Bar char with portfolio representation
Sectors representation
Super sectors representation
Country distribution
Portfolio ranks
Dividend evolution

Investing goals for 2020

  • I will receive in 2020 at least 27% more dividends than in 2019.
  • (repeated) I will open-source or monetize my dividend API for my investment template. There are many APIs out there, but all are expensive and the information is not properly presented. I think there is a demand for a proper DGI API that can be used to track personal portfolios.
  • King, aristocrat and contenders should account for 50% of my portfolio.
  • Defensive and sensitive companies in my portfolio should account for 75%. Defensive should account for 40%
  • Do at least a monthly technical analysis of a company in my portfolio.
  • I want to increase my exposure in Canada to 5% of my portfolio, and include some of the companies on my radar (most notably, Toronto Dominio Bank and Enbridge).

Long term goals

There is a lot of literacy and hope-posts about FIRE, and what to do when this moment is achieved. Now that I see it rather close, I do not plan any single change in my lifestyle. I do enjoy what I do, my daily hours have a lot of meaning and joy, and I want to keep doing what I do as many years as possible. I do not consider in the medium term any change in my routines.

Miscellanea in perspective

This category will act as a tailor’s drawer, and all the goals that do not belong to the previous ones will be inserted here.

My goals for 2020 in the miscellanea category are:

  • Reduce radically my trips. I have been often very keen to take any random plane to speak at a conference event if I was invited, and this has taken a toll on my well-being. Too many hours of loneliness in a plane just trigger my anxiety. In 2020, I will be only speaking at local events, or events that can be easily reached by public transportation. I travel around 86.666 KM in 2019, and this is just unsustainable.
  • Spending more time with my partner. Directly correlated to the previous one. Next year her visa for Europe will be hopefully settled, so we can spend longer period of time together.
  • Writing more articles. My focus this year in the community contributions have been mostly engagements in speaking. This year I will be drifting towards writing content, which is also more time effective. I will write at least one article per month.
  • The header images of each of my articles are photographies I took. I did not take as many photographies this year, and this is a hobby I am very delighted with. Taking a photography is not only the moment were the shutter opens and lets the light in: it is all the previous research of a location, the waiting hours, hunting for the perfect weather conditions, the conversation with the people around. I will be taking at least 12 photographies I can showcase during 2020, one per month.
  • The Kotlin Weekly, a weekly mailing list sending on Sunday news regarding the Kotlin universe, has grown to a very decent size and it is now a renowned source of information for all Kotlin developers and enthusiasts. This year I managed to update the website and the mailing list design. For 2020, I would like to automate the project of writing, sending and updating the “Latest issues” on the website, as well as providing an automatic way to hire sponsors ad (probably directly booking and paying with PayPal on the website).

I will revisit this post at the end of 2020. For all the readers that reached so far, I wish you a happy 2020 full of happiness, achievements and joy.

I write my thoughts about Software Engineering and life in general on my Twitter account. If you have liked this article or it did help you, feel free to share it, ♥ it and/or leave a comment. This is the currency that fuels amateur writers.

--

--