Wednesday, 22 April 2026

Spot The Bug: The Textbox That Refused Validation

Hello, dear Bug-hunters. Time once again for some elusive bugs!

And here we
go again...


Today's episode of Spot The Bug is about form validation. Specifically, HTML form validation.

I had a mailer form, like so, and I wanted to verify that this message box was filled before submission. I just added required in the HTML attributes. Simple, right?
<body>
  <h1>Contact Us</h1>
  <form method="POST">
    <fieldset>
      <legend>Email</legend>
      <input required name="txtEmail" type="email">
    </fieldset>
    <br />
    <fieldset>
      <legend>Subject</legend>
      <input required name="txtSubject">
    </fieldset>
    <br />
    <fieldset>
      <legend>Message</legend>
      <textarea required name="txtMessage" rows="5"> </textarea>
    </fieldset>
    <br />
    <button>Send Mail</button>
  </form>
</body>


So here was the form. Each form input element had the required attribute, which tells HTML5 that they cannot be blank.


What Went Wrong

You see that little tag come on when I fail to fill in Email and click Send Mail.


And if I fail to fill in Subject, and click Send Mail.


But when I leave Message blank and click Send Mail, the form attempts to submit. The form submission went through without a hitch. It wasn't supposed to - because I hadn't entered anything in the Message text box. Or so I thought.

Why It Went Wrong

See this? You probably won't spot it right off the bat, but... there is a single space between <textarea> and </textarea>. Innocuous? Not quite, because that would mean that the text content of the HTML element, registers as a single space! Which also means, that it's not an empty string.
<textarea required name="txtMessage" rows="5"> </textarea>


Which, of course means that the validation passes!

How I Fixed It

I changed it to this. Now there would be no content in the texbox by default.
<!-- <textarea required name="txtMessage" rows="5"> </textarea> -->

<textarea required name="txtMessage" rows="5"></textarea>


And attempting to submit with this box left empty, would trigger the error message!


Moral of the Story

It can't be stated enough, that what you see onscreen isn't necessarily what's happening in the HTML. In this case, it was being reflected on-screen, except that, it being a space and all, was pretty hard to visually detect at a glance.


T___T

Friday, 17 April 2026

Film Review: Black Mirror Series Seven (Part 3/3)

Up next, we have Hotel Reverie.

The Premise

Brandy Friday signs up for the lead role in a movie reboot which is a computer-generated simulation of the original. This involves transporting her consciousness to a computer-generated environment.

The Characters

Issa Rae has an enjoyable outing as Brandy Friday. This is probably an unpopular opinion, but I think she absolutely nailed this role, especially when her character is playing the role of Dr Alex Palmer. There's an easy charm about that smile, that just looks so effortless. And her portrayal of an actress who wants to break out of gender stereotypes, is pretty compelling.


Emma Corrin plays Dorothy Chambers with a certain wistful sweetness that fits the story to a tee. A closeted lesbian who put herself into her roles on-screen. When I found out she also played Cassandra Nova in Deadpool & Wolverine, and Anna Harding (the pregnant wife) in Nosferatu, I was knocked for a loop. Corrin is so versatile, I didn't even recognize her!

Awkwafina as Kimmy. A fun role, though I feel like Awkwafina could have done so much more. Kimmy is basically the desperate and harried film exec who wants to get a movie made. I don't ever recall -not- enjoying watching Awkwafina on screen, but let's be honest, she was criminally underused here.

Harriet Walter brings a certain dry wit to the role of Judith Keyworth, owner of Keyworth Productions. She's occasionally snarky and delivers reality checks in straightforward, unvarnished style. I really dug her delivery of the line "NFI - not fucking interested".

Stanley Weber as Dorothy's onscreen husband Claude. Mustache-twirling villain.

Farid Larbi as Inspector Lavigne. Another one-note role.

Elaine Claxton as dog owner Madame Roban. Played this Karen in a black-and-white movie. She was fun to watch, in small doses at least.

Elliot Barnes-Worrell is in this episode for a few minutes Brandy's agent Quarterman. He's played as cavalier, snarky and dismissive... and he looked like he would be a nice addition to the cast. Except, after his first few minutes, we never see him again.

