Retrospective 2021

Retrospective 2021

Here is a recap on my year 2021 on different aspects with some tips for you, so that it’s not too boring haha.

At Pixelmatic

The biggest event in 2021 for the technical department has been to decide to give up on Unity Entities. Which meant almost restarting our production development from scratch. It was a tough decision, but also something that potentially saved our project.

To help us with the transition, we hired a veteran from the French video game industry named Nicolas Bernard. And also I found a VP of Engineering in the person of Jordan Guinaud, who is a friend from university. With this dream team, we are now full speed back on tracks and top quality.

Another thing, to note I did quite some work on NFTs, while it’s not entirely ready, it will be some time in 2022. And I hope that Infinite Fleet will lead the way on how NFT should be properly used in gaming. No false promise, no overselling of the concept.

Personal organization and management

Since 2020, I started a quest to improve my work practices and time management. And in 2021 I started to get the right pace that works for my pro and personal life.

To be brief:

  • I iterated on how I do inbox zero. I check my emails and all my social networks only once a day. I started to use also for my personal task board, TasksBoard for Google Tasks. I have these classic columns: Later, This Week, Today, and Done columns, but I also have:
    • “👥Pending subjects” for things where I am waiting for someone else reply or feedback. I also label the date of the latest interaction on it, so I can see easily how old are the tickets. That definitely helped me to keep a close eye on pending subjects and know when I should poke people to keep the ball rolling.
    • “💸Invoices”, it helps to stay on top of invoices to pay.
    • “👐Open Support Cases”. I participate in the customer support for Infinite Fleet, and that helps me to batch tasks and deal with support cases all at once.
  • I started to use automated routines (daily, weekly, monthly, quarterly). That way, I never forget to do something important. And it provides me with some easy victories throughout the day. FYI To make it work with Google Tasks I used that https://www.recgtasks.com/.
  • I adapted my work to my energy level during the day. For instance, if I feel a little under the weather I will tackle easier tasks like exploration, planning, learning, administration, … While on the opposite if I feel great, I will tackle the most difficult problems, and do long sessions of deep work. https://www.betterup.com/blog/manage-your-energy-not-your-time
  • During the year, I also started a transition to Notion for managing my notes. I was disorganized in terms of note-taking. And lost many chances to save properly some knowledge at hand. I am still trying to perfect my note-taking, and it will be one of my goal for 2022.

Software Engineering

Here is a list of things I practiced during the year:

Programming (always <3)

This year I mostly worked with these three languages.

  • Python
    I have developed tools to simplify and automate some of my work. Below are some of the things that helped me.
    • A tool to have environment variables in .env or .ini files: python-decouple
    • A great introduction to mocking in Python: here
    • A great tutorial on how to package a python app: here
  • JavaScript
    I am still behind on all the latest syntax and changes in the latest versions of ES. As well as what are the best npm packages. But here are some cool things I discovered this year:
    • A lighter and more efficient dependency package manager: pnpm
    • A convenient tool to override env var inline that works cross platform: cross-env
    • A wrapper of fetch that makes things more readable and intuitive: wretch
  • Go
    In 2016, I started off on the wrong foot with Go. I didn’t like the syntax of it. But since 2020, I spent more time with it and started to like it. It is very fast to compile and very convenient to deploy. And I can’t wait to use generics in the new version. Anyway here are some of the interesting stuff I enjoyed using last year:

TDD

To be transparent, testing is something I've always neglected (university didn’t help). As an excuse for me, in the video game industry testing often sums up to play-test only. There are some reasons behind that. But now that I looked at testing more deeply, I am reconsidering my entire skills.

Here are some of the things I covered last year:

  • BDD and ATDD
    I focused on API specifications with Behat and Gherkin. It was a fun experience, having stopped using PHP since a long time it was something to go back to it.
  • Unit test
    I experimented writing test suites in Go and Python to test functions and methods. Those two having native frameworks for that it was pretty straightforward.
  • Misc
    I started looking at Jest for Javascript. And also I looked at Cucumber, which offers an alternative to Behat. And Cucumber Studio on a broader scope, including manual testing.

DevOps

