Category Archives: Reviews

Movie Review: Songs of Paradise (2025)

3.5 Stars (out of 4)

Watch Songs of Paradise on Amazon Prime

Writer-director Danish Renzu’s love-letter to Kashmiri music history is vibrant and sweet. A charming cast recreates a world on the cusp of progress. Songs of Paradise is a delight.

Though not a biographical film, Renzu’s story is heavily inspired by the life of Raj Begum, Kashmir’s first female radio singer who died in 2016. Her achievements won her not just fame but also one of the Indian government’s highest civilian honors: the Padma Shree.

In Songs of Paradise, the character inspired by Raj Begum goes by the stage name Noor Begum (Soni Razdan). A framing device finds Noor in the modern day narrating her life to graduate student Rumi (Taaruk Raina), who’s writing a thesis on the history of popular music in Kashmir (and serving as an onscreen avatar for Renzu himself).

Before she started singing professionally in 1954, Noor Begum was simply Zeba Akhtar (Saba Azad). She grew up in Srinagar with her open-minded father (played by Bashir Lone) and conservative mother, Hameeda (Sheeba Chaddha).

Zeba earns money cleaning house for a music teacher, Master Ji (Shishir Sharma). Master Ji has no idea Zeba can sing, until he overhears her performing for a group of women at a family function. Recognizing her potential, Master Ji offers to train Zeba for free. He’s so impressed with her ability that he signs her up for the local radio station’s annual singing contest — something no other woman has done before.

“Freedom and progress were in the air,” the film notes. But not everyone is ready for change — not even Zeba herself. She hides her music lessons from her traditional mother under the guise of extra work hours. While Zeba enjoys her studies, she has no ambitions for them to lead to anything else. But she competes in the contest and wins decisively.

Her victory comes with a new job, performing songs live on the radio with the in-house band. Zeba’s presence causes upheaval in the male-dominated space, but soon everyone realizes the boost her heavenly voice gives the whole station. In trying to make the situation more equitable for her, Zeba champions change that makes things fairer for everyone, such as demanding grumpy station owner Mr. Kaul (Armaan Khera) read the names of every participating musician after every broadcast.

Zeba is interesting because she’s not trying to blaze a trail. Master Ji and her father want her to succeed because they care for her, and the station’s staff lyricist Azaad (Zain Khan Durrani) wants Kashmir to catch up with Bombay’s thriving film-music industry. But there’s a toll paid by trailblazers and those around them, and Zeba seems to know this. That’s the main reason she adopts the stage name Noor Begum. Yes, she’s afraid of what will happen if her mother finds out, but she’s also protective of her parents. Srinagar isn’t a huge town, and gossip travels fast.

Through her stern performance as Hameeda, Sheeba Chaddha makes sure we understand exactly why Zeba is scared of her mom. Hameeda levels a stare at Zeba that’s so withering that the film should come with a warning to protect delicate houseplants. Yet, when Noor Begum’s real identity is discovered, all of Zeba’s mother’s fears about social consequences come true.

Thankfully, Zeba and her family are saved by her greatest champion: Azaad, the station’s in-house lyricist. The two marry, and their romance is both tender and thrilling. They embody the style of the era and make a dashing couple. With Azaad’s support, Noor Begum capitalizes on the opportunities that arise as her soulful voice spreads beyond the borders of Kashmir.

One of Renzu’s points in making Songs of Paradise is to remind us how fragile history is. In an era before digital backups, physical copies of recordings were all that existed. Lose them, and you lose the performance, the song, the film. The credits of Songs of Paradise note that many of the songs used in the movie are recreations, likely due to there being no surviving physical recordings. The music in the film is a lovely augment to a charming story of progress and promise.

Links

[Disclaimer: my Amazon links include an affiliate tag, and I may earn a commission on purchases made via those links. Thanks for helping to support this website!]

Movie Review: Inspector Zende (2025)

3 Stars (out of 4)

Watch Inspector Zende on Netflix

1970s serial killer Charles Sobhraj is a popular entertainment subject for a reason. He used his charisma to recruit followers to help him steal money and murder tourists across Southeast Asia to fund his lavish lifestyle. He earned the colorful nickname “The Bikini Killer” due the attire several of his victims were wearing when they were discovered deceased.

Inspector Zende turns the lens away from the flashy criminal and onto the police officer who caught him — not once, but twice. Perfectly-cast lead actors make the most of an amusing comedy that loses steam as it goes along.

Inspector Madhukar Zende is played by Manoj Bajpayee. The character is based on a real person — who makes a cameo at the end of the film — and uses his real name. To make it clear that this is a fictional story and not strictly biographical, debutant Hindi writer-director Chinmay Mandlekar changes the villain’s name from Charles Sobhraj to “The Swimsuit Killer” Carl Bojhraj (played by Jim Sarbh).

