Saturday, 15 March 2025

Film Review: Black Mirror Series Five (Part 1/3)

I'm back with more Black Mirror! For those who are new to this, Black Mirror is an anthological series with standalone episodes around the theme of technology gone wrong. Sometimes it can be funny, but often it's bleak AF.


We're now in Series Five of Black Mirror, and there are three episodes to go through. Prepare to be shocked, disgusted and entertained in varying degrees.

Warning - spoilers ahead, important plot points discussed!

I try not to hold back where spoilers are concerned, and at this point, Black Mirror isn't exactly new. There's really no point in being coy about spoilers.

Also... if you don't approve of video games, stop watching. If you don't like bad language, stop watching. And if seeing two grown men kiss makes your brain implode, definitely fuck off and stop watching.

The Premise

Striking Vipers is the first episode, and it is centered around two old friends playing a fighting video game, but with VR Black Mirror style.


As both of them become obsessed with their time within the game, however, this results in their real lives suffering for it.

Generally, this episode warns against the dangers of getting too absorbed in a game. The tech used appears to be the same one used in USS Callister, and bears the same Aesop.

The Characters

Anthony Mackie as Danny Parker. He's the serious responsible type who's now married with a kid, but sex has become a bit of a chore. Mackie gives us a tremendous portrayal of a man who's not a cheater by nature, but gets caught up in something that doesn't feel like cheating until it's too late. I've been watching Mackie on-screen as Sam Wilson in the Marvel Cinematic Universe, and this isn't too far from what he portrays there.

Yahya Abdul-Mateen II as incorrigible manchild Karl Houghton with Peter Pan syndrome. He's finding it increasingly harder to relate to the girls he dates, because they're so much younger, even though the sex is presumably great. And the actor delivers with such earnestness lines like the one below.
"I fucked a polar bear and I still couldn't get you out of my mind."

Only in a series like Black Mirror would that quote make sense.

Anyway, I've seen the actor in superhero flicks like Aquaman and Aquaman and the Lost Kingdom. He gets a lot more to do here.

Nicole Beharie as Theo Parker. She has a role as Danny's wife and Tyler's mother, and while her portrayal is a little generic, Beharie does bring in some sassy charm into it.

Pom Klementieff is a breath of fresh air as Roxette. I loved seeing her in Mission Impossible: Dead Recknoning Part One and the Marvel Cinematic Universe, and she brings the same zany offbeat quality to the role, almost perfectly mirroring Karl offline.

Ludi Lin as Lance. Last saw him in a similar role as Liu Kang in Mortal Kombat. This time it felt a little flat, if I'm being honest. Nice abs, but I can't seem to buy him as Danny Parker's online alter-ego.

Fola Evans-Akingbola portrays Karl's girlfriend Mariella as this slightly bimbotic girl who's obsessed with her phone. Serves to show us that Karl gets great sex physically but he's missing that extra emotional connection. Someone who gets him.

August Muschett is Danny and Theo's son Tyler Parker. He's a cute little tyke, perfectly normal. And only serves to underscore how much Danny has going for him.

The Mood

Scenes of wedded bliss and suburban serenity are interspersed by nighttime landscapes within the game.


Unlike the usual Black Mirror fare, none of this is particularly unsettling, but there is a fair bit of drama and tension as we get into it.

What I liked

The banter between Danny and Karl, at Danny's birthday barbecue, is delightful. It really serves to illustrate what a vibe these two buddies had before things got weird.

I normally prefer Black Mirror episodes to be dark and creepy (maybe even violent) but this episode focused on the friendship between two men and it was glorious even though relationship drama isn't really my thing.

The name "Striking Vipers" is really such a sly nod to gay sex. Not that what's between Danny and Karl is 100% gay sex. When it happens, they're choosing to use avatars Roxette (a female) and Lance (a male).


The locations within the game are gorgeous. We can really see the effort they put into it. Also, the fighting moves. So outlandish. Love it! Especially that pancake slam by Roxette.


Could be just me, but I thoroughly enjoyed this over-the-top visual representation of Tetris.