Another big subject that took quite some of my time last year.

  • Dagger
    It is a very promising project, led by the creator of Docker itself. It is a tool using Direct Acyclic Graphs to describe your deployment process and automate it. I helped them to debug the Windows version of their tool. Though because of lack of time, I have not been further than the sample projects provided by them.
  • Jenkins
    I have been using Jenkins to run jobs for years, but I had never set up an entire CI/CD pipeline with it. And that’s one thing I did multiple times this year. It’s not hard and can save you a lot of time, so a recommendation to everybody.
  • GitHub Actions
    For one of my personal projects, I decided to use GitHub Actions. And while it's not as enjoyable as Jenkins, I got it to deploy my website. Resources are limited with the free plan, so to circumvent that I use a chain of GitHub Actions. A GitHub Action triggers another GitHub Action.
  • Terraform/Terragrunt
    At Pixelmatic, we are transitioning to full management of our infrastructure via Terraform. I have been far too long playing in the AWS console. Terraform can help to streamline the redeployment of environments. So, something I would recommend as well.

AI

TBH It is a subject I didn’t spend much time on this past year but I wish I had more time to spend on... But I have to mention two things:

  • GPT-3 open beta!
    It’s really exciting I want to spend more time with it to see how we could exploit it in our games.
  • GitHub CoPilot
    Just awesome! It’s super convenient while developing to have this tool proposing solutions on the fly. Really great for productivity IMO.

Misc subjects

  • Git
    I improved my understanding and usage of Git. Thanks to my colleague Alexandre Haffner, Lead Engineer on Infinite Fleet, who made a workshop at Pixelmatic on Git best practices.
  • Reactive programming
    Thanks to Jordan Guinaud, VP of Engineering at Pixelmatic. He used reactive programming quite a lot in the past while doing Android development.
  • Web Dev
    • Dart
      I played with Dart to make the first version of one of my personal projects. I noticed rapidly that there are no mature frameworks aside Flutter and AngularDart. I didn’t want to a Flutter website, and AngularDart is going on some sort of public pause. So I went with pure Dart and quickly felt leftover... Having to build basic stuff like one-way binding. So I gave up on Dart for the moment. But I will come back to it later.
    • Svelte
      After playing with Dart, I tried Svelte and I love it. It’s easy and simple. Stores are easy to use. For routing, there is SvelteKit. Which also includes SSR, AMP, etc. A very interesting framework. And it compiles super fast thanks to vite. So a JS framework I would recommend.
  • Crypto
    • Liquid and Bitcoin I spent quite some time working on NFT and liquid transactions. Forcing to learn and understand more and more the nuts and bolts of Bitcoin. And really Bitcoin is very sophisticated software, that is sometimes difficult to apprehend.

Personal projects

  • Blogging I wrote 42 articles in 2021. My goal for 2022 is to write 52. One article a week. That sounds doable, right? You are reading the first of these 52 articles. Wish me good luck.
  • The Software Engineers Podcast It was a while I wanted to try host a podcast. I have been a regular consumer of radio and podcast. I like the audio format as much as the video format. So it was cool to jump onto this new adventure. What I found out after 6 episodes is that doing podcast with a new guest each time is difficult. For several reasons:
    • Sometimes it’s hard to find a good time to meet with a person, everybody is quite busy.
    • Kind of related, but people could think I am not worth it. My audience is small as I am still just beginning. Hence, it may be less attractive for someone to accept. While they could do something with their own (bigger) audience.
    • They could just not like my style and my noob questions.
    • They could just not like my avatar with the laser eyes.
    • Or they could just be shy or simply not willing to expose themselves (which is completely ok).

So in conclusion, it’s difficult to find people who both fit my editorial direction and don’t fall into the points I mentioned above. After 5 episodes, I decided instead of spending too much time trying to find guests, to timebox my search. And as soon as I have guests ready, record and release the episode.

  • Utile.space For quite some time, I had a list of bookmarks to do things like DNS resolution, password generation, base64 encoding, etc. And I had always felt like I should do my own website and centralize all these utilities to save time. Well, it’s done now. I launched utile.space. It includes the things I stated above. But also curated link sharing (I still need to improve the search engine for it), address IP lookup, and more.

Happy New Year

My resolutions for this new year are the following:

  • 52 articles on my blog. I have several articles pending. Some from my experience creating utile.space, some related to work, Bitcoin, and others I need to finish writing. So it’s doable.
  • I will continue my podcast and publish it each time I got a chance to record an episode. I have several pending guests who we didn’t get a chance to meet yet.
  • I will keep learning as we all shall do. I am planning to work even more with go and svelte this year. Likely Python and Terraform as well. And if I get a chance some C# in Unity 😛
  • I will improve my notes in Notion, and maybe cut off ties with TaskBoard?

Did you find this article valuable?

Support Sonny Alves Dias by becoming a sponsor. Any amount is appreciated!