Zende first apprehended Bojhraj in India back in 1971, when the criminal specialized in fraud and property crimes. After escaping from various international prisons over the years, Bohjraj breaks out of Tihar Jail in Delhi in 1986 after drugging the dessert he served to prisoners and guards to celebrate his birthday (it wasn’t even his actual birthday).

Immediately, Zende knows that he has to be the one to capture Bojhraj. He knows how Bojhraj thinks and where he’s likely to be. But a lot has changed in the 15 years since he first caught the villain. Zende is older, and he has responsibilities he didn’t back then, namely a wife Viju (Girija Oak) and a couple of kids. Viju — whom he affectionately calls “The Commissioner at Home” — wonders why someone else can’t catch the escaped killer.

The sweet, flirty relationship between Zende and Viju is a real highlight of the film. According to an interview Bajpayee did with the real Madhukar Zende for Netflix India’s YouTube channel, this part of the story is absolutely true. Zende’s family is more important than his sense of professional pride.

But Zende holds himself to high moral standards that are worth quoting directly: “One who does not commit injustices on others is a noble man. One who does not let others do injustice to himself is a good man. One who stops injustice from happening to others is a true man.” (Credit to Natasha Acharya for the great English subtitles.) Zende can’t be a “true man” if he leaves this task to others, potentially allowing innocent people to get hurt in the process.

Acknowledging this older, less agile Zende enables the film to take on a more lighthearted, humorous tone. What Zende lacks in speed he makes up for in guile. Not that his hand-picked crew of fellow cops are in prime shape either, be it his humorless second-in-command Jacob (Harish Dudhade) or his bumbling assistant Patil (Bhalchandra Kadam). The inspectors need more smarts than strength as they follow Bojhraj’s tracks across Mumbai and eventually to the international tourist hotspot Goa.

For movie fans like me who are happy to watch Bajpayee and Sarbh in just about anything, Inspector Zende delivers. Bajpayee finds the right mix of earnestness and playfulness for a movie that is supposed to be fun, despite its grim inspiration.

Sarbh’s performance adds to that sense of humor while still making Bhojraj dangerous. The killer’s foreign origins and taste for luxury means that Sarbh plays the role with a French accent and wearing a wig that evokes Prince on the cover of his self-titled 1979 album. It’s an amusing persona, but appropriate for the character.

The trap Mandlekar falls into with his first feature directorial is making a comedy that overstays its welcome. Some of the film’s best physical comedy is saved for a climax that arrives ten to fifteen minutes after the movie should have ended, and the bit doesn’t land as well as it should as a result.

Still, there’s more than enough going for Inspector Zende to warrant a watch. And writing an Indian police officer character who sees himself as a protector of the innocent rather than a one-man judge, jury, and executioner is a refreshing change of pace. We need more of this.

Links

Movie Review: Tehran (2025)

Watch Tehran on Netflix
Watch Tehran on Zee5

Note: I’m forgoing giving Tehran a star-rating as it feels too reductive for a problematic subject.

Tehran is a movie whose potential release window closed years ago. It was filmed in October 2022, a year before norms around addressing Israel’s relationship with the Middle East’s Islamic countries changed. On top of that, the inexperienced storytelling team behind Tehran lacks the finesse to pull it off. This messy film should’ve stayed on the shelf.

The story opens by stating that it is based on real-life assassination attempts on Israeli diplomats in 2012 that took place in three countries: India, Thailand, and Georgia. Maps of the countries are shown on-screen, including a map of the state of Georgia within the United States of America — not the country Georgia, where the attack actually occurred.

John Abraham plays Rajeev “RK” Kumar, a cop in Delhi’s Special Branch — a unit with incredibly wide operational latitude, if the film is to be believed. He’s pulled from his ethics-bending investigation of organized crime onto a Delhi car-bombing case that killed a young flower seller. RK feels especially bad for the dead girl because he has a daughter the same age (as if that’s the only reason a man could care about the welfare of girls). Once that emotional connection is established, RK hardly thinks of his daughter again.

Indian authorities assume Pakistan was behind the attack, but RK notices that the targeted car carried an Israeli Embassy employee. He finds a connection between two other attacks on Israeli diplomats — in Thailand and the non-US Georgia — as well as evidence that they were planned in India. The attackers are all Iranian citizens.

This is a big problem for India’s government, who are days away from signing a deal with Iran to import cheap oil. There are other considerations regarding India’s relationship with Israel, and innumerable diplomats and politicians from all three countries are so hastily introduced that it causes confusion. Yet the oil deal is paramount. Accusing Iran of attempted assassination would surely scuttle the deal, so the higher ups want this case wrapped up quietly.