What I didn't

I find it extremely hard to believe that the anatomical accuracy in the game would be so high as to facilitate sexual intercourse. And since this is a major plot point without which nothing else makes sense, it's pretty difficult to ignore.

The ending's also a little off, I think. So once a year Theo and Danny both get a license for infidelity? Looking at how obsessed Karl was, is once a year even enough? What does he do in between, fuck more polar bears?

Conclusion

This episode had so much promise despite the nagging little plot holes. The premise was decent, that's for sure. Thematically, it fits right in with the mythos. It was a fun watch.

My Rating

7 / 10

Next

Smithereens

Sunday, 9 March 2025

How I Quit Smoking Using Software Development Principles

This is the story of how I quit smoking, for the second time in my life. The first time was back in 2012.  What happened was that I took stock of how much I was spending on cigarettes in a month. It amounted to SGD 300 and change. And I gave it to Mom, fed her some bullshit story about being promoted at work and this being my pay rise. I thought it was brilliant back then - I'd committed to giving her that money now, and couldn't take it back. And just like that, I stopped buying cigarettes, and smoking them.

Stubbing the habit out.

After a bit of a struggle in the first few months, I was clean. All this lasted a full year. And then I changed jobs. I was still a web developer, but now in a company with significantly more resources.

Guess how much more the new job paid me? Yep, about SGD 300 per month. Can't fight fate, amirite? Soon I was right back at smoking with a vengeance, and never stopped for the next twelve years. In fact, it got worse during COVID-19, when I was working from home. I was also smoking in the bathroom, kitchen and living room constantly. I was averaging a pack a day, sometimes more.

And now I was earning significantly more money, perhaps double. Back then, being a consistently broke web developer, I could use a lack of funds as a way to stop myself. Now, it was no longer feasible. One could say I was a victim of my own success.

Quitting for the second time

Fast forward to 2024. I had just moved house and the thought of smoking in an otherwise clean new apartment just felt wrong. Besides, I'd managed to stop smoking in the bedroom due to being married and all, I figured it was no big deal to expand the no-smoking zone to the entire apartment. Thus, I kept my cigarettes in the mailbox on the first floor. Every time I needed a smoke, I would take the elevator all the way down to the first floor. As I live on the twenty-fourth storey of my apartment block, you can imagine this got old pretty quickly.

It's unclear and what point I decided to work towards quitting smoking altogether so I could do away with this annoying hassle, but the plan to cut down was soon in motion. I restricted myself further; there should be no going downstairs just to smoke. If I was going downstairs, it had to be for some other reason, such as checking my mail, or training at the outdoor gym.

That was when I decided to see if I could recapture my vigorous youth. My chin-ups record stood at fifteen. I wanted to see if this aging body still had it to reach those heights. And, from experience, this would require muscular conditioning, which meant consistent training. And with what I had mandated with regard to smoking, this looked like an excellent opportunity to kill two birds with one stone.

As a software developer interested in Data Analytics, I even compiled some statistics beginning from the 4th of March. The point was to exercise enough discipline to compile those stats, and track progress.

A combo chart!

Soon, I was down to five sticks a day. And on the 19th of June, 2024, I smoked my final cigarette.

Strangely enough, psychologically, there was nothing to fight. One day I was a smoker, and then the next day, I simply wasn't. I even forgot all about trying to quit (other than faithfully filling in the data once daily) until my wife checked in to see how I was coping. The only time I felt any kind of craving was directly after a workout, and even then it was manageable.

I seem to remember the process of quitting being a lot tougher than this. Perhaps it was because I had turned smoking from a pleasure to a chore.

Aftereffects

Not needing to smoke has, given me a sense of freedom. No longer do I feel the need to stick to areas where smoking is allowed, or feel under-equipped if I leave home without cigarettes or a lighter. And while the Missus was agnostic to me being a non-smoker, she really grew to like having an extra SGD 500 in our joint account every month. (I know, cigarettes got so much more expensive in the past ten years. Crazy, right?)

Saving money.