Charlie Hiscock as bumbling techie Jack. Hiscock plays him as a competent but complacent techie who gets whiny when he's stressed, and delivers some tech exposition.

Enzo Cilenti as Ralph Redwell. He's mostly seen in flashbacks, the typical beefy suave protagonist of black-and-white film. Cheesy, but effective.

Tessa Wong as Asian girl writer, Crystal. She plays a comedic role, at one point seeming more concerned with getting writing credit than saving Brandy's life. That was cute.

Magnus Brunn as Dieter. He's the guy who reads the romance meter. Kind of useless, to be honest.

Danielle Vitalis as black girl tech, Mika. Maybe it's just me, but it felt like she was making up the numbers. This is her second bit part in the Black Mirror series. The first was in Joan Is Awful, and this time round the role feels even less relevant.

Natalia Kostrzewa as nnamed delivery girl. It was an entertaining few seconds as she went all fangirl on Brandy only to reveal that she was actually more interested in her male co-star.

The Mood

It's a little humdrum at first, but soon we enter the black-and-white environment of the movie and ironically, things get pretty colorful from here as we switch rapidly between that environment and the "real world".



The narrative tension is raised towards the end, because this is Black Mirror and we're never completely sure who survives the episode.

What I liked

The interracial lesbian relationship between brandy Friday and Dorothy Chambers. Yes, I know, I've complained in the past that Black Mirror seems to insist on shoving interracial relationships down our throats, especially of the black-white variety. And this isn't even the first black-white interracial lesbian coupling, the first being San Juniperio. But this one was different. The lesbian part was actually an integral part of the story. Brandy Friday's identity as a black woman was actually acknowledged by the plot. It didn't feel like yet another box-checking exercise and giving us an interracial lesbian couple just for the sake of it. If anything, it felt like this episode was taking shots at Hollywood for its overeagerness in race and gender swapping in its reboots.

The concept of ReDream. It is pretty neat, and fits into the concept of generative A.I as we know it today. Not exactly, but pretty damn close! What with the main character's consciousness being implanted into a computer-generated simulation and all.



This was one of those shows where the women had the most to do, and the men were either relegated to useless minor roles, or portrayed as incompetent buffoons. I should be annoyed, but in truth, I barely noticed it, even after watching the episode twice. It only just occurred to me, when writing this review. I mean, if any movie or show wants to go this route, they should absolutely take a leaf from this episode's book. It was done so masterfully, so subtly, as to be almost unnoticeable. Or maybe I'm just oblivious.

What I didn't

Dropping the USB device was relevant to the plot, because it resulted in Kimmy explaining things to Brandy (and to the audience) what ReDream does. But really, why bother when they could have Kimmy do that anyway, without that little plot device?


If ReDream could do all that, why would they even need an actual actor? Or actress? This part was never made clear.

Conclusion

This was actually pretty good. There was the risk of the whole virtual reality angle being played out in the Black Mirror series, but they somehow managed to make it feel refreshing. Never have I found a black-and-white setting so utterly compelling.

My Rating

9 / 10

Thoughts on Black Mirror Series Seven so far

I was blown away. I haven't felt this much optimism since Series Four. This feels like a return to form. Each episode so far, has been classic Black Mirror stuff. It started with the gut punch that was Common People, took a slight dip with BĂȘte Noire, then came back strong with Hotel Reverie. The first three episodes of this series have so far trumped the entirety of Series Five and Six!

I'm TFI! Totally Fucking Interested!
T___T

Wednesday, 15 April 2026

Film Review: Black Mirror Series Seven (Part 2/3)

This next episode, the rather pretentiously titled BĂȘte Noire, deals with gaslighting. Tech? Well, there's plenty. Maybe even too much.

The Premise

Maria starts to question her reality when ex-schoolmate, Verity, joins her company Ditta (which had a brief mention in the previous episode; fun fact!). She soon finds out that reality is being manipulated with the intention of driving her to suicide.

The Characters

Sienna Kelley is Maria Skinner. She delivers one hell of a portrayal of an argumentative control freak who always needs to be right, the not-so-reformed bully who instinctively reverts to form once the conditions present themselves. It's sometimes subtle, but Kelley pulls it off. It helps that the argumentative control freak personality is absolutely a thing, and I know more than a few people like that.