That won’t fly with RK, who wants justice for the dead little girl who may as well be his daughter (whom he never sees). But instead of just going after the perpetrator of the Delhi attack — an irritating villain named Afshar (Hadi Khanjanpour), whom we know is extra bad because he takes drugs and has gay sex — RK and his team travel overseas to take out the men behind the Thailand and Georgia attacks.

RK’s subordinates Vijay (Dinkar Sharma) and Divya (Manushi Chhillar in a minuscule role) poison the other two assassins in public places on foreign soil, killing both men. Is the commission of war crimes standard training for Delhi police? When RK and company head to Iran to finish off Afshar, RK’s boss tells him not to bother coming back to India. The threat of never seeing his extremely-important-to-him daughter again doesn’t deter our single-minded hero.

A note at the end of the film that states that RK acted “to stop thousands of Indians from becoming collateral damage,” a figure pulled out of nowhere. It’s used to justify the narrative blank check issued to RK to do whatever he feels necessary, regardless of whether he winds up causing collateral damage of his own.

RK’s own actions and choice of killing methods are part of the messy moral universe crafted by Arun Gopalan, based on a story and screenplay by Bindni Karia, neither of whom have many credits to their names. Ritesh Shah and Ashish Prakash Verma also worked on the screenplay, though their robust resumes don’t seem to have helped much. The creative crew is desperate not to be seen as taking sides in the Israel-Iran conflict, while also obviously taking sides.

Considering that the impetus for RK’s actions is the death of a little girl, a scene in which an Israeli assassin shoots an Iranian scientist in front of his young daughter is only shown in passing. Yet a scene in which Iranian assassin Afshar tortures a rabbi — whom we are told was kidnapped when he went to buy his daughter’s favorite bread — is lingered upon. It’s brought up again when an Israeli agent asks RK to get revenge for the rabbi’s death, to which RK says, “You kill theirs. They kill yours. No one is clean here. I’m not here to judge.”

The torture sequence is particularly troubling because Afshar is trying to get the rabbi to record a message demanding that Israel leave Palestine. “Free Palestine” is painted in huge letters on the wall behind him. This is used to establish Afshar as the villain, conflating his advocacy for Palestinian independence with terrorism. The movie does this with another character who has a “Free Palestine” poster, to whom RK says, “It looks like you hold a lot of hate for Israel.”

This movie was filmed a year before Israel responded to a Hamas attack with an ongoing genocidal war on Gaza that has killed tens of thousands of Palestinians. Just a couple of months before this movie’s release, Israel bombed nuclear sites within Iran. Had Tehran released as originally scheduled in 2023, perhaps it could have sold its “not taking sides” stance more effectively. It doesn’t get that same kind of grace releasing on August 14, 2025.

On top of all the messy political stuff, Tehran is just not a great movie. There’s nothing special about the acting, stunts, or locations, especially since the makers thought that Scotland could believably stand-in for Iran. This isn’t a project worth sullying reputations for. Just write it off on the corporate tax forms and pretend it never happened.

Links

Movie Review: Sitaare Zameen Par (2025)

2 Stars (out of 4)

Sitaare Zameen Par is available for rent on YouTube

Aamir Khan’s sports comedy Sitaare Zameen Par (“Stars on Earth“) fits as a spiritual successor to his 2007 educational drama Taare Zameen Par. Both films aim to teach their audience about disabilities, and both do so in a heavy-handed way that focuses too much on Khan’s character.

This time, Khan plays Gulshan Arora, an assistant coach for Delhi’s professional men’s basketball team. Head coach Paswan Ji (Deepraj Rana) doesn’t like Gulshan’s know-it-all attitude and teases him for being short. More accurately, Paswan Ji says that if Gulshan is such a basketball expert, why doesn’t he jump and touch the 10-foot-high rim. People nearby laugh, as if this isn’t a) a stupid way to judge basketball knowledge, b) a feat even some pro players can’t accomplish, and c) definitely something most 60-year-olds (like Khan) can’t do.

Gulshan punches the head coach and gets fired. Then he gets drunk and hits a police car while driving home. A judge gives Gulshan a choice: go to prison, or coach a team of special needs adults. He chooses the latter.

For his community service, Gulshan is tasked with training about a dozen players at a recreation center for adults with intellectual disabilities and neurodevelopmental conditions like Down syndrome and autism. Community center director Kartar Paaji (Gurpal Singh) tells Gulshan to act like he’s coaching a bunch of 8-year-olds.

I am not the intended audience for this film, nor is anybody residing in the United States or anywhere with an established special education system. Sitaare Zameen Par is aimed at people with very minimal understanding of disabilities. As a result, the tone and terms used to address the players is overly paternalistic. They’re talked about as children despite some being men in their 30s with jobs and girlfriends. Some of this tone is meant to demonstrate Gulshan’s own lack of understanding, but the screenplay takes it too far.