The most obvious question, however, would be: how much healthier has this made me?

Sorry to disappoint, but it hasn't made me feel appreciably healthier. I assume I'm at lower risk of lung cancer and heart disease, but short of a thorough medical checkup, there's simply no way to tell.

I seemed to have put on almost 10 kilograms. Whereas before this I was weighing at a range between 69 to 72 kilos, now I was weighing between 77 to 82. Apparently, the regular nicotine intake had been doing a number on my heart rate; and now without it, my heart wasn't working quite as hard. Which is great, but I wasn't shedding excess weight as fast either. Good to know, I guess.

As for symptoms like fatigue, grumpiness and anxiety... I didn't notice anything. I mean, not more than usual. Insomnia? Not at all. Even with the Missus snoring like a cow beside me every night, I slept like a baby.

Applying software development principles

What I'd done here was programming. Not programming in the sense of me typing in commands into a computer that would then execute those commands faithfully, but programming nonetheless. Programming of the incremental, conditioning kind. Most programmers would have come across a warning from their IDEs at some point or other - Unreachable Code. Code that technically existed in the system, but due to the way the program was structured, would never be arrived at during an execution.

I had used my training as a software developer, and applied it. First, instead of outright stopping myself from smoking, I imposed restrictions around it. I could still smoke, but only if an increasing number of conditions were met. Thus, if I wanted to badly enough, I could jump through a lot of hoops. At some point, my natural laziness won out. Theoretically, I could still smoke if I wanted to, but the combination of conditions I would have to meet pretty much turned that into Unreachable Code.

Setting up roadblocks.

Another principle which I took advantage of, was that of optimization at the point of bottleneck. It's probably more a manufacturing principle than a software one, but still applicable nonetheless.

In any system, there exists one (or more) points where throughput is constrained, and the only way to increase throughput is to optimize at the bottleneck, not away from it. This means that we need to understand what the bottleneck is. In my case, I wanted to make smoking less easy, not more, so one might say I took the principle and inverted it for my purposes.

Why had I been smoking so much? Basically, because I could. There was an ashtray in almost every room in the house, and I had pretty much given myself permission to smoke wherever I wanted. It was convenient. Thus, if I wanted to make it less convenient to smoke, I had to impose restrictions. Barriers to doing so. As such, I identified the "bottleneck" (more like a leak, really), and fixed it.

Of course, I could have just told myself that smoking was bad for me and I should just stop. But telling that to a guy who already works out five days a week and survives largely on oatmeal, is ineffective.

Epilogue

It's been eight months, give or take, since I last smoked. Ostensibly, the lifestyle change should have been considered to take hold once past my second month, so I'm gonna take the win. Go, me!

Unfortunately, my little foray into chin-ups did not quite go as well. After I managed to hit ten chin-ups, my right elbow gave up on me. Golfer's Elbow, they call it. That's another story for another time.


Much tobacco-fuelled love,
T___T

Tuesday, 4 March 2025

Is Repeating The Password Field Really Necessary?

There is something that seems to be some kind of de facto standard where updating user passwords is concerned. And that is the practice of asking the user to enter in the password twice.

We'll need that
password again...

It's so much of a standard that whenever I create a for for users to edit their details (the password being among those details) I always have an extra field for the user to repeat the password, with the required validations. It's reflexive by now, and not once over the years have I ever thought to ask why.

Until now, that is.

That's a good question, though. Why this feature, and why not? Let's break it down.

Why this feature?

Well, for one, password entries tend to be masked. Therefore, users may misspell their initial choice of password. The Caps Lock key might have been on, or something. They keyboard might be jammed. Hey, not everyone can type stuff with 100% accuracy while blindfolded, OK?!

Typing while blindfolded.

Therefore, putting in a confirmation field helps ascertain that, yes, the user absolutely meant to key in "i_k1cK_@$$!556677".

The second reason I'm about to name, is a bit of a circular argument. As mentioned earlier, this UI pattern has been in use since... forever. Which means that users are comfortable with it by now. It's, despite its flaws, an established part of the process. People generally want to stick with established patterns instead of figuring new shit out.

