Showing posts with label redux. Show all posts
Showing posts with label redux. Show all posts

Tuesday, 30 September 2025

Film Review: Black Mirror Series Six, Redux (Part 2/2)

This next episode, Demon 79, leans into the whole supernatural path that Black Mirror seems to be veering into, and then gleefully goes full speed ahead.

The Premise

Shop assistant Niqa discovers a bone talisman and enters a pact with a demon, Gaap, in which she has to deliver three human sacrifices. Failure to do so will bring about the end of the world. It's pretty simple, and really revolves around her attacks of conscience.

The Characters

Anjana Vasan takes on the role of Niqa Huq, and really makes a meal of it here. Niqa has a dreary soul-wearing job and Vasan really makes you feel it. When she gets driven to murder later on, I could totally believe it.

Paapa Essiedu is Gaap. He's quirky and goofy, and so much fun on screen. Even more fun is his off-handed attitude towards murder, morality and all that jazz. Endearingly awkward demeanor aside, there are moments of vulnerability where Gaap confesses his insecurities to Niqa, and they bond.

Nicholas Burns as Keith Holligan. We first see Holligan as a balding loser who also happens to be a psychopathic murderer, but as the episode goes on, it's apparent that he's a tragically lonely man who also happens to be deeply disturbed. Burns made me feel -sorry- for this guy, dammit. Right up to the point he got his skull smashed in!

Shaun Dooley as Len Fisher, the police detective who investigates the murders. Comes off as jaded, cynical and couldn't be arsed. But when presented with a proper mystery, he's all kinds of shrewd and professional. Dooley let the human side show during that confrontation with Niqa, when Niqa asks him if he's a good man, and he says "I hope so, love".

Nick Shields as politician Michael Smart. He's played as charming and intelligent, and a good orator, with the catchphrase "So don't just pray for a good future, vote for one!" That scene where he just about snake-charms Vicky into voting for him, was fantastic. I could have done with more of him in this episode, he was brilliant as an antagonist. Totally brought that dangerous energy to his game.

Katherine Rose Morley is Vicky the salesgirl. Morley plays her with acid-tongued bitchiness and absolutely no redeeming qualities, so it's easy to root for Niqa to make her the next victim.

Emily Fairn as Suzie, Fisher's assistant. Mostly got distracted by her nose, I'm sorry to say.

Nick Holder as Posset's manager, Mr Duncan. Wow, what an ass. Holder plays him as a doofus who skirts around being overtly racist but ultimately lets his true colors slip through in the presence of Michael Smart. That was great, because it kept me guessing who was going to be the next sacrifice, and hoping it might be him.

Joshua James as Chris Holligan. He probably wasn't meant to be a comedic character, but that awkward fight scene with Niqa was hysterical.

Joe Evans as Tim Simons, a creep who molests his young daughter. There's nothing overtly detestable or likeable about the guy, otherwise. The character doesn't spend much time on screen, so it's up to Gaap to tell us his sins.

Hayley Considine as Jean Simons. She's played as an oblivous wife and mother.

Lillie Mae Law as Laura Simons. She's quiet and sullen, and looks like a seriously disturbed child, possibly from being molested repeatedly by dear old dad.

Steve Garti as Bob the bartender. While the character isn't exactly played like an out-an-out racist, he's more like the dismissive "they all look the same to me" guy. Kind of like me, if I'm being honest.

Vickie Binnis plays Julie the barmaid, but this seems like a thankless role if all she really does is provide some exposition.

The Mood

The atmosphere is dreary, a cacophany of dirty rooms, dusty streets and hazy skies. We're made to sit through the drudgery of Niqa's life, and things don't improve much after meeting Gaap.

All in all, it has a very low-budget horror movie vibe, along with jarring sound effects, which I totally enjoyed.

What I liked

Vibe between Niqa and Gaap. It's heartwarming, that's what it is. Niqa has multiple breakdowns, and Gaap is supportive in his ham-fisted way.

Reappearance of the symbol from White Bear and Bandersnatch. I just about screamed when Nida found this talisman. This is rapidly turning out to be another Black Mirror staple.


Niqa's flights of fancy where she imagines herself violently killing annoying co-workers and customers, were tremendous fun to watch.

The subplot of National Front and Niqa being a potential target, really added to the narrative tension.


The entire subplot of Keith Hooligan's death, from his ham-fisted attempts to seduce Niqa, to his resigned acceptance of his fate, was just so yikes. Loved it!

We get to see one of those metal dogs again! Though this time it's in the form of a flash-forward and it's so brief, you blink and you miss it.


The car chase which ended in Niqa taking the hammer to Smart and ultimately getting caught by Fisher, was a thrilling plot point for me. This was so well done, on multiple levels. The music, the night lighting, the acting... good shit.

I loved the ending, where Niqa and Gaap actually choose to hang out with each other for eternity. It's so sweet, honestly.

And even that final conflagration. It's a downer ending sure, but done so gracefully.


Generally, the writing, and the dialogue. It feels like a lot of love and care was put into characterization.

What I didn't

This episode was all about the supernatural. If I'm tuning in to Black Mirror, I wanna see a Black Mirror episode, dammit. That means computers, phones and shit.

Are we supposed to believe only a few minutes passed between braining Keith Hollligan and then that entire fight sequence between Niqa and Chris?

Conclusion

Demon 79 had so much going for it - engaging characters, nice story, rich visuals. Unfortunately, it just didn't fit into the Black Mirror universe. Where's the tech angle? Where's the media angle? Nada. Zilch. Not that I didn't enjoy it, mind you. Just based on its own merits, Demon 79 was intensely watchable.

My Rating

8 / 10

Final Thoughts on Black Mirror Series Six

