First weightlifting competition of the year, work trip, and flying solo
Again, I’m opening up these newsletters with an apology. I think these newsletters are turning into monthly-ish newsletters rather than weekly-ish.
Three major highlights of my January and February month I want to include are:
I partook in my first weightlifting competition of the year last weekend,
I had the great privilege of meeting the team members who I work with, and
Had my first solo flight in a plane.
Weightlifting Competition and Taking Software for Granted
I had my first club competition for weightlifting last weekend, and boy it’s fun to lift weights that challenge me, again.
As an aside, here are some slightly annoying questions I get from people who are not in the sport:
Did you win?
How much did you bench?
Is it dangerous?
Do you count calories?
*sigh*
The goal of this competition was to get a bodyweight snatch. I weighed in at 80.1kg. And I snatched 81kg! So mission accomplished if you ask me.
So, how do I deal with the above questions? I used to get so annoyed, it would be hilarious for the other individual. Now, I’m calm and just explain what my goal was and what I achieved. Problem solved and no need to get into a heightened emotional state.
Another challenge I had was setting up the competition software. Competition software? Yes, we use competition software. It’s a way to keep track of athletes, what they have lifted and the order in which they lift.
It’s quite remarkable software. It’s developed and maintained by a single individual, Jean-François Lamy (an IWF International Technical Official Category 1 who resided in Canada).
All this is free for use — here is the repository of the code: https://github.com/jflamy/owlcms4.
The challenge I had was hosting this software as it doesn’t work perfectly out of the box. This is no fault of Lamy, the developer, as the software can run on so many devices — from a single laptop to a cloud offering.
I used docker to create an instance of the competition software. If you are unfamiliar with docker, it allows you to run software inside an isolated environment if you do not have those particular dependencies (Lamy has packed OWLCMS into a docker image, wow!). For example, the software requires Java to compile (of which I do not have on my system). This means it can run on my laptop. On the morning of the competition, I did not anticipate that the database would be stored in the container. This is a problem because if you shut down the container, it is likely the database will be deleted too.
I tried setting up PostgreSQL, but it turns out, that the image writes to a self-stored H2 database, and it requires extra configuration to set up PostgreSQL. I was lifting in an hour, so had no time to jump into the intricacies, so I just set up the H2 database to be a volume — this means it does not get deleted if the container is dropped.
Here is the code: https://github.com/shivan-s/owlcms.
NOTE: I’ve updated the code now so it should connect to a Postgres container that is persisted in a volume (it’s untested).
It’s a docker-compose file, and all that is required is a simple command to run docker-compose up
.
Again, I want to iterate the hard work of Jean-François Lamy. The competition went like a breeze and the people who had to use the software found it simple the use — and I think they enjoyed using it as well. He is pretty much a solo contributor, creating a free product, that is of high quality. And the sad thing is that we take this for granted!
Adelaide Work Trip
A few weeks ago, I had the great privilege of visiting my work colleagues in person for the first time. My company is based in Adelaide and even though the team I work with is remote, a lot of the external teams reside and work in Adelaide.
Before my trip to Adelaide, I had only met two individuals in my company in person — the founder, and another person who got me this wonderful job. Until this trip, I hadn’t met the development team — who I work with and have meetings over online calls nearly every day for work — in person for almost a whole year!
Working remotely has its benefits. I enjoy my small office where I can set up my space how I want to. I can sit and focus on work with minimal distractions. If I get bored, I can always take my laptop and work from a cafe.
The one thing missing is face-to-face interaction with your work colleagues.
This is what my mentor told me about building software — make the effort to meet people who use your software.
And this became the primary focus of this work trip (obviously to also explore a city I had never been to before) to build relationships with the wider team I work with.
From me to them, and them to me — we were just emails, messages and videos on screens. Even with a brief one-week meeting, I am now energised more than ever to work on the software now that I have met the users in person.
A brief update on work: we are rebuilding our new online system from Flask to Sveltekit. This has been a fun adventure as we have been given free rein to rebuild how we would like. This means we gain a better understanding of the original implementation of our code base without having to rework a legacy system.
Building something new can be daunting as well because the scope would be endless (think of aiming an arrow without a target to aim at). Instead, we are grounded by the goal of reaching feature parity of the original system.
Some thought patterns around our rebuilding process:
Creating our components using raw CSS and stripping out tailwindcss. Tailwindcss, in my opinion, is good if you are not too familiar with CSS or if you are a solo developer and don’t want to deal with writing pure CSS to style your web application. For us, since we have more hands writing out code and we are also getting better at writing CSS, it makes better sense to write raw CSS. There are some other benefits too like not having a dependency on tailwindcss that constantly requires updating (we are update-to-date with the CSS implemented with browsers if we are not using some intermediary library for styling).
The priority we want to adopt is first security, then data integrity, then user experience (UX). I love building and styling user interfaces (UI). However, we must build a secure application (i.e. the correct permissions are assigned to the correct users, and whoever has access to the part of the page has the correct level of permission, no more no less. Then, we have to make sure what is put into our database is consistent. A number is a number and not a string — think “1” vs 1. Finally, user experience comes last (but sadly this is what the stakeholders see and care about — it’s also what I enjoy most about building web applications).
Flying Solo
Lastly, a huge accomplishment that I have been working towards is a solo flight. In May last year (2023), I committed to get back into learning how to fly — this time instead of flying microlights like I did back in 2016, I am going for my private pilot’s license.
A milestone to achieve is a solo flight. Building up to this, I have been flying circuits (and I’ve been doing this for almost a year, flying at least once or twice a week except for some breaks due to holidays and weather). A circuit usually involves taking off, performing a downwind run, landing and repeating this process. For me, the part I struggle with is approach and landing.
However on a calm Sunday morning, 11th of February, my instructor deemed me fit enough to navigate a circuit all alone in the Cessna 152.
Thankfully, I survived. I did make some mistakes. I took off without flaps, I flew downwind too high and too fast, and the landing was quite rough.
Even with my instructor’s confidence that I wasn’t going to die doing this, he told me that the solo was a cool milestone, but the craft of flying always requires improvement and refinement.
This is a good reminder to myself. Even if I achieved my goal, it doesn’t mean I am perfect at flying the circuit. As you can tell from my first solo mishaps, we still need to be self-critical and continually improve despite our achievements. The learning never stops.
Again, thanks for reading this. Let me know what you think. I’m always ears for improvements and feedback.
Have a good week, month or whatever period until I email you next.
Stay focused and talk soon,
Shivan
My Favourite Things
Film: WALL-E (2008)
A Pixar classic directed by Andrew Stanton tells the story of a lonely robot performing its programmed task of collecting and organising rubbish on an abandoned littered covered Earth of the future.
An obvious dystopian depiction of the future that results from too much comfort, corruption and the unnecessary need for order.
Film: Swimmers (2022)
Directed by Sally El Hosanna and based on a true story, the film is based on two sisters who are from Syria, Yusra Mardini and Sarah Mardini.
This was an eye-opener for me since I am not well versed in the ongoings of Syria and the lives of the refugees.
Yusra Mardini also wrote a book: Butterfly, which is on the ever-increasing reading list.
Film: Yara (2021)
An Italian film, directed by Marco Tullio Giordana, is based on a true story about a girl whom this movie is named.
It’s an interesting use of DNA analysis coupled with the determination of a single prosecutor, who goes through much criticism for spending a considerable amount of cash and time.
Film: The Post (2017)
Directed by Steven Spielberg, based on the true story of the events surrounding the Vietnam War and at the time President of the United States, Richard Nixon. The Pentagon Papers are leaked by two significant establishments, The New York Times, and the Washington Post.
The film closely follows the staff of the Washington Post, as well as its then-owner Katharine Graham (she wrote a book called Personal History, which talks about her struggles in security owning a newspaper in a male-dominated industry — too added to the reading list).
The film again shows the power of the “governs” in their attempts to censor the press from releasing incriminating documents. A line I like in the film talks about how those in power are required to be held accountable and this is the job of the press. If you take the press away, then the individuals are left unchecked.
Mini-Series: The Railway Men
Directed by Shiv Rawail, this miniseries is based on the 1984 Bhopal disaster, where gas leaked from the Union Carbide pesticide factory and killed 15,000 individuals in the nearby city.
I’m unsure if the events of this specific miniseries are accurately represented, but this story displays the heroic acts of workers of the Indian Railways.
Bhopal: A Prayer for Rain (2014) depicts this disaster in a feature film — added to the watch list.
Book: Feel-Good Productivity (2023) by Ali Abdaal
Recently, I’ve been sharing this book via Instagram stories, summarising it chapter by chapter. This is an excellent book that covers because it talks about not only achieving more but also making what you do matter to you and also making it fun. There is a plethora of content out there about how to get started and how to keep going, but there is nothing that touches on doing things that align with your soul. That is where this book fills in the gap.
I won’t lie, the first sections of the book I’ve heard before because I am a productivity nerd. However, it’s the last section that I will most likely revisit again and again. Abdaal breaks down goals and what we want to do into three categories: short, medium and long. Short are actions we can do today. Medium are the chess moves. And long involves alignment with oneself.
Kindle Highlight
"Nice Guys interpret a woman’s approval as the ultimate validation of their worth. Signs of a woman’s approval can take the form of her desire to have sex, flirtatious behavior, a smile, a touch, or attentiveness. At the other end of the spectrum, if a woman is depressed, in a bad mood, or angry, Nice Guys interpret these things to mean that she is not accepting or approving of them." (Robert Glover, No More Mr. Nice Guy)