~ RICH CODES

2022 In Review

January 21, 2023 | 15 minute read | ✍🏼 Fix typo

Two thousand and twenty two is over, so, as usual, I took some time to reflect a bit on the things that happened (or didn’t happen) during the year.

Career

It has been a great year at thoughtbot. It’s the best place I’ve worked in, and I feel like everyone is trying to make it the best it can be. I get to work with great people and with cool projects. Working with Mozilla was one of the highlights for me this year. I got promoted and was a mentor in the apprenticeship program, which was a great experience. I wish more places did something similar.

Name pronunciations

Because I don’t have a “traditional name”, I’m often asked how to pronounce it. I figured other folks probably experienced the same, so I added support for uploading your name pronunciation to an internal thoughtbot tool. Thus, before going to a meeting with somebody new, you could check how to pronounce their name.

Turns out this feature was very appreciated, and I even got a shout-out on the BikeShed podcast for that. This DEI theme would appear again in a blog post later in the year.

Mining gold

We have a lot of interesting discussions on thoughtbot’s Slack. I thought those could also benefit the community in some way, so I created a tool called GoldMiner that searches those conversations and turns them into blog posts.

I’m happy with the results, and I’m working on making it open-source.

Summits

Brighton / London

In May this year, I flew to Brighton (UK) to meet my coworkers in person for the first time! It also was my first international trip, which was scary and exciting. The impostor syndrome hit hard before getting there (I was suddenly afraid I wouldn’t be able to communicate properly 🤷🏽), but everything was fine. I had a wonderful time there. I also spent an extra week in London since I was so close.

Some thoughts about being in the UK:

  • Having sun at 9 PM was almost unbelievable to me. I knew this happened in other places, but actually seeing it was cool.
  • Yeah, eating beans for breakfast is weird;
  • Walking in the streets at night or with my phone in my hands was something… different.
    • After getting back to Brazil, I started noticing some things I did all the time, like always looking over my shoulders, not pulling my phone out of my pocket when there was some stranger too close in the streets, or rushing to get in/out of the car as fast as possible.
    • I know there’s no perfect place, but it felt good to have a different lifestyle for a couple of days.

Azores

In October, we had another meeting, this time in the Azores (Portugal). Being in a different country but still speaking Portuguese was weird. It was confusing to switch from English to Portuguese all the time. I would often speak with a waiter in Portuguese and then in English two minutes later, for example.

Aside from amazing people, friends, and food, I did some hiking and went to the hot springs.

You can really see a “volcano shape” in this picture.
The sea was angry, no swimming for me.
These baos (and the taco behind them) were ✨ A M A Z I N G ✨!

Thoughts on being in the Azores:

  • It’s weird to think I was basically at the top of a volcano.
  • The architecture left me with an unsettling feeling: everything felt similar (like in a Brazilian town), but… European in some way. Maybe it was the weather or the asphalt. Also, the beaches had black sand 🤔.
  • The accent can be so difficult to understand. They will generally soften their accent when speaking to a tourist, but when they talk between themselves… I couldn’t get a word!
  • My favorite restaurant was TukáTulá, by far! It has a great view and great food.

Open-source

Overall, I didn’t do much open-source work this year, but I’m happy with what I did.

End of Life

January this year, I released my fourth gem: end_of_life, a gem that helps you find which projects you have that use a deprecated Ruby version. It was one of those ideas I couldn’t take out of my head, so I hacked the first version during a weekend. It is pretty simple, but I think it has a nice UI, and I like how I handled errors using monads.

# simplified version of the code that searches for repos with deprecated Ruby
def check_eol_ruby_on_repositories
  fetch_repositories
    .fmap { |repositories| filter_repositories_with_end_of_life(repositories) }
    .fmap { |eol_repositories| print_diagnose_for(eol_repositories) }
    .or { |error| puts error_msg(error) }
end

I like this pipeline, and I don’t think it looks weird in Ruby. IMO, it’s much better than exceptions, which I first started using, and they didn’t play nice with Threads; then I had to do all sorts of workarounds, and suddenly everything was a mess.