Series Six is a big fat disappointment, and that's me being charitable. Too many episodes don't fit the mold of a Black Mirror offering, and that hurts the entire series as a whole. Which really is a pity considering standouts in this series such as Joan Is Awful and Beyond the Sea. It feels like the showrunners are just going through the motions at this point, and running out of ideas for the Black Mirror concept. Demon 79, for example, seems like a nice piece of work but with very little to mark it as a Black Mirror episode.

Look in the mirror, Series Six!
T___T

Sunday, 28 September 2025

Film Review: Black Mirror Series Six, Redux (Part 1/2)

It's time to resume this review of Black Mirror Series Six. And while I've been largely complimentary of this installment so far, things are about to get significantly less positive.

The fourth episode is Mazey Day, and really, it's just the name of one of the characters. Given the lack of creativity shown thus far with regard to episode titles, I guess I shouldn't be too surprised, much less disappointed.

The Premise

The story is set in Los Angeles, USA, and centers around a freelance photographer. She and some others violate the privacy of a celebrity, Mazey Day, only to find a nasty surprise waiting for them.

The Characters

Zazie Beetz is her bubbly engaging self as Bo, a photographer who has an attack of conscience. I've always found her immensely watchable in films like Deadpool 2, Joker and Bullet Train. This time, she gets to show off some acting chops by portraying Bo as someone who's desperate for work, but not willing to compromise her ethics all the way. She's also probably the most obvious shutterbug around, having been caught twice in this episode while trying to be sneaky. I found myself wondering how this character survives this profession!

Clara Rugaard as Mazey Day, an actress who later on becomes a werewolf. The portrayal was kind of bland, to be honest. Just not very compelling, though perhaps the blame can be laid at the feet of whoever wrote the script.

Danny Ramirez as Hector. Not really sure what the character's function was here. Just another warm body for the werewolf to savage?

Robbie Tann as Whitty, a sociopathic jerk who likes to run his mouth. Some of the stuff he says is cold and unnecessarily cruel but contains some uncomfortable truths.

James P. Rees as Duke, a sleazy shutterbug who tries to take upskirt pics of Sydney Alberti. Rees plays him as a mouthy dirtbag, and no tears are shed when the character eventually gets eaten.

Jack Bandeira has a dual-purpose character, Terry the talkative bartender. He's chatty (and blond, and blue-eyed, astonishingly good-looking, really) and provided Bo with a lot of plot-pertinent information. Later on, he also functions as a casualty in the diner, accidentally shot dead by the lawman, no less.

Kenneth Collard as Dr Dmitri Babich, a celeb doctor who's into alternative medicine. Didn't do much with a largely expository role.

Corey Johnson as Clay the police officer who is, quite amusingly, really into eating chicken. I do like it when characters ramble on about stuff that doesn't necessarily tie in to the plot. It feels relatable, somehow.

David Rysdahl is Bo's housemate Nathan. He's played as passive-aggressive and annoys the hell out of me. Which I suppose is pretty effective acting because it's a major plot point that Bo wants to pay Nathan her late share of the rent.

Charles Hagerty plays Justin Camley in an extremely short appearance, as a TV actor who gets caught having a tryst with a gay partner. He appeared all of a few seconds, but I thought the actor was worth mentioning because he made the character's desperation and frustration really shine through.

Patrick Toomey is Nick, the one who pays these shutterbugs to take incriminating photographs for his scandal reporting. Toomey plays this limited role with the appropriate amount of smarminess.

Lucía Pemán also makes a short appearance as actress Sydney Alberti, who has a sex tape leaked. The purpose of this character is pretty much just to have Whitty and Duke show off what douchebags they are.

The Mood

It's a dusty atmosphere in the sunlight, but soon switches to a dim, dark color palette as the story begins taking place in the night. And soon enough, it turns into a high-stakes game of cat-and-mouse with a ravaging beast. Basic monster movie fare, really.

Later on, it's a drawn-out tragedy when Bo gives Mazey a gun to kill herself with.

What I liked

I groaned and cheered in equal measure when Whitty met his grisly end after refusing to escape while he could, and continue to take pictures of a still-transforming Mazey. The trope of passion for his craft outweighing common sense was strong here, but also because the character was such a jerk, watching him get wrecked was cathartic.


Whitty and Duke finding out about Cedarwood Spa Retreat by placing a tracker on Hector's bike. This is so character-appropriate!

The unnamed actor who players the security detail that slashes Bo's tyres is so suitably menacing and nonchalant at the same time. I heartily approve.


The episode ends with Bo taking a photograph after giving Mazey the means to off herself. It's what got her into this mess in the first place, and this is darkly poetic.

What I didn't

The showrunners might not have meant to draw attention to this tattoo under Bo's navel, but draw attention they did and now I want to know why. It's never addressed. I'm a Chinese man and I know the character for "snake" when I see it. Question is, what significance does this have? Or was this to tell us that Bo, like too many non-Chinese educated people, have an unfortunate habit of inking words on their skin in languages they can't even read?


Bo finds out where Mazey is staying by accidentally running into a food delivery worker who just happened to deliver to that address. Seems a bit convenient, no? And Bo didn't even have to pay for the information, that's the best part.

It doesn't make sense that Bo wouldn't just take the 500 that Justin offered, for her photos. It's not the first time she's working for that cheap bastard Nick, so she has to know he's going to low-ball her.

Speaking of things that don't make sense, how does Cedarwood have this big-ass fence that can be defeated by digging under the fence, just like that? The soil is even conveniently loose!


This was not a tech episode, though a case could be made for it being centered around media. Still, this detracts from Black Mirror being less science fiction and more supernatural horror. I can't say I approve, really. Black Mirror has been around long enough to have its own identity. It's not like Black Mirror is in the stages of infancy, still trying to figure out what it is.

Conclusion

This episode had decent scares, a decent plot and an OK ending. It, however, doesn't really seem to qualify as a Black Mirror episode due to the supernatural elements involved.

My Rating

6 / 10

Next

Demon 79

Sunday, 1 June 2025

