Categories
Learning Thoughts

10 things I learned from working in MyCareersFuture team

Last Friday was my last day at MyCareersFuture team. I have learned way more things than I can keep count of, but here are some lessons that the team have taught me over the course of my stay.

I was able to come up with this list is because I have failed these items in one way or another and had these flaws unearthed from the depths of my shame; but hey, at least there are 10 things that I’m slowly getting better at. /shrug

  1. Give space for others to speak
    • A silent room doesn’t necessary require you to fill it up
    • People need some time to process speech and ideas
    • Especially for important topics, people don’t want to come across as mindless so it’s normal for the pace to slow down
    • Prompt for response instead of glossing over and moving on
  2. Know your audience, change your approach accordingly
    • e.g. for some vendors, instruct instead of prompting
  3. Don’t be quick to judge others (i.e. Practicing mindful openness)
    • it could be an idea or their behavior
    • 99.99% of people do not work with the intention to harm, if they do something that opposes you, consider what are the factors that pushes them to the action
  4. Be mindfully aware of the Curse of knowledge bias
    • don’t assume everyone has the same context as you, it doesn’t hurt to spare a few seconds to check at the beginning of each discussion
    • this is true even if you are working on the same task together
  5. The 7 elements of a complete request; we often make an incomplete request, which explains why many requests are often not fulfilled to satisfaction
  6. Don’t be afraid to speak up; even if you think you might be wrong
    • raise your concerns if there’s anything that damages the team or product
  7. Don’t be afraid to be wrong; but do your own due diligence
  8. Don’t be afraid of admitting that you’re wrong; i.e. growth vs fixed mindset
  9. Don’t punish others for being wrong; this is where learning happens. (podcast – rethinking your position: "that was wonderful! I was wrong" )
  10. Opening discussions to anyone who is interested instead of selected few
    • helps build feeling of inclusiveness
    • helps people to take ownership of decisions made

It has been a great 15 months learning and growing with the team and I’m glad to have been a part of this amazing journey. 🎉

Categories
Deployment DevOps Docker Learning Productivity

Miniflux: self-hosted RSS reader

In an attempt to stay more updated with the things that are happening online, I’ve recently started following the top stories on Hackernews via the Telegram channel. But I’ve very quickly realized that it is just not part of my routine to check news via telegram.

What about RSS readers? I remember using Google Reader donkey’s years ago before it was abruptly shut down and I never did get back to RSS readers from then on; probably something to do with the trauma of losing all my news feed suddenly without a good alternative.

In my search for something that just “works”, Dickson hooked me up again with another recommendation that does exactly what I ask for: works.

TLDR; it’s a very simple and opinionated RSS reader that has a self-hosted option.

Setup

It was so simple that I got the docker up and running on my Synology NAS within minutes. Here’s the docker-compose.yml file that I used to get up and running. Docs on configurable parameters

Categories
Learning Thoughts

Communication is hard

Recently watched something from CGP Grey on YouTube again that really clicked in my head and just wanted to note it down on my blog in case I forget about it.

From 1:42 to 2:28

If there is anything I’ve learned from thousands of spoken words, it’s that human communication is hard. Way harder than people think. Precisely because people think it’s easy. You just say the words and the other person hear them and bam! Understanding! Alas, no. Words are fuzzy things and you don’t realize how poorly you string them together until you are forced to listen to yourself saying those words. And even if you’re happy with your string of words, you just don’t know how those fuzzy patterns of sound will pattern match in someone else’s brain. Human communication is a dance, and a dance requires partners. We all create content and I think we should all keep that in mind and be much more willing to work with the intended intention of our interlocutors.

CGP Grey

This really clicked in my head because there are so many occasions where I felt that I wasn’t communicating the thoughts in my head across effectively and I search high and low for the right combination of words that I hope would make sense to the others, often following up with “did that make sense to you?”.

But this also made me realize the many other occasions where I thought that I had explained something that seemed obvious to me and simply assumed that the other party understood exactly what I meant.

It also made me aware that many disagreements where the other party said something I found offensive and they said, “that’s not what I meant!”, and I retorted with, “but that’s what you said”; is a counterproductive response which doesn’t help the situation. Being aware of this made me think that I should’ve held my feelings and judgment at the moment and clarify with, “well, what do you mean then?”, and give the benefit of the doubt that the other party simply chose the wrong string of words to express their intention. Alas, it’s not that simple all the time because humans are complicated and will often obfuscate their intentions for various reasons; but simply being aware of this will at least help me navigate the murky waters of communication.

Categories
Development Learning Optimization Productivity Thoughts

Productive 2 weeks in reservist

One of the duties as a Male in Singapore is to serve the national service, and we are called back between 1-3 weeks every year for our “reservist” until we reach MR or “operational ready”.

The past 2 weeks was my turn, and I decided to bring in a cheap $200 android tablet and a keyboard to see how far I could push it. In other words, I want to see what else I could do with it other than just consuming media.

Local VS Code in a browser
ARM64 CPU running Linux packages on an Android tablet

It started with curiosity of finding out how close to Linux I can get Android to be. Termux is an awesome terminal emulator that provides an almost desktop-like experience. I will have a separate write up on how I customized it.

Categories
Learning Productivity Thoughts

Workflow for keeping sane

Ever since I’ve taken on the role as a full-time devops in my new team, the amount of tasks that I have to juggle in a workday has exploded exponentially. I’ve written/complained about it nearly 2 months ago on organizing chaotic information.

It is now time to share what I’ve tried, what worked and what didn’t.

Categories
DevOps Learning Weekly

Weekly: AWS DevOps Certified

At this point I’m not sure whether to call this weekly any more cause I’m just haphazardly writing roughly on a weekly basis but damn it I’m just going to keep this going.