I'm only including the reason above because legacy inertia is legitimate grounds where UI and UX are concerned. As a techie, I despise the argument that we should continue bad practices simply because it's the way we've always done things.

Why not?

There's a whole host of reasons not to do it.

While an extra confirmation field might help the user avoid typos, there's nothing stopping the user from copy-pasting passwords. This feature may also drive users to use overly simple passwords instead. Never underestimate the lengths users will go to, to make life easier for themselves. All of which make a system less secure, not more.

Copy-pasting.

An extra field adds overhead. Not only is there more data to input, there is more data validation to cover. We have to check that the field is not empty, matches the previously typed password, and so on. All in return for the dubious value of helping ensure users didn't mistype their chosen password.

And of course, from the user's point of view, one extra field, masked and with extra validations, is just more inconvenience. Although, in the case of security, anything that adds security almost always inconveniences the user to some degree.

All in all

What's the solution for this? There's no one single unified solution thus far. Some platforms prefer the tried-and-tested way. Other platforms prefer the visibility toggle on the password field so that users can see what they typed, if they so chose, with no extra field. With time, an eventual standard should emerge.

r3g@rd$!!12345,
T___T

Tuesday, 25 February 2025

Ten Things Office Sycophants Should Avoid Saying

It was on the hallowed halls of LinkedIn where I chanced upon this article by one Vartika Kashyap quite a while ago. The career advice within struck me as spectacularly terrible and not a little out-of-touch. At the time, I put it out of my mind and concentrated on the bigger fish I had to fry.

Years later, revisiting this article, not only have my feelings about the content not changed, I feel that this article deserves a response in the form of satire.  Because, as we all know, the best way to illustrate how bad an idea is, is to agree with it and take it to its logical extreme. And, if the original concept is ridiculous enough, you don't even have to take it that far to reach its logical extreme.

Also, to be fair, advice isn't bad simply because it is bad. Context matters. For example, "stand in front of a moving bus" is great advice for becoming famous, not so much for healthy living. Similarly, Vartika Kashyap's advice is pretty good... if you want a masterclass on how to be a spineless yes-man. Thus, today, I give you... Ten Things Office Sycophants Should Avoid Saying.

1. "No"

Now, we all know that the world of the programmer is a binary one - things are either true or false with no nuance in between. We also know that the real world isn't like that. In the real world, things are what they are, and sometimes we have to temper our expectations because nobody gets what they want 100% of the time.

The answer is. No.

But to hell with all that. As a sycophant, treating your employer like a normal well-adjusted adult is out of the question. No, you should treat your employers like their parents didn't tell them "no" enough as a kids. Life is full of disappointments. Your employers are too fragile to face these harsh realities.

So don't say "no" to your employers. It's very triggering and upsetting. The only time you should say "no", is when it's paired with another negative word. As in, "no problem".

2. "I'll try"

Yoda famously said, "Do or do not. There is no try." Disregard the fact that life isn't a sci-fi movie, and take this phrase to heart. You see, your employers pay you for results. They don't pay you to try. Trying is for losers.

I'll try... and try... and try.

Saying you'll "try" is akin to giving yourself an out if you fail. It is leaving the possibility open for failure. Even if this is the real world and nothing is a certainty, your employers don't pay you to be pedantically honest, either.

Your employers will feel a lot better if you declare with ironclad certainty that you "will" do it. And we all know that their precious feelings are of the utmost importance.

3. "I don't know"

This phrase is completely unacceptable. You are paid to know. And if you don't, you are paid to either find out, or act like you know. Even the appearance of doubt cannot be tolerated.

Act like you know
the future.

Honesty is overrated. Act like you know everything - past, present, future. Finding out takes time, so if you're asked a question which you don't know the answer to, acting like you know is the fastest and therefore only viable solution. Remember, you're a sycophant. Telling your bosses what they want to hear is a mandatory skill.

Never say "I don't know". Never. Unless it's shameless flattery along the lines of "I don't know how you managed to accomplish so much!"

