Week 1: 2023

Ended the year with a long call with four of my friends. We have been having this call, where we get to relive our times in the University while still catching up with the new things in our lives. We usually have this meeting every month where we get to talk and this has been going on for the last 2 years outside our university. Personally, this is a big feat - maintaining communication with people you once share memory with for this long. Even though we are far apart on different sides of the world, it never feels far. We spent a good part of the meeting reflecting on our shared memories and encounters while back in school.

Fireworks 🎆

Part of the perks of being in a large city is that you get to experience large gatherings once in a while. After a couple of tours Mercy and I had within the city, we decided to visit the large gathering at the Brandenburg gate for fireworks. I discovered, after watching a couple of YouTube videos, that this gathering is happens every 31st of December into the new year (January 1) and its known for the incredible display of fireworks. Getting to the gate wasn't as easy as we thought and in fact, we couldn't get to the gate. We used two train lines we normally take to the gate and non of them stopped there because the crowd was massive. We eventually had to walk to the gate as we see majority of the other people doing. We finally reached a point where it was no longer possible to go any further towards the gate due to the crowd. For me that was enough, at least I can see the fireworks from a distance. I had both fun and terrifying moments where we stood when the fireworks begin at 00:00. Somehow, I got caught within exploding fireworks twice. At this point, my heart was already racing and just wanted to leave - the fun ends when safety is no longer guaranteed.

Together with a couple of other folks we ran into, we decided to leave to Alexanderplatz by foot since cars can't even move freely because of the immense crowd of people walking all over the road. At least I had a taste of breaking a bit of rules.

Learning Rust

I had some fun hacking my way through Rust during the week. I had make some plans around August last year to dig more into Production engineering and learning a language suited for systems programming was one of them. I've tried a few things in Go in the past but didn't really follow through with doing more. To be honest, I didn't really come to like Go or wasn't so fascinated with it. I thought maybe I Rust will be different and I might be right. The syntax feels familiar coming from Javascript, Ruby and PHP. I've attempted compiled languages in the past when I started coding and dropped them as I perceive them to have a steeped learning curve. Due to this, I wasn't productive in using them. I quickly bonded the scripting languages like JavaScript and PHP that were more forgiving and with lower barrier of entry. Coming back to learn a language like Rust feels more feasible now that I have more experience. Reading the Rust book, so many terminologies sound so familiar unlike my early days in coding when I tried to learn same terms (then in C++).

I haven't been writing Ruby before joining Shopify and all I know about it now are things I picked up while doing my work. I decided to take the same approach to learning Rust and so I started wsrat - my attempt to port wscat into Rust.

This strategy is to achieve two things in one process - learn rust while being productive with it. If I can pull it off, I can familiarize familiar with many aspects of Rust within a year. The base idea is to build high-level tools using Rust to get familiar with reading and writing Rust. Learning a new language is basically learning to read and write it as much as possible consistently for a while. I won't be bothering myself about some specific Rust terminologies I've been hearing around like the borrow / checker, etc. I just want to focus on being productive using the language.

After a lot of time spent trying to make the compiler happy, I was finally able to achieve a basic functionality: Supply a WebSocket URL via the CLI, the program connects to it, opens a Standard input, user types a message and press enter, message is sent to the WebSocket connection and all message received are printer on the CLI. This is the basic function of wscat . I will be proceeding to porting other functionalities. I plan to take this approach to port a couple of projects so as to explore different parts of Rust.

New year, new books

A couple of my friends gifted me some books during my birthday and they will mostly be the ones I will be reading for the year. I've missed reading engineering books and I'm glad it's working its way back into my schedules. If I'm able to read a few pages of them daily maybe I'll love it.