Rosy McEwen is Verity Greene. It's also a compelling performance from her, perhaps even more so considering the rather unbelievable premise. She's a victim of bullying who finds near limitless power but decides to spend it tormenting her former bullies. I find this thoroughly unrelatable because in her shoes, I'd be busy exploring so many possibilities and cementing my position. Despite this, McEwen manages to elicit sympathy.

Ben Baily Smith as Gabe, the boss. I found his portrayal as a laid-back hill boss, utterly watchable. Gabe bikes to work and comes off as chummy and sensitive, and tries to be reasonable and tolerant. Which can be tough if you have a pushy mofo like Maria as a subordinate. Just saying!

Michael WorkéyÚ plays Kae, Maria's boyfriend. He's nice and goofy, and really quite the emotionally available guy. Another guy who tries to be reasonable with Maria and puts up with her bullshit. I'm starting to see a pattern!

Ben Ashenden as Nick, from the Graphics department. Comes across as enthusiastically friendly where Verity's concerned. Perhaps even over-friendly. Later on, he pushes Maria's buttons in very annoying ways. Overall, a rather immature character, but the actor looked like he had fun.

Elena Sanz as Camille, focus group tester. She reminded me a little of Gemma from M3GAN. Thought she'd have a bigger role here, but it was not to be.

Hannah Griffiths as Luisa. There's this running gag where people constantly steal her almond milk from the fridge. It druves her nuts, and ties into the story.

Amber Grappy as Yudy, the kitchen head. She always has this confused look. I don't know if that's by design.

Ravi Aujla has a brief appearance as Ditta. Good-looking distinguished silver fox guy. Not really interesting otherwise.

The Mood

The episode is bright and colorful, and the closeup visuals of chocolate and confections sure add to the artistry. Later on, this does not change, though the mood takes a turn for the sinister, which somehow gets worse considering everything is so visually... cheerful. In effect, the entire episode looks very polished visually.

What I liked

The storyline concept was pretty creative, even if it strained credulity at times. The themes of bullying, gaslighting and arrested development are pretty relevant and dare I say, timeless.

I like the visuals where they tell us what day of the week it is. It's just so artistic.


The actual gaslighting was pretty good! It started off subtle, with this foreshadowing shot that it was Barney's rather than Bernies... also, there are apparently two versions of this episode being aired, with this as a gag!


... to something like this, removing nut allergies from existence! And using Google to reinforce it, is just too precious!




What I didn't

Of all the titles they could've gone with that would have actually made sense, "BĂȘte Noire" doesn't exactly stand out as a solid choice.

Unlikeable characters. Both the protagonist and the antagonist are anything but likeable, and that's even before the reveal at the end that Maria was Verity's bully. Maria is pushy and argumentative. Verity comes off as a tragic victim of bullying who's unable to move past the trauma and as such is in a state of arrested development. No main character comes even close to being sympathetic here.


Unbelievable tech. I mean... something as limitless as the tech that Verity is using, basically runs on what looks like a mini server farm? I suppose it's marginally more believable than that little "quamputer" we saw in Joan Is Awful.

The scene where Verity alters reality so that Maria has always spoken "Chinese". Honestly, if she's "always spoken Chinese", she should speak it a lot better than the garbage gibberish that came out of Maria's mouth. Badly-spoken Mandarin has always been a pet peeve of mine in Hollywood. Couldn't they have used Japanese, or Korean? Something arguably less easy to get wrong? Geez!

Conclusion

A mixed bag. It was a good gaslighting-style story with just enough corniness to make it enjoyable. And even with the rubbish they tried to pass off as Mandarin, the good outweighed the bad here. Solid episode.

My Rating

7.5 / 10

Next

Hotel Reverie

Monday, 13 April 2026

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

Black Mirror Series Seven has arrived! For those not in the know, Black Mirror is an antholotgcal series revolving around tech and media, and its sometimes negative effects on life.

Will Black Mirror Series Seven be even more of a disappointment than its predecessor, or will this offering be a worthy inclusion in the exalted halls of the Black Mirror franchise? That's a question for the ages.


No time like the present - let's dive in and see what we're getting this time.

Warning - not safe for children! 

Bad language, sexual themes, the works. Also, spoilers.

The first episode is Common People.

The Premise