Rise of the Bike-sharing Phenomenon, Redux

Almost exactly seven years ago, I wrote about bike-sharing apps and how they were making their presence felt in Singapore.

Those were some turbulent times, in the context of the bike-sharing industry, at least. Users flagrantly mistreated the bikes they rented. Due to problems arising from abuse of bicycle privileges and irresponsible parking, the Land Transport Authority (LTA) eventually mandated that bike-sharing companies would have to implement a QR code-based geo-fencing for designated parking, and gave existing bike-sharing companies a grace period in which to do so.

Cyclists in Singapore.

By the end of 2019, the majority of the companies I was talking about back then, have either been absorbed by bigger companies or left Singapore altogether due to challenges both technical and financial.

New players

As of 2025, two main companies remain. Anywheel was founded in 2017, and was a relatively small player at the time. It was only in 2019, when the dust cleared, that it began to establish itself as a major player. HelloRide, in contrast, was founded just a few years back in 2022 and only as recently as last year, received a full license to operate in Singapore

Having downloaded the Ofo app in the past, I gave the Anywheel app a go. The difference wasn't huge. Like the Ofo app, it basically included a feature to scan a QR code on the bike to unlock it, a way to relock and park the bike, and a payment interface.

Designated parking spaces.

The only real difference was the parking feature, and all it really involved was scanning a QR code at the parking spot. This is mystifying, because it doesn't strike me as anything the previous bike-sharimg operators wouldn't have been able to do. In light of this, it appears that at least part of the reason that the new players managed to meet the requirements at all, was with the cooperation of the LTA.

Same same but different?

Things seem to have improved. I no longer see bicycles thrown around nilly-willy. Once in a long while, I might see an abandoned bicycle in a canal, but these seem fewer and further in between, as compared to the old days. Perhaps Singapore as a society has grown. One can only hope.

Abandoned bicycle in canal.

And while there are markedly fewer choices, there's also a whole lot less chaos. Less mess, an improved technical implementation, and an overall better experience for the consumer. I am optimistic.


Let's ride!
T___T

Wednesday, 3 April 2024

Web Tutorial: Easter VueJS Puzzle, A.I Edition

Easter's come and gone! With that, I want to introduce an exciting new spin on the Easter VueJs Puzzle Game web tutorial I did in 2020. Instead of using one single picture, we are doing to use a dynamically generated image from Open AI's API.

We'll be using PHP, and you will of course, need to sign up for a developer account at Open AI, get an application key and so on. And then you'll need the code from the existing repository here.

After that, we change the filename to a PHP extension, and start adding PHP code.
<?php

?>


<!DOCTYPE html>
<html>
    <head>
        <title>Easter Puzzle</title>


We begin by declaring variables key, org and url. key is the api key you will have been given, org is your account id, and url is the endpoint URL for OpenAI's image generation API.
<?php
    $key = "sk-xxx";
    $org = "org-FUOhDblZb1pxvaY6YylF54gl";
    $url = 'https://api.openai.com/v1/images/generations';

?>

<!DOCTYPE html>
<html>
    <head>
        <title>Easter Puzzle</title>


We follow up by declaring the headers array. In it, we use key and org to identify ourselves, and ensure that the content-type property is set to JSON.
$key = "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";
$org = "org-FUOhDblZb1pxvaY6YylF54gl";
$url = 'https://api.openai.com/v1/images/generations';

$headers =
[
    "Authorization: Bearer " . $key,
    "OpenAI-Organization: " . $org,
    "Content-Type: application/json"
];


Then we declare data as an associative array. model specifies the AI model we will be using. prompt can be anything that you want the engine to use for generating the image - in this case I have a string telling it I want a picture of Easter eggs. n is the number of images to generate, and in this case we only want one image. size can have a range of different values, and I'm going to specify a square. For response_format, you can get the API to give you the image as a string of serialized code (but then we'd have to decode on our server, so screw that) or just give us the URL to that image that will be stored on their server.
$headers =
[
    "Authorization: Bearer " . $key,
    "OpenAI-Organization: " . $org,
    "Content-Type: application/json"
];

$data = [];
$data["model"] = "dall-e-2";
$data["prompt"] = "A picture of Easter eggs.";
$data["n"] = 1;
$data["size"] = "1024x1024";
$data["response_format"] = "url";


We then use cURL to access the endpoint. If there's an error, we print it out.
    
$data = [];
$data["model"] = "dall-e-2";
$data["prompt"] = "A picture of Easter eggs.";
$data["n"] = 1;
$data["size"] = "1024x1024";
$data["response_format"] = "url";

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);


$result = curl_exec($curl);
if (curl_errno($curl))
{
    echo 'Error:' . curl_error($curl);
}


If not, run json_decode() on result, and grab the url of the image, setting it as the value of imgURL. Finally, use curl_close() to sew things up.
    
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$result = json_decode($result);
$imgeURL = $result->data[0]->url;

curl_close($curl);    


That's the easy part! Now we get to another easy part - setting the image as the puzzle image. In the CSS, modify the CSS class piece. Instead of the previously hardcoded image, use imageURL. And ensure that the background-size property is set to 500 by 500 pixels, because your image is actually 1024 by 1024 pixels.
.piece
{
    width: 100%;
    height: 100%;
    background-image: url(<?php echo $imgeURL; ?>);
    background-repeat: no-repeat;
    background-size: 500px 500px;
}


Now if you run this, you should see a new image come up.


But uh-oh, there's a delay in image loading. The timer has even started running down even before the image is done loading.