4. "I am busy"

Sure, your employers pay you to be busy. But if you actually tell them that you are busy, there are two implications. The first is that if you're busy to the point where you have to tell people that you're busy, you're just not that good at your job. The second implication is accusatory - your employers overloaded you.

So what if your
plate is full?

Either way, stay away from this one. Be a good yes-man (or woman) and make sure you're always available for your employers. When they tell you to jump, your only response should be to ask how high they would like you to jump.

None of this "I'm busy" bullshit. They own you.

5. "I can't"

Seriously, do I even have to explain this one? Employers want a "can-do" spirit and confidence from their employees. The phrase "I can't" reeks of loser stink. Even though your pay may not reflect it, you're expected to be perfect.

Boundaries are
unacceptable.

Some might see "I can't" as setting boundaries. Again, that is unacceptable. Any self-respecting sycophant understands that there are no boundaries.

6. "I am sorry"

Come on, that is absolute nonsense. This is on the same level of "I don't know". Saying you're sorry implies that you made a mistake, and remember, employers expect you to be perfect whether you're drawing a janitor's wages or an executive's salary.

I'm so sorry...

Accept responsibility? No, no, no. Anything but that. Blame someone else, you complete amateur. But of course, it goes without saying, that you should never blame your employers.

7. "I thought"

"You think, I thought, who confirm?" Thats a popular phrase in Singapore's military, used by nasty drill sergeants to harangue the lower ranks. This usually occurs when a soldier makes the mistake of saying "I thought...".

Stop thinking, soldier!

Obviously, in the military, people are valued by the amount of thinking they don't do, and it's supposed to be the exact opposite in the corporate world.

Your boss doesn't want to be reminded that you're a human being with thoughts, opinions and assumptions. It makes it harder to exploit you that way. Be a good sycophant and keep the thinking to a minimum.

8. "I couldn't"

On the surface, this sounds very similar to "I can't". But while "I can't" refers to a task that's being assigned to you, "I couldn't" refers to some failure to execute an already assigned task.

Well, it's good to see that you're taking the blame like an adult (you know taking the blame is at least partially why the company pays you, right?) but this reminds your employers that you're not infallible and it annoys them.

Flaws are also
unacceptable.

Even though, if you were infallible, logically you probably would be in the position to employ them instead. But no, we don't need to apply logic to the situation. The best way to avoid having to say "I couldn't" in the first place, is not to fail at all. Ever think about that? No? Do better.


9. "That's impossible"

Such a Debbie Downer! This is exactly the kind of thing employers hate hearing. Did mankind make it to the Moon with that kind of attitude? Well, you certainly won't.

Was this impossible too?

While it's certainly true that, objectively, some things are physically or logically impossible, your employers certainly do not need to be reminded by you. Your job here is to be the try-hard, the endless optimist. If your employer wanted actual realistic advice, they have people they actually pay for the privilege. If you're just a sycophant, that's not your role. Stay in your lane.

That said, if you absolutely need to be that honest, you have to be prepared to take it further. Just saying "that's impossible" doesn't cut it.

"Nothing like this has been successful since World War Two." Just like that. Add context to why it's impossible.

"This is a brilliant idea, and it's a pity that it's completely illegal." Sneak in a compliment somewhere. Try not to overdo that part because it just sounds condescending.

 "This completely contravenes the laws of physics and common sense." And qualify it. How impossible is impossible? Though you'll want to leave out things like that last part.

10. "It’s not my fault"

Now, these could be fighting words. If it's not your fault, whose fault is it? Who are you potentially accusing? Thus, this phrase is at best whiny and at worst, finger-pointy. It's your fault because your employer says it is, end of. That's the correct attitude that any sycophant worth their salt should aspire to.

Your fault.

Besides, if a problem crops up, your employers want you to be busy fixing it and not determining who's to blame, especially if they are the cause of the problem. Whether or not it's your fault, is really not the point. It's your responsibility.

Is it the janitor's fault that someone took a giant shit on the white marble floor? No, of course not. But it's still his job to clean it up. Same goes for you. Not your fault? What are you, twelve?