Mike and Amanda are a married couple who find themselves in financial dire straits when Amanda develops a severe medical condition which can be alleviated via means of a new technological breakthrough. They manage at first, but things get progressively worse as services degrade and the costs of maintaining the service keep rising to unsustainable levels.

The Characters

Chris O'Dowd as Mike Waters. He has this very goofy puppy-dog expression that really sells it - the horror of what he has to do to take care of his wife, the frustration at the escalating costs, the weariness at the neverending shitshow. It's all there, and I felt every bit of it. This guy didn't look like a hero, but damn if Chris O'Dowd didn't bring that Everyman Superman vibe.

Rashida Jones as his wife Amanda. She portrays a woman who, through no fault of her own, becomes a walking talking billboard. I really did enjoy the instances where she started spouting ads, so naturally. It was a remarkable performance. One moment she's a caring and empathetic schoolteacher, and next moment she's a shell of her former self, though we see this in progressive stages.

Tracee Ellis Ross as Gaynor, Rivermind's sales rep. I actually thoguht thatbwas quite a nuanced performance. She first appeared as a sympathetic voice of hope, later on appearing still sympathetic even as she started tightening the screws, and at the end of it she was a soulless corporate shill, complete with shoulder-padded blazers and all. The way she delivers the line "pregnancy costs extra", is just diabolical. It's so good!

Nicholas Cirillo is Shane. This guy played the kind of asshole one loves to hate. At first he was just an irresponsible jackass, until somewhere in the third quarter of the episode he goes full douchebag. It was a one-note character but I have to give credit where it's due - his portrayal made me cheer when the character got his comeuppance.


Lisa Gilroy makes an appearance as the unnamed woman in the Rivermind Lux ad. It was delightfully corny and she looked like she was having a ball.

Sabrina Jalees as Angie. Seems like a pointless casting. I suspect her role was originally bigger than just a few throwaway lines. But if they cut her participation, that much, they should have just gone all the way and excised her completely from this episode. WHat did her character do, really? A big fat nothing, that's what.

Donald Sales as Kyle, the foreman. Almost another pointless casting.

Carolyn Taylor as the middle-aged principal Penelope, Amanda's boss. Not a big role but Taylor nailed it as the otherwise sympathetic boss who's sensitive about her middle-aged spinster status.

Lucy Turnbull as Eva. She comes across as emotionally vulnerable, like most kids, but does very little else that is plot-relevant.

Huxley Fisher as Oscar. This kid is something else. In the limited screen time he had, his judgey stare while talking to Amanda had me in stitches. I don't know if that was intentional.

The Mood

It's a picture of domestic bliss at the start, and soon gets bleak and depressing, vintage Black Mirror. The mood rarely shifts. It's constantly slow-moving and dreary, forcing the viewer to face the inexorably miserable ending that is the eventuality.

What I liked

There's nothing sinister going on, just the combination of technology, corporate greed and human sadism. In short, tech and human beings being horrible to each other. Love it! Did I mention I adore the story? Throughout it all, Mike and Amanda never give up until they absolutely have to. It's awesome and heartbreaking at the same goddamn time. Even without any real shocking twists, this episode delivers.


Using Dum Dummies as the platform on which Mike debases himself in order to raise funds, seemed to be a clever parody of the platform known as OnlyFans, or perhaps other livestreaming platforms.


And speaking of Dum Dummies, there was an amusing callback to a previous episode, The Waldo Moment.

The dynamic between Mike and Amanda was really sweet and funny at the same time. I especially like how they refer to sex as a "happy accident".

That ending was so deliciously downer! Oh man. It looks like we find out just how Mike paid for that last thirty minutes' worth of Rivermind Lux... with his life!


Gaynor using the app to increase her nonchalance level to max, in order to deal with Mike's angry outburst, was such black humor.

What I didn't

I could have done without that bit about Amanda really enjoying the sex under the influence of the Rivermind Lux package, to be honest.

The tech being able to transfer language and motor skills. Like, OK, that bit was overkill and didn't really add anything to the plot. Also, things like parkour are as much physical as they are mental, if not more so. So this bit made no goddamn sense.

Conclusion

