‘Palmer’ review: Justin Timberlake shows off his dramatic side in a big-hearted Apple movie

Timberlake’s Eddie Palmer was a large-university soccer star, whose bad judgment landed him a 12-yr jail sentence. Returning to his home city in Louisiana, he will take up home with his grandma (June Squibb) and struggles to locate perform, eventually landing a janitor’s job at the nearby university.

The city is “continue to all about church and soccer,” he is reminded, which can make lifetime even harder on the aforementioned boy, Sam (beautifully played by Ryder Allen), a sufferer of regular bullying since of his nonconforming gender id. In addition, his addict mom (Juno Temple) abandons him, leaving the taciturn Palmer as his unlikely overseer, with a minimal assist from the kid’s caring instructor (“Raising Dion’s” Alisha Wainwright).

Photographs of the married Timberlake keeping fingers with Wainwright prompted a bit of a tabloid furor in 2019, which is either a marketing boon for these types of a modestly scaled film, an unwelcome distraction or a minimal of both.
‘)$vidEndSlate.removeClass(‘video__finish-slate–inactive’).addClass(‘video__finish-slate–active’)}}CNN.autoPlayVideoExist = (CNN.autoPlayVideoExist === true) ? true : falsevar configObj = thumb: ‘none’,video clip: ‘entertainment/2019/12/05/justin-timberlake-apologizes-jessica-biel-alisha-wainwright-vpx.hln’,width: ‘100%’,peak: ‘100%’,portion: ‘domestic’,profile: ‘expansion’,network: ‘cnn’,markupId: ‘body-text_6’,theoplayer: allowNativeFullscreen: true,adsection: ‘const-posting-inpage’,frameWidth: ‘100%’,frameHeight: ‘100%’,posterImageOverride: “mini”:”width”:220,”style”:”jpg”,”uri”:”//cdn.cnn.com/cnnnext/dam/property/191205035252-justin-timberlake-jessica-biel-little-169.jpg”,”peak”:124,”xsmall”:”width”:307,”style”:”jpg”,”uri”:”//cdn.cnn.com/cnnnext/dam/property/191205035252-justin-timberlake-jessica-biel-medium-furthermore-169.jpg”,”peak”:173,”little”:”width”:460,”style”:”jpg”,”uri”:”//cdn.cnn.com/cnnnext/dam/property/191205035252-justin-timberlake-jessica-biel-large-169.jpg”,”peak”:259,”medium”:”width”:780,”style”:”jpg”,”uri”:”//cdn.cnn.com/cnnnext/dam/property/191205035252-justin-timberlake-jessica-biel-exlarge-169.jpg”,”peak”:438,”large”:”width”:1100,”style”:”jpg”,”uri”:”//cdn.cnn.com/cnnnext/dam/property/191205035252-justin-timberlake-jessica-biel-super-169.jpg”,”peak”:619,”full16x9″:”width”:1600,”style”:”jpg”,”uri”:”//cdn.cnn.com/cnnnext/dam/property/191205035252-justin-timberlake-jessica-biel-complete-169.jpg”,”peak”:900,”mini1x1″:”width”:120,”style”:”jpg”,”uri”:”//cdn.cnn.com/cnnnext/dam/property/191205035252-justin-timberlake-jessica-biel-little-11.jpg”,”peak”:120,autoStartVideo = bogus,isVideoReplayClicked = bogus,callbackObj,containerEl,currentVideoCollection = [],currentVideoCollectionId = ”,isLivePlayer = bogus,mediaMetadataCallbacks,mobilePinnedView = null,moveToNextTimeout,mutePlayerEnabled = bogus,nextVideoId = ”,nextVideoUrl = ”,turnOnFlashMessaging = bogus,videoPinner,videoEndSlateImplif (CNN.autoPlayVideoExist === bogus) autoStartVideo = falseif (autoStartVideo === true) if (turnOnFlashMessaging === true) autoStartVideo = falsecontainerEl = jQuery(doc.getElementById(configObj.markupId))CNN.VideoPlayer.showFlashSlate(containerEl) else CNN.autoPlayVideoExist = trueconfigObj.autostart = CNN.Capabilities.enableAutoplayBlock ? bogus : autoStartVideoCNN.VideoPlayer.setPlayerProperties(configObj.markupId, autoStartVideo, isLivePlayer, isVideoReplayClicked, mutePlayerEnabled)CNN.VideoPlayer.setFirstVideoInCollection(currentVideoCollection, configObj.markupId)videoEndSlateImpl = new CNN.VideoEndSlate(‘body-text_6’)purpose findNextVideo(currentVideoId) var i,vidObjif (currentVideoId && jQuery.isArray(currentVideoCollection) && currentVideoCollection.size > ) for (i = i ) videoEndSlateImpl.showEndSlateForContainer()if (mobilePinnedView) mobilePinnedView.disable()callbackObj = {onPlayerReady: purpose (containerId) {var playerInstance,containerClassId = ‘#’ + containerIdCNN.VideoPlayer.handleInitialExpandableVideoState(containerId)CNN.VideoPlayer.handleAdOnCVPVisibilityChange(containerId, CNN.pageVis.isDocumentVisible())if (CNN.Capabilities.enableMobileWebFloatingPlayer &&Modernizr &&(Modernizr.telephone || Modernizr.mobile || Modernizr.tablet) &&CNN.VideoPlayer.getLibraryName(containerId) === ‘fave’ &&jQuery(containerClassId).dad and mom(‘.js-pg-rail-tall__head’).size > &&CNN.contentModel.pageType === ‘article’) if (Modernizr && !Modernizr.telephone && !Modernizr.mobile && !Modernizr.tablet) if (jQuery(containerClassId).dad and mom(‘.js-pg-rail-tall__head’).size) videoPinner = new CNN.VideoPinner(containerClassId)videoPinner.init() else CNN.VideoPlayer.hideThumbnail(containerId)},onContentEntryLoad: purpose(containerId, playerId, contentid, isQueue) CNN.VideoPlayer.showSpinner(containerId),onContentPause: purpose (containerId, playerId, videoId, paused) if (mobilePinnedView) CNN.VideoPlayer.handleMobilePinnedPlayerStates(containerId, paused),onContentMetadata: purpose (containerId, playerId, metadata, contentId, duration, width, peak) var endSlateLen = jQuery(doc.getElementById(containerId)).guardian().locate(‘.js-video clip__finish-slate’).eq().lengthCNN.VideoSourceUtils.updateSource(containerId, metadata)if (endSlateLen > ) videoEndSlateImpl.fetchAndShowRecommendedVideos(metadata),onAdPlay: purpose (containerId, cvpId, token, method, id, duration, blockId, adType) /* Dismissing the pinnedPlayer if another video clip gamers performs an Advertisement */CNN.VideoPlayer.dismissMobilePinnedPlayer(containerId)clearTimeout(moveToNextTimeout)CNN.VideoPlayer.hideSpinner(containerId)if (Modernizr && !Modernizr.telephone && !Modernizr.mobile && !Modernizr.tablet) if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) videoPinner.setIsPlaying(true)videoPinner.animateDown(),onAdPause: purpose (containerId, playerId, token, method, id, duration, blockId, adType, occasion, isAdPause) if (mobilePinnedView) CNN.VideoPlayer.handleMobilePinnedPlayerStates(containerId, isAdPause),onTrackingFullscreen: purpose (containerId, PlayerId, dataObj) CNN.VideoPlayer.handleFullscreenChange(containerId, dataObj)if (mobilePinnedView &&typeof dataObj === ‘object’ &&FAVE.Utils.os === ‘iOS’ && !dataObj.fullscreen) jQuery(doc).scrollTop(mobilePinnedView.getScrollPosition())playerInstance.hideUI(),onContentPlay: purpose (containerId, cvpId, event) var playerInstance,prevVideoIdif (CNN.companion && typeof CNN.companion.updateCompanionLayout === ‘function’) CNN.companion.updateCompanionLayout(‘restoreEpicAds’)clearTimeout(moveToNextTimeout)CNN.VideoPlayer.hideSpinner(containerId)if (Modernizr && !Modernizr.telephone && !Modernizr.mobile && !Modernizr.tablet) if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) videoPinner.setIsPlaying(true)videoPinner.animateDown(),onContentReplayRequest: purpose (containerId, cvpId, contentId) {if (Modernizr && !Modernizr.telephone && !Modernizr.mobile && !Modernizr.tablet) if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) videoPinner.setIsPlaying(true)var $endSlate = jQuery(doc.getElementById(containerId)).guardian().locate(‘.js-video clip__finish-slate’).eq()if ($endSlate.size > ) $endSlate.removeClass(‘video__finish-slate–active’).addClass(‘video__finish-slate–inactive’)},onContentBegin: purpose (containerId, cvpId, contentId) if (mobilePinnedView) mobilePinnedView.enable()/* Dismissing the pinnedPlayer if another video clip gamers performs a video clip. */CNN.VideoPlayer.dismissMobilePinnedPlayer(containerId)CNN.VideoPlayer.mutePlayer(containerId)if (CNN.companion && typeof CNN.companion.updateCompanionLayout === ‘function’) CNN.companion.updateCompanionLayout(‘removeEpicAds’)CNN.VideoPlayer.hideSpinner(containerId)clearTimeout(moveToNextTimeout)CNN.VideoSourceUtils.clearSource(containerId)jQuery(doc).triggerVideoContentStarted(),onContentComplete: purpose (containerId, cvpId, contentId) if (CNN.companion && typeof CNN.companion.updateCompanionLayout === ‘function’) CNN.companion.updateCompanionLayout(‘restoreFreewheel’)navigateToNextVideo(contentId, containerId),onContentEnd: purpose (containerId, cvpId, contentId) if (Modernizr && !Modernizr.telephone && !Modernizr.mobile && !Modernizr.tablet) if (typeof videoPinner !== ‘undefined’ && videoPinner !== null) videoPinner.setIsPlaying(bogus),onCVPVisibilityChange: purpose (containerId, cvpId, seen) CNN.VideoPlayer.handleAdOnCVPVisibilityChange(containerId, seen)}if (typeof configObj.context !== ‘string’ || configObj.context.size ) configObj.adsection = window.ssidCNN.autoPlayVideoExist = (CNN.autoPlayVideoExist === true) ? true : falseCNN.VideoPlayer.getLibrary(configObj, callbackObj, isLivePlayer)})CNN.INJECTOR.scriptComplete(‘videodemanddust’)