This paternalism is further demonstrated by a subplot involving Gulshan’s estranged wife, Suneeta (Genelia D’Souza in an entertaining performance). She wants kids, and Gulshan doesn’t, lest he turn out like his own absent father. Coaching the team helps allay Gulshan’s worries about parenthood, but the fact remains: he’s coaching adults, not children.

It’s not as if Sitaare Zameen Par lacks the time for nuance. Its 158-minute runtime is about 58 minutes too long as is, given how much it belabors the points it’s trying to make. Gulshan’s character development is so slow that, even in the climactic basketball game, he is surprised by how his players react to the outcome. We’ve spent two-and-a-half hours learning about these men and their feelings. What was Gulshan doing that whole time?

To be fair, it is hugely significant that the players are performed by actors with intellectual disabilities rather than neurotypical actors feigning disabilities. The players really are the best part of the film, and their charming characters are all well-acted.

That’s why the narrative focus on Gulshan’s sluggish personal growth is so underwhelming. It doesn’t help that, besides being ableist at the beginning, he’s also racist. When complaining that he can’t refer to the disabled players as “mad/crazy,” he laments that society tells him, “Don’t call a blackie ‘blackie.’ Don’t call a chinky ‘chinky.'” His subplot with his wife is silly, too, because he treats her horribly. Why are we supposed to want them to work out their issues? Suneeta deserves better.

Links

Movie Review: Sarzameen (2025)

0.5 Star (out of 4)

Watch Sarzameen on Hulu

Sarzameen marks the absurd nadir of Hindi terrorism dramas. Bollywood producers: please, give us a break.

In many ways, Sarzameen is no different from other recent terrorism movies. A shadowy organization intent on taking innocent lives forces a lone, hyper-competent soldier to choose between love and duty to his country. But the team behind Sarzameen — first-time feature director Kayoze Irani (actor Boman Irani’s son) and debutant screenwriters Soumil Shukla and Arun Singh — uses every genre trope in a way that exhibits zero understanding of how the audience will react. It’s like if you punched someone and expected them to thank you for it.

The super soldier in Sarzameen is Colonel Vijay Menon (Prithviraj Sukumaran). He’s the kind of guy who can take out dozens of heavily armed terrorists with just a pistol. Vijay’s wife Meher (Kajol) adores him, and his young teenage son Harman (Ronav Parihar) looks up to him.

Thing is, Vijay loathes his son. Timid Harman stutters when he speaks and gets beaten up for not being athletic, to Vijay’s mortal embarrassment.

Vijay gets a chance to show just how much he detests Harman when the boy is kidnapped. The group holding him wants to exchange the boy for two imprisoned terrorists, brothers Qaabil (K. C. Shankar) and Aabil (Rohed Khan). Vijay is convinced that Qaabil is an alias for the mastermind “Mohsin,” but someone claiming to be the real Mohsin offers to turn themselves in following the prisoner swap. Vijay is skeptical, but desperate Meher asks him, “What if you’re wrong?”

At the swap — which involves releasing the brothers into a shallow streambed while Harman is left elsewhere, out of sight — Vijay has flashbacks to his swearing-in ceremony as a young soldier. Overwhelmed by fears that he’s acting unpatriotically, Vijay starts shooting at the brothers as they walk away. Vijay kills Aabil, but Qaabil escapes. The Colonel returns home to Meher with a sad look on his face, having doomed their only child to death.

During every scene with Harman, Vijay behaves like a complete jerk. Vijay lets his son be killed not because of “patriotism” — which the film uses as a nebulous catch-all concept — but because of ego, cementing him as an all-time cinema a-hole. How Irani, Shukla, and Singh don’t see Vijay’s actions as irredeemable is the story’s biggest mystery. Vijay can’t come back from this — or it would take storytellers much more experienced than this trio to redeem him.

Yet, eight years later, Vijay gets his second chance. A young man rescued with other hostages says his name is Harman Vijay Singh (Ibrahim Ali Khan). Turns out Harman wasn’t killed, merely tortured for years while living with the terrorists. Of course Vijay doesn’t believe this is his son. This “Harman” does one-armed pushups and doesn’t stutter, so he must be a fake. Meher — who inexplicably stayed with Vijay after he supposedly got their son killed — can tell this is her son, and DNA proves it. Harman lives.

The acting in Sarzameen is generally not terrible. Khan seems bewildered as Harman, but that’s actually appropriate. Kajol is fine. Sukumaran doesn’t do anything to soften Vijay’s rough edges, but I’m not sure he could have salvaged things.

All of Sarzameen‘s problems stem from a story that cannot work as written. Genre clichés are thrown together in the service of too many plot twists. But there’s no substance behind any of it, no consideration given to character motivations. It’s a film about “patriotism,” but what do the filmmakers think patriotism means?