Just one word - wow. What. An. Episode. Not only was it quintessential Black Mirror, it had at its core, a story of true, enduring love. There's that bleak ending, the midway twists, and the absurdly dark humor. This episode had it all, and it was the first episode. Honestly, how is the rest of the series going to top this?!

My Rating

9.5 / 10

Next

BĂȘte Noire

Wednesday, 8 April 2026

In defense of small steps

It was 1997. I was a Temasek Polytechnic student waiting to go into National Service. While hanging out at a running track (imagine, in those days I actually had knees that didn't creak.) I bumped into a schoolmate also waiting for National Service.

He told me he had been preparing for National Service by running three rounds around the running track every day. Three. That was 1.2 kilometers. I was baffled. I laughed in his face and said he might as well not bother. This was a pitifully short distance. What good would it do?

Running in preparation.

I know, I know, I was a jerk. And if I ever see him again, even if he's forgotten all about it, I really should offer him an apology. I'm a kinder, more evolved individual now and all. More importantly, I've spent decades as a web developer and it's not just compassion behind the apology - it's professional clarity.

The lesson behind this

The story here isn't about me saying stupid, needlessly cruel things like some empty-headed moron. I was nineteen, FFS. Saying dumb shit was par for the course.

No, the story is that, in my youthful arrogance, I was blind to the simple fact that everything begins with small steps. Everything. And years later, life would beat that lesson into me over and over. I would attempt a tech career in sunny Singapore. I would stumble repeatedly. Sometimes I would take a few steps forward only to be shunted one step back.

In many ways, life was not kind. It could have been worse, of course. A lot worse. But the fact remains that there were challenges. Challenges that weren't going to be navigated in a single bound. I was dismissed from jobs. Failed probationary periods. Screwed up at work. Joined companies that crashed and burned. Worked for exploitative bosses with the ethics of a swamp leech.

But you know what? It was OK because my failures were due to me actually trying. That was valuable. The thing about freedom, and having agency, is that you own all your success and your failures.

Moving slowly.

The thing is, I wasn't shooting up the corporate ladder. Sometimes I wasn't anywhere near any kind of ladder. It took a few (OK, several) iterations before my career got any kind of traction, and even then, it was a slow grind.

In retrospect, my career was like how software is typically written - iteratively. "Do it once, do it good" is music to the ears. Unfortunately, that's all it often is. The ugly reality is that software evolves. You start off with an MVP that gets fleshed out over time, and requirements are going to change. That's business. That's life, even.

What I know now

A new appreciation for small steps is one of the things I've gained. It's not about how big the step is. It's about the fact that the step is being taken at all. It's a statement of intent, and this can be powerful. Without even a small step in the right direction, you ain't getting anywhere, son.

Pretty much like my ex-schoolmate and his 1.2 kilometer run. A tiny step? Yes. Very tiny. But no less important. Because it was the intention that counted. And later on, whatever success he enjoyed in that area should be attributed to that intention.

It wasn't like he simply went on Social Media and talked about doing it without actually doing it. No, he was doing it when I encountered him. And what did I do? Minimized his efforts like a jackass, that's what.

Wishing for software.

I've come to understand the need to do things in iterations. Small incremental steps if necessary. And it's often necessary. Software isn't simply conjured out of thin air after verbalizing a wish, no matter what the likes of Jensen Huang or Elon Musk would have you believe. It follows a process of repeated refinement. A lot of eventual success is predicated upon simply showing up to do the work, and showing up consistently.

This has also manifested in my reading habits, and even my consumption of media. Before, I always felt the need to watch YouTube videos to the end. Finish the book I borrowed from the library. If I started on a TV series, I would binge it to the end.

No longer.

Now I understand that reading a book to the end, for example, means very little. It doesn't actually mean that I'm finished with it. I can always gain new insights from rereading it. Conversely, if it's not worth my time the first round, I can feel free to cut it loose without wasting any more time on it. Perhaps one day I'll find the motivation to get back to it... and if not, it's not a big deal. Basically, I no longer feel the pressure to finish things I started. Because the "finish" is ultimately artificial.

Just like software. Software is never "finished". It's only ready for shipping, but it will evolve in its lifetime.

Small conclusions

Be comfortable with small beginnings. Showing up is more important than showing up loud. "Go big or go home" is ego and stupidity talking, nothing more.

One small step for man...
T___T