ADVERTISEMENT

Project Hail Mary: This generation's E.T.

Published Mar 22, 2026 09:59 pm
Waking up after extended hibernation with a beard that birds can nest in, Ryland Grace (Ryan Gosling) has no idea who he is, or how he got onto a ship rocketing through interstellar space several trillion miles from Earth. There’s a sure sense of panic in his face. But there’s also a light humor in Grace's sense of denial and disbelief and how he reacts to his new predicament.
Ryan Goslin in 'Project: Hail Mary' (Images courtesy of Columbia Pictures)
Ryan Goslin in 'Project: Hail Mary' (Images courtesy of Columbia Pictures)
And this cold open sets the tone for the rest of the movie. It is serious but not overly grim, with a playfulness that is undeniably enticing.
Going into the film, I was expecting something very jargon-heavy. It is, after all, a movie based on a book by Andy Weir, the ex-engineer and ex-Blizzard game developer who wrote The Martian, one of the more accurate science-fiction films in recent memory. As of this writing I have not read Project Hail Mary, the book, something which I aim to rectify presently.
By all accounts that I’ve come across, the book contains much more hard science than the movie. While the film does have its share of big words and a fair amount of problem-solving through science, it doesn’t go full-tilt into the more geeky side of things. While this may disappoint some of the more nerdy members of the viewing public, what you get in exchange is equally worth one’s interest and attention, and dare I say, far more moving. The movie shifts its focus instead to a more personal story, one that is sure to pluck at even the more tightly strung heartstrings.
Not to give too much away, Grace encounters an alien whom he names Rocky. As Grace slowly figures out what’s going on, he realizes that he and Rocky are in the same boat, so to speak, in that they both have to figure out what is killing the stars that their planets are orbiting.
What follows is a buddy film of planetary importance, and it is oh-so-enjoyable to watch. Rocky is brought to life by the actor and puppeteer, James Ortiz, who controls Rocky with five other puppeteers (called the Rocketeers, naturally) and also provides the adorable mineral-based alien’s computer-translated voice. His back and forth with Gosling’s Grace is so immediate, convincing, and fun to watch that you often forget they’re there to stave off disaster. Rocky is the E.T. of this generation.
Visually, Project Hail Mary borrows heavily from a variety of other successful sci-fi films. If you’ve been paying attention as a moviegoer, it is very easy to see the influence of movies such as Interstellar or 2001: A Space Odyssey on their epic depictions of the vastness of space and the phenomena you find in it. Even the problem with the sun is reminiscent of the movie Sunshine.
But there’s still a sense of originality to the piece as a whole, so that the look, reminiscent of past works, though it may be, is so meticulously curated and molded by cinematographer Greg Fraser, so that the seeming hodgepodge of tropes becomes something new and beautiful to see.
Project Hail Mary is a delight of a film, ready to please movie goers of many different stripes, not simply science-fiction lovers. It is an old-school film with a catchy story, with high enough stakes, a lot of clean fun, and a whopping dose of positivity, which is something we all need in these times.
Project Hail Mary is in cinemas now.
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.