ADVERTISEMENT

Zoë's feminist Get Out: A review of 'Blink Twice'

Published Aug 22, 2024 02:35 am

At A Glance

  • This may not be a perfect film, but Kravitz does display a lot of promise, and I'd love to watch her next directorial film
image2.jpeg
Channing Tatum in Blink Twice

Beyond the impressive cast assembled for this suspense thriller, Blink Twice can be proud of being the directorial debut of Zoë Kravitz. We last saw her on-screen in 2022’s Kimi of Steven Soderbergh and Matt Reeves’ The Batman, playing opposite Robert Pattinson. So, finding her behind the camera and co-writing the screenplay is a new experience we could look forward to and comment on. 

The film’s narrative is dead simple - tech billionaire Slater King (Channing Tatum) has a somewhat dubious reputation, and it’s when he invites two waitress friends that he met during a fundraising gala to his private island resort things go south. Frida (Naomi Ackie) and Jess (Alia Shawkat) are the two friends, and for them, the invitation would seem to be the ultimate exclusive weekend party to be included in - and to be there as guests, not in a working gig. In fact, from early on, it’s established that Frida has a major crush on Slater despite all the evil and unsavory publicity he’s earned. 

On the island, along with the two girls, are Sarah (Adria Arjona), a budding starlet who’s done an Amazing Race-type of reality show, two other party girls, and the posse of Slater. This posse would consist of Vic (Christian Slater), Cody, the resident New Age chef (Simon Rex), and Tom (Haley Joel Osment - Yes, the young boy from The Sixth Sense). There’s also a young man explained as some Manager in Training at the firm Slater had initially set up.

image0.jpeg
A scene from 'Blink Twice'

For the first hour of the film, Kravitz uses stark images, crisp editing, and vibrant colors to depict this hedonistic island lifestyle—one set in an island villa. Hints of something more sinister afoot are thrown into the mix in a way that sets alarm bells ringing. A majordomo who acts in a cryptic manner, nose bleeds, snakes in the garden—they all convey that there is something rotten in this tropical Eden.

There are no spoilers here, but I can say that this plays like a feminist Get Out, with shades of Midsommar and The Menu. Things are never what they seem, and Kravitz displays a sure hand in tackling the narrative and offering sudden shifts in tone and personality. I have to admit that she does the female characters much better than the men, giving our leading girls a lot of depth and texture. 

The men seem to be there more to prove a point and showcase that despite #MeToo, men just parrot saying sorry and are still ready to gaslight, obstruct, and patronize women. Kravitz makes the point that so many women are also ready to forgive and forget and then be surprised when nothing has changed. 

This may not be a perfect film, but Kravitz does display a lot of promise, and I’d love to watch her next directorial film. Her storytelling and editing and capacity to go visceral and disturbing are impressive. The film is now showing in cinemas. 

ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.