IronWatcher’s review published on Letterboxd:
Watched in the cinema (37th visit in 2024)
"Miller's Girl" is a fascinating movie. Not only because the screenplay by Jade Halley Bartlett was on Hollywood's blacklist of unfilmed scripts for some time before the production company around Evan Goldberg and Seth Rogen took on the material and made it possible for Bartlett to make her directorial debut. This film, which on paper reads like a direct-to-DVD release from the last decade, also boasts an enormous star cast: Martin Freeman stars as Jonathan, the amoral professor, while Jenna Ortega portrays Cairo, the student in love with her idol. With their star presence, they hold the half-baked work together.
The first half is so campy that it almost takes on parodic traits. You get the feeling that you're getting a drastically exaggerated view of the 2010s: On Tumblr fan fictions, on "forbidden-teen-love" plots à la "Twilight", "After Passion" or "Fifty Shades of Grey", on foggy secrecy like in "Jennifer's Body" or "Riverdale". The second half turns into a psychological thriller in which Jonathan's immoral behavior is avenged and this act of revenge is combined in a clichéd way with a kind of artist's pathos. While in the first half you are almost certain that "Miller's Girl" is meant to be taken with a wink, towards the end you get the impression that the film takes its plot and characters surprisingly seriously.
The mystery of the film also lies in the fact that a work that could easily be dismissed as a half-baked B-movie comes along with a top-class cast and some strongly staged moments. Everything seems a little too high quality to be so out of tune. Precisely because the film's astonishing dichotomy is accompanied by an enormous sexual charge. The dialog fluctuates between pornographic prudery and entertaining word duels. The screenplay builds a sexual psychogram around Jonathan, which at its core points to a wounded ego, which in turn leads to relationships with strong power imbalances. Director Jade Halley Bartlett attempts to derive provocative, vulgar scenes from these. It is no coincidence that she assigns the scandalous author Henry Miller a central role in the film.
At best, the amoralism with which the film drives its plot forward is provocative: Jonathan hardly seems to realize how much he is exploiting his position of power. As a femme fatale, Cairo goes over dead bodies in her quest for revenge. Jonathan's wife Beatrice (Dagmara Dominczyk) really enjoys watching her husband suffer. Only Winnie (Gideon Adlon), Cairo's best friend, and Jonathan's work colleague Boris (Bashir Salahuddin) seem human at times. These zany caricatures of personalities offer entertainment value, but are also an expression of a jaded perspective on love, sexuality, morality and society (which, incidentally, is surprisingly absent here). If one recalls films in a coming-of-age setting that are no less bitter, such as Mean Girls, there was a kind of resolution there in which the social takes on its role again. Here, the amoral becomes the fuel of productivity.
' ].join(''); if ( adsScript && adsScript === 'bandsintown' && adsPlatforms && ((window.isIOS && adsPlatforms.indexOf("iOS") >= 0) || (window.isAndroid && adsPlatforms.indexOf("Android") >= 0)) && adsLocations && adsMode && ( (adsMode === 'include' && adsLocations.indexOf(window.adsLocation) >= 0) || (adsMode === 'exclude' && adsLocations.indexOf(window.adsLocation) == -1) ) ) { var opts = { artist: "", song: "", adunit_id: 100005950, div_id: "cf_async_2239268b-87a5-4e97-b2ff-2f006eb8835d" }; adUnit.id = opts.div_id; if (target) { target.insertAdjacentElement('beforeend', adUnit); } else { tag.insertAdjacentElement('afterend', adUnit); } var c=function(){cf.showAsyncAd(opts)};if(typeof window.cf !== 'undefined')c();else{cf_async=!0;var r=document.createElement("script"),s=document.getElementsByTagName("script")[0];r.async=!0;r.src="//srv.tunefindforfans.com/fruits/apricots.js";r.readyState?r.onreadystatechange=function(){if("loaded"==r.readyState||"complete"==r.readyState)r.onreadystatechange=null,c()}:r.onload=c;s.parentNode.insertBefore(r,s)}; } else { adUnit.id = 'pw-2239268b-87a5-4e97-b2ff-2f006eb8835d'; adUnit.className = 'pw-div -tile300x250 -alignleft -bottommargin'; adUnit.setAttribute('data-pw-' + (renderMobile ? 'mobi' : 'desk'), 'med_rect_btf'); if (target) { target.insertAdjacentElement('beforeend', adUnit); } else { tag.insertAdjacentElement('afterend', adUnit); } window.addEventListener('DOMContentLoaded', (event) => { adUnit.insertAdjacentHTML('afterend', kicker); window.ramp.que.push(function () { window.ramp.addTag('pw-2239268b-87a5-4e97-b2ff-2f006eb8835d'); }); }, { once: true }); } } tag.remove(); })(document.getElementById('script-2239268b-87a5-4e97-b2ff-2f006eb8835d'));
' ].join(''); if ( adsScript && adsScript === 'bandsintown' && adsPlatforms && ((window.isIOS && adsPlatforms.indexOf("iOS") >= 0) || (window.isAndroid && adsPlatforms.indexOf("Android") >= 0)) && adsLocations && adsMode && ( (adsMode === 'include' && adsLocations.indexOf(window.adsLocation) >= 0) || (adsMode === 'exclude' && adsLocations.indexOf(window.adsLocation) == -1) ) ) { var opts = { artist: "", song: "", adunit_id: 100005950, div_id: "cf_async_24eea246-9b0a-48d5-9d4d-d0f657f7cc32" }; adUnit.id = opts.div_id; if (target) { target.insertAdjacentElement('beforeend', adUnit); } else { tag.insertAdjacentElement('afterend', adUnit); } var c=function(){cf.showAsyncAd(opts)};if(typeof window.cf !== 'undefined')c();else{cf_async=!0;var r=document.createElement("script"),s=document.getElementsByTagName("script")[0];r.async=!0;r.src="//srv.tunefindforfans.com/fruits/apricots.js";r.readyState?r.onreadystatechange=function(){if("loaded"==r.readyState||"complete"==r.readyState)r.onreadystatechange=null,c()}:r.onload=c;s.parentNode.insertBefore(r,s)}; } else { adUnit.id = 'pw-24eea246-9b0a-48d5-9d4d-d0f657f7cc32'; adUnit.className = 'pw-div'; adUnit.setAttribute('data-pw-' + (renderMobile ? 'mobi' : 'desk'), 'sky_btf'); if (target) { target.insertAdjacentElement('beforeend', adUnit); } else { tag.insertAdjacentElement('afterend', adUnit); } window.addEventListener('DOMContentLoaded', (event) => { adUnit.insertAdjacentHTML('afterend', kicker); window.ramp.que.push(function () { window.ramp.addTag('pw-24eea246-9b0a-48d5-9d4d-d0f657f7cc32'); }); }, { once: true }); } } tag.remove(); })(document.getElementById('script-24eea246-9b0a-48d5-9d4d-d0f657f7cc32'));