Showing posts with label Clubhouse. Show all posts
Showing posts with label Clubhouse. Show all posts

Tuesday, 1 September 2026

A Baffling Encounter with a Tech Poseur

Social Media has never held all that much attraction for me. At some point, the novelty of interacting with people online turns into the drudgery of interacting with people, period. It was mid 2022 when this random encounter happened on the Clubhouse app, with some dude from Canada.

I introduced myself as a software developer, which seemed to signal to this fella that I needed to be challenged. He asked what I knew about Kubernetes, and when I honestly answered "not a lot", he then openly questioned how I could call myself a software developer and followed up by asking what I knew about SQL.


Again, seeing no reason to even attempt to impress a total stranger online, I said I wouldn't call myself an expert and just used as much as I needed to. This was totally subjective, of course. I know how to perform CRUD operations and database joins, and normalize database structures even if I've long forgotten the formal definition of BCNF. To some people, that would absolutely count as expertise, though I feel obligated to hold myself to higher standards.

In response, he started questioning my dedication to my craft, and this made me suspect that I wasn't speaking to someone who actually worked in tech... because genuine tech workers, even if they lacked humility, would probably have the experience to avoid simplistic (and frankly not terribly clever) snap judgments like these.

Why that was completely stupid

A couple reasons. First of all, Kubernetes isn't what I would call a mainstream tech thing. It's more of a DevOps thing, which still makes it a software tech discipline, just not first on everyone's to-do list.

A DevOps engineer would totally learn it.

A back-end engineer? Almost definitely.

A full-stack developer? Maybe.

A Data Analyst, Front-end engineer or Network Manager? Doubtful.

So acting like a techie is somehow deficient for not knowing much about it, tells me more about the person making that statement, than the one being judged. This would be as absurd as me mocking back-end engineers for not knowing HTML and CSS. Because, really, why would they? What next? You aren't a real musician if you can't play the zither? You're not a real doctor if you can't extract a tooth?

Real doctors can pull teeth!

Now SQL would be a more mainstream tool than Kubernetes. Regardless of which layer of the stack a tech worker is operating on currently, they would almost be guaranteed to have been taught SQL in school. And even then, plenty of tech workers don't deal with SQL professionally. Even I only really use raw SQL when I'm performing joins in database consoles - for actual software development, it's too much of a security risk and the accepted tools abstract away SQL for library functions.

Also, can I just mention that using Kubernetes and SQL together as a flex, is just kind of odd? Not pineapple-on-pizza weird. Maybe spinach-on-pizza weird.

Genuine Questions...

My industry isn't a circus, so why are we attracting these clowns? We were known as nerds in school. Why are people now so anxious to be be associated with us?

Why these clowns?

Oh, well. It's now 2026. With all the tech layoffs going on, perhaps my industry would have lost enough mystique to no longer produce these groupies.

Also, why does every tech poseur I encounter, feel the need to namedrop Kubernetes? Does it even sound that impressive?

I'm dead serious. Every other guy who tried to impress me with his tech cred, has cited Kubernetes. One even took the pains to explain Kubernetes was a upscaler in cloud infrastructure, as if we couldn't just read that up on its Wikipedia page. I'm not even that offended by the posturing. It's more the low-effort posturing, like I was some noob who can't tell when someone's full of hot air.

There are three situations where Kubernetes might be brought up casually as a subject.

One; DevOps engineers dissecting a scaling problem. Two; backend engineers deep in infra discussion. Three; tech performer using tech buzzwords as a big stick to hammer home the illusion of being technically experienced.

As far as I could tell, this did not fall under the first two categories. The irony is, in his eagerness to perform tech experience, he ended up demonstrating something that few actual software engineers would exhibit - ignorance of tech stacks.

So... what is it about Kubernetes specifically? This stumps me.

Finally

Of course, I don't mind being told I'm not much of a tech. I already don't consider myself exceptional. Although, the judgement might have stung more coming from someone who obviously knew his shit. As it was, it left me somewhat bemused. As a generalist, I didn't feel personally disrespected. But someone who actually spent the sweat and sleepless nights mastering Kubernetes and working with it, might feel quite differently.

It's been four years. Why am I even talking about this now? In truth, I wanted to talk about it way back, but more interesting stuff kept coming up. Plus, I am one hell of a procrastinator. It's a slow news week, so there you go.

How's your Java and JavaScript?
T___T

Sunday, 16 August 2026

Web Tutorial: Pill Puzzle (Part 1/4)

During some audio Social Media dialogue on the Clubhouse app, I overheard someone describe a puzzle. Something along the lines of - you've been poisoned and about to die. There are eight pills, and any one could be the cure. One is deadly poison. It's the lightest pill, but only by a fraction. You have a weighing scale you can use twice.

I thought about it, and I wanted to make this game. Except that I would switch things around a bit. One of the pills is the cure and the rest are poison. Now that would make things more deadly. And exciting!

We will be using jQuery for this, because I've come a long way the last ten years and sometimes I can't be arsed to deal with vanilla JavaScript. This is one of those times.

We start off with this HTML, ensuring that the jQuery library is included, and setting font size and background color to black. div tags will be outlined in red while we built the interface.
<!DOCTYPE html>
<html>
  <head>
    <title>Pill Puzzle</title>

    <style>
      body
      {
        font-size: 12px;
        font-family: verdana;
        text-align: center;
        background-color: rgb(0, 0, 0);
        color: rgb(200, 200, 200);
      }

      div {outline: 1px solid red;}
    </style>

    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>

    <script>

    </script>
  </head>

  <body>

  </body>
</html>


We'll divide the interface into three divs and style them accordingly.
<body>
    <div class="topContainer">

    </div>

    <div class="middleContainer">

    </div>

    <div class="bottomContainer">

    </div>

</body>


The top is 400 pixels wide, the middle 600, and the bottom 500. All of them use the margin property to center themselves.
<style>
body
{
    font-size: 12px;
    font-family: verdana;
    text-align: center;
    background-color: rgb(0, 0, 0);
    color: rgb(200, 200, 200);
}