That's only to be expected. Your browser code will run faster than the server code sending data to OpenAI and back. And depending on the speed of OpenAI's server where the image is stored, there's going to be some level of lag. What we need to do is mitigate that. That's the hard part. First, we change this message in the reset() function. Originally, it reads "Time elapsed", but now we will switch it to a notice for the user to wait.
reset: function()
{
    this.stopTimer();
    this.seconds = 100;
    this.btnText = "RESET";
    this.message = "Please wait while image loads...";
    this.startTimer();


Also, now the reset() method will have a parameter, delay. What do we do with this value? Well, we pass it in as an argument when calling the startTimer() method.
reset: function(delay)
{
    this.stopTimer();
    this.seconds = 100;
    this.btnText = "RESET";
    this.message = "Please wait while image loads...";
    this.startTimer(delay);


This means we also need to change the startTimer() method. Firstly and most obviously, we introduce the parameter delay.
startTimer: function(delay)
{
    if (this.timer == undefined)
    {
        this.timer = setInterval
        (
            () =>
            {
                this.seconds = this.seconds - 1;
                this.message = "Time elapsed";

                if (this.seconds == 0)
                {
                    this.stopTimer();
                    this.btnText = "REPLAY";
                    this.message = "Better luck next time!";
                }

                if (this.checkIncorrectPieces() == 0)
                {
                    this.stopTimer();
                    this.btnText = "REPLAY";
                    this.message = "Congratulations!";
                }
            },
            1000
        );
    }
},


And then we wrap the entire section involving the setInterval() function, within a callback which will be used in a setTimeout() function, using delay as the duration. And inside it, we also set the message property value to "Time elapsed".
startTimer: function(delay)
{
    if (this.timer == undefined)
    {
        setTimeout
        (
            () =>
            {

                this.timer = setInterval
                (
                    () =>
                    {
                        this.seconds = this.seconds - 1;
                        this.message = "Time elapsed";

                        if (this.seconds == 0)
                        {
                            this.stopTimer();
                            this.btnText = "REPLAY";
                            this.message = "Better luck next time!";
                        }

                        if (this.checkIncorrectPieces() == 0)
                        {
                            this.stopTimer();
                            this.btnText = "REPLAY";
                            this.message = "Congratulations!";
                        }
                    },
                    1000
                );
            },
            delay
        );

    }
},


Then we ensure that when we call reset() upon a page load, it has about a 5 second delay.
created: function()
{
    this.reset(5000);
}


But in the HTML, this value will be 0 when we click the button to run reset(). Because if that button is being clicked, that means the user just wants to reset the game and the image has already been loaded, so there's no need for a delay.
<div id="timeContainer">
    <h2>{{message}}</h2>
    <h1>{{seconds}}</h1>
    <button v-on:click="reset(0)">{{btnText}}</button>
</div>


Now we see this happen! And the timer doesn't count down until...


...the entire image is loaded! If you click the RESET button, the pieces rearrange themselves and the timer starts counting down immediately!


One more feature...

What if you wanted to just change the image altogether? Well, the straightforward thing to do would be to refresh the browser, but it's still considered good service to add a button.
<div id="timeContainer">
    <h2>{{message}}</h2>
    <h1>{{seconds}}</h1>
    <button v-on:click="reset(0)">{{btnText}}</button>
    <button>NEW IMAGE</button>
</div>


Use the v-on:click binding attribute and set it to run the refresh() method.
<div id="timeContainer">
    <h2>{{message}}</h2>
    <h1>{{seconds}}</h1>
    <button v-on:click="reset(0)">{{btnText}}</button>
    <button v-on:click="refresh">NEW IMAGE</button>
</div>


Add the refresh() method to the methods object. In it, you set the message property to a friendly warning.
methods:
{
    refresh: function()
    {
        this.message = "Please wait while new image loads...";
    },

    reset: function(delay)
    {


Then you run the stopTimer() method, and finally refresh using the built-in JavaScript reload() method.
methods:
{
    refresh: function()
    {
        this.message = "Please wait while new image loads...";
        this.stopTimer();
        window.location.reload();

    },
    reset: function(delay)
    {


There you go. Click the NEW IMAGE button, and "Please wait while the new image loads..." should appear briefly before the page reloads entirely!


Final words, and hope you had a Happy Easter!

Well, this has been fun. A.I is full of interesting new possibilities, and with this little exercise today, we've just scratched the surface.

Piece be with you,
T___T

Tuesday, 5 March 2024

Film Review: Black Mirror Series Four, Redux (Part 3/3)

Next one is a fun one... Black Museum.

The Premise

The titular Black Museum is a place where tech arctifacts and the horror stories that come with them, are displayed. Rolo Haynes is the proprietor, and he narrates some of these stories with a shocking twist at the end. Think of this episode as an episode of mini-episodes.

The Characters

Douglas Hodge is the narrator and antagonist Rolo Haynes. Where do I begin? This guy knocked it out of the park as the loathesome opportunistic sleazebag Haynes, what with the griping about human rights and off-color commentary. Can't give him all the credit, of course, the writing played a big part, but he carried it so well.

Leticia Wright as Nish. Wright recently played Shuri in Black Panther and Wakanda Forever. Here, she plays much the same character - plucky, snarky, good with tech. However, she also adds a more emotional bent to her character, and she's great to watch in the final quarter of the episode.

Daniel Lapaine as Dawson. Guy starts out as a well-meaning doctor who falls prey to the unintended side effects of tech. The actor did a pretty believable job of portraying, with his limited screen time, a healer-turned-psycho. Can I just say the actor's name is oddly apt? Lapaine. Heh heh.


This shot of him lying in a coma with a hard-on just seems very representative of what Black Mirror is as a whole - technology that is touted to improve our lives, turns out to have nasty side effects due to human beings being flawed and using it in terrible ways..

Emily Vere Nicoll as Dawson's concerned and long-suffering girlfriend, Madge. She really doesn't have much to do except look concerned, look repulsed and appear naked. I'm kind of sorry for the actress, to be honest.

Aldis Hodge plays Jack, the single father who faithfully raises his kid after the death of the kid's mother. He does come across as a man admirable in his consistency towards Carrie.


However, there's a limit to how much he can sacrifice and Black Mirror has a way of finding that limit. In particular, having Carrie's consciousness uploaded to his brain, where he has to hear her constantly, and lose his privacy twenty-four seven.

Alexandra Roach delivers a compellingly tragic performance as Carrie Lamasse. This one gave me mixed feelings. On one hand, I sympathized with the horror of her situation, especially when almost none of it is her fault exactly. On the other hand, I can't help but feel that if Carrie had just learned to be a little less noisy and less of an annoying backseat driver, it might not have come to this.

Yasha Jackson camps it up as bitchy new wife Emily. Sleek, sexy and venomous. She's not a nice person, but put in a situation though no fault of her own, and doesn't handle it at all well. Who would, really?

Babs Olusanmokun as Clayton Leigh. Stoic family man. Though I feel like the part near the end where he just drools and stares off into space is his best acting.

Amanda Warren as Clayton's wife Angelica. She does this nice emotional bit with Clayton during a prison visit - very heartrending. After that, the actress is basically reduced to cameos.

The Mood

It begins as a sunny day in some desert, but soon gets into the confines of the titular Black Museum.


The little flashbacks and stories span between mood whiplashes. Sometimes it's all nice and breezy in the day, and then flashes to a nightmare of blood and violence. A lot of it can be claustrophobic especially since a couple stories revolve around someone's consciousness being trapped in either a confined space or an inanimate object (or inside a living person but with no agency).

What I liked

All the little Easter Eggs that appear in this episode that harken back to previous episodes. Black Mirror has always had them, but this episode seems to have Easter Eggs to every single episode in Black Mirror ever, up to this point. We have news tickers referencing multiple previous episodes and displays in the museum doing the same (mugshots, exhibits, etc). The names of the mice are Hector and Kenny, two of the main characters in Shut Up And Dance. And near the end, we see a sly reference to the episode Be Right Back, when it's revealed that the name of the nearby gas station is BRB Connect!

And of course, there's TCKR, the company being featured in San Junipero. They feature pretty strongly here, too.

Nish charging up her electric car using solar power is a fun nod to Nosedive.

Who wrote Rolo's dialogue? Whoever they are, they deserve an award.

Eventually, he dick-pukes a little baby paste up her wazoo which takes hold. Before you know it, out pops a boy. Boom. They're a family unit.


The part where Nish whispers "Happy Birthday" to her dad is really heartwarming, not that it has anything to do with the overall plot.

The first mini-story was great. Started out as useful tech, segued into the applications for sex, and turned out to have tragic consequences.


I especially love the second mini-story where Jack loses his privacy and Carrie loses her agency. This is very characteristic of Black Mirror. In particular, Carrie's utterly horrible fate is to be trapped in an inanimate object, being able to only say "Monkey loves you" and "Money needs a hug".


That final mini-story now... that takes the proverbial cake. But it would have been a lot less flavorful without the earlier two stories giving it context.

What I didn't

Clayton Leigh is a little too calm when being executed. Granted, I don't know exactly how inmates on death row typically act, but it feels like it shouldn't be that stoic.

Conclusion

Black Museum has just about everything you could want in a Black Mirror episode - swearing and violence, human beings being dicks to each other and abusing technology in the worst ways possible, call-backs to previous episodes, nasty twists at the end (and because there are different stories in this one, -multiple- different nasty twists). I really enjoyed this one.

This is vintage Black Mirror, all right. Extra emphasis on human beings being scum. Love it!

My Rating

9.5 / 10

Final thoughts on Black Mirror Series Four

The first half of Series Four was decent, with Crocodile being one of my least favorite episodes while still managing to be watchable. 

However, Series Four really picked up its game with the latter half with Hang The DJ and Metalhead. And it had a hell of a strong finish with Black Museum. An improvement on Series Three, for sure. This just keeps getting better.

Monkey loves you,
T___T

Sunday, 3 March 2024

Film Review: Black Mirror Series Four, Redux (Part 2/3)

On to the next episode: Metalhead!

The Premise

We follow the trials and tribulations of a middle-aged woman named Bella, who is being hunted by - get this - a robotic dog.


Were you expecting more? Too bad, then, this is all there is. Honestly, what else do you need?!

The Characters

Maxine Peake does a fantastic job as Bella. Plucky, tenacious and compassionate. I was rooting for her to survive, but this is Black Mirror, after all. That being the case, this was a heroine I could really get behind. 

Clint Dyer as Tony. The weary black dude who gets killed in the first few minutes.

Jake Davies as Clarke. Jumpy fella. Comes across as someone who wants to do the right thing but has to be persuaded by deal-sweeteners.

The Mood

Dark, man, it's dark. Visuals aside, this is probably the most depressing Black Mirror episode ever, period. All hope goes out the window. Humanity is doomed.

What I liked

The fact that this episode was filmed entirely in monochrome. Think about it - dogs are color blind.


Holy shit, the Dogs are terrifying. Just the fact that they look like large iron roaches already made my skin crawl. Add the penchant for wanton violence and, well, dogged persistence, make them an extremely scary threat. Not to mention that part of their arsenal includes tracking devices embedded in shrapnel bombs, and short-range bullets! Their silence and obvious intelligence, as well as the inherent wrongness about the way they move, serve to make them intensely creepy in addition to being dangerous.


Not just their weapons - the little devices they have in their "paws" that enable them to commandeer vehicles and hack into houses. The plot points really revolved around those too!


The scanning from the dog's point of view is grainy, monochrome and nightmarish. Nice work!

I really liked the way Bella outsmarts the AI of the Dog hunting her and even takes the fight to the Dog. This gave me shades of Sarah Connor in Terminator.

Bella's tearful farewells on the comms are really poignant. They bring up an extended cast whom we never hear from (much) but add to the backstory.

What I didn't

If I had to quibble, this was thematically one of the worst fits in the Black Mirror universe. I mean, normally we see hints of advanced technology and humans screwing it up due to being human. This one was outright apocalyptic. Doesn't make it less fun, but I watch Black Mirror for certain things, y'know? There wasn't any of it here.

Conclusion

Not too heavy on the social commentary. There is basically one main character in here. If you're looking for an action-survival hour, this episode ain't too bad at all. However, if what you really want is some urban drama revolving around tech, maybe not so much.

But hey, I enjoyed it. The monochrome really reminded me fondly of Sin City.

My Rating

9 / 10

Next

Black Museum

Friday, 1 March 2024

Film Review: Black Mirror Series Four, Redux (Part 1/3)

It's time to continue with the review of Black Mirror Series Four!

We have the next few episodes lined up here, and trust me, these are great. And fear not, I'm gonna tell you why as we proceed on through this review. Suffice to say, Black Mirror Series Four really ups its game midway through this offering, and the latter three episodes reflect brave and refreshing choices.

The Premise

In an alternate reality where a dating system promises a 99.8% compatibility rate, two participants brave all odds to stay together despite the system deciding otherwise.


At the end of the entire episode, we see that this is about a dating app, but in a more meta context.

The Characters

Joe Cole as Frank. Didn't I see this guy in Peaky Blinders? Whatever, he's good here as an everyman with self-deprecating wit.

Georgina Campbell as Amy. Charming, beautiful, with a very healthy sex drive and great sense of humor.

George Blagden as Lenny. A hunk with a penchant for exhaling loudly. Just a little character quirk that annoys Amy no end.

Gwyneth Keyworth as Nicola. Supreme sourpuss, with all the charm of a blunt battle axe. The actress does a pretty decent job of making her unlikeable.

The Mood

Everything seems beautiful and glamorous in this episode, a sure sign that something is not quite right. It's all just so... neat.


I mean, even the houses the participants stay in, look like little doll houses!

What I liked

Whenever Amy and Frank are together in the same scene, even as a shy awkward couple or a pair of daring co-conspirators, the chemistry is amazing. I can totally buy them as star-crossed lovers. That is some great dialogue right there, and the two of them just carry it so well.



The design of the little devices that participants have to carry around. They're just flat circular palm-sized things, which matches the logo of the system - two interlocking circles! Pretty apt.

The recurring theme of the rocks skipping an exact number of times. SOmething I only picked up on at the second viewing, a hint that this is a computer simulation.

The twist at the end - that it's a simulation - was so cleverly done. And we see exactly how the 99.8% figure was achieved.

What I didn't

The episode title. These seem to get increasingly nonsensical in Series Four. Like, what the heck does "Hang the DJ" even mean?! It's just the refrain of the song they play at the end.

It's a little weird that the participants seem to have literally nothing else to do than wait for their next partner. Then again, perhaps this is a clue that the whole thing was a simulation.

Conclusion

This episode was not bleak, and even ended on an uplifting note. The twist, however, was very Black Mirror and I approve heartily.

My Rating

9 / 10

Next

Metalhead

Sunday, 2 July 2023

Confidence is overrated, and here's why, Redux

Roughly four years back, I wrote a blistering piece on how confidence is overrated. I stand by everything I said back then, but there are nuances to it. There are cases where projecting confidence actually helps your case, even if that confidence is not being backed by any substance. Confidence cannot be a substitute for actual substance. In that sense, it absolutely is overrated. I would rather be operated on by a cautious but extremely qualified surgeon who is constantly second-guessing himself (or herself) than some supremely confident upstart.

But in cases where the confidence is more important than actual skill, those are the cases where confidence is the skill.

John Cena

Someone recently told me told me that "John Cena speaks fluent Mandarin". Given that I had never heard this individual speak in anything but English, I was naturally skeptical - how would this guy even know what fluent Mandarin sounds like? Nevertheless, I had to check out this claim, and came across this video clip on YouTube. Somewhere in the middle, John Cena starts (or attempts) to speak Mandarin.


If anyone reading this blog is actually a Mandarin speaker, I apologize for what I just put you through. Yes, that was a long, long way from being "fluent". In fact, it was extremely hard for me to understand Cena's butchered version of Mandarin.

But as I watched on, my ears burning in agony, I noticed one other thing.

Despite his obvious deficiencies in the language, John Cena maintained a big smile as he uttered the gibberish they called "Mandarin". As he regaled the audience with his horrible Mandarin, the massive shit-eating grin on his face never wavered. He did not hesitate, or show any signs of being anything less than confident. And the non-Chinese crowd just ate it up.

This is the lesson I got from this. John Cena knew his Mandarin was crap. But it didn't matter. He wasn't there to teach linguistics, engage in a debate in Mandarin, or read a documentary. He was there to entertain, and by God, that's what he did. For the largely monolingual crowd (this being the USA, that's a safe assumption), it didn't matter either.

The confidence that John Cena projected, was the skill. Not his Mandarin, which was rubbish.

That job interview

I have mentioned before my habit of attending job interviews even though I have no intention of taking the job, just for the practice. I don't do it much these days, but there was a time I was doing it constantly.

At one such interview for the position of a Software Engineer, I went into the interview and did my thing (at this point I could pretty much do it with my eyes closed) and at the end of it, my interviewer asked me why I was so confident. He'd noted that my resume didn't showcase any skills or achievements that would have been special considering my years of work experience. There was nothing in it that warranted that air of confidence I projected. (If nothing else, I'm very honest in my resume and I flatly refuse to inflate anything).

Nerves of steel.

Shucks, I wasn't sure what to tell him. That his company was the tenth I had interviewed at this month alone? That I'd already been rejected by companies far bigger and more prestigious? That what he saw as supreme confidence was simply a case of me being inured to interview anxiety simply through constant exposure? And that since I did not lie on my (admittedly mediocre) resume, I felt completely able to back up everything on it?

Then he surprised me. He asked me if I would be open to a Managerial position instead. He explained that as a Software Engineer, I would probably be totally mediocre and he had many good candidates he was already considering. But what he needed was someone who could project the same confidence I did, to customers. Any technical work would be handed by the Software Engineers, so all he really needed was my confidence, and the actual substance would be provided by the technical team.

No, I didn't wind up working for him. By the time he came back to me, I was already working somewhere else.

But you see, this is another example of confidence actually being the skill rather than the supplement.

Don't get me wrong...

Confidence is still overrated. We cannot afford to think of confidence as a crutch for any deficiencies.

What confidence can do, is amplify what you're already capable of. It's a good complementary attribute. Conversely, lack of confidence can negatively affect your actual qualities.

What makes you confident?
T___T

Thursday, 25 May 2023

Film Review: Black Mirror Series Three, Redux (Part 3/3)

The last episode, Hated by the Nation, is styled like a police procedural and reminds me strongly of movies like Se7en, with a tech bent. It also boasts a really large cast.

This is the quintessential Black Mirror in the sense that the evils of Social Media and cyberbullying is central to the plot. In fact, it's like a violent and explosive version of The National Anthem.

The Premise

It's a few years into the future, and the extinction of bees has given rise to a tech creation known as Autonomous Drone Insects (ADIs). These tiny robots are used as an instrument for murder, with Social Media as a trigger. A nasty twist at the end ensures that few remain unscathed, either physically or psychologically.

The Characters

Kelly McDonald as Karin Parke. She's a jaded and cynical veteran of the force, and a divorcee. Every sarcastic quip and world-weary expression McDonald throws out is gold. For real, the dialogue is excellent. And McDonald delivers like a pro.

Liza: What about the others who chipped in? Are you going to tell them off too? I didn't do anything!

Karin: Start a thread about it.


Now that was a performance I truly enjoyed. She puts a lot of people in their place just with a look or a carefully-placed stinging remark. Which makes it all the more poignant when it's quite obvious that the events have somewhat broken her.

Faye Marsay as Blue Coulson. A former idealist who wants some field experience. Coulson is tech-savvy and does a lot of the investigation regarding how the "Game of Consequences" works. She's a great foil to the bitter jadedness of Karin Parke.

Benedict Wong as Shaun Li from the National Crime Agency. I just about fanboyed out loud when the Sorceror Supreme appeared on screen! In here, he's a straight-laced, growly-voiced semi-antagonist, serious as a heart attack.

Jonas Karlsson plays the ADI engineer Rasmus Sjoberg. He provides, with earnestness, most of the exposition around the ecology of ADIs and the tech behind it.

Joe Armstrong as Nick Shelton. Other than being a victim, I'm not sure what use he was to the plot.

Elizabeth Berrington as Jo Powers. She's a provocative journalist who writes vicious articles that punch down, and punch down hard. This makes her a publicly hated figure, and she's the first victim of the hashtag. Berrington plays her as a woman with an extremely thick skin who weathers the constant vitriol hurled her way, letting everything roll off her.

Charles Babaloa as Tusk. An obnoxious black rapper who becomes the next target of public hate and thus dies a grisly death.

Ben Miles makes a delightfully foul-mouthed appearance as Tom Pickering, the slimy and heartless politician. We see him burst into expletives under pressure, and it is so fun to watch.

Holli Dempsey as Clara Meades. She's presented as a feckless young woman who earns public hate due to a silly and disrespectful prank.

James Larkin as Simon Powers, Jo's husband. Now, this role is tragic. Larkin plays him as a traumatized husband who had to watch his wife kill herself in violently crazed fashion.

Georgina Rich as Tess Wallander. She's a soft-spoken individual who was a victim of cyber-bullying, and the original inspiration for the deadly hashtag.

Duncan Pow as Garett Scholes. Some psycho who dispenses what he calls justice... but with the tech skills to actually make it happen. We don't see much of him except toward the end, and even then there's not all that much of him to form a strong opinion.

Vinette Robinson as Liza Bahar. She's a pre-school teacher who is found to be using the hashtag without really understanding the consequences but otherwise does not seem to be a horrible person. Later on, Scholes delivers her comeuppance and I can't help but feel that perhaps it was a bit much. It was probably deliberate, to show us just how disproportionate extremism can be.

Esther Hall as Vanessa Dahl. What was she even doing taking up space on-screen? What a waste. She existed for no other reason than to be the verbal punching bag for other characters, mostly Karin.


The Mood

It's a big city vibe, but with grim undertones to it. Karin and Blue pretty much nail it with their conversations while driving. The surroundings are bustling and lively and the investigative feel of the entire episode is pretty pervasive.

What I liked

The red herring in the form of Jo's cake was clever. And yes, like her husband said, "very creative".


The scene where Karin and Blue initially have a conversation in the former's car, contains a reference to the Series Two episode, White Bear. And it carries the same vibe that Brad Pitt and Morgan Freeman had in Se7en, with Kelly McDonald playing the part of the jaded veteran, and Faye Marsay being the earnest newbie who just wants to make the world a safer place.

I thought Tusk's death was particularly creative. Gotta see it to appreciate it.


I like the display where several ADIs fly in formation to form Granular's logo. It even rotates!


The screenshot doesn't do it justice, but the interior of Shaun's NCA-issued car is really impressive!


That sequence of the ADIs leaving their hive to wreak bloody murder, is both poetic and terrifying.

That entire episode, along with the final twist, is very characteristic of Black Mirror. The horrors of Social Media, and how people are utter dicks to each other. In particular, how people don't stop using the hashtag even after finding out what it does, and actually pile it on. This makes it really hard to sympathize with them later on.


And later on, when Karin and Blue wander through that hall filled with bodybags of victims, the sheer bleakness of the shot is iconic.

What I didn't

The format of having the episode framed by Karin as a narrator, felt unnecessary. The ending was also pretty ambiguous. This episode could have worked better as a full-length movie, with perhaps a proper resolution. As it was, it was already about 90 minutes in length.

Wait, if the ADIs attack based on facial recognition, couldn't potential victims just mask their faces for protection? Isn't that exactly what Scholes does at the end? Why the need for that sequence regarding the bunker to protect Pickering? This seems like quite the plot hole.

Conclusion

This final episode really rounded up Black Mirror Series Three really well. While the cast just seemed a little larger than it really needed to be, the snappy dialogue and tension-laced action absolutely did it for me. This is a great addition into the franchise despite some totally superfluous bits.

My Rating

9 / 10

Final Thoughts on Black Mirror Series Three

I liked Series Three as a whole. After the slight disappointment that was Series Two, Black Mirror came back strong with plenty of content, all the while staying somewhat true to what came before.

San Junipero was the standout, though in terms of storyline and vibe, it was very different from the entire Black Mirror universe. Still, it was a sweet love story that strongly resonated.

A close second was Nosedive and Shut Up and Dance. These were episodes that were very typical of Black Mirror, showcasing the ugliness of humanity, amplified by advanced (or in the case of Shut Up and Dance, not all that advanced) technology. Men Against Fire and Hated in the Nation were both strong action-packed offerings and gave me a satisfying conclusion to Series Three. And while Playtest wasn't (in my opinion) as good as the others, it was by no means a weak episode.

All in all, this was very, very satisfying.

#DeathToBlackMirror (heh heh)
T___T

Tuesday, 23 May 2023

Film Review: Black Mirror Series Three, Redux (Part 2/3)

This next episode is Men Against Fire, and deals with what looks like a post-apocalyptic world where the same Zed-eyes technology is deployed. This time, it's known as the MASS system and controls what soldiers see, hear and smell. This episode is actually very heavy on the action, though dread also plays a big part. The creep factor comes in midway through this episode.

The Premise

This episode centers around a soldier, named Stripe, who is initially tasked as part of a team effort, to eliminate a race of diseased humans named "Roaches". Things take a sinister turn when he discovers the truth behind the Roaches and has to live with his conscience.

The Characters

A very buff and good-looking Malachi Kirby plays Stripe, real name Koinage. He does OK as a soldier starting off enthusiastic and compassionate, and later on transitioning to a human being wracked by guilt. I didn't feel all that strongly about his performance because he kind of gets outacted by almost everyone he has a scene with.

Madeline Brewer knocks it out of the park in the role of Raiman. She's a soldier like Stripe, all tomboy bloodthirsty action-girl and cute as a button. The boisterous performance she puts up here, along with lewd commentary and good-natured roasting, it's really easy to see her as one of the guys despite her pint-sized figure. This is pretty much a supporting role, but it's done so well.

Michael Kelly as Arquette. If there's any way to instantly point to a character as the real bad guy, it's to cast the man who played Douglas in House of Cards, in this role. Kelly's dead-eyed gaze and soft-spoken affability make him a terrifying bad guy and utterly believable sociopath.

Sarah Snook as Medina, Stripe and Raiman's commanding officer. The script requires her to be matter-of-fact, dignified and steely, which she does really well. Up until her sudden death.

Ariane Labed cuts a tragic figure as Catarina. She delivers the much-needed exposition before her death at Raiman's hands.

Loreece Harrison as Stripe's fantasy girl. That was the source of the sex and nudity in this episode, but she's not just a pretty face. The smile on that face is sometimes subtly unsettling, and I'm not sure if that is deliberate. Kudos if so!

Kola Bokinni as Lennard. This guy is surly and mean. And that's all we actually see of him, which is a pity because so much more could've been done.

Francis Magee as Parn Heidekker. Magee plays him with solemn gravitas.

Simon Connolly as doctor. Just a bit part which felt totally unnecessary.

The Mood

In contrast with the previous episode, this episode is almost colorless. It's very drab, with everything viewed in very bleak hues. It paints the picture of a world with no life in it.



Even in the end sequence where we see Stripe's actual home against what he is seeing, in the "idealized" version, the most we get is pastel-white.

Definitely there's a whole lot of blood and violence in here and it feels like an action flick.

What I liked

The translator gadget is a nice touch.


The MASS technology allows images to be transmitted to the brains of the soldiers. This is a very cool, and important plot point. 3D-imaging too! Great for tactical decisions.


That scene where Stripe's dream sequence with his dream woman turns into a full-on orgy with several identical girls is both erotic and extremely creepy.

Medina's sudden death was a shock to me. Well played!

I like how Stripe's senses come back once his MASS implant is damaged, being able to smell grass and all. It's good foreshadowing on how the MASS system was obscuring the truth.

Arquette's entire conversation with Stripe at the end. Michael Kelly is in his element here. All that exposition and histrical background, leading up to the sadistic choice he gives Stripe. This was both a spine-chilling and awesome sequence.

What I didn't

The title of this episode doesn't seem to make any sense. What does "Men Against Fire" mean, exactly?

The faces of the Roaches just look like cheap plastic masks. Granted, this is probably budget constraints, but still.


Raiman sings that song How do I know what love is to annoy Parn Heidekker and ends up annoying me as well. Like, do we always have to hear this song? This is the third time it's appeared in a Black Mirror episode. The first time was nice, the second was amusing, but enough is enough.

The entire thing just felt a bit light in the story department. It was more of a creepy action movie than an actual Black Mirror episode.

Conclusion

Phew! This was one brutal episode. It's unflinching in its depiction of violence, showing us that women and children get gunned down, with the accompanying blood and guts. There's racial purity fanaticism at the core of this, and an examination of how augmented reality and propaganda can further some truly horrific causes. Remember, the villagers in the story don't have the excuse that they literally see Roaches as monsters.

Special shout-out to Michael Kelly. He really made this episode for me. What an actor. He just played a heinous psycho so well.

My Rating

8.5 / 10

Next

Hated by the Nation