Home /tv
Jamie Dunkin
Image: Netflix
Netflix’s fascination with true crime doesn’t just extend to dramatizations. A new harrowing true crime documentary around a former bodybuilder is muscling up on the streaming service, making the top ten most watched in 41 countries.
Killer Sally has appeared almost out of nowhere to great success on streaming, with the new docuseries gunning for the top spot around the world. Netflix’s eye-opening series sees Sally McNeil return to discuss the alleged second-degree murder of her husband Ray McNeil 26 years on from the event.
Sally McNeil, better known as Killer McNeil, was a bodybuilder in the U.S. Military and won armed physique championships during the late 1980s before it all came crashing down in 1996. McNeil pleaded self-defense to the charge of murder, and now Netflix’s documentary sees her finally able to tell her side of the story to the public, with it far more complex than the initial reporting or court hearing believed.
Directed by acclaimed filmmaker Nanette Burstein who previously worked on documentaries Hillary, and a sports doc on three young boxers in On the Ropes. Killer Sally is a surprise one to surge up to the top of the charts. The case itself isn’t one the public had previously expressed much interest in, with the Wikipedia page for McNeil barely as long as this article.
The documentary also reshapes McNeil as a victim of abuse, giving further fuel to her self-defense claims as the case continues to haunt her many years on from prison release.
Killer Sally consists of three episodes and is currently available to stream on Netflix.
'+// '
Thank you for reading We Got This Covered.
Check out some stories from our partners:
'+// '
'+// '
MORE NEWS FROM THE WEB
'+// '
'+// '
'+// '
'+paginationHtmlBottom+'
'+// '
'); // launch zerg// if ( WGTCADS.isMobile ) {// (function () {// var zergnet = document.createElement('script');// zergnet.type = 'text/javascript';// zergnet.async = true;// zergnet.src = '//www.zergnet.com/zerg.js?id=';// var znscr = document.getElementsByTagName('script')[0];// znscr.parentNode.insertBefore(zergnet, znscr);// })();// }// else {// (function() {// var zergnet = document.createElement('script');// zergnet.type = 'text/javascript'; zergnet.async = true;// zergnet.src = '//www.zergnet.com/zerg.js?id=';// var znscr = document.getElementsByTagName('script')[0];// znscr.parentNode.insertBefore(zergnet, znscr);// })();// } // hide next link jQuery('.post_pagination .next').parent().css('visibility', 'hidden'); refreshAds(); // tracking if (typeof window.parent.postMessage !== 'undefined') { parent.postMessage("encaction", "*"); // `*` on any domain } // hide other rows on mobile// if ( WGTCADS.isMobile ) {// jQuery('#zerglayout .zergentity:gt(1)').hide();// } } else { /* jQuery.get(addressValue, qparams, function (result) { var this_result = jQuery(result); $post_content.removeClass('loading').html(this_result.find('#post_content').children()); this_result.find('#post_content > script').appendTo('#post_content'); if (currentPageUrl == pageLen + 1) { // hide regular partner ads and show different IDs for tracking jQuery('.js-footer-zerg:eq(0)').css({'height': 0, 'width': 0, 'overflow': 'hidden'}); } else { jQuery('.js-footer-zerg:eq(0)').css({'height': 'auto', 'width': 'auto', 'overflow': 'visible'}); } setTimeout(function () { loadTheSlider(); }, 1000); CMNUNT.refreshAds(); // tracking if (typeof window.parent.postMessage !== 'undefined') { parent.postMessage("encaction", "*"); // `*` on any domain } }, 'html'); */ jQuery.get(addressValue, qparams, function (result) { var this_result = jQuery(result); var video =this_result.find("[src*='content.jwplatform.com']"); if (video.length >0) { url = video[0].src; console.log(url); // var videourl = this_result.html().substr(video); var sc = $('
').load(url, function () { var sub1 = sc.html().substring(sc.html().search('document.write')); var str = 'document.write'; if (sub1.charAt(sub1.search(";") - 4) == '"') { var sub2 = sub1.substring(28, sub1.search(";") - 4); } else { var sub2 = sub1.substring(25, sub1.search(";") - 10); } this_result.find('.wgtc-post-video').append("
"); $post_content.removeClass('loading').html(this_result.find('#post_content').children()); this_result.find('#post_content > script').appendTo('#post_content'); if (currentPageUrl == pageLen + 1) { // hide regular partner ads and show different IDs for tracking jQuery('.js-footer-zerg:eq(0)').css({'height': 0, 'width': 0, 'overflow': 'hidden'}); } else { jQuery('.js-footer-zerg:eq(0)').css({ 'height': 'auto', 'width': 'auto', 'overflow': 'visible' }); } setTimeout(function () { loadTheSlider(); }, 1000); refreshAds(); // tracking if (typeof window.parent.postMessage !== 'undefined') { parent.postMessage("encaction", "*"); // `*` on any domain } }); } else { $post_content.removeClass('loading').html(this_result.find('#post_content').children()); this_result.find('#post_content > script').appendTo('#post_content'); if (currentPageUrl == pageLen + 1) { // hide regular partner ads and show different IDs for tracking jQuery('.js-footer-zerg:eq(0)').css({'height': 0, 'width': 0, 'overflow': 'hidden'}); } else { jQuery('.js-footer-zerg:eq(0)').css({ 'height': 'auto', 'width': 'auto', 'overflow': 'visible' }); } setTimeout(function () { loadTheSlider(); }, 1000); refreshAds(); // tracking if (typeof window.parent.postMessage !== 'undefined') { parent.postMessage("encaction", "*"); // `*` on any domain } } }, 'html'); /* jQuery.get('http://wegotthiscovered.com/testvido.html', qparams, function (result) { var this_result = jQuery(result); $post_content.removeClass('loading').html(this_result); // this_result.find('#post_content > script').appendTo('#post_content'); if (currentPageUrl == pageLen + 1) { // hide regular partner ads and show different IDs for tracking jQuery('.js-footer-zerg:eq(0)').css({'height': 0, 'width': 0, 'overflow': 'hidden'}); } else { jQuery('.js-footer-zerg:eq(0)').css({'height': 'auto', 'width': 'auto', 'overflow': 'visible'}); } setTimeout(function () { loadTheSlider(); }, 1000); CMNUNT.refreshAds(); // tracking if (typeof window.parent.postMessage !== 'undefined') { parent.postMessage("encaction", "*"); // `*` on any domain } }, 'html');*/ } }; if (typeof jwplayer == 'function') { if($vid_short_code.length > 0) { var address_href= window.location.pathname; var address_array = address_href.split("/"); var final_array= address_array[address_array.length-2]; var not_numeric = isNaN(final_array); if(not_numeric != true) { $vid_short_code.css( "display", "none" ); } } var playerInstance = jwplayer(0); var playerContainerEl = document.querySelector('.wgtc-post-video'); function getElementOffsetTop(el) { var boundingClientRect = el.getBoundingClientRect(); var bodyEl = document.body; var docEl = document.documentElement; var scrollTop = window.pageYOffset || docEl.scrollTop || bodyEl.scrollTop; var clientTop = docEl.clientTop || bodyEl.clientTop || 0; return Math.round(boundingClientRect.top + scrollTop - clientTop +700); } function getScrollTop() { var docEl = document.documentElement; return (window.pageYOffset || docEl.scrollTop) - (docEl.clientTop || 0); } var config = playerInstance.getConfig(); var utils = playerInstance.utils; // get height of player element // var playerHeight = config.containerHeight; // get player element position from top of document var playerOffsetTop = getElementOffsetTop(playerContainerEl); // set player container to match height of actual video element // this prevents container from disappearing and changing element positions // on page when player becomes minimized. this also leaves a nice visual // placeholder space for minimized player to return to when appropriate // playerContainerEl.style.height = playerHeight + 'px'; // below we handle window scroll event without killing performance // this is a minimal approach. please consider implementing something more extensive: // i.e. http://joji.me/en-us/blog/how-to-develop-high-performance-onscroll-event // determine player display when scroll event is called // if inline player is no longer visible in viewport, add class // .player-minimize to minimize and float. otherwise, remove the class to put // player back to inline inline position function onScrollViewHandler() { var minimize = getScrollTop() >= playerOffsetTop; if (!is_mobile()) { // utils.toggleClass(playerContainerEl, 'player-minimize', minimize); } // update the player's size so the controls are adjusted // playerInstance.resize(); } // namespace for whether or not we are waiting for setTimeout() to finish var isScrollTimeout = false; // window onscroll event handler window.onscroll = function() { // skip if we're waiting on a scroll update timeout to finish if (isScrollTimeout) return; // flag that a new timeout will begin isScrollTimeout = true; // otherwise, call scroll event view handler onScrollViewHandler(); // set new timeout setTimeout(function() { // reset timeout flag to false (no longer waiting) isScrollTimeout = false; }, 80); }; } }); function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = "expires="+d.toUTCString(); document.cookie = cname + "=" + cvalue + "; " + expires + "; path=/"; } function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i=0; i