div {outline: 0px solid red;}

.topContainer
{
    width: 400px;
    margin: 0 auto 0 auto;
}

.middleContainer
{
    width: 600px;
    margin: 0 auto 0 auto;
}      

.bottomContainer
{
    width: 500px;
    margin: 0 auto 0 auto;
}

</style>


Part of this exercise is my current flirtation with grid and flexbox, as you'll soon see. I want this div to contain three columns, the middle one widest.
<div class="topContainer">
    <div>

    </div>

    <div>

    </div>

    <div>

    </div>

</div>


And if we do this, we ensure the middle column is the biggest, with a 20 pixel space between all three.
.topContainer
{
    display: grid;
    grid-template-columns: 1fr 2fr 1fr;
    gap: 20px;

    width: 400px;
    margin: 0 auto 0 auto;
}


In the first div, we go to its center div and add three more divs inside. In the first one, we have the scale symbol. The second one is used to display how many times the scale has been used. And the last one contains a button used for weighing.
<div class="topContainer">
  <div>
  
  </div>

  <div>
    <div>&#x2696;</div>
    <div>Times Used: </div>
    <div><button>WEIGH</button></div>

  </div>

  <div>
  
  </div>
</div>


This is just the start.

Now for the sides. Each of these will contain another div, and in turn will contain 9 more divs! These are placeholders for the pills. There are going to be 8 pills, so theoretically, there's a maximum of 8 placeholders on each side. The ninth one is the scale bowl at the bottom!
<div class="topContainer">
  <div>
    <div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
    </div>

  </div>

  <div>
    <div>&#x2696;</div>
    <div>Times Used: </div>
    <div><button>WEIGH</button></div>
  </div>

  <div>
    <div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
    </div>

  </div>
</div>


To really hammer home the visuals, we're going to do some styling here. The left and right divs will be styled using pnlWeighPillsContainer. The first immediate div within will be styled using pnlWeighPills. The middle div is styled using scaleContainer, and that first div within is styled using pnlScale.
<div class="topContainer">
  <div class="pnlWeighPillsContainer">
    <div class="pnlWeighPills">
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
    </div>
  </div>

  <div class="scaleContainer">
    <div class="pnlScale">&#x2696;</div>
    <div>Times Used: </div>
    <div><button>WEIGH</button></div>
  </div>

  <div class="pnlWeighPillsContainer">
    <div class="pnlWeighPills">
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
    </div>
  </div>
</div>


Now for the CSS. scaleContainer is a grid container that divides its content into three rows, with the top row getting the most space. pnlScale neccessitates that because we've set the font size to a large one. pnlWeighPillsContainer is a flexbox container where the alignment is vertical and by default, content is set to the middle. However, its immediate child, pnlWeightPills, is a grid with nine rows, each having equal billing.
body
{
  font-size: 12px;
  font-family: verdana;
  text-align: center;
  background-color: rgb(0, 0, 0);
  color: rgb(200, 200, 200);
}

div {outline: 1px solid red;}

.topContainer
{
  display: grid;
  grid-template-columns: 1fr 2fr 1fr;
  gap: 20px;
  width: 400px;
  margin: 0 auto 0 auto;
}

.middleContainer
{
  width: 600px;
  margin: 0 auto 0 auto;
}      

.bottomContainer
{
  width: 500px;
  margin: 0 auto 0 auto;
}  

.scaleContainer
{
  display: grid;
  grid-template-rows: 8fr 1fr 1fr;
  gap: 0px;
}

.pnlScale
{
  font-size: 12em;
}