Rails

I’ve got one PR merged into Rails. It’s a small convenience and will be out on Rails 7.1.

# Now it's possible to write
audio_tag(user.audio_file)
video_tag(user.video_file)

# Instead of
audio_tag(polymorphic_path(user.audio_file))
video_tag(polymorphic_path(user.video_file))

I expected this to work, and I was surprised it didn’t. I believe most of my contributions to Rails will be similar to this.

I also participated in a few discussions/PR reviews. Some of those PRs got merged, and others were rejected in a few minutes. There are also the ones I don’t know yet.

Dry Monads

I opened a PR adding a new feature to dry-monads, but it was rejected. That happens sometimes, and it’s okay.

Blogging

I had the resolution to write one blog post per month in 2021 to force myself to get back to writing. That worked well, but I hated the pressure all the time. For this year, I felt that I would naturally write (especially during Investment Days), so I didn’t force anything. I wrote when I felt like it and had time.

Turns out that this worked well. I wrote 14 articles throughout the year (one more than last year). The difference is that (aside from two TILs articles and 2021 In Review) all of them were written in thoughtbot’s blog. I did that so I could reach a larger audience.

I was sort of consistent with writing, although most of it happened in Q1 and Q4. I didn’t write anything during Q2.

My favorite 2022 article is Pipelining without pipes because it was fun to write and has a silly premise (it even appeared on RubyWeekly). Working in my native language requires empathy was the hit, though. For some reason, it went viral on LinkedIn and got featured in LinkedIn News. All of that felt weird to me. I almost didn’t publish that article because it was so intimate, but maybe that very thing was what made people connect to it.

Ruby Cards

Ruby Cards kept going! I added a card every week (that I wasn’t on vacation) and I grew the number of followers a lot! Xavier Noria (known author of the gem zeitwerk) retweeted one of the cards at the beginning of the year which bumped the account. Thank you!

Once again, consistency has proven to work. I’m proud of this growth.

However, it’s exhausting to add a card every week. Not only do I have to come up with something new, but I have to make sure that I didn’t post the same thing before (and two years’ worth of cards is quite a lot). I’ve been delaying this for a while, but I’ll have to automate the creation of cards (at least partially!) in some way.

Hobbies and Life

Unlike last year, I did no pixel art and read no comics in 2022 (and I’m not sure if I’m going to get back at those soon), but there was one thing I really dug into: music.

Music

One of the first things I did this year was to get my guitar to a luthier. She was kinda left aside and needed a bit of love. After setting it up, I played a bit with plugins like AmpliTube, but I knew what I really wanted: an amp.

I did my research, and a few weeks later, I had a Katana in my hands.

This was the first guitar gear I got in many years.

I finally can afford these things, so I went all-in this year. I always dreamed about having a pedalboard and stuff, so I started experimenting with gear little by little. Here’s a timeline of all the guitar stuff I ever owned:

You can see how I basically owned the same two pieces of gear for 6 years (mostly during college, where I was too broke to buy anything), and how I went nuts in 2022 buying pedals.

Speaking of music, I didn’t listen to a lot of music as I would in the past. I don’t feel like this is true, but it’s what the numbers show. I’m sure I would hear something close to 100k minutes per year during college. Maybe it was all the waiting at bus stops? Or maybe it’s because nowadays I also listen to music from my wife’s account when we’re on the car. Anyway, this is not a metric I’m trying to move up or down.

Brasília Music School

Maybe my excitement with playing guitar was so evident that my wife asked me, “Have you ever thought about going to Music School?”. I haven’t thought about that in years. I was so busy with college that I forgot about it altogether.

Well, there wasn’t any good reason not to apply, so I did. I played a version of Everyday I Have The Blues by John Mayer (I’m sorry, I’m too shy to show you the recording) and was accepted. My first semester was focused on the basics (pentatonics, how to read sheet music), but I’ve learned so much! I’m eagerly waiting for the next one.

