Categories
DevOps Learning

Uptime monitoring with uptime kuma

After migrating this blog to self-hosted, I thought about how to monitor its up time and to get some notifications if it ever went down. I’ve been using uptimerobot for the longest time and it has worked well for many years, like at least 6 years. It’s time to self-host this as well.

I chanced upon uptime-kuma which is a popular open source self-hosted monitoring tool. Setting up was extremely easy with docker-compose and I got it up and running in minutes. Set up another simple telegram bot and now I have a pretty robust notification system if any of my sites went down.

Anyone can now see if I’ve been doing a good job at keeping my sites up at https://uptime.lordofgeeks.com.

https://uptime.lordofgeeks.com

And if anything goes down….

when I accidentally removed the DNS entry for uptime

It is so easy to setup that there’s no reason for anyone to not monitor their sites. My favourite part is that it actually looks pretty good!

The docker-compose.yml example that the repo gives is everything you need, though your mileage will certainly vary once you take into account your own networking configurations.

Give it a try and have fun monitoring your own sites!

Categories
Books Learning Thoughts

Self-help books reflection

Thoughts from this year’s reservice, unlike one of the past years where I was focused on being a mobile warrior; this time I was more focused on reading and catching up on all the books that I’ve loaded into my kindle but I haven’t made time for.

Naturally, my army mates saw the kindle got curious about what books I’ve been reading, so I started sharing some of the things I’ve learnt over the past couple of months, and also shamelessly plugging some of the reflection that I’ve written previously.

This was when I got the feedback of: “I’ve always thought that self-help books are useless because the things they say are pretty much common sense, what’s the point of reading it?”. I absolutely agreed with that sentiment because that was exactly how I felt when I started reading these type of books. However, the more I read, the less skeptical I became about this whole idea of self-help.

What I’ve learnt from these self-help books is mainly about building distinctions. What are distinctions? It is the ability to distinguish one thing from another. e.g. how do you distinguish an apple from an orange? Or harder distinctions like fuscia vs hot pink colors. It’s about how we see the world very differently from one another, even if we are looking at exactly the same thing. For example, what I am able to distinguish from looking at a fish is very different from what a sushi chef. It’s because the chef has built distinctions that I just couldn’t see; i.e. the intricate breakdown of the fish parts, whether it’s tasty or not.

Similarly, as long as all the “common sense” remain as concepts or thoughts in my head without actualizing into tangible forms like words, it remains a fleeting idea that I would have a really hard time distinguishing in real life. This is a huge part of why I enjoy writing. Writing has always helped to organize the thoughts in my head, because what makes sense in my headspace is ephemeral. If I’m not able to communicate that to anyone else, it remains as this abstract cloud of energy in my head. Consequently, being able to form words that can translate sensibly in someone else’s head is a whole other challenge on it’s own.

I have found that many of these self-help books have concepts that are extremely similar to one another, twins in some cases, cousins in others, but they are definitely in the same family. In my private reflections, I often find myself referencing similar key points from various books. This drives home the point that when the same concepts are communicated with a different choice of words, it gives the concept a slightly different meaning. I believe that there really is a subtle difference in how the authors understood these concepts from one another. Thus when I attempt to explain it to others, I will probably form a different string of words due my own (and slightly different) understanding of the concept.

Another enlightening moment came when I was explaining the books to my friend. It is the old adage “teaching someone else is the best way to learn“. Yes, the adage makes intuitive sense. Yes, I’ve experienced this phenomenon before. But this is the first time I’ve felt as if I’ve understood it. The examples I’ve written above is a direct result of my attempts to explain the books to my friend. It seems only through the act of actually teaching others over and over that you tangible-lized these concepts into something that only you yourself can access. It’s really one of those “you’ll get it once you do it” type of situations.

And now I have reached the part where I have no idea how to end this post off because I am writing this in a spur of inspiration. So, I’ll summarize with the few points I was trying to make

  1. Give self-help books a open-minded shot even though it might seem like common sense, it’s not that I doubt you are a perfectly well-adjusted human being, but.. where’s the harm in trying to be better?
  2. Communication is hard, you’re essentially trying to use a tangible medium to relay your intangible thoughts
  3. Forming distinctions is how we can differentiate things, so form as many as you can
  4. Teaching others is really the best way to learn
Categories
Learning Thoughts

What have I learnt from cycling 2,000 kilometres

30th Oct 2021, I finally hit my personal milestone of cycling 2,000 kilometers in this year alone. It’s inconceivable that I would be cycling this much after getting my first road bike late last year.

It started out as a way for me to exercise, to lose some weight and to regained some of that lost fitness; but it very quickly evolved into a lifestyle. This evolution is intentional, because I’ve noticed over the years that simply relying on motivation or discipline doesn’t work for me.

  • Motivation: only works from time to time, and once time gets scarce it will be quickly discarded.
  • Disicipline: there’s only so much emotional energy and willpower in me to push through and do things I’m not a fan of.

The consistency of taking the bike out for a ride regularly happened once I’ve embraced the idea that I’m a cyclist, and I find myself looking forward to the next ride. It has done wonders for my mental health. So here’s the list of things that I’ve learnt in the past 2,000 km in no particular order.

  1. getting fresh air is amazing especially with the covid situation
  2. flowers smell great when they bloom
  3. listening to music for hours on end gets boring after awhile
  4. podcasts are a great way to learn on the go
  5. pump your tires: it makes a huge difference
  6. maintenance is important: clean your bike, lube the parts that needs lubing
  7. there’s always someone faster than you: stop competing
  8. there’s always someone not paying attention: so YOU have to pay attention
  9. road bikes really fast compared to normal bikes
  10. don’t start a long journey hungry
  11. it’s important to stretch before and after exercise
  12. iike any long journey, companionship makes a huge difference
  13. singapore is a lot smaller than I’ve realized
  14. sometimes it’s faster to cycle than to take a bus
  15. singapore’s roads are not very friendly for cyclists
  16. tour de france cyclists are out of this world
  17. road bikes are rabbit holes that will drain your wallet dry if you fall into them
  18. exercise is good for your physical and mental health
  19. climbing bridges shouldn’t feel like death

The day after hitting my milestone, I sent my bike in for servicing. No idea if it was required but I just want to get it checked out, to make sure that I can carry on the next 2,000 km safely. It’s also a good couple of days break from cycling while I focus on other tasks!

Note: I’m riding a Van Rysel RCR 900 AF bike for anyone curious.

Note: it took 7 days for Decathlon to service my bike so I’ll go to a third party bike shop for future servicing (7 days is too long)

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.