I am pleased to say that I have finally passed my AWS DevOps Engineer – Professional certification! It was quite a lot of hard work, like it was honestly harder than I expected it to be cause most of the questions were situational and very AWS specific in-terms of CICD. Honestly, I took this because I thought it would be easier compared to the Solution Architect Professional. But man I was wrong.

This also means that I would probably be looking to pick up the CSAP cert when I have the time for it, perhaps at the end of the year.

It has been a long time since I’ve studied so hard for something, and it was really helpful not just for the exam, but I realized that there were a lot of tools/services I could’ve used for my current team that we weren’t using yet. I think we are very capable in designing functional services, but there’s still a gap between change management and having full visibility over everything. I’m planning to apply some of the things I’ve learnt in my team, cause it helps to bring us one step closer to having DevOps as culture.

Categories
DevOps Learning Weekly

Weekly: Microsoft Azure

Took an online introductory course (Udemy) on Microsoft Azure AZ-900 because lo-and-behold, my team has chosen the Azure platform for our translation services (will write more about this next time).

As someone who has been 99.99% working on the AWS platform and Linux systems in general, Azure feels pretty foreign because most of the concepts seem to tie into the Windows systems more so than anything else.

  • Access control? Active Directory
  • RBAC? Active Directory
  • Networking? Virtual networks
  • Pricing? Subscriptions
  • Compliance? Almost everything under the roof

The main difference I find between AWS and Azure is that: AWS is a loose collection of services that are “grouped” through networking, Azure is a logical collection of services that are “grouped” by “folders” of resources.

Categories
Learning Thoughts Weekly

Weekly: Building a second brain part 1

This came about because of something I discovered recently about building a second brain. The prospect of it is extremely enticing for me.

Idea is that over time you build a second brain that is like a digital collection of all the knowledge that you’ve gained over your lifetime.

As someone working in the digital field, the amount of information that I go through on a daily basis is pretty huge. I’ve been taking notes for a million and one things, but I realize that I’ve almost never really gone through my notes and make something out of it. Which I felt has been really wasteful because, why would I even write them in the first place if I’m not going to use it? How many % of the things I’ve written can I actually remember in my dumb human brain?

Armed with the motivation to build a digital brain that I can tap into for creating new ideas and products, I embarked on part 1 of the journey.

Finding the right tool

The “original” tool (that I know of) is known as Roam Research, however, it’s a web only tool currently, and it’s a paid service of $15/month. This makes it slightly undesirable as I would prefer if it’s something that I could potentially migrate/export out of the system. I also wish that there exist a free option that I can try out to see if this second brain business is something that I really want.

I checked out 8 different not taking tools to see what works for me and compare across them.

Categories
Deployment DevOps Learning Weekly

Weekly: Migration

The past week has been extremely exciting and nerve-wrecking. My team has finally completed the migration from on-premise to the cloud. It’s the first time that I’ve done anything like this and I’m blessed to have someone senior to lead us through the migration period.

ps: I wrote but forgot to post so this was actually 2-3 weeks ago

I’m a part of the MyCareersFutureSG team, so our users are the working population of Singapore, and we host hundreds of thousands of job postings, so there are definitely some challenge in migrating the data.

It’s the first time that I’ve handled such huge amounts of data when migrating across platform and the validation and verification process is really scary, especially when we couldn’t get the two checksum to match. It’s also the first time that I’ve done multiple Kubernetes cluster base image upgrade rollover. There were multiple occasions where we were scared that the cluster will completely crash but it managed to survive the transition.

Let me sum up the things I’ve learnt over the migration.

  • When faced with large amount of data, divide and conquer. Split data into smaller subsets so that you have enough resource to compute.
  • When rolling nodes, having two separate auto scaling groups will allow you to test the new image before rolling every single node.
  • If you want to tweak the ASG itself, detach all the nodes first so that you will have an “unmanaged” cluster, then no matter what you do to the existing ASG, at least your cluster will still stay up.
  • When your database tells you that the checksum doesn’t match, make sure that when you dump the data, it’s in the right collation, or right encoding format
  • Point your error pages at a static provider like S3, because if you point it at some live resource, there’s a chance that a mis-configuration will show an ugly 503 message. (something that happened briefly for us)
  • Data less than 100GB is somewhat reasonable to migrate over the internet these days
  • Running checksum hash on thousands and thousands files is quite computationally and memory intensive, provision enough resources for it.

Overall, the migration actually went over quite well and we completed ahead of time. Of course, the testing afterwards is where we find bugs that we have never found before because it’s the first time in years that so many eyes are on the system at the same time.

The smoothness is also thanks to the team who has carefully planned the steps required to migrate the data over, as well as setup streaming backups to the new infrastructure so that half of the data is already in place and we just need to verify that the streamed data is bit perfect.

Since it’s been a couple of weeks since this happened, I realize that I am lucky to be blessed with the opportunity to do something like this. Cause I’ve just caught up with my friends and most of the times, their job scopes don’t really allow them to do something that far out of scope. Which… depending on your stage of life it could be viewed as a pro/con. I’m definitely viewing this 4 day migration effort over a public holiday weekend as positive cause it’s something not everyone can experience so early on in their career!

Categories
Learning Thoughts Weekly

Weekly: Google Analytics and building habits

Well, skipping the things that I had to do, one of the fun things that I’ve been exploring is Google Analytics. I’ve heard so much about it, and we actually used it in my current team (just that I haven’t really worked on this portion yet).

Went through the GA For Beginners course and it actually gives me a nice little certificate of completion. So that’s nice. I’m bringing this up because I want to experiment with it, which means that I’ve integrated it with this blog, as well as my landing page. Hopefully I can get some kind of metric at the end of the month. Unless the visitors of my sites are all bots, which would be a little disheartening.