CINXE.COM

Ghosts of Days Gone By (John Keegan Mystery, book 11) by John Misak

<!DOCTYPE html> <html class="dark prog ads" lang="en"> <head> <meta charset="utf-8"> <script>if(window.top != window.self) top.location.href = document.location.href;var noads;(function(h, c){if (c.indexOf('no-prog=yes') != -1) h.className=h.className.replace('prog','no-prog');if (c.indexOf('style=light') != -1) h.className=h.className.replace('dark','light');if (c.indexOf('no-ads=yes') != -1) {noads=true;h.className=h.className.replace('ads','no-ads');}})(document.documentElement, document.cookie);</script> <base href="https://www.fantasticfiction.com/"> <title>Ghosts of Days Gone By (John Keegan Mystery, book 11) by John Misak</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="Ghosts of Days Gone By (John Keegan Mystery, book 11) by John Misak - book cover, description."> <meta name="author" content="webmaster@fantasticfiction.com - https://www.fantasticfiction.com"> <link rel="canonical" href="https://www.fantasticfiction.com/m/john-misak/ghosts-of-days-gone-by.htm"> <link rel="preconnect" href="https://m.media-amazon.com"> <link rel="dns-prefetch" href="https://m.media-amazon.com"> <link href="/scripts/css/ff.006.min.css" rel="stylesheet"> <!--ad-head--> <!-- Quantcast Choice. Consent Manager Tag v2.0 (for TCF 2.0) --> <script type="text/javascript" async=true> (function() { var host = window.location.hostname; var element = document.createElement('script'); var firstScript = document.getElementsByTagName('script')[0]; var url = 'https://quantcast.mgr.consensu.org' .concat('/choice/', 'feqxAlANww_sI', '/', host, '/choice.js') var uspTries = 0; var uspTriesLimit = 3; element.async = true; element.type = 'text/javascript'; element.src = url; firstScript.parentNode.insertBefore(element, firstScript); function makeStub() { var TCF_LOCATOR_NAME = '__tcfapiLocator'; var queue = []; var win = window; var cmpFrame; function addFrame() { var doc = win.document; var otherCMP = !!(win.frames[TCF_LOCATOR_NAME]); if (!otherCMP) { if (doc.body) { var iframe = doc.createElement('iframe'); iframe.style.cssText = 'display:none'; iframe.name = TCF_LOCATOR_NAME; doc.body.appendChild(iframe); } else { setTimeout(addFrame, 5); } } return !otherCMP; } function tcfAPIHandler() { var gdprApplies; var args = arguments; if (!args.length) { return queue; } else if (args[0] === 'setGdprApplies') { if ( args.length > 3 && args[2] === 2 && typeof args[3] === 'boolean' ) { gdprApplies = args[3]; if (typeof args[2] === 'function') { args[2]('set', true); } } } else if (args[0] === 'ping') { var retr = { gdprApplies: gdprApplies, cmpLoaded: false, cmpStatus: 'stub' }; if (typeof args[2] === 'function') { args[2](retr); } } else { queue.push(args); } } function postMessageEventHandler(event) { var msgIsString = typeof event.data === 'string'; var json = {}; try { if (msgIsString) { json = JSON.parse(event.data); } else { json = event.data; } } catch (ignore) {} var payload = json.__tcfapiCall; if (payload) { window.__tcfapi( payload.command, payload.version, function(retValue, success) { var returnMsg = { __tcfapiReturn: { returnValue: retValue, success: success, callId: payload.callId } }; if (msgIsString) { returnMsg = JSON.stringify(returnMsg); } event.source.postMessage(returnMsg, '*'); }, payload.parameter ); } } while (win) { try { if (win.frames[TCF_LOCATOR_NAME]) { cmpFrame = win; break; } } catch (ignore) {} if (win === window.top) { break; } win = win.parent; } if (!cmpFrame) { addFrame(); win.__tcfapi = tcfAPIHandler; win.addEventListener('message', postMessageEventHandler, false); } }; makeStub(); var uspStubFunction = function() { var arg = arguments; if (typeof window.__uspapi !== uspStubFunction) { setTimeout(function() { if (typeof window.__uspapi !== 'undefined') { window.__uspapi.apply(window.__uspapi, arg); } }, 500); } }; var checkIfUspIsReady = function() { uspTries++; if (window.__uspapi === uspStubFunction && uspTries < uspTriesLimit) { console.warn('USP is not accessible'); } else { clearInterval(uspInterval); } }; if (typeof window.__uspapi === 'undefined') { window.__uspapi = uspStubFunction; var uspInterval = setInterval(checkIfUspIsReady, 6000); } })(); </script> <!-- End Quantcast Choice. Consent Manager Tag v2.0 (for TCF 2.0) --> <script> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; (function() { if (noads) return; var gads = document.createElement('script'); gads.async = true; gads.type = 'text/javascript'; var useSSL = 'https:' == document.location.protocol; gads.src = (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js'; var node = document.getElementsByTagName('script')[0]; node.parentNode.insertBefore(gads, node); })(); </script> <script> (function () { if (noads) return; googletag.cmd.push(function() { var mapping = googletag.sizeMapping(). addSize([728, 200], [728, 90]). addSize([468, 200], [468, 60]). addSize([0, 0], [320, 50]). build(); window.topad = googletag.defineSlot('/34217560/top-multi-noadsense', [[468, 60], [728, 90], [320, 50]], 'div-gpt-ad-1561798237707-0'). defineSizeMapping(mapping). addService(googletag.pubads()); googletag.pubads().disableInitialLoad(); googletag.pubads().enableSingleRequest(); googletag.enableServices(); }); googletag.cmd.push(function() { var mapping = googletag.sizeMapping(). addSize([728, 200], [728, 90]). addSize([468, 200], [468, 60]). addSize([0, 0], [320, 50]). build(); window.bottomad = googletag.defineSlot('/34217560/bottom-multi-noadsense', [[728, 90], [320, 50], [468, 60]], 'div-gpt-ad-1561798315429-0'). defineSizeMapping(mapping). addService(googletag.pubads()); googletag.pubads().disableInitialLoad(); googletag.pubads().enableSingleRequest(); googletag.enableServices(); }); }()); </script> <script> (function () { if (noads) return; //load the apstag.js library !function(a9,a,p,s,t,A,g){if(a[a9])return;function q(c,r){a[a9]._Q.push([c,r])}a[a9]={init:function(){q("i",arguments)},fetchBids:function(){q("f",arguments)},setDisplayBids:function(){},targetingKeys:function(){return[]},_Q:[]};A=p.createElement(s);A.async=!0;A.src=t;g=p.getElementsByTagName(s)[0];g.parentNode.insertBefore(A,g)}("apstag",window,document,"script","//c.amazon-adsystem.com/aax2/apstag.js"); //initialize the apstag.js library on the page to allow bidding apstag.init({ pubID: 'b1925f5f-7c03-40ff-875b-4dbac5c89ac6', adServer: 'googletag' }); apstag.fetchBids({ slots: [{ slotID: 'div-gpt-ad-1561798237707-0', slotName: '/34217560/top-multi-noadsense', sizes: [[468, 60], [728, 90], [320, 50]] }, { slotID: 'div-gpt-ad-1561798315429-0', slotName: '/34217560/bottom-multi-noadsense', sizes: [[728, 90], [320, 50], [468, 60]] }], timeout: 2e3 }, function(bids) { // set apstag targeting on googletag, then trigger the first DFP request in googletag's disableInitialLoad integration googletag.cmd.push(function(){ apstag.setDisplayBids(); googletag.pubads().refresh(); }); }); }()); </script> <!--/ad-head--> </head> <body> <div id ="mainframe" class="main" itemscope itemtype="http://schema.org/Book"> <!--topbar--> <div class="fftop"> <div class="navbar"> <ol class="navbar" itemscope itemtype="https://schema.org/BreadcrumbList"><li class="navbar" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><a itemprop="item" href="/"><span itemprop="name">Home</span></a> &gt;&nbsp;<meta itemprop="position" content="1"></li><li class="navbar" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><a itemprop="item" href="/m/john-misak/"><span itemprop="name">John Misak</span></a> &gt;&nbsp;<meta itemprop="position" content="2"></li><li class="navbar" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><span itemprop="name">Ghosts of Days Gone By</span><meta itemprop="position" content="3"></li></ol> &nbsp;<span id="editLink"></span> </div> <div id="ffuser" class="ffuser"> &nbsp; </div> <div class="spacer"></div> </div> <!--/topbar--> <!--header--> <div class="ff"> <div class="logo"> <a href="/"><img alt="Fantastic Fiction" src="https://static.fantasticfiction.com/img/fflogo.png" width="250" height="25"></a> </div> <div class="search"> <form action="/search/"><span class="searchtxt">Search for &nbsp;</span><select class="searchselect" name="searchfor" onchange="this.form.keywords.focus();"><option selected="selected" value="author">Author</option><option value="book">Book</option><option value="series">Series</option></select> &nbsp;<input class="searchinput" type="text" name="keywords" maxlength="60" required> &nbsp;<input type="submit" value="Find"></form> </div> <div class="spacer"></div> <!--/header--> <!--menu--> <div class="menu"><ul id="menu-list" class="menu-ul"><li class="menu-li"><a id="menuitem1" class="menu-a" href="">&nbsp;</a></li></ul></div> <div id="allgenres" class="ff"></div> <div class="spacer"></div> <!--/menu--> <!--ff-top-ad--> <div class="ad-banner-top"> <!-- /34217560/top-multi-noadsense --> <div id='div-gpt-ad-1561798237707-0'> <script> if (!noads) googletag.cmd.push(function() { googletag.display('div-gpt-ad-1561798237707-0'); }); </script> </div> </div> <!--/ff-top-ad--> <div style="height:500px;" class="ff"> <div class="nbpb"><span class="pb"><a href="/m/john-misak/third-and-long.htm"> &lt;&lt; Previous book</a></span><span class="nb"><a href="/m/john-misak/to-the-bone.htm">Next book &gt;&gt; </a></span></div><div class="spacer"></div> <div id="bookimage"> <img class="bookimage" alt="book cover of Ghosts of Days Gone By" src="/img/_.png" data-US="51ATSzVtBWL._SL500_.jpg" width="316" height="480" > <br><div style="font-size:small;color:gray;padding-bottom:4px;" title="The number of members that have added this book to their lists, updated daily"></div> <div style="margin:auto;max-width:360px;"><div style="float:left;" id="wish-list"></div><div style="float:right;" id="my-books"></div></div> <div class="spacer">&nbsp;</div> </div> <div class="bookheading"><h1 itemprop="name" id="booktitle_1">Ghosts of Days Gone By</h1> <span class="year">(2025)</span><br>(Book 11 in the <a href="/m/john-misak/john-keegan-mystery/">John Keegan Mystery</a> series)<br>A novel by <span itemscope itemprop="author" itemtype="http://schema.org/Person"><span style="font-size:120%;" itemprop="name"><a href="/m/john-misak/">John Misak</a></span></span></div> <br> <div id="book-shop"></div> <div class="spacer">&nbsp;</div> </div> <div class="spacer">&nbsp;</div> <div class="blurb"> <span class="a-text-bold">The Eleventh Entry in the John Keegan Mystery Series will entice readers with an intricate plot and exciting conclusion.</span><span><br/><br/>Haunted by the apparent failure of his marriage and the remnants of a past relationship, NYPD Homicide Detective John Keegan must face his past, both in his personal and professional lives. His mistakes will come back to him, taunt him, and tempt him to revisit his life and his career.<br/><br/>When a young woman is mysteriously killed at a concert in Central Park, Keegan investigates even though it is not his jurisdiction. Assigned to the case by top brass, Keegan arrives on scene and is taken back over a decade to a similar case with eerily familiar circumstances. Alice Duncan has been shot but the initial evidence points to something more sinister, a criminal underground element Keegan cannot shake.<br/><br/>Keegan's wife, Pauline, has taken a leave of absence from their marriage and her job, leaving Keegan with the kids and a creeping suspicion the marriage has ended. He clings to hope, and as he investigates, the case brings him back to when he and Pauline first dated. At the same time, reporter Elena Moreno-Glazer, an old flame from decades before, returns to New York to cover Keegan's newly minted television fame. As his past and present collide, Keegan desperately tries to hold onto his vision of the future, where he and Pauline grow old together.<br/><br/>Elena and the case both distract him from this mission and bring him back to his past. His guides are Detectives Arianna Nunez and Karl Lavin, one a symbol of the future, the other a remnant from the past. Together they must solve the case as other victims find themselves in the crossfire between rival gangs. When Keegan finally discovers the link that brings everything together, part of his life is irreparably shattered and he must decide his ultimate fate.<br/><br/>He's been in the sights of city government since he toppled Acting Mayor Noreen McHale during his previous investigation of elected Mayor Miles LeBlanc. Keegan uncovered corruption throughout the city's politicians and now must watch his every move. He cannot be sure his assignment to this case was a setup but he promises Duncan's family he'd bring her justice. The fact that his new TV show based on his career has taken off only complicates matters and forces Keegan to decide what he truly wants out of the rest of his life.<br/><br/></span><span class="a-text-italic">Ghost of Days Gone By </span><span>takes readers on a journey through murder investigation, the criminal underbelly of New York City, and the politics that claim to stand above the fray while treading knee deep into it. Keegan hopes to resolve his troubles, find the killer, and set his life on the right course. He must face off against two powerful criminal elements, one that runs the streets and the other that runs the city. Events of this book will connect with the last Keegan book, </span><span class="a-text-italic">The Takedown</span><span>, coming in late 2025.</span><br> <span style="float:right" id="preview"></span> <br><br>Genre: <a class="ameritxt" href="/genres/?gp=M">Mystery</a><br> </div> <br> <br> <div id="genre-list"></div> <!--ff-bottom-ad--> <div class="ad-banner-bottom"> <!-- /34217560/bottom-multi-adsense --> <div id='div-gpt-ad-1561798315429-0'> <script> if (!noads) googletag.cmd.push(function() { googletag.display('div-gpt-ad-1561798315429-0'); }); </script> </div> </div> <!--/ff-bottom-ad--> <!--footer--> <br> <div class="search"> <form action="/search/"><span class="searchtxt">Search for &nbsp;</span><select class="searchselect" name="searchfor" onchange="this.form.keywords.focus();"><option selected="selected" value="author">Author</option><option value="book">Book</option><option value="series">Series</option></select> &nbsp;<input class="searchinput" type="text" name="keywords" maxlength="60" required> &nbsp;<input type="submit" value="Find"></form> </div> <a href="/about.htm">About Fantastic Fiction</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/information-for-authors.htm">Information for Authors</a> <br> <div class="footer"> <a href="/privacy.htm">Privacy Policy</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/cookie-policy.htm">Cookie Policy</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/terms.htm">Terms</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/affiliate-disclosure.htm">Affiliate disclosure</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/preferences.htm">Preferences</a> <br> Questions? Comments? Corrections? Please email <a href="mailto:webmaster@fantasticfiction.com">webmaster@fantasticfiction.com</a> <br> &copy; 1999 - <span id="copy-year"></span> Fantastic Fiction <button onclick="scrolltotop()" id="scrolltotopBtn" title="Go to top">Top</button> </div> <!--/footer--> </div> </div> <!--scripts--> <script> ffPageType = 'book'; dwPageType = 'B'; dwBookID = 'w1359051'; dwPageID = 'ba12861_w1359051'; dwAuthorName = "John Misak"; dwBookTitle = "Ghosts of Days Gone By"; dwUKisbns = "4F85E3E7BD43208080534F56C0A6164125A71D512B4C99AA30DA2D919DEF071C"; dwUSisbns = "4F85E3E7BD43208080534F56C0A6164125A71D512B4C99AA30DA2D919DEF071C"; dwCAisbns = "4F85E3E7BD43208080534F56C0A6164125A71D512B4C99AA30DA2D919DEF071C"; dwAUisbns = "4F85E3E7BD43208080534F56C0A6164125A71D512B4C99AA30DA2D919DEF071C"; dwUKisbnImgs = ",,,y"; dwUSisbnImgs = ",,,y"; dwCAisbnImgs = ",,,y"; dwAUisbnImgs = ",,,y"; var ff = { bookpage: true, pageid: 'w1359051', authorbookid : 'm12861_1359051', popContent: function () { ff.loadScript('/scripts/js/show-bookshop.004.min.js'); } }; </script> <script id="ffscript" src="/scripts/js/ff.009.min.js" async></script> <!--/scripts--> <!--analytics--> <!--/analytics--> </body></html>

Pages: 1 2 3 4 5 6 7 8 9 10