Let me be real for a minute...

Once again, these are obviously just satire. I should certainly hope nobody works for anyone with these expectations, unless they're paid really well to take that nonsense. It also goes without saying that I would sooner hurl myself from the window of my swanky new apartment before I ever considered working for employers like that.

The ten phrases above I not only expect employees to apply when necessary, I consider it their professional duty to do so. Push back against stupid ideas and unreasonable expectations; it's your job, dammit.

Your impossible programmer,
T___T

Wednesday, 19 February 2025

Tech Workers: Hard vs Soft Skills (Part 2/2)

We've looked at hard skills, now let's explore soft skills!

Soft Skills

Contrary to popular belief, soft skills are not just about getting along wth other people, or getting them to think highly of you. It is about communication. It's not about proficiency in any given language and knowing fancy long words - there are plenty of people without a formal education who communicate a lot better than people who speak the Queen's English. Conversely, I've known people who are great at English, but come off so insufferable that nobody wants to deal with them. Being able to speak a language well does not automatically make one persuasive. Thus, proficiency in a language is more of a hard skill than a soft one.

It's all  about
communication.

Whether it's giving someone their flowers, managing expectations or diffusing potential (or existing!) tensions, discount soft skills at your peril. Just as a skilled programmer knows when to code and when not to code, someone well-versed in soft skills knows when to talk and when not to talk.

Soft skills are the skills that deal with communication with human beings. Human-computer interaction or just human-to-human communication? It is all relevant. Software is used by human beings, and developed by human beings. Therefore, any communication involving human beings remains a valuable skill.

What happens when you neglect soft skills?

Remember that the number one goal of software development is to solve problems and add value. In the case of your organization, it probably means to solve business problems and add business value.

Even without going into the area of personnel management, soft skills are very relevant in the software product itself. When developers concentrate on using technical skills and exclude soft skills, there's a danger that they will wind up with solutions that simply don't improve the product for the end-user. And this is important, why? Because ultimately, products are created for users. And that involves having enough empathy to understand what the end-user needs as opposed to what is technically superior.

The problem with management skills is that they're often not seen as a skill in their own right. People, for some strange reason, seem to think that programmers become better managers just because they've been writing code longer. News flash - practice in a skill improves that particular skill. Thus, practicing writing code only makes a developer better at writing code. Spending time developing software makes a dev better at developing software. Not at managing people.

Collaborative effort.

Sure, a more experienced software developer would be better at handling the software development process. Identifying potential pitfalls. Troubleshooting. But that same developer would not necessarily be good at delegation of work, managing personality clashes in a team, accounting to higher management for schedule shortfalls, and the like. These are a different set of skills, no matter how much people want to pretend otherwise.

Therefore, if you're promoted only for your technical ability, you'll get found out as soon as they start giving you subordinates. That's where any weaknesses you have at the actual art of man-management, will be exposed.

Where I stand with Soft Skills

As mentioned earlier, proficiency with the English language (or any language) does not automatically make one a good communicator. I happen to be living proof of that. There's been times I tried to describe a problem in a Service Request and fell far short of making myself understood. There have been also times I tried to describe a solution, with similar results.

Sometimes I forget that the people I speak to aren't technically trained, and that I have to be explicit when explaining certain things. Sometimes even with technically-trained personnel, it's good to spell things out just to be safe. There are times something sounds good in my head, only to sound comically wrong after I put it in writing.

Comes out wrong in writing.

That's one of the reasons I blog. Even if I never reach a wide audience, the point is the exercise in communication. Explaining technical concepts. Use of analogies. Appropriately describing my feelings and positions, both positive and negative, about certain subjects.

All said, I could always improve. All of us could. It's a skillset so wide that it covers all industries, not just software, at all levels.

In conclusion...

Hard skills are the skills that deal with computers.

Soft skills are the skills that deal with people.

In today's world, it's extremely hard to survive in the tech industry without a certain modicum of either one. There are, of course, extreme examples of each, but they are outliers.

For good or for skill,
T___T