ADVERTISEMENT

The kids rule: A review of 'The Black Phone'

Published Jul 9, 2022 06:57 am
Mason Thames and Madeleine McGraw in 'The Black Phone'

Director Scott Derrickson and Actor Ethan Hawke first collaborated on the film Sinister, and they’re back together in this latest from Blumhouse, The Black Phone. Ostensibly, it tackles the subject of child abduction, but with a touch of nostalgia, as it’s set in 1978 blue collar Denver, and a heavy dose of the supernatural. Its buoyed by strong performances from the child actors, and balances nicely between outright horror, psychological drama, and social commentary.

More thriller than outright horror, The Black Phone adds depth and dramatic interest to the jump scares that are staples of the horror films of today. The film starts off with scenes of children playing Little League baseball and in school. And we then center on Finney (Mason Thames), a 13-year-old who, from the outset, we discern to be something of a pacifist, and someone who’s bullied in school. While Finney is obviously a person of interest for the purpose of this film, the one who immediately wins our sympathy would be his younger sister, Gwen (played by the precocious Madeleine McGraw). She’s feisty, she’s actually foul-mouthed, but there’s a winning quality to her persona.


It’s established that their mother had psychic gifts, but passed away; and the two are now under the strict rule of their redneck father. He refuses to acknowledge their gifts and is the antithesis of the loving father we’ve seen in so many films. He’s not abusive per se, but just turns a blind eye to the special abilities of his two children.


In the neighborhood, there’s a spate of unsolved child abduction crimes, attributed to the serial kidnapper who’s been christened The Grabber. He’s the local bogeyman, and it isn’t long before the friends and acquaintances of Finney have been abducted by The Grabber (Ethan Hawke). So it doesn’t take a genius to surmise that we’re waiting for Finney to fall victim to the Grabber.

It’s with Finney incarcerated that the supernatural really comes into play, as his psychic gifts mean that through a disconnected ‘black phone’ the former victims of the Grabber reach out to Finney. Amidst all this, there’s also the visions of Gwen, as she tries to rescue her brother. 

Mason Thames, who plays Finney.


Ethan Hawke does an effective turn as the Grabber, but if you put me up against a wall, I’d say that the film really succeeds on the strengths of the performances of the children - specifically Finney and Gwen. They pretty much carry the emotional weight of the film, and keep our interest from flagging. The film thankfully does not overstay its welcome, and it knows how to tighten the screws, and throw little false leads our way. While there is something predictable about how it all unfolds eventually, the trip is very much worth the price of admission. 


The film has its regular run on July 20, but there are preview screenings on Monday and Tuesday, July 11 and 12.

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.