The filmmakers deliberately refuse to define the terrorists’ objectives, lest they accidentally portray them sympathetically. But, by making Vijay the world’s worst dad, they make the terrorist outfit look good by comparison. Qaabil is a supportive and nurturing leader, understanding the value of providing directionless young men with a place to belong. Contrast that with Vijay’s disappointment that Harman wasn’t born wielding a machine gun, not to mention Vijay’s commanding officer’s (Boman Irani in cameo) penchant for needlessly dangerous publicity stunts that put civilians at risk. Which outfit comes off looking better?

Links

Movie Review: The Bhootnii (2025)

2 Stars (out of 4)

Watch The Bhootnii on ZEE5

The horror-comedy The Bhootnii (“The Ghostess“) is neither scary nor funny. It’s not entertaining enough to spark delight nor offensive enough to spark outrage. It exists.

Writer-director Sidhaant Sachdev’s story takes place on the campus of fictional St. Vincent’s College in Delhi as a convenient means of sequestering the characters to just a few locations. There’s a school legend that involves praying to the campus’s “Virgin Tree.” I’m not sure if the praying humans are the virgins or the tree is a virgin, or how one would even determine that.

Every year, students hold a festival on Valentine’s Day in hopes that prayers to the Virgin Tree will grant them true love. The tradition continues despite a terrible fire that destroyed the festival in 2003, but several suspicious deaths in the years since have birthed rumors that a ghost haunts the festival.

The night before Valentine’s Day in 2025, the woman that Shantanu (Sunny Singh) is smitten with ditches him for another man. Desperate and drunk, Shantanu begs the tree for true love. The next day, his bubbly friend Ananya (Palak Tiwari) returns from a 6-month study abroad program. Shantanu and his superstitious roommates Nasir (Aasif Khan) and Sahil (Nikunj Lotia) are suspicious of Ananya’s return, but their worries are misplaced. Ananya is not a ghost.

But Mohabbat (Mouni Roy) is — and she’s got her sights on Shantanu. She’s a spirit attached to the tree Shantanu drunkenly prayed to, and she’s here to fulfill his wish. Her name even means “love.”

Shantanu quickly falls for the beautiful ghost that only he can see. But Mohabbat isn’t taking chances, and she afflicts anyone who might interfere with her plans with seizures. The outbreak prompts the dean of the college to call in a former student for help: parapsychologist Krishna (Sanjay Dutt), who goes by the nickname “Baba,” because he earned two B.A. degrees.

To be clear, Baba isn’t an exorcist. He’s a man of science, and he’s found a way to use science to help him punch ghosts. 65-year-old Dutt’s action sequences are aided by some barely disguised harness work that is inadvertently funny, but the fight scenes are otherwise forgettable.

That’s the thing about The Bhootnii — there isn’t much memorable about it. Stuff happens in a mostly logical order, characters act more or less as expected. The funny bits fall flat, the dance sequences are forgettable. The acting is merely serviceable.

Mouni Roy is the exception. She showed her skill at playing a compelling villain in Brahmāstra, and she is even more effective at giving Mohabbat real depth. It would be a shame to see Roy pigeonholed into playing negative characters, but she’s better at it than most.

Still, Roy’s presence in the film is part of The Bhootnii‘s most distracting issue: casting. [This part of my review may count as a spoiler, so stop now if you’re planning to watch the film.]

Among the “present day” cast, only one actor — 24-year-old Tiwari, who looks much younger than her fellow performers — is anywhere close in age to an actual living-in-a-campus-dorm, full-time college student. Singh is 39, and Khan and Lotia are in their mid-30s as well. Mohabbat was a student when she died, but Roy is also 39. Baba attended the college in 2003, at which time Dutt would have been 43. If you’re not going to cast actors anywhere close to college-age, then don’t set the story on a campus.

Links

Movie Review: Aap Jaisa Koi (2025)

3 Stars (out of 4)

Watch Aap Jaisa Koi on Netflix

R. Madhavan and Fatima Sana Shaikh play two lonely singles on the bumpy road of love in the romantic comedy-drama Aap Jaisa Koi (“Someone Like You“). Despite a few hiccups, director Vivek Soni’s film is exactly the kind of movie Netflix India needs more of.

Madhavan stars as Shrirenu Tripathi, a high school Sanskrit teacher in Jamshedpur. A misguided attempt at courtship in his teenage years resulted in the target of Shri’s affections cursing him to be forever single — a curse that appears to have worked. Shri’s a 42-year-old virgin who’s been turned down by every woman who’s ever seen his matchmaking bio-data sheet.

When even Shri’s students — lead by class clown Rakesh (Sachin Kavetham) — start teasing him about his nonexistent love life, he takes action. Shri’s roommate and best friend Deepu (Namit Das) gets Shri on a sex chatting app, figuring Shri might be more confident over the phone than face-to-face. Shri talks to an unnamed woman who is charmed by his lack of guile. When she asks, “What’s your love language?” he replies, “Sanskrit.”