I’m learning Italian

An Italian friend, Valeria, started teaching Italian to a few folks at thoughtbot. That was the beginning of my journey with Italian. I didn’t have plans to learn a new language, but that was the only other language (aside from English) I ever did on Duolingo before, so why not?

As I said, I tried learning a bit of Italian some years ago, but lost my 90-day streak and gave it up. This time is different. I’m taking it more serious: I’m not only doing the Duolingo lessions, I’m listening to podcasts in Italian, watching shows with Italian dub/subs, reading books and doing Anki cards.

It’s different from learning English because I’m not doing formal lessons, so it’s more… casual? At the same time, when I was younger, I learned a bunch of English without realizing it: I was just reading song lyrics or playing games. I also don’t need Italian to work, study, program, watch movies or YouTube, so it’s a different approach. To put it simple, I need to engage with the language actively to learn it.

Music has been a good part of my learning process. I’ve found this fantastic band called Ministri (which was a large portion of what I listened to in 2022), and noticed that it’s easier for me to remember words that came from music lyrics than random words on Anki.

Three out of the top 5 songs I listened to in 2022 are in Italian.

Gaming

I played 238 hours in 19 different games over 143 days. Playstation says it’s 22% (43h) more than last year, but I don’t feel like that. Here’s the breakdown of my top 5 games:

My partner also plays on the same console, so the only games played by me were Skyrim, Fifa, and It Takes 2. These add up to 93h, which is 36% less than the previous year’s 147 hours.

I also didn’t finish many games (just Stray and It takes 2). I was mainly playing casually, hence the 30h of Fifa and almost 50h of Skyrim, where I would roam around without a defined plan. I think this reflects my focus on other things during the year.

Expectations vs. Reality

Having tha said, let’s see how my expectations for 2022 went. Last year I wrote:

I wanna keep getting involved in Ruby’s development

I did work on open source a bit, and I was part of the discussion on naming Ruby’s 3.2 Data class (my suggestions weren’t the final product, but at least I was there?). No “code contributions”, though.

and keep working on my health

I was mostly talking about physical health, and I indeed failed at that. I was super inconsistent in working out, and I didn’t practice any sports.

On the other hand, I got back to playing guitar, and I haven’t invested in it this much (both in terms of money and time) in a long time. I hope this compensates for the lack of exercise in some way, but I don’t want to have to choose between mental and physical health.

I’ll leave game development on hold for a while and focus on programming languages. I specifically want to understand how type checkers work and build a simple one.

Yeah… that didn’t happen at all. I did not feel like doing any programming language development this year.

I hope I can visit new places this year. An international trip would be fantastic, but the pandemic might not allow me to do that.

Well, that was a pleasant surprise. I made not only one but two international trips! Shout out to my buddy Jonas that was such a lifesaver for me in London.

I wish we could live a COVID-free life (at least a mask-free one), but that probably won’t happen this year (and maybe neither in the next one).

I got COVID in the same month I wrote that, lol 🤦🏽‍♂️.

Mask-free life is not exactly what we have. It feels like Covid is a never-ending matter, and people just decided to live with it, for better or worse.

2023 Goals

2022 felt like the year of music to me. It seems like much of what I’ve done (at least in my free time) was related to that. I believe that a big part of this year will be similar.

Again, I want to “correct” what I don’t think I succeed at in the previous year. In particular:

  • Exercise! Sports, gym, whatever it is, I need to move this lazy body.
  • I do want to keep on working on core Ruby. TBH, contributing to CRuby feels too far off from my skill set. Maybe I can work on supporting things like documentation.
  • Keep my work/life balance. This wasn’t a problem in 2022, and I want to make sure it keeps not being one.
  • Working on something fun! Language development, games, something else? I don’t care, as long as I enjoy doing it.

Wow. This took a lot of time to write. Gathering the data from different sources, compiling it, and actually creating a blog post is hard, but I’m glad I did it. See you in 2024!

Categories

year-in-review