.pnlWeighPillsContainer
{
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.pnlWeighPills
{
  display: grid;
  grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
  gap: 1px;
}


Here you see the scale! The left and right divs have a mess of divs bunched right in the middle. We'll work on that next.

In the last div of the divs inside each div styled using pnlWeighPills, insert a div with the CSS class bowl.
<div class="topContainer">
  <div class="pnlWeighPillsContainer">
    <div class="pnlWeighPills">
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div><div class="bowl"></div></div>
    </div>
  </div>

  <div class="scaleContainer">
    <div class="pnlScale">&#x2696;</div>
    <div>Times Used: </div>
    <div><button>WEIGH</button></div>
  </div>

  <div class="pnlWeighPillsContainer">
    <div class="pnlWeighPills">
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div><div class="bowl"></div></div>
    </div>
  </div>
</div>


This is bowl. It's a light grey div that has rounded corners at the bottom, with a fixed width and height.
.pnlWeighPills
{
  display: grid;
  grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
  gap: 1px;
}  

.bowl
{
  width: 60px;
  height: 20px;
  background-color: rgb(200, 200, 200);
  border-top: none;
  border-radius: 0 0 10px 10px;
  margin: 0 auto 0 auto;
}


And now that one of the divs in the grid contains content that has fixed height and width, the rest of the divs follow suit!

We can leave the top portion alone for now. Let's work on the middle portion. We first have one div with the id pillsContainer. It in turn contains 8 div tags, one for each pill.
<div class="middleContainer">
  <div id="pillsContainer">
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
  </div>

</div>


After that, have two more divs on new lines - ids playerFace and playerMessage.
<div class="middleContainer">
  <div id="pillsContainer">
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
  </div>
  <br />
  <div id="playerFace"></div>
  <br />
  <div id="playerMessage"></div>

</div>


pillsContainer is another grid display, with 8 columns all with equal weight. For playerFace and playerMessage, I specified font size. For playerFace, the cursor property has been set to pointer because this is clickable.
.pnlScale
{
  font-size: 12em;
}

#pillsContainer
{
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
  gap: 5px;
  height: 100px;
}

#playerFace
{
  font-size: 7em;
  cursor: pointer;
}

#playerMessage
{
  font-size: 3em;
}


.pnlWeighPillsContainer
{
  display: flex;
  flex-direction: column;
  justify-content: center;
}


Speaking of clickable, let's also get this out of the way. All the div tags inside pillsContainer should be styled using the pillsSlot CSS class.
<div id="pillsContainer">
  <div class="pillSlot"></div>
  <div class="pillSlot"></div>
  <div class="pillSlot"></div>
  <div class="pillSlot"></div>
  <div class="pillSlot"></div>
  <div class="pillSlot"></div>
  <div class="pillSlot"></div>
  <div class="pillSlot"></div>
</div>


Same for these inside the divs styled using the pnlWeighPills CSS class. Just the first eight, not the last one.
<div class="pnlWeighPills">
  <div class="pillSlot"></div>
  <div class="pillSlot"></div>
  <div class="pillSlot"></div>
  <div class="pillSlot"></div>
  <div class="pillSlot"></div>
  <div class="pillSlot"></div>
  <div class="pillSlot"></div>
  <div class="pillSlot"></div>
  <div><div class="bowl"></div></div>
</div>


In the CSS, just set pillSlot to be clickable.
#pillsContainer div.selected
{
  color: rgb(255, 0, 0);
}

.pillSlot
{
  cursor: pointer;
}


#playerFace
{
  font-size: 7em;
  cursor: pointer;
}


In any case, your middle portion should be taking shape now.


Now for the bottom part! This part is the easiest. You add some instructions, and then add a button that the user clicks when they're ready to play.
<div class="bottomContainer">
  <p>You are slowly dying. There are eight pills. One of them is the cure. The rest are lethal poison and will kill you instantly. They are all identical in size and shape, and color. However, the cure is slightly lighter than the rest. You may use the scale exactly two times before it breaks.</p>

  <p>Once you have decided which pill to take, select the pill and click on the face at the bottom. Good luck!</p>

  <button>START</button>

</div>


And here we go, that's basically the UI. There's more to it, of course, but we have the skeleton upon which the rest can be filled in.


Next

Populating with pills.

Monday, 27 April 2026

JavaScript's non-existent relationship to Java

Despite the fact that I can no longer, by any stretch of the imagination, be referred to as a "beginner" where my career is concerned, I sometimes do like to read beginner books on tech. It's oddly soothing. There's also plenty I can learn in terms of how to communicate tech concepts and ideas, from the authors of such books, if not the actual tech itself.

And this is one such book that I picked up from the neighborhood library recently - How to be a Web Developer, by Radu Nicoara.

This book.

Now, this isn't one of my Reference Reviews - I didn't finish reading the book and this would be dishonest. Radu Nicorara probably knows his way around the building blocks of the World Wide Web and has, again, probably done a whole lot more than I have. After all, he published a book. And I give him all the credit in the world for even attempting it.

However...

...once I got to Page 60 (or thereabouts), I encountered a statement that was so egregious that it took me out of reading the book entirely. Not that I ever found the book all that engaging in the first place.

This passage shocked me.



JavaScript is a scripting language (meaning the code is not precompiled) that's derived from the Java programming language, hence the name.
I was in complete disbelief when I saw this. Just to be sure, I sent a photograph of the page to Meta AI, and Meta AI being the nice little bot it was, it described the passage as "a bit misleading".

A bit misleading?! Try "completely false".

The error

For anyone who might be tempted to repeat this, JavaScript is not derived from Java. Aside from the fact that they may both be described as programming languages (coding pedants may insist that in JavaScript's case, it's a loose description) they don't actually have anything to do with each other.

JavaScript began life as a loosely-typed client-side language meant for browsers to interpret. Java was (and still is) a strongly-typed compiled programming language. The names are similar, and the syntaxes are similar. But that's where the similarities end, and even these similarities can't be used as evidence for JavaScript's relationship to Java.

In fact, JavaScript's original name was Mocha. Yes, as in the coffee. It was changed to "JavaScript" as some kind of marketing ploy to mislead people into thinking it was a child of Java. Well, guess it worked!

Fancy a cuppa Mocha, luv?

This reminds me of an encounter on the Clubhouse app where I heard some American woman make the ridiculous claim that in the Chinese language, "the words for danger and opportunity are the same".  John F Kennedy, the 35th President of the USA, was the first to say this back in 1960, and he was wrong. In Chinese, danger is "危机" and opportunity is "机会". Both words contain the word "机", but "机" is also a suffix commonly used to describe machines such as "飞机" (flying machine, a.k.a aeroplane), "手机" (hand machine, a.k.a mobile phone) and "耳机" (ear machine, a.k.a earphones). At the risk of stating the painfully obvious - aeroplanes, mobile phones and earphones have fuck-all to do with danger or opportunity, just as JavaScript has no relation to Java.

Which tells us a couple things - just because two words sound the same or contain subsets of each other, does not make the things they are describing, related. Thus, just because Java and JavaScript both contain the words "Java", it doesn't follow that they're related in any way. The second thing this tells us is, if you don't speak a language, maybe keep the witty quotes to a minimum unless looking stupid brings you deep emotional satisfaction.

As for syntax, both Java and JavaScript's syntax is based on C. Curly brackets, semi-colons, function declarations and so on. But this similarity is not confined to Java and JavaScript. Several other languages such as PHP and C# also have great syntax similarities with Java. In terms of similarity, C# is even closer to Java than JavaScript is.

All in all...

It's not my intention to jump on Nicoara for this error. Whomever his editor was, shares the blame for this. And this glaring factual error aside, what little I read of his book seemed sensible. Therefore, I didn't contact Nicoara and inform him of this boo-boo. What good would it do? It's not like one can un-publish this book.

Besides, I'm not exactly perfect. Early in my blogging days, I probably made my fair share of factual errors. Though, in all fairness, it's not like I'm profiting off my blog, or asking people to pay for it.

All that aside, I used this as a teachable moment. Even if that little piece of programming history I taught was dryer than a nun's coochie.

Java nice day!
T___T

Saturday, 1 November 2025

The year I finally achieved that JLPT certification

Some say "better late than never". I got a huge dose of that this year as I obtained my Japanese Language Proficiency Test (JLPT) N5 Certificate.

Why was this overdue? Well, you see, because I actually began on this journey at the tender age of 15. I was a Polytechnic student at the time, and this was a supplementary module. At first, things went well. Having received education in Chinese, learning the basic sounds of Japanese was a breeze. Learning the Hiragana and Katakana writing systems wasn't much of a stretch as well; in fact it was significantly easier than reading and writing Chinese characters. Until we got to Kanji, which essentially was Chinese characters.

Ugh, more Chinese.

At which point I lost all interest.

Also, at this time, I had begun an obsession with writing code, and building stuff. Japanese was a pretty language, but it just didn't fit into my world the same way C++, SQL or even QBasic, did.

And the rest, as they say, is history. Even after graduation, not only did I neglect whatever little Japanese I had learned, the next few decades were a disastrous collection of bad career choices, even worse lifestyle choices, and sobering life lessons.

COVID-19 and Clubhouse

Fast-forward to 2021. COVID-19 had the world in its loathsome grip and I, like many others, sought human interaction online. That was when I discovered the Clubhouse app. Through it, I encountered numerous communities, not all of which spoke English, Mandarin, or even Cantonese.

A few of these were Japanese speakers. And some were even offering Japanese lessons. I dove right in, relearning all the basics I had forgotten. Many times, I would simply listen in, try to make sense of the conversation, and Google words that came up. Then I started engaging, hesitantly, in the conversations. I even participated in Mandarin-Japanese exchanges!

Little cultural exchanges.

It was slow going. I wrote an app to facilitate relearning Hiragana and Katakana. I practiced writing every day, religiously. But there was this feeling that I could do more.

That was when someone suggested that I take the JLPT. And from that day forth, I took things up a notch.

Training in earnest

My next step was to install Duolingo on my phone. For the next few years, I faithfully partook of the exercises daily. At the same time, I went onto YouTube to search for JLPT Listening exercises. I didn't really have a sense of how far I had progressed; I just knew I needed to keep going. I've never been brilliant; but what I am good at is being consistent.

One year later, I downloaded the Migii app, and paid the subscription fees for accessing sample JLPT exam questions. With Duolingo, the returns were diminishing. I needed to train a different set of linguistic muscles - the kind used for passing the exam. Duolingo had brought me to a certain point where I could read the Japanese exam questions without too much difficulty... now I had to practice answering them.

The next milestone was hit another year later when, while watching a Japanese TV show, with English subtitles, I noticed something odd. Almost constantly, the subtitles would read "It's OK". Even though "It's OK" was a perfectly reasonable thing to say in the context of the current point of the story, it was a pretty poor translation.

Phrase Literal Meaning English Translation
daijobu It's OK. "It's OK."
dou itashimashite You're welcome. "It's OK."
shinpai suna Don't worry. "It's OK."
anshin shite Relax. "It's OK."
ki ni shinai de Pay it no mind. "It's OK."


At this point, I found myself thinking - wow, these translators are so goddamn lazy! They just use "It's OK" for everything!

And my next thought was - hey, if I know this much, shouldn't I be taking the JLPT already?!

The JLPT Test Voucher

That was when I registered for the JLPT on the Japanese Cultural Society of Singapore website. and paid a hundred Singapore dollars for the privilege. A month later, the JLPT test voucher arrived in the mail. The train was in motion; there was no going back.

Meanwhile, I continued training religiously. With Listening practice, especially. Online chatter had it that the recordings would be played only once, so I trained myself similarly, by not rewinding and replaying.

The JLPT N5 Exam

It was July when the day arrived. I head for the Singapore Management Institute where the exam was held, and stood in line with what looked like mostly Burmese folks. Interesting.

The invigilator who took charge of the exam room I had been assigned to, seemed to be Japanese going by the way she spoke English.

Shading answers with a pencil.

The proceedings were charmingly old-school. We were given question and answer sheets. It was all multiple-choice, and the correct answer had to be shaded with a pencil for feeding into a scanning machine. Despite my numerous certificates, I hadn't done this since... 2015? This was because my last couple certifications were earned from doing the coursework and presentations, rather than standardized tests.

The toughest moment in the exam came from the Choukai, which was the Listening portion. Despite my best efforts, my concentration slipped at various points. It was with considerable relief that I handed in my question and answer sheets, and headed off.

In August, I logged on to the JLPT portal to check my results. I had passed, and my results were more than decent. I actually scored higher on Listening than other sections!

The real value of all this

Last September, I got my actual physical certification through the mail. It was a foregone conclusion by that time, but I still felt that little thrill of pride. Job well done, bro, I told my reflection. Not such a big deal in the larger picture, but we've got to celebrate our wins even if they're small. Especially if said win took thirty-three friggin' years to achieve.

My results.

The JLPT N5 Certification isn't going to change my life. As far as professional cred goes, it's barely a blip. Achieving the JLPT N5 Certification probably puts me on par with the average Japanese toddler where the language is concerned. As for the value of understanding multiple languages? That's not much of a flex. This is Southeast Asia; just about everyone and their dog is multilingual.

No; at my age, the act of learning is arguably more important than what's being learned. It helps stave off dementia.

The real value is knowing and affirming, that with sufficient motivation and putting in the time and effort, I can learn pretty much whatever I choose to learn. And that is powerful stuff. In an age where things are constantly and rapidly evolving, the ability to learn shit has become vital - not just in the tech industry, but for life itself.

In hindsight, I should have realized this. How did I learn ASP? PHP? Ruby? VueJS? D3? All by picking up a book, watching videos, visiting websites, and constant practice. Most of the time, it really is that simple. The methods vary, but at the end of the day, it's about the willingness to put in the hours.

The linguistic journey continues!

I do want to see if I can achieve the next rung, the JLPT N4 Certification. Again, I'm not really sure why. Just for the hell of it, I guess. It's not like I plan to visit Japan. It's not like I realistically have anything to prove to anyone.

On the other hand, Korean does seem pretty interesting.

Decisions, decisions...

Ganbarimashoo!
T___T

Saturday, 7 June 2025

The Dark Years of COVID-19: A Software Developer's Perspective (Part 2/3)

Singapore, indeed the entire world, continued grappling with COVID-19 well into the latter half of 2020. By that point, there was a pervasive sense of resignation - that this was to be our new normal. Up to this point, cases in Singapore had remained at a manageable number. The lockdowns had lasted for a while - and mark this well, even though lockdowns were observed in various ways internationally, they were still being observed in some form or other.

A election during
COVID-19.

This was also the year where Singapore held her General Elections during the pandemic. I remember being particularly infuriated by politicians taking the opportunity to grandstand and politicize despite the fact that lives and livelihoods were at stake. That level of selfishness boggled the mind.

Singapore was being lauded by the international community for the way she had handled the pandemic thus far. But I took little pride in it. This was a highly fluid situation, and all that could be flipped on its head in the course of twenty-four hours.

All this was not sustainable. Our economy, reliant on remaining open and accessible to the rest of the world, suffered. Jobs were lost. Hiring was slow except for certain sectors, such as healthcare (big surprise there), tech and logistics.

I, too, lost my job in the month of September. By then, I had known of so many people who had suffered a similar fate, that I thought nothing of it. Even when advised by various people to apply for grants meted out to the unemployed during the pandemic, I consistently declined. Compared to people who had been jobless for months, my own situation did not seem so dire. I would much prefer Government money to go towards more deserving cases. For starters, I actually had money in the bank from years of not spending much. Further, I was from the tech industry. It was booming. With the advent of remote work, it seemed like tech firms could not get enough of developers. I predicted that by the time I got off my ass to fill out the form, I would have landed another job.

And I was proven right - within two weeks of losing my job, I was hired. This was less a testament to my value as an employee, then to the nature of my industry.

2021: Optimistically easing up.

Singapore plodded on, and mandated vaccination jabs while slowly opening up. This caused quite a bit of consternation among the general populace, though older folks were generally happy to trust the Government's direction on this. I had my own reasons for being willing to vaccinate, which I'll get into later.

Professionally, I was working from home the majority of the time. I had settled down into my work and even managed to juggle school on top of it. I was living with the restrictions just fine because they didn't interfere with my lifestyle... much.

But there was one problem - it was getting lonely. Not being much of an extrovert, social distancing was actually a good thing as far as I was concerned. Until it wasn't. As the months wore on, I began to discover that anti-social as I was, even I had my limits.

Isolation.

For that, there was the Clubhouse app. It was novel at the time; a way to connect with random strangers in the rest of the world, get updates and take solace in knowing we weren't alone in our suffering. Of course, like all Social Media, it went to shit pretty quickly because when human beings are involved, toxic behaviors are always par for the course.

That said, Clubhouse did a lot for me. I made friends and eventually visited them. Some of them came over to Singapore to visit, in turn. Listening to real-time conversations was also a good way to familiarize myself with foreign languages. It got me comfortable with public speaking, at the very least. I spent countless nights leaving it on in the background throughout. Sometimes there would be endless heat - shouting matches, drama, that kind of thing - and I would literally sleep through it all, like a baby. In the absence of my wife, this felt like I was in a room full of people.

And then the Missus came back from China, where she had been stuck for the past year. This coincided with the Singapore Government's vaccine mandate, and some of the rules were confusing where foreigners were concerned. I don't really have a problem with the vaccine mandates, but communication was often unclear, contradictory and generally inadequate. Really not what I've come to expect from the civil sector, but these were extraordinary times, I guess.

She caught COVID-19 a few months later, and to my everlasting perplexity, I didn't catch so much as a sniffle despite lying beside her every night for a week. I wasn't dumb enough to believe that I had any sort of superhuman immunity or something; this was just one of those inexplicable things.

2022: Catching COVID-19

I did catch the virus about a year later. My wife had caught it a second time, and this time my luck ran out. It should have been the Omicron variant by then. COVID-19, at this time, was nowhere as deadly as it had been when it first surfaced, and we survived it with nothing more severe than a running nose.

Was it because we were vaccinated by then? That may have played a part, sure.

Taking the jab.

Many people were quick to point out that vaccines aren't a hundred percent effective because people can still catch the disease after being vaccinated. Well of course vaccines aren't a hundred percent effective - nothing ever is. Vaccines weren't meant to prevent people from catching the coronavirus - they were meant to help train the body to fight it, and lower the chances of dying painfully from it.

I could say a lot more, but again, perhaps that's best left for later.

More Thoughts

It may be an oversimplification to say that Singapore emerged relatively unscathed due to good governance. I give our Government their due, certainly. It could not have been easy running a country during such trying times.

Plenty of people worried about dying. Some worried about not dying (at least, not right away) and instead suffering till their last rasping breath. I pretty much accepted this was out of my (frequently-washed) hands and focused on what I could control.

Job losses and the suffering economy were next on the list of the average Singaporean's worries. The Food and Beverage industry seemed to be among the hardest hit (though Food Delivery boomed), as restaurants started encountering Government-mandated limits on restaurant capacity. Many closed down. I made it a point to buy from hawkers as often as I could. It gave me an excuse to go out, and at the same time hopefully contribute to their dwindling coffers. 

Socially, life was a mixed bag. I was mostly hanging out with my tenants but nobody else. My WhatsApp chats were abuzz with activity and plenty of quarrels erupted. With those who were spreading unhelpful vibes and bad advice, I was particularly savage. Normally I'm a live-and-let-live kind of guy, but I needed an outlet and idiots were an irresistable target.

Masks were
controversial.

You see, there were plenty of overnight experts claiming that Government directives such as mask mandates, safe distancing and vaccinations, did not work because despite their existence, people were still catching the virus. The sheer stupidity of statements like these were mind-boggling. Policies aren't like software - they don't work magically on the flip of a switch and results are not a hundred percent guaranteed. Even in the field of medicine, where there are outliers to everything, nothing is absolute. Expecting the number of cases to drop to zero overnight just because the majority of people started wearing masks, was idiocy on a mind-boggling scale.

Sure, the science may not have been entirely correct. But that's always been the nature of science - the knowledge is never a hundred percent. How do people complete a basic education and yet fail to understand this? Bizarre.
 

Next

To today.

Saturday, 23 November 2024

A Software Developer's Vacation in Malacca

Somewhere in the past month, I was flirting with the idea of taking a trip to Malacca City in Malacca, Malaysia. The wife was away, and I basically had free reign. One of my friends from Kuala Lumpur that I'd met on the Clubhouse app, had a counter-suggestion - we could meet up in Kuala Lumpur and take a day trip to Melaka!

Didn't sound too bad an idea, to be honest. I could use the company. And a local guide could help point out all the beautiful places I might miss.


My company was entering the busiest time of the entire year - the December festive period - and if I wanted to clear any leave at all, it was going to be then. Fingers crossed, my colleagues wouldn't bother me much during my trip. Being the head of a one-man Infocomm department comes with inherent liability, and these were the risks I had to manage.

The trip begins!

I arrived in Kuala Lumpur to spend the night in a hotel room, then my buddy came over in the morning in a charmingly beat-up Toyota the likes of I haven't seen since childhood. We had a simple and leisurely breakfast, then headed off. The morning traffic was horrendous until we hit the highway, and then we were looking at miles of open road as the palm trees whizzed by.



When we finally arrived in Malacca after a couple hours, I was greeted by the sight of what looked like a huge inflatable dragon coiling around the main archway. It was a weird cross between cheesy and oddly majestic. It did occur to me that this area looked strikingly Chinese.

The day was hot, but due to a sudden shower an hour before, the ground was wet with puddles. Not a great combination.

Jonker Street 

Now this was one part that reminded me of Armenian Street in Penang's Georgetown. Tourists milling around was a dead giveaway, but also the little quaint cafes here and there that looked too "touristy" to be authentic. The numerous shops selling all manner of Malaysia-themed knick-knacks was also a huge callback to my time in Penang.


I succumbed to the temptation and bought a refrigerator magnet. And only because it looked hand-made.


Somewhere along the street was this cheesy monument of some seriously ripped dude with this shit-eating grin. To this day, I'm not sure if that bust was built in earnest or mockery. This guy was apparently a bodybuilder in addition to being a politician.


I had the chance to look out along the Malacca River. Nice. Reminded me of Singapore River, except without the glitzed-up banks.

Food 

We had a break at one of the numerous places advertising Vietnam Coffee. Let me just say, for the record, that Vietnam Coffee just isn't Vietnam Coffee if you're not drinking it while squatting on the roadside on a tiny stool in Saigon as motorcycle traffic roars by you... but on a hot day like this, it worked in a pinch.


Later on, we had chicken rice in one of the numerous shops. The specialty appeared to be balls rolled from chicken rice... but honestly I ate it just to be able to say I've done it before. What was more interesting were the bean sprouts - they were large, fat and crunchy. I was told that they were a special breed known as "Ipoh" sprouts. Nice!

Museum and Art Gallery 

Lunch was done and we headed off across the street to this red building, called the Dutch Square. It used to be a fort and was now home to a museum and art gallery, among other things. For lack of something more obvious to do, the museum was first.


Now, honestly, there've been many people who told me to "read a History book" during online arguments, as though that qualified as the final word in any debate. History just happens to be one of my least favorite subjects. What I was about to see, however, was a virtual smorgasbord of violence.



You see, Malacca used to be an object of contention between Malaysians, the Dutch and the Portugese. Apparently the Malacca Straits were very important territory. We went through floor after floor of paintings, text and dioramas depicting acts of bloody battle. Stabbings, shootings, blood and agony, it was all there. Not for the faint of heart, that's for sure.

I saw weapons on display too - sabers and guns, with bullets the size of the chicken rice balls I'd eaten earlier. Military uniforms. Model ships. And my absolute favorite... miniature replicas of Malacca back in the day, depicting how it looked like at different periods in history. I could have stared at this shit for hours.



This was capped off by the sight of this badass statue of Admiral Cheng Ho at the rooftop.



The next part of this visual tour was the art gallery just next door. And, to be honest, there was quite a bit of art on display that I just didn't get. Some of it was historical, and those were actually the easiest to look at. The more abstract pieces? Call me a Philistine, but not so much.

The last part 

After leaving Jonker, we made a side detour. It was a white building by the seaside called the Encore Melaka, and it was an absolutely beautiful theater. Neither of us really felt like shelling out a hundred bucks for about three hours of their entertainment, so we just hung around outside.


And, in my case, took pictures like some tourist. Which I was.


By the sea, this sign proudly proclaimed the area to be The Maritime Silke Road, and even provided coordinates. Shit, this place was all kinds of fancy.

The curse struck again... 

Almost every day, I'd review my messages and see that there was stuff to attend to. Some of it I could defer till I got back; the others I had to attend to by the next day.

Honestly, it was annoying AF. It was like, the effort I'd put into an automatic vacation message and informing my co-workers, just didn't exist.


But this is what happens when you're a one-man Infocomm department - there are no reasonable expectations of a complete day off. Something goes wrong, and even if it could be looked into by someone else, the first instinctual response is to contact me by WhatsApp or send me a MS Teams message.

I'm not blameless in this regard though - I get such a summons and even though I'm supposed to be on vacation, I can't help myself. I just have to respond. This is something I need to seriously work on. As to how, for the moment, I have no clue.

What a vacation!

Short, but sweet. For real, though, this struck me as a good place to chill out for an entire afternoon if I felt like it. Maybe even for a few afternoons. And as of last week (or earlier) there are direct flights from Singapore to Malacca.

Speaking of which, I actually experienced the biometric scan when returning to Singapore's Changi Airport, days after it was reported in the local paper. Pretty cool. Traveling in and out of Singapore as a citizen wasn't a huge hassle to begin with, but this is going to make things even easier.

Stay tuned for more vacation updates!

Your travelling techie,
T___T

Friday, 3 May 2024

A Software Developer's Vacation in Penang

His Teochewness goes on vacation again!

This time, instead of the bustling Malaysian city of Kuala Lumpur, I visited some Clubhouse friends in the little city of George Town, Penang. How did this come to pass?

Street mural
in George Town.

Well, it all began when my sister-in-law came over to stay for the month of April. She shared the bed with my wife, while I crashed on the couch. On many levels, this was inconvenient. Even if you take away the fact that it was one of the hottest spells in Singapore weather, I work from home the majority of the time, and my work area just happens to be right beside the couch - which results in removing that one last (albeit artificial) barrier between personal and work life.

That's when I figured - hey, if I'm going to be sleeping on a couch, I might as well be sleeping in a hotel room. In another country. That's when I made the arrangements, bought the ticket and booked the hotel room. It happened to be a pretty busy time at work, but my boss was OK with it as long as I brought my MacBook along and remained contactable.

I would be going to George Town, a historic site in Penang. I envisioned myself taking long walks in the day and venturing into multiple museums and art galleries. Mrs TeochewThunder would probably hate this shit, but whatevs, she wasn't coming along. I could concentrate entirely on what I found fun, for a change.

April 14th, 2024

The day started off pretty well. I made it to Changi Airport early, had a nice breakfast and even found time to write some code I'd been tinkering with while waiting for my flight. The weather was blazing like Singapore's, just the way I like it.

I arrived at Penang International Airport ahead of schedule and soon after, I was picked up by a sweaty but dazzling young lady (she was pretty hot, in all senses of the word) in her car, and we greeted each other like friends who had only known each other online for the past couple years.

First meal at a
roadside coffeeshop.


Astonishingly fancy coffee.

After checking in to the run-down dodgy-looking hotel I'd picked out for my stay (the less said about this, the better), we headed off for some street food, where I got my mind blown by the Ice Yuen Yeung (coffee and tea, mixed) that turned out to be an ultra-fancy deconstruction of what I expected, served with a spiral glass stirrer. Holy shit.

Trust me, the other
stuff was weirder.

She then took me to George Town's Hin Bus Depot to attend what had to be the most macabre art exhibition I ever laid eyes on. The paintings looked like entries in some serial killer's fantasy. 

Bizarre.

At the same venue was a sculpture exhibition which was a nightmarish hellscape of squished body parts rendered in clay. Was I disturbed? That's an understatement. Was I fascinated? Also an understatement.

Something relatively normal.

We capped this off by attending a third exhibition which looked somewhat normal, and also easier on the eyes.

Nyonya dinner.

Dinner was at a Nyonya Restaurant where her mother joined us and we absolutely demolished a whole bunch of stuff. Her mom was excellent company, by the way. I took great pleasure in showing off the pictures of my papier-mache tree to her.

The night went well. The hotel itself wasn't much to shout about, but for the first time in weeks, I got to sleep in a proper bed!

April 15th, 2024

Got up bright and early. George Town exploration awaited! The sun was blazing overhead like it had something against humanity. No worse than the Singapore heat I'd left behind yesterday. In other words, business as usual for me. It was easy to tell that I was a tourist, despite my skin color fitting right in with the demographic - I was grinning like an idiot in the oppressive heat and obviously happy to be here.

Interior was
great, though.

I got some  breakfast at this place called English Hainan. Name sounded promising, but the Full English Breakfast I got was a bit of a disappointment. After breakfast, I wandered around, looking at various street art and the architecture of the buildings. It was like a replica of Singapore's Chinatown and Bugis Street, expanded by ten times to an entire district. Shophouses and temples abounded. I was getting a sense of how my grandparents lived in Singapore.

Food museum.

Pretty soon, I came upon this building, and decided that this was too good to pass up. A Food Museum! I've always loved miniature art, and this museum had it in spades. The amount of detail was incredible.

Great detail.


This was so interesting.

I could have spent another hour in here, but it was the first full day in George Town and there was plenty more to see. Further down the street was another tourist attraction advertised on Google Maps - Fort Cornwallis.

Gunpowder chamber.

Boom!

This was a gigantic bore, to be honest. It was nice and quiet, but this only served to highlight how few people seemed to really want to spend their time here.

Should've saved
my money.

A quick lunch later, I checked out an exhibition near the hotel that promised "Trick Art". This turned out to be a waste of time, possibly a bigger one than Fort Cornwallis, which is no mean feat. You've been warned.

Ssssss!

There was a pretty cool painting of a snake in a tunnel, but it was cool only compared to the rest of the uninspiring and insipid stuff in there. If anyone from the Trick Art Museum is reading this and feels triggered, tough titty. Do better.

That's a spread.

Dinner was great, though. I bought my friend and her mom a nice quiet seafood dinner in a pretty retro restaurant and had the place almost entirely to ourselves.

More food!

After that, we adjourned to another roadside joint where my friend introduced me to Penang Hokkien Mee and their local Otak-Otak. Mmmm!

Checking my email and work notifications that night, thankfully nothing seemed amiss. Would have been nicer if I didn't need to check, but oh well.

April 16th, 2024

More walking abounded! I got up bright and early, and had breakfast at one of those little roadside food courts.

Street art.

I especially liked
this one.

Then I made my way to Armenian Street, where a lot of the street art and art installations were congregated. Here, footfall was noticeably heavier as I was sharing the space with tourists and trishaw riders.

Why did I ever
go in there?!

One good exhibit.

Somewhere along the way, against my better judgement, I paid for a ticket for an entry into the Upside Down Museum. Much like the Trick Art Museum, this turned out to be pretty much a waste of time, with only a couple exhibits worth looking at. No more gimmick museums!

TeochewThunder
waz here.

I like to think I was a good sport about it, though. I paid for coffee and a postcard, and added my (fake) complimentary review to all the other (hopefully) genuine reviews stuck on their wall. I even stuck mine upside down! (hur hur) Might as well spread the love. Why should I be the only unfortunate soul to get suckered into parting with his money?

What followed was a slow saunter westwards to meet a couple Clubhouse friends at a cafe. As it turned out, I had severely overestimated the distance on Google Maps, and got there a full hour earlier than expected.

Much better.

It was lunch-time, so I stopped at White Chapel Cafe, and ordered their Full English Breakfast... for lunch. Decadent, eh?

A couple hours later, I met my friends at the other cafe. I remember the place being nice, but at this point I'd been in so many cafes that they were all starting to look the same.

The really exciting part of the day came when one of them gave me a ride to Komtar Tower, the tallest building in Penang. There, I could get to the topmost floor and view Penang from above. There was also a whole host of attractions in the theme park.

View was amazing...
and terrifying.

Up I went to the 65th storey, paying about RM 80 for the experience. This would include a trip outside of the perimeter of the top, tethered only by a safety harness. Honestly, just looking at the view from the glass floor made my stomach lurch. But I'd already paid, so what the hell...

...except that at this very moment, the ugly side of being the only software dev in the department kicked in. People from work called to tell me that one of our sites was down. And I just happened to be 65 storeys above ground, with my laptop in my hotel room. I made some calls and got people to patch some stuff until I could get to it proper. By the time I turned my attention back to the breathtaking view, the moment was well and truly lost. I went back down, and couldn't even muster up the enthusiasm to try out the attractions. Although, after having already been taken for a ride by Trick Art and Upside Down Museum, I wasn't really up for any more overpriced gimmicks anyway.

Tan Jetty, viewed
from the side.

The sun was going down in two hours. I was heading back to the hotel on foot, but this looked like a good time to visit the Clan Jetties of George Town. The air was thick with flies, but I made it out to the rickety planks that made up the Tan Jetty.

This was surreal, yo.

There was a little hut and what looked like an incense pot midway, then the rest pf the jetty led out to sea. It was surreal. I was on a flimsy piece of wood surrounded by the waves, and the odds of any stuff I had on me falling into the water (me included) were more than decent. With the evening sea breeze howling in my ear, even.

So this was how the Tans lived, in Penang, all those decades ago. My ancestral cousins.

Delicious, but
almost couldn't
finish it.

I didn't bother with the Chew or Lee Jetties. It was more of the same, and I had least shared a family name with the Tans. Instead, I headed back to the hotel and had a nice (and extremely filling) dinner at the Peranakan fusion restaurant nearby.

Cozy.

And that was it for the day. Somewhere before midnight, I got restless and took a little stroll around Little India and ended up at this cafe where the ultra-friendly staff served me cake and juice.

April 17th, 2024

The day started off with breakfast at a humble cofeeshop where I ordered a standard breakfast set - two soft-boiled eggs, kaya toast and coffee. To my pleasant and everlasting surprise, they not only broke the eggs for me and put them in a nice shallow cup, they even brought everything to my table! Well, damn.

Straits & Oriental Museum.

A trip to Penang Chinatown brought me to a Porcelain Museum. In contrast to the last two, this one was actually pretty educational.

Interesting pictures.

I totally didn't get
this one.

Just across the street was a small art gallery which seemed to be beckoning me. Not being one to resist a siren call like that, I ventured in and took some pictures.

Now, I'd been constantly walking all around George Town for the last few days, and the inner linings of my bootleg Converse shoes were worn out,. I thought it was time for a massage, so off I popped into this place called Revive Reflexology. I opted for the Thai package, hoping that these were "serious" masseurs. Unfortunately for me, the one I got turned out to be entirely too serious. I had underestimated the strain all that walking had put on my aging legs, and when she grasped hold of the ligament in my inner thigh near the left knee, I'm not ashamed to admit I screamed like a little bitch. And then she started on the right leg.

Suffice to say, I had walked in, and now I was crawling out. I took a lunch break at a nearby bar restaurant because I just didn't feel up to walking around to find something more interesting.

An elaborate
gateway.

My next stop was at the Pinang Peranakan Mansion which was nearby the hotel. I had passed by a couple times along with a whole host of big-ass Chinese temples. Through the past few days, I had come to realize that there were a lot of temples in George Town and I would need more than a couple days to cover them all, if I were even so inclined. But... there was only one Peranakan Mansion.

Check this out...

What followed was a feast for the eyes. Did I say feast? It was more I was pigging out on a visual buffet. It was a visual overload. There was so much detail in everything - elaborate carvings, designs, architectural features, old furniture and so on. Everything had a historical explanation.

My second favorite place was probably the kitchen, where I could pretty much imagine how a meal was cooked back in the day. But my absolute favorite was their Ancestral Hall. There was just so much going on there I can;t even begin to describe it. Check out the pictures!

Not quite a mansion, but
still interesting.

My next stop was, again, right next to the hotel where I visited The House of Yeap Chor Ee. Yeap was a Chinese immigrant who plied his trade in Penang as a barber (there were samples of his tools in the museum, quite a visual treat) and ended up being a very wealthy man despite not knowing how to read or write. Even his signature was written wrongly.

I was the only visitor in the place, and the guide obligingly took me on a tour of all three floors, explaining the history behind each exhibit. The tour cost RM 20. She didn't have change for my RM 50 bill, but I told her to keep it. It sounds like a sizeable tip, but honestly, after wasting time and money on Trick Art and Upside Down Museum, this was more than worth it.

The Last Supper... in Penang.

Later in the evening, I met up with a couple friends for a supper of some chicken wings, oyster omelette, fried dumplings and milo. And that was a wrap for my final night in Penang.

April 18th, 2024

Bittergourd with duck egg.

It was my final day here in George Town. I had some breakfast, wandered around, and checked out early. One of my friends from last night bought me lunch, and then dropped me off at the airport, where I headed home to Singapore... and back to the couch.

So long, Penang!

My little vacation there went pretty much as expected. A lot of walking in the hot weather, museums and art galleries. And food. And having to respond to work emergencies at the most awkward times possible. But hey, at least I got to sleep in a proper bed. And work on Python at night, along with some of my other little pet projects.

I suspect I've barely scratched the surface, though. At some point, I'll be back.

Your travelling dev,
T___T