Days later, Shri’s brother’s neighbor Joy brings a marriage proposal for Shri. Joy’s 32-year-old niece Madhu Bose (Shaikh) is interested in him. She teaches French in Kolkata, she’s never been married, and she’s beautiful. She sounds too good to be true, but a covert investigation by Deepu and Rakesh turns up nothing scandalous. Shri and Madhu love spending time with each other and are quickly engaged.

To this point, Aap Jaisa Koi is a cute movie peppered with delightful song picturizations. It’s easy to enjoy and feels like a throwback to movies from decades ago. We know there has to be a problem to fix in the second half, but things are going so well, it’s not clear what the problem could be.

A conflict between Shri and Madhu reveals a problematic ideology simmering under the surface of the story. In his life, Shri is surrounded by men. His roommate is a guy, he teaches at an all-boys school, and his brother Bhanu (Manish Chaudhari) rules his household. Even though Shri adores his sister-in-law Kusum (Ayesha Raza Mishra) and his adult niece, he watches in silence as Bhanu routinely denigrates both women and forbids them from pursuing their passions.

Shri’s environment is nothing like Madhu’s house, where she lives with her doting grandmother, loving parents, and supportive aunts and uncles. It’s a shame that the film doesn’t afford Kusum any female friends, but she’s surrounded by plenty of open-minded well-wishers.

The main characters’ contrasting social spheres highlight the dangers of rigid gender separation. Shri has so little experience dealing with women he’s not related to that he doesn’t realize how he’s negatively influenced by the men around him. When he voices his concerns, it’s to the same men who believe women should be virgins before marriage and shouldn’t work outside the home.

Though Soni’s film — based on a screenplay by Radhika Anand and Jehan Handa — is message-driven, I’m not gonna complain when the message is: “Don’t be an incel.” To the story’s credit, the conflict resolves in an unexpected, yet believable way. Shri digs himself a deep hole, but the way he gets out is ultimately satisfying.

The story is helped by quality performances by the whole cast, especially the leads. Madhavan is always watchable, and he makes Shri a guy who’s unduly insecure. Shaikh is particularly good, conveying so much emotion with the slightest change of expression.

Aap Jaisa Koi draws on a long history of “woman teaches man not to be a dumbass” films, but it distinguishes itself through a refined blend of classic stylistic choices and modern relationship drama.

Links

Movie Review: Kesari Chapter 2 (2025)

2.5 Stars (out of 4)

Watch Kesari Chapter 2 on Hulu

Kesari Chapter 2: The Untold Story of Jallianwala Bagh is a film with an agenda. There’s nothing wrong with that, per se, but it’s hard to ignore how deliberately it pushes its audience to feel a certain way.

This movie was belatedly titled as a spiritual successor to 2019’s Kesari to capitalize on name recognition. The only things the films have in common are Akshay Kumar in the lead role and a shared cadre of producers: Karan Johar, Hiroo Yash Johar, Apoorva Mehta, and Aruna Bhatia.

Kesari Chapter 2 opens with a moving recreation of the Jallianwala Bagh massacre in 1919. Thousands of Indians at a rally in Amritsar are cornered and fired upon by British troops, under the direction of General Reginald Dyer (Simon Paisley Day). More than 1,500 people of all ages are killed, either from bullet wounds, crush injuries, or drowning in a well where they leapt to escape the shooting.

We see the mass murder from the perspective of a teenage boy, Pargat Singh (Krish Rao), who loses his mother and younger sister that day. Given the technological limitations of the time, the ruling British government is able to suppress the truth and frame the massacre as a response to an armed uprising.

As the government assembles a commission to investigate the incident, Pargat stands outside the gates, holding up paintings depicting what really happened. He’s ignored by all of the commissioners save one: Justice Chettoor Sankaran Nair (Kumar). Nair’s legal work on behalf of the British has earned him a knighthood and invitations to swanky parties, but his participation on the committee reminds him that the Brits see him as a useful tool, not an equal.

When Pargat dies, the young man’s cause is taken up by rookie lawyer Dilreet Gill (Ananya Panday). Her criticism of Nair for going along with commission’s sham findings — as well as his own remorse over the boy’s death — lead him to join her in filling suit against General Dyer on the charges of genocide.

The events thus far, some of the characters, and the court arguments that follow are amalgamations of various historical incidents and figures. Kesari Chapter 2 isn’t presenting a history lesson but stoking the fires of moral outrage. That’s any movie’s right to do, but it feels fair in this case. There’s general agreement today as to what happened at Jallianwala Bagh, and the British government and monarchy have never formally apologized for the massacre.

Kesari Chapter 2 is actually pretty good at what it’s trying to accomplish. The Brits are racist schemers, and their victims are sympathetic and plentiful. It’s fun to watch Nair get the better of his adversaries in court, including the crown’s mercenary attorney Neville McKinley (R. Madhavan). Indian legal dramas can be confusing for those not versed in the court system, but great English subtitles by Jahan Singh Bakshi and Anantika Mehra make it easy to follow.

Still, the movie occasionally breaks the narrative spell, reminding the audience that it’s trying to make us feel specific emotions. Nair’s expletive-filled outburst in court is directed as much at the audience as at the judge to whom he’s speaking. It would have been nice had writer-director Karan Singh Tyagi let viewers come by their feelings organically.

But that would have required more comprehensive world-building, which Kesari Chapter 2 lacks. Nair is the center of the universe, and all the other characters feel thinly drawn. Panday’s Dillreet gets a few good moments, but Regina Cassandra as Nair’s wife Parvathy hardly needs to be in the movie. Thankfully, Kumar does a solid job carrying the film solo.

The spell is also broken by some odd music choices by composer Shashwat Sachdev. One recurring theme is obviously based on Carl Orff’s “O Fortuna”. Random electric guitar riffs feel strange in 1919 India. And when Nair makes a penis joke at Dyer’s expense, I swear it’s punctuated by something meant to mimic rapper Lil Jon’s signature “Yeah!”.

If nothing else, Kesari Chapter 2 is a movie without pretense. It’s not great, but it is effective.

Links

Movie Review: Ground Zero (2025)

2 Stars (out of 4)

Watch Ground Zero on Amazon Prime

As with any movie inspired by true events, it’s hard to know how faithfully Ground Zero depicts Officer Narendra Nath Dhar Dubey’s pursuit of the terrorist known as Ghazi Baba. But if you handed the premise to anyone who’s skimmed a screenwriting book or two and considers themselves sufficiently ready for the big time, this is the movie they’d write. Ground Zero is as standard a terrorism thriller as it gets.

The story opens in Srinagar in Indian-administered Jammu & Kashmir. In August 2001, a Muslim terrorist persuades three teenage boys to take guns and kill one of the many heavily armed Indian soldiers stationed around town. A poster of Osama Bin Laden hangs on the wall, though the 9/11 attacks won’t happen for another month.

Two Indian soldiers — one Hindu, one Sikh — stand in the market talking about how excited they are for Eid. The movie wants you to know they are DEFINITELY NOT Islamophobic. A kindly Muslim vendor gives the automatic-weapon-toting Hindu soldier a chocolate in thanks for his hard work. The soldier donates to the local Eid fund in return. Moments later, one of the young men from the opening scene shoots and kills the soldier, disappearing into the crowded streets.

The murder is the work of the “Pistol Gang,” who’ve killed 70 soldiers in the span of a year. The head of the local Border Security Force (BSF) office says: “I want my best man here.” Cut to Narendra Nath Dhar Dubey (Emraan Hashmi) rescuing a shepherd boy while in the middle of a shootout with suspected terrorists.

Dubey returns to Srinagar and cracks part of the code that the terrorists use to coordinate their activities. But he mistakes the instructions for an attack on the government office in Srinagar, when the terrorists’ real target was the Indian Parliament in Delhi.

Federal agents arrive in Srinagar on the trail of one of the perpetrators of the Parliament attack, spouting cliched lines like, “We tracked him. We have to go now!” Dubey suggests not arresting, but following the suspect, in case there’s a link between the Delhi attack and the Pistol Gang. But the feds want to get their guy and beat a confession out of him. When Dubey protests, his commanding officer admonishes him with, “It’s an order.” This is first-draft dialogue, at best.

Hashmi is a charming actor and makes Dubey interesting. He’s especially good when Dubey is with his feisty wife Jaya (Sai Tamhankar) and their three kids. The family sequences are so enjoyable that it’s weird when Dubey acts recklessly enough to prompt his subordinates to exclaim, “It’s suicide!”

Dubey’s rashness dovetails with another Bollywood screenplay formula Ground Zero borrows heavily from: the rogue cop. Government bureaucracy and chains of command keep this one gifted officer from following his instincts and solving the case, as in so many Ajay Devgn and Salman Khan cop dramas before.

The difference with Dubey is that his superpower isn’t superhuman strength or indestructibility. It’s empathy. He wants to find Ghazi Baba with a minimum of bloodshed and intimidation because he knows that life in Srinagar isn’t easy for its residents. He tells a subordinate: “When a belly is empty, the brain can’t tell the difference between right and wrong.”

Dubey’s disciplined strategies and acknowledgement of local poverty give Ground Zero cover for evading the question of what role the soldiers’ presence plays in exacerbating tensions. There’s a scene where Dubey’s young daughter confesses to being afraid of the gun-toting soldier that accompanies her and the other BSF offspring to school, almost as if to suggest that only children fail to appreciate that the heavily armed soldiers are there for their benefit.

This is very much a film of its time for as broad an audience as possible, where good and bad are clearly delineated. There’s even a shot when the terrorists driving to Parliament hear a song with the lyrics “Vande Mataram” on the radio and immediately turn it off, just in case you doubted their badness.

To be clear, this movie is based on real events that resulted in many deaths, and the perpetrators were caught thanks to skill and heroism of the Border Security Force (Narendra Nath Dhar Dubey in particular). But Ground Zero tells the story in the most boilerplate, predictable manner. At the midpoint of the film, I made a list of six things I thought would happen in the second half (not knowing anything about the true story). I was right about five of them. Ground Zero feels like studio Excel Entertainment’s attempt to cash in on a trend. That doesn’t diminish the efforts of the real people involved in the story or tarnish anyone’s memory. I’d argue that they deserve a better movie.

Links

[Disclaimer: my Amazon links include an affiliate tag, and I may earn a commission on purchases made via those links. Thanks for helping to support this website!]

Movie Review: Stolen (2025)

3.5 Stars (out of 4)

Watch Stolen on Amazon Prime

Two brothers are drawn into a kidnapping case in the gripping drama Stolen. This is the most intense Hindi rural thriller since Anushka Sharma’s brilliant NH10.

Jhumpa (Mia Maelzer) sleeps on a bench at a train station with her 5-month-old baby Champa when another woman quietly grabs the infant and makes off with her. Jhumpa wakes moments later to find the baby missing, and no one on the platform saw anything. The only potential suspect is a man holding Champa’s hat.

The man with the hat is Raman (Shubham Vardhan), who just stepped off the train and is late to his mother’s wedding in the city. The delay means Raman’s wealthy brother Gautam (Abhishek Banerjee) is already in a bad mood when he arrives at the station to pick him up. Finding Raman being grilled by the police as to where he found the hat only makes Gautam grouchier.

At first, the cops don’t seem eager to investigate a lead beaten out of a nearby tea vendor, so Jhumpa asks the brothers for help finding her baby. Gautam offers her money. The money isn’t for anything in particular, like hiring a detective or paying for a ride to a friend’s house. It’s just supposed to make Jhumpa go away. She doesn’t take the money.

That brief exchange summarizes the point of the film. People of means think that every problem can be solved with money. They aren’t concerned with what happens after they hand over their cash, so long as they get what they want. In this case, Gautam wants to take Raman to their mother’s house. He doesn’t really care if Jhumpa finds her baby or not.

Raman is disgusted by his brother’s lack of sympathy, but the cops take the decision out of the men’s hands. Inspector Shakti Singh (Sahidur Rahaman) and constable Pandit Ji (Harish Khanna) order the guys and Jhumpa to follow them in Gautam’s car to investigate the tea seller’s lead in a remote area that’s further away than the “15 minutes” they promised.

Along the way, the car is stopped by other law enforcement officers who’ve gotten a tip via social media that two men and a woman in a black SUV fled a train station with a stolen baby. They’ve even got Gautam’s license plate number. Singh and Pandit Ji set these officers straight, but that won’t stop the firestorm the rumor set off in the region. Turns out Champa isn’t the first baby to be taken, and folks are eager to make someone pay. Jhumpa and the brothers are only safe as long as they stay with the police — a fact they don’t appreciate until it’s too late.

From the brothers’ perspective, Stolen is about being in the wrong place at the wrong time and how your response to trouble illuminates your character. But from a wider view, the story is about powerlessness. It’s about how easy it is to victimize the poor and working class, and how institutions like the police that purportedly exist to help everyone don’t really (last year’s thriller Sector 36 was another great example of this).

That kind of environment creates a vacuum where poor people’s only recourses for justice are the ones they create for themselves. Hence the appeal of an anonymous social media rumor that pins the blame squarely on three people. Targeting Jhumpa, Raman, and Gautam is an action the villagers can take in the absence of better options. Rich guys like Gautam don’t have enough cash to defuse that explosive anger borne from helplessness.

The performances in Stolen are pitch-perfect. Banerjee plays Gautam as loathsome at the start, but his mind and heart open as their situation worsens. Vardhan has some of the saddest eyes in the business, making it easy to care for Raman, who’s always trying to do the right thing. Maelzer’s Jhumpa keeps secrets, but her desperation is genuine and urgent.

Director Karan Tejpal — who co-wrote Stolen with Gaurav Dhingra and Swapnil Salkar — is equally adept at showing the breadth of a societal problem as he is at showing the emotional turmoil of the three main characters. He also displays a real flair for action. The stunt driving in Stolen is a marvel. This film is something special.

Links

[Disclaimer: my Amazon links include an affiliate tag, and I may earn a commission on purchases made via those links. Thanks for helping to support this website!]