Callum M

Callum M

BookBrowse Reviewer
+ Follow
BookBrowse Reviewer Callum is a BookBrowse Reviewer and has written reviews featured in The BookBrowse Review.

Callum McLaughlin (he/him) is a writer of words, a reader of books, and a lover of cats. Based in Scotland, he operates on a freelance basis, producing content for blogs, websites, and magazines. His fiction and poetry have also featured in several literary journals, both online and in print. You can find him on Twitter @Callum_M1, and he chats about all things bookish over on his blog callummclaughlin.wordpress.com

BookBrowse Editorial Reviews (55)

BookBrowse Editorial Review
The Accidentals: Stories
by Guadalupe Nettel
(6/4/2025)
There is a directness to Nettel's prose that highlights the acuity of her social and psychological observations, as she explores the gulf between our inner selves and the façade we present to others. Each of her eight narrators secretly harbors some kind of grief, longing, or loneliness that they attempt to hide from those around them.
BookBrowse Editorial Review
Vanishing World
by Sayaka Murata
(5/7/2025)
Murata leaves it to the reader to work through their own judgements about the new ways of living that this sci-fi technology, combined with changed social mores, has ushered in... Murata crafts a sense of quiet unease; her matter-of-fact prose barely belies the disturbing world she's created, absent of the love, intimacy, and emotion that readers associate with family and parenting. And yet Vanishing World regularly reminds the reader that society is constantly evolving, and that we adapt
BookBrowse Editorial Review
Tilt: A Novel
by Emma Pattee
(4/9/2025)
The chapters detailing Annie's journey alternate with flashbacks to her life prior to the earthquake, a structure that helps break up the tension of the present-day chapters and lets the reader understand more of what Annie has been going through: the grief of losing her mother; the stress of impending parenthood; her strained relationship with her husband... After the earthquake, she must face her worst fears in a very literal sense, and fight to save herself, her child, and her relationship.
BookBrowse Editorial Review
A Bird in the Air Means We Can Still Breathe
by Mahogany L. Browne
(3/12/2025)
In A Bird in the Air Means We Can Still Breathe, author Mahogany L. Browne has built an intricate web of disparate yet interconnected lives, a structure that mirrors the book's central idea: that even during a time of great isolation, we remained connected to the people around us in small yet important ways.
BookBrowse Editorial Review
The Breakthrough
by Daphne Du Maurier
(1/29/2025)
Author Daphne du Maurier is best remembered by most for penning gothic mystery thrillers like Rebecca, Jamaica Inn, The Birds, and My Cousin Rachel. While a foray into science fiction may sound at first like a radical departure from her usual style, fans of her better-known work will be glad to hear there are still echoes of it to be found in The Breakthrough. Brooding atmosphere, a protagonist out of their depth, an unnervingly ambiguous ending, and an isolated windswept se
BookBrowse Editorial Review
Graveyard Shift: A Novella
by M. L. Rio
(11/20/2024)
As each character remains awake all night, Rio explores the debilitating psychological impact of sleep deprivation... For all its dark elements, however, much of the novella has a charming and nostalgic quality. The setting of a historic church; the macabre goings on; the charismatic amateur sleuths—this is classic cozy crime. And its structure—a motley crew of likeable characters that stumble into a creepy situation, then split up to hunt down clues before reuniting to solve the mys
BookBrowse Editorial Review
Something, Not Nothing: A Story of Grief and Love
by Sarah Leavitt
(10/16/2024)
Structured chronologically, Something, Not Nothing reads like a diary of Leavitt's first two years after her partner's death—although, mirroring the unpredictable and non-linear quality of grief, it is not always straightforward. The narrative is full of abstract musings, fragments of memories, and stuttering run-on sentences... Leavitt's experiments with art, text, and the combination of the two reflect her navigation of the grieving process; reading the book feels like being insid
BookBrowse Editorial Review
Yr Dead
by Sam Sax
(9/18/2024)
Presented as a series of fleeting, non-linear vignettes, the novel plays very literally with the notion that our whole life flashes before our eyes just before we die. Ezra's memories of pain and joy as a queer, Jewish youth flood over them, and accumulate for the reader into a moving exploration of suffering and desperation... While Ezra's personal pain is a large factor in their decision to end their life, external factors, like the climate emergency and international war, also play a role. Ez
BookBrowse Editorial Review
Our Beautiful Darkness: A Graphic Novel
by (n/a) Ondjaki
(7/31/2024)
Plunged into darkness during a neighborhood blackout, a boy and a girl feel emboldened to open to each other, bit by bit. Light on plot, Our Beautiful Darkness is structured like an extended prose poem, and the focus is far more on a creating a distinct atmosphere. It takes place at the tail end of the decadeslong civil war that caused devastation across the author's native Angola, although this backdrop is only referenced in passing. It feels as though the characters are deliberately pus
BookBrowse Editorial Review
The Ballad of Jacquotte Delahaye: A Novel
by Briony Cameron
(6/19/2024)
The narrative moves at breakneck speed as Jacquotte navigates everything from battles with rival crews to deadly storms on the high seas. While this makes for a truly thrilling read that is hard to put down, the story is always full of heart, ensuring we remain invested in Jacquotte as a character. Passionate, headstrong, resilient, and fiercely loyal, she is a well-drawn protagonist who is easy to root for. The harshness of her dramatic exploits is balanced by a much gentler thread that follows
BookBrowse Editorial Review
Joy is the Justice We Give Ourselves
by J. Drew Lanham
(5/1/2024)
If one thing stands out above all else, it is Lanham's adoration of birds. As he puts it himself in the book's introduction: "Nature is my Goddess and birds, the heavenly hosts." In the freedom of their flight and the beauty of their persistent song, thematic parallels of perseverance and remaining positive are clear. In tandem with its commentary on the Black experience, the collection evokes parallels to Maya Angelou's I Know Why the Caged Bird Sings. It is therefore no surprise when La
BookBrowse Editorial Review
Big Time: A Novel
by Ben H. Winters
(4/3/2024)
The latest offering from prolific novelist and screenwriter Ben H. Winters is as philosophical as it is electrifying to read. Set in the near future, the novel follows the interwoven stories of three Maryland women. Despite grappling with grand concepts like the ethics of contemporary science and the nature of time itself, the novel never gets bogged down in its own philosophical wonderings. Instead, these ideas form the framework for a speculative, corporate thriller that favors intrigue and a
BookBrowse Editorial Review
One Hour of Fervor
by Muriel Barbery
(2/21/2024)
Author Muriel Barbery regularly employs evocative yet unusual imagery, with phrases like "[…] he was looking at the flower in himself," and "[…] death stood before him in the guise of a garden." This poetic prose, sympathetically translated from the French by Alison Anderson, is beautiful but can feel alienating due to a lack of explanation for its unconventional linguistic choices. The heady, dreamlike quality of the writing makes sense, however, when viewed from the context of the
BookBrowse Editorial Review
The End of the World Is a Cul de Sac: Stories
by Louise Kennedy
(1/24/2024)
The stories are often bleak in concept and narrative. While this can make them tough going if consumed as a whole, many offer subtle glimmers of hope, be it through deadpan humor, hard won resilience, or hints of possible change to come. A couple of entries stand out as highlights: "Garland Sunday" and "Brittle Things." In the former, we look at the repercussions of a couple's decision to terminate an unwanted pregnancy. In the latter, we follow the mother of a non-speaking autistic child, as sh
BookBrowse Editorial Review
Murder by Degrees: A Mystery
by Ritu Mukerji
(11/15/2023)
Two major threads run parallel through the entirety of Murder by Degrees: Lydia's day-to-day experiences as a woman doctor, as she is forced to continuously demonstrate her worth regardless of her clear qualifications and skill; and the mystery surrounding Anna's death. It would be easy for one to steal focus and the other to feel like an afterthought, but author Ritu Mukerji pays equal attention to each. As a result, both are developed and intriguing enough to stand on their own, but wov
BookBrowse Editorial Review
Remember Us
by Jacqueline Woodson
(11/1/2023)
Winner: BookBrowse YA Book Award 2023

Woodson strikes an excellent balance of accessibility and poignancy with her writing, lending the novel genuine appeal to a broad readership. While Remember Us is aimed at younger audiences and her adolescent protagonist feels authentic, its themes of place, memory, identity, and belonging will ring true for readers of any age. It never seems as though Woodson is patronizing younger readers by simplifying the complex themes and emotions
BookBrowse Editorial Review
Disobedient: A Novel
by Elizabeth Fremantle
(9/6/2023)
The prose pays tribute to the subject's art in its own subtle yet effective way, painting vivid scenes with words much like Gentileschi would with her brush. Despite capturing a sense of time and place so well, and sticking closely to factual accounts of the events, Fremantle keeps her focus firmly on the personal, human aspect of Gentileschi's story, lending it a timeless, universally relatable quality. Consequently, Disobedient is just as likely to stir passionate art historians as it i
BookBrowse Editorial Review
The Memory of Animals
by Claire Fuller
(8/2/2023)
Though the novel very much stands on its own merits, parallels with the Covid pandemic are impossible to ignore. Mention of lockdowns, self-isolation and vaccine trials make the narrative feel just familiar enough for the more exaggerated story elements to seem frighteningly plausible. In this regard, it was also a clever choice by author Claire Fuller to keep the scope of the novel relatively small. Though her characters' situation is extreme and this heightens the drama, their confinement to a
BookBrowse Editorial Review
Brave the Wild River: The Untold Story of Two Women Who Mapped the Botany of the Grand Canyon
by Melissa L. Sevigny
(6/21/2023)
Never dry, the account reads like the tale of adventure that it is, reflecting the danger and exhilaration of the journey without resorting to melodrama. Aside from a later chapter that feels like a rushed summary of the women's lives post-expedition, it's well paced to maintain interest. Clover and Jotter wrote of their shared fear that their scientific efforts would be lost to history, their role in the mission tokenized and careers diminished due to their gender. Sevigny's account strives to
BookBrowse Editorial Review
Salvage This World: A Novel
by Michael Farris Smith
(5/17/2023)
At its core, Smith's novel is a look at the strength required to face trauma, ranging from the shared trauma of witnessing society crumble around oneself to the deeply personal trauma of loss. Smith regularly employs long, run-on sentences that defy traditional rules of punctuation and structure. While they may seem jarring at first, these reflect the desperation felt by his characters, and the sense that circumstances are spiraling beyond their control with alarming and inescapable momentum.
BookBrowse Editorial Review
Saints of the Household
by Ari Tison
(4/19/2023)
The brothers' Indigenous Costa Rican heritage is woven into the narrative through their close relationship with their grandfather, who shows them that, as descendants of the matriarchal Bribri on their mother's side, a different way of being than the one demonstrated by their father is achievable. They hold a deep respect for their grandfather. His calm, wise, loving, sensitive nature serves as a stark contrast to their father's anger and aggression, proving that a lineage of toxic masculinity i
BookBrowse Editorial Review
What Happened to Ruthy Ramirez
by Claire Jimenez
(3/15/2023)
The story weaves back and forth in time, narrating life before and after Ruthy's disappearance. The narration is predominantly first-person, told from the perspectives of all three sisters and their mother. This could have become confusing, but author Claire Jimenez gives each of the women a distinct voice, allowing the reader to easily keep track of whose viewpoint we're following at any given moment. While the climax veers into melodrama reminiscent of a soap opera, the novel remains sensitive
BookBrowse Editorial Review
The Light Pirate
by Lily Brooks-Dalton
(2/1/2023)
Though climate change is a very real problem, its scope can often feel overwhelming. As is stated in Brooks-Dalton's novel, "There is a necessary tension between knowing how nature works in theory and witnessing it." Wanda's community alone is hit regularly by deadly storms, power outages, supply shortages, extreme flooding and stifling heat. By keeping the narrative set in this single location and focusing on the perspective of one family across the years, Brooks-Dalton makes their struggle to
BookBrowse Editorial Review
We All Want Impossible Things: A Novel
by Catherine Newman
(1/4/2023)
Newman's humor feels natural and avoids an overly saccharine tone. It creates levity and allows space for the characters — Ashley in particular — to exist as three-dimensional and flawed in their well-meaning attempts to be there for Edi. And while the story and themes are well-worn, exploring ideas we've all seen before and hitting the narrative beats most readers will expect, the novel still feels deeply poignant. The blatantly inevitable outcome hangs over the readers as much as i
BookBrowse Editorial Review
They're Going to Love You: A Novel
by Meg Howrey
(11/16/2022)
The characters are beautifully drawn. As the timeline shifts back and forth between Carlisle's adolescence and adulthood (giving equal focus to both), truths are gradually revealed. These provide further context and reveal the motivations of each character, making them feel all the more layered and believable. Through these portrayals, Howrey effectively demonstrates how complicated love can be, and how it's often those we love most that we cause the most harm. Understated yet gripping, this emo
BookBrowse Editorial Review
Numb to This: Memoir of a Mass Shooting
by Kindra Neely
(10/19/2022)
The writing strikes a conversational tone, comparable to a heart-to-heart between friends. This enhances the book's approachability, while serving as a powerful reminder that extreme events can and do touch the lives of ordinary people on a daily basis. Avoiding sensationalism of any kind, Numb to This is a raw, no-frills portrayal of one young woman's very personal journey towards healing. Regular references to events from the recent history of a fraught nation — such as Trump taki
BookBrowse Editorial Review
All That's Left Unsaid: A Novel
by Tracey Lien
(10/5/2022)
Though Ky channels her grief into a search for answers, and thus a thread of mystery runs throughout the story, All That's Left Unsaid by Tracey Lien is not a crime novel in the traditional sense. It would be much more accurate to describe it as a family drama. The book is a very intimate look at the weight of generational trauma and our ability to hurt those we love the most. Lien's novel is also a dissection of life for Vietnamese immigrants in Australia in the 1990s, when the main even
BookBrowse Editorial Review
The Book Eaters
by Sunyi Dean
(8/24/2022)
The story is told in a non-linear fashion. This allows Dean to gradually flesh out the complexity of Devon's character and moral standing as she wrestles with the guilt of finding humans for her son to feed upon. As we gain greater insight into her past, her actions and her motives, one of the book's central concerns comes into play: Is it okay for a parent to do bad things if it's for the good of their child? From certain perspectives, it would be easy to view Devon as a monster, but the more w
BookBrowse Editorial Review
Time Is a Mother
by Ocean Vuong
(6/22/2022)
Many of the poems flow freely, featuring unexpected line breaks and little in the way of punctuation. This lends them an almost breathless quality, as though thoughts and emotions are spilling forth unchecked — apt given the raw emotion at hand. With his remarkable command of the form, Vuong invites readers to pause, contemplate and see themselves and their own experiences reflected in the text. The poems are deeply personal, but their themes — including family, grief and selfhood &#
BookBrowse Editorial Review
Theatre Of Marvels: A Novel
by Lianne Dillsworth
(5/18/2022)
The novel is effectively evocative of the Victorian era and rich in period detail. Despite this, it always remains pacey, keeping readers on their toes with a good dose of intrigue and plenty of twists. A few threads feel somewhat rushed towards the end, as the narrative skirts on the edge of melodrama, but on the whole, Dillsworth balances the various characters and plot points well by always keeping her spirited heroine at the story's heart.
BookBrowse Editorial Review
The Most Dazzling Girl In Berlin
by Kip Wilson
(4/20/2022)
Structurally, the story is presented in verse, but this needn't daunt anyone who struggles to connect with poetry. On the contrary, it's incredibly readable. The format serves to create the feeling that we are reading a diary — short, sharp passages that get to the heart of the protagonist's innermost thoughts and emotions. It is only during the final act that this stylistic choice can leave things feeling a little too rushed. More time to linger over the climax could have allowed for grea
BookBrowse Editorial Review
I Will Die in a Foreign Land
by Kalani Pickhart
(3/16/2022)
Told in a non-linear fashion and incorporating multimedia formats such as newspaper articles, flight manifestos and audio transcripts, it can be tricky to keep track of the timeline and the various connections between each thread. That said, these somewhat removed, fact-based sections create a tonal contrast that accentuates the passion and emotion of the individual characters' stories. In many ways, the book feels like an ode to the everyman of Ukraine. With a deft hand, it celebrates those who
BookBrowse Editorial Review
Noor
by Nnedi Okorafor
(1/5/2022)
Aside from a few moments that arrive rather abruptly, feeling shoehorned in to further the story at convenient moments, Okorafor's worldbuilding and characterization are handled with skill. The book says much about community and resistance in the face of corruption without ever feeling heavy-handed. That's because, for all its big and resonant themes, Noor is also a fun sci-fi romp. AO is an endearing, complex heroine who is easy to root for, and Okorafor deftly weaves her social commenta
BookBrowse Editorial Review
The Book of Mother: A Novel
by Violaine Huisman
(11/17/2021)
Huisman's prose is very strong, her poetic flair remaining intact thanks to Leslie Camhi's skillful translation from the original French. At once a purge of years' worth of pain and a celebration of a life lived at the extremes, her blend of fact and fiction feels like the ideal narrative style to immortalize a woman whose bittersweet story consistently blurred the lines between sorrow and joy, heartache and passion, savagery and love.
BookBrowse Editorial Review
Tonight We Rule the World
by Zack Smedley
(11/3/2021)
The novel delves into issues as wide-ranging as loyalty, abuse, gender, PTSD, gaslighting, sexuality, toxic masculinity and warped plays for power. It's a tangled web, but the narrative never feels bloated, and Owen remains the lynchpin that holds everything together. It's also important to note that despite the many heavy themes at play, Owen's beautiful friendships and blossoming sense of self provide scope for moments of joy. In a lot of ways, this is also a novel about the time in our lives
BookBrowse Editorial Review
Once There Were Wolves
by Charlotte McConaghy
(9/22/2021)
McConaghy's prose is gorgeous, without ever feeling overwrought. She paints vivid pictures of Scotland's rugged landscape, contrasting its beauty with the inherent dangers of living and working on such harsh terrain. The nuance of her writing is such that, though the novel is a gripping page-turner, it also delves deeply into the psyche of its characters, as more and more secrets bubble to the surface. She imparts the suggestion that we may yet be able to reclaim what has been lost — a wor
BookBrowse Editorial Review
Bolla
by Pajtim Statovci
(8/4/2021)
One of the novel's greatest strengths is the complexity of its characters. Though both men are capable of much tenderness and generosity when together, Statovci is not afraid to show their darker sides. It's a testament to the subtlety and realism of Statovci's style that despite the characters' undeniable flaws and inexcusable actions, we still find ourselves rooting for them to ultimately find happiness. The prose itself is gorgeous throughout; full of rich metaphors and seamlessly translated
BookBrowse Editorial Review
Somebody's Daughter: A Memoir
by Ashley C. Ford
(6/23/2021)
Writing with remarkable poise and wisdom, Ford presses home the devastating impact of her assault without sensationalism. At its core, Somebody's Daughter is fundamentally a look at Ford's attempts to forgive others and accept herself, a journey sure to resonate with many. While it is deeply personal, her warmth and openness make elements of her story feel universally relatable. An intersectional angle and a seamless blend of beautiful prose and clear-eyed reflection grant the reading exp
BookBrowse Editorial Review
Other People's Children
by R.J. Hoffmann
(5/19/2021)
The story is told from multiple perspectives: those of Gail, Jon, Carli, Marla, and Paige, the social worker assigned to oversee the adoption. This is a clever move on Hoffmann's part, allowing us to gain insight into each character's emotional turmoil. Resonant on a thematic level with the momentum of a page-turner, Other People's Children blends the best qualities of a literary thriller with the emotion of a character drama. It's the kind of novel that begs to be discussed with fellow r
BookBrowse Editorial Review
Winter in Sokcho
by Elisa Shua Dusapin
(5/5/2021)
Short, staccato sentences propel the story forward with the brevity and momentum of a journal entry. There is a deceptive amount of skill on show, however. Dusapin achieves much with little, conjuring the sights, smells, sounds, and tastes of Sokcho to great effect, making for a surprisingly evocative reading experience. The bittersweet conclusion feels in keeping with the novel's overall tone and approach. Dusapin says just enough to hint at the profound impact the characters have had on each o
BookBrowse Editorial Review
The Night Always Comes
by Willy Vlautin
(4/21/2021)
While it's a relatively slight novel, Vlautin skillfully develops the two most prominent characters — Lynette and her mother. Their relationship is incredibly complicated due to their difficult past, and both prove themselves capable of being cruel and kind in equal measure. In the guise of a highly readable page-turner, Vlautin has penned an ode to the resilience of those being left behind by gentrifying communities — embracing their stories, flaws and all, and calling for better support system
BookBrowse Editorial Review
The Butchers' Blessing
by Ruth Gilligan
(2/3/2021)
Gilligan asks us to consider why society embraces and celebrates the legacy of some ancient beliefs while dismissing the value of others. By providing equal justification for each character's contrasting desire to either stick to tradition or leave it behind, she avoids sitting in judgement of either mindset, allowing readers the opportunity to draw their own conclusions. Though ostensibly a literary thriller, underpinned by the search for answers concerning the mutilated body presented to us in
BookBrowse Editorial Review
Dark, Salt, Clear: The Life of a Fishing Town
by Lamorna Ash
(1/6/2021)
The writing itself has a lyrical quality to it, beautifully evoking a sense of place and the reverence Ash feels for Newlyn, its people and the majesty of the sea. That said, the author explains early in the book that in conversation, she has a tendency to speak excessively, straying off on tangents and offering up extraneous detail. This habit bleeds into her prose, the text sometimes feeling bloated and overlong as a result. Ash's intention is not to draw any groundbreaking conclusions. Instea
BookBrowse Editorial Review
One Night Two Souls Went Walking
by Ellen Cooney
(11/18/2020)
The repetition of meeting a character, learning their history, and saying goodbye to them as they pass on certainly captures how relentless and emotionally taxing the chaplain's work is, but it also means the novel can feel somewhat fragmented at times, reading more like a collection of interlinked short stories. At first, it can be frustrating to lose enigmatic characters just as we begin to feel invested in them; to so quickly have the focus shift on to someone else. But when you consider how
BookBrowse Editorial Review
Leave the World Behind
by Rumaan Alam
(10/7/2020)
By positioning his characters on the periphery of disaster, Alam is able to tap into the paranoia, denial, speculation and even the enduring boredom of domesticity that remain when society is on the brink of crumbling. It also makes clear that the point of the novel is not to try and understand "what's going on," but rather to observe the various ways each character responds to fear itself. Leave the World Behind begs to be debated, making it an ideal book club pick you'll be urging every
BookBrowse Editorial Review
His Only Wife
by Peace Adzo Medie
(9/16/2020)
There is clear critique here of the widespread practice of unofficial polygamy in Ghana. Without ever adopting a judgmental tone, Medie highlights the ways in which the practice of locking women into moral contracts without proper legal protection or reciprocal opportunities upholds patriarchal structures, enforcing longstanding division between genders and classes. Medie brings the West African nation's rich and complex culture to life on the page, showing the contrast between the traditional c
BookBrowse Editorial Review
The Pull of the Stars
by Emma Donoghue
(8/19/2020)
The decision to focus on a restricted timeframe of just three days allows Donoghue to show how relentless a nurse's work really was during this time. Distressing scenes are presented in excruciating detail, drawn out to an almost painful extent, but this makes the vital tension-breaking moments of friendship, love and light all the more poignant and impactful. Beyond the gripping narrative and its endearing characters, the book serves as a love letter to all the women who sacrifice themselves mi
BookBrowse Editorial Review
The Color of Air
by Gail Tsukiyama
(7/15/2020)
Flashbacks to the past and multiple perspective changes help to reinforce the characters' bonds both to each other and to the land around them. Initially, this can call for a little patience as you make sense of the many connections between supporting characters and slot everyone into the bigger picture. Once this happens, however, it's a book that is easy to fly through. Offering fascinating insight into a slice of Hawaii's cultural and natural history, and a poignant look at the unique brand o
BookBrowse Editorial Review
Tokyo Ueno Station
by Yu Miri
(6/24/2020)
The presiding tone throughout is one of nostalgia and melancholy. This, coupled with crystalline prose, preserves a lightness of touch that makes the book a pleasure to read despite its often-upsetting subject matter. While there is certainly a sense of pathos that looms over everything, it is handled with sensitivity and nuance. As such, each moment of heartbreak seems earned by the author's thematic groundwork, rather than gratuitous or emotionally manipulative. By framing the story as she doe
BookBrowse Editorial Review
Tropic of Violence
by Nathacha Appanah
(5/20/2020)
Saying much with few words, Appanah reminds us that the refugee crisis often hits closer to home than many countries and governments are willing to admit. The prose itself is initially unassuming, but closer inspection reveals a subtle skill that underpins the novel's construction. Appanah juxtaposes the depravity of the overflowing slums with the beauty of their natural surroundings, and she is able to reflect the violence and suffering endured by Moïse without indulging in gratuity.
BookBrowse Editorial Review
The Easy Part of Impossible
by Sarah Tomp
(5/20/2020)
In addition to the emotional investment in the characters, the short chapters and readable prose make this a book that is easy to fly through. However, it's not uncommon for novels aimed at young adults to suffer from moments of awkward dialogue — the author becoming briefly visible through their attempts to adopt a narrative voice that feels authentically youthful. The Easy Part of Impossible is no exception, particularly throughout Ria and Cotton's romantic subplot. Another consistent t
BookBrowse Editorial Review
Marguerite
by Marina Kemp
(4/22/2020)
The prose remains assured throughout, with particular praise owed to the sharp dialogue. Kemp has a knack for human observation, perfectly capturing the fraught mood between each of the multifaceted characters as they seek to unburden themselves of their hidden pain while maintaining their standing within the community. Through the gradual unraveling of the tangled web that ensnares them all, we see that no one can ever truly be free while they continue to suffer beneath the weight of the past.
BookBrowse Editorial Review
The Mercies
by Kiran Millwood Hargrave
(3/18/2020)
The horror of witch trials—how they were used as a front to exert control and wipe out so-called "undesirables"—has been explored in fiction many times before. It is to Hargrave's credit that The Mercies feels no less emotionally engaging, factually enlightening, thematically resonant and narratively compelling as a result. She breathes life into the experiences of those too often relegated to mere statistics. If history books define victims of such trials by their deaths alone, this auth
BookBrowse Editorial Review
The Girls with No Names
by Serena Burdick
(2/19/2020)
The Girls with No Names is certainly not a thriller in the conventional sense, but well-placed twists, heavy emotional beats, and an ever-quickening pace lend the book the gripping feel of a page-turner. Though the inherent cruelty of the world these characters inhabit can make this an upsetting read at times, there is a consistent presence of hope and resilience.
BookBrowse Editorial Review
Mary Toft; or, The Rabbit Queen
by Dexter Palmer
(1/8/2020)
There's an ornate quality to Palmer's use of language that reflects the formalities of the period. It also feels in keeping with the air of dark whimsy suited to a story fueled by the tradition of folktales. It's hard to believe events this provocative had been largely lost to time. By once again breathing life into Mary Toft's extraordinary story, Palmer gets to the heart of our enduring struggle to overcome the lies we tell each other — and the lies we tell ourselves — to appreciate our shared

Reviews (0)

No reviews yet.

BookBrowse Book Club

Book Jacket
The Cover Girl
by Amy Rossi
Find them early enough, and they will always be her girls.

Members Recommend

  • Book Jacket
    The Sister's Curse
    by Nicola Solvinic
  • Book Jacket
    The Lost Story of Eva Fuentes
    by Chanel Cleeton
    A mysterious book links three women across generations in this novel by New York Times bestselling author Chanel Cleeton.
  • Book Jacket
    The Vanishing Place
    by Zoë Rankin
Who Said...

The third-rate mind is only happy when it is thinking with the majority. The second-rate mind is only happy when it...

Click Here to find out who said this, as well as discovering other famous literary quotes!

Book
Trivia
  • Book Trivia

    Can you name the title?

    Test your book knowledge with our daily trivia challenge!

Wordplay

Solve this clue:

W the C A the M W P

and be entered to win..

Your guide toexceptional          books

BookBrowse seeks out and recommends the best in contemporary fiction and nonfiction—books that not only engage and entertain but also deepen our understanding of ourselves and the world around us.

 


Debugging Information
ColdFusion Server Developer 2021,0,13,330286
Template /readers/index.cfm
Time Stamp 01-Jun-26 01:39 AM
Locale en
User Agent Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Remote IP 127.0.0.1
Host Name 127.0.0.1


Execution Time

Total Time Avg Time Count Template
1780277961526 ms 1.78027796153E+012 ms 1 /root/website/app_server.cfm
1121 ms 1121 ms 1 /root/website/readers/index.cfm
693 ms 693 ms 1 /root/website/readers/dsp_profile.cfm
223 ms 223 ms 1 /root/website/app_layout.cfm
179 ms 179 ms 1 /root/website/app_globals.cfm
131 ms 131 ms 1 /root/website/site/blocks/layout/dsp_right_column.cfm
113 ms 57 ms 2 /root/website/adsystem/adsystem_mod.cfm
67 ms 67 ms 1 /root/website/site/blocks/layout/dsp_footer.cfm
65 ms 65 ms 1 /root/website/adzones/showcase_track.cfm
48 ms 48 ms 1 /root/website/adzones/AdZone6.cfm
46 ms 46 ms 1 /root/website/site/blocks/dsp_border_first_impressions.cfm
45 ms 45 ms 1 /root/website/queries/qry_get_arcs_for_ad.cfm
43 ms 43 ms 1 /root/website/queries/qry_get_active_obc.cfm
38 ms 38 ms 1 /root/website/queries/qry_get_current_competition.cfm
34 ms 34 ms 1 /root/website/site/blocks/dsp_book_giveaway.cfm
27 ms 27 ms 1 /root/website/actions/adstatus.cfm
21 ms 21 ms 1 /root/website/site/blocks/layout/dsp_bottom_block.cfm
20 ms 20 ms 1 /root/website/act_check_login.cfm
20 ms 7 ms 3 /root/website/actions/act_spider_tracker.cfm
20 ms 20 ms 1 /root/website/queries/qry_get_current_wordplay.cfm
20 ms 20 ms 1 /root/website/queries/qry_get_free_newsletters.cfm
19 ms 19 ms 1 /root/website/queries/qry_get_member_info.cfm
13 ms 13 ms 1 /root/website/queries/qry_get_member_profile.cfm
12 ms 12 ms 1 /root/website/queries/qry_get_reviews_by_member.cfm
10 ms 10 ms 1 /root/website/queries/qry_get_follower_count.cfm
10 ms 10 ms 1 /root/website/queries/qry_get_following_count.cfm
2 ms 2 ms 1 /root/website/site/blocks/layout/dsp_header.cfm
1 ms 1 ms 1 /root/website/Application.cfm
1 ms 1 ms 1 /root/website/queries/qry_get_previous_arcs_for_ad.cfm
1 ms 1 ms 1 /root/website/site/blocks/layout/head.cfm
1 ms 1 ms 1 /root/website/site/blocks/layout/main_menu.cfm
0 ms 0 ms 1 /root/website/act_libraryIPLogin.cfm
0 ms 0 ms 1 /root/website/actions/udfs.cfm
0 ms 0 ms 1 /root/website/banners/ad_594.cfm
0 ms 0 ms 1 /root/website/formurl2attributes.cfm
0 ms 0 ms 1 /root/website/js/fbjavascriptsdk.cfm
0 ms 0 ms 1 /root/website/queries/qry_get_current_ezine.cfm
0 ms 0 ms 1 /root/website/queries/qry_get_reader_reviews_power_reviewers.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_border_booktalk.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_header_newsletter.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_wordplay.cfm
0 ms 0 ms 1 /root/website/site/blocks/email_modal.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/google_tags.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/header_announcement.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/main_search.cfm
0 ms  STARTUP, PARSING, COMPILING, LOADING, & SHUTDOWN
1122 ms  TOTAL EXECUTION TIME
red = over 250 ms average execution time


SQL Queries

spidercheck (Datasource=bookbrowse_com_new, Time=19ms, Records=1) in /root/website/actions/act_spider_tracker.cfm @ 01:39:21.021
SELECT	a.bot_number
        FROM	bots a
        WHERE	charindex(a.bot_name, ?) > 0
		OR a.bot_ip = ?
Query Parameter Value(s) -
Parameter #1(cf_sql_varchar) = Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Parameter #2(cf_sql_varchar) = 127.0.0.1

get_member_info (Datasource=bookbrowse_com_new, Time=19ms, Records=0) in /root/website/queries/qry_get_member_info.cfm @ 01:39:21.021
select 	a.*, 
    		b.member_account_type_name, b.member_account_type_charge, b.member_account_type_charge_frequency,  b.member_account_type_months, 
            c.member_chargetype_name, c.member_chargetype_number, a.member_classification_number, a.member_book_format
	
    from members a, member_account_types b, member_chargetype c
	
    where a.member_account_type_number = b.member_account_type_number
	and a.payment_method_id = c.member_chargetype_number
	and a.member_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 0

adactive (Datasource=bookbrowse_com_new, Time=26ms, Records=2) in /root/website/actions/adstatus.cfm @ 01:39:21.021
SELECT	viewby, section
    FROM	adsystem 
    WHERE	active  = 1 
    AND		start_date <= GETDATE()
    AND 	(viewby = ? OR viewby = 'all')
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = non

get_current_ezine (Datasource=bookbrowse_com_new, Time=0ms, Records=1, Cached Query) in /root/website/queries/qry_get_current_ezine.cfm @ 01:39:21.021
select		top 1 ezine_number, ezine_dt, ezine_image, ezine_brief_description, ezine_introduction
from		ezines
where		ezine_active_flag = 1
and 		ezine_type_number = 4
and			ezine_dt < getdate()
order by 	ezine_dt DESC
get_current_wordplay (Datasource=bookbrowse_com_new, Time=20ms, Records=1) in /root/website/queries/qry_get_current_wordplay.cfm @ 01:39:21.021
SELECT		a.wordplay_number, a.wordplay_dt, a.wordplay_name, a.wordplay_intro_text, b.wordplay_puzzle_number, b.wordplay_puzzle_question
    FROM		wordplays a 
	INNER JOIN	wordplay_puzzle_mapping c on c.wordplay_number = a.wordplay_number
	INNER JOIN	wordplay_puzzles b on b.wordplay_puzzle_number = c.wordplay_puzzle_number
	WHERE		a.wordplay_number = (	select top 1 a.wordplay_number
                                from wordplays a, wordplay_puzzles b, wordplay_puzzle_mapping c
                                where a.wordplay_number = c.wordplay_number
                                and b.wordplay_puzzle_number = c.wordplay_puzzle_number
                                and a.wordplay_dt < getdate()
                                and a.wordplay_expiration_dt > dateadd(day, -1, getdate())
                                order by a.wordplay_dt asc
                                )
get_ComNo (Datasource=bookbrowse_com_new, Time=22ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 01:39:21.021
SELECT 	TOP 1 	x.competition_number, x.bb_briefs_flag
	from			competitions x
	
		WHERE	x.competition_dt <= getdate()
		AND		x.competition_expiration_dt > dateadd(d,-1,getdate())
get_current_competition (Datasource=bookbrowse_com_new, Time=14ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 01:39:21.021
SELECT 	x.competition_number, x.book_number, x.competition_teaser_title, x.competition_teaser_description, x.competition_intro_text, x.competition_expiration_dt, x.bb_briefs_flag, x.competition_full_info_flag, x.competition_type, x.competition_optin,x.competition_optin_text, 
				a.book_title as "title",
				(b.author_first_name + ' ' +  b.author_middle_initial + ' ' + b.author_last_name) as "author",
	            f.edition_publish_dt AS "hardcover_publish_dt", f.edition_jacket_image as "hardcover_jacket_image",
				g.edition_publish_dt AS "paperback_publish_dt", g.edition_jacket_image as "paperback_jacket_image"
	
		FROM 		competitions x
		INNER JOIN	books a on a.book_number = x.book_number
		INNER JOIN	book_author_mapping c on c.book_number = x.book_number
		INNER JOIN	authors b on c.author_number = b.author_number
		LEFT JOIN	editions f on a.book_number = f.book_number and f.edition_paperback_flag = 0
		LEFT JOIN	editions g on a.book_number = g.book_number and g.edition_paperback_flag = 1

		WHERE		x.competition_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 0

get_previous_arcs_for_ad (Datasource=bookbrowse_com_new, Time=0ms, Records=0, Cached Query) in /root/website/queries/qry_get_previous_arcs_for_ad.cfm @ 01:39:21.021
SELECT 	a.arc_number,a.arc_client_url,a.arc_active_dt, a.arc_off_ad_dt,
		b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_publisher, 
		b.ezine_preview_publish_dt, b.ezine_preview_jacket_desc, b.ezine_preview_number_of_pages, b.ezine_preview_bb_comments, b.ezine_preview_isbn13,
		c.ezine_preview_category_name AS "ezine_preview_category",
		(select count(*) from arc_allocator d where d.arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) as "reviews",
		(select (CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,0))) AS numeric(12,0)))+
				(CASE WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 25 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 50 THEN 0.5
				 WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 50 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 75 THEN -0.5
				 ELSE 0
				 END)
 			from arc_allocator	where arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) AS arcrating,
 			(select (CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,1))) AS numeric(12,1)))from arc_allocator where arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) AS "decrating"

FROM arcs a
INNER JOIN ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number
INNER JOIN ezine_preview_categories c ON b.ezine_preview_category_number = c.ezine_preview_category_number

WHERE arc_closed_flag = 1
AND arc_obc_flag = 0
AND getdate() >= arc_on_ad_dt
AND getdate() < arc_off_ad_dt

ORDER BY a.arc_on_ad_dt DESC
get_future_obc (Datasource=bookbrowse_com_new, Time=15ms, Records=0) in /root/website/queries/qry_get_active_obc.cfm @ 01:39:21.021
SELECT 		a.arc_forumidfk, a.discourse_flag, a.arc_promo_text, arc_on_ad_dt,
				b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_jacket_desc, b.ezine_preview_publisher, ezine_preview_publish_dt, ezine_preview_number_of_pages, ezine_preview_isbn, ezine_preview_short_summary,
	            b.ezine_preview_bb_author_link, ezine_preview_bb_link
	
	FROM 		arcs a
	INNER JOIN 	ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number
	
	WHERE 		arc_obc_flag = 1

	AND 		getdate() < arc_on_ad_dt
	
		ORDER BY  	NEWID()
get_active_obc (Datasource=bookbrowse_com_new, Time=12ms, Records=1) in /root/website/queries/qry_get_active_obc.cfm @ 01:39:21.021
SELECT 		a.arc_forumidfk, a.discourse_flag, a.arc_promo_text,
				b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_jacket_desc, b.ezine_preview_publisher, ezine_preview_publish_dt, ezine_preview_number_of_pages,  ezine_preview_isbn, ezine_preview_short_summary,
	            b.ezine_preview_bb_author_link, ezine_preview_bb_link,
	            c.book_reading_guide
	
	FROM 		arcs a
	INNER JOIN 	ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number
	LEFT JOIN  	books c on c.book_number = b.ezine_preview_bb_link
	
	WHERE 		a.arc_obc_flag = 1
	AND			a.arc_active_flag = 0
	AND 		arc_closed_flag = 1
	AND 		getdate() >= arc_on_ad_dt
	AND 		getdate() < arc_off_ad_dt
	ORDER BY  	NEWID()
get_recent_obc (Datasource=bookbrowse_com_new, Time=13ms, Records=4) in /root/website/queries/qry_get_active_obc.cfm @ 01:39:21.021
SELECT 		a.arc_forumidfk, a.discourse_flag, a.arc_promo_text,
				b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_jacket_desc, b.ezine_preview_publisher, ezine_preview_publish_dt, ezine_preview_number_of_pages,  ezine_preview_isbn, ezine_preview_short_summary,
	            b.ezine_preview_bb_author_link, ezine_preview_bb_link,
	            c.book_reading_guide
	
	FROM 		arcs a
	INNER JOIN 	ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number
	LEFT JOIN  	books c on c.book_number = b.ezine_preview_bb_link
	
	WHERE a.arc_number IN (select top 4 arc_number
							from		arcs
							WHERE 		arc_obc_flag = 1
							AND			arc_active_flag = 0
							AND 		arc_closed_flag = 1
							AND 		getdate() > arc_off_ad_dt
							ORDER BY	arc_on_ad_dt DESC)
	ORDER BY  	NEWID()
get_member_profile (Datasource=bookbrowse_com_new, Time=11ms, Records=1) in /root/website/queries/qry_get_member_profile.cfm @ 01:39:21.021
SELECT  m.member_number, m.discourse_username, m.member_first_name, m.member_last_name, m.profile_image_url, m.member_full_name, m.member_bio, m.external_link, m.member_classification_number, m.member_email
        FROM    members m
        WHERE   m.member_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 13697

get_reviews_by_member (Datasource=bookbrowse_com_new, Time=10ms, Records=0) in /root/website/queries/qry_get_reviews_by_member.cfm @ 01:39:21.021
SELECT  a.book_number, a.ezine_preview_number, a.reader_review_number,
            COALESCE(NULLIF(LTRIM(RTRIM(m.discourse_username)), ''), NULLIF(LTRIM(RTRIM(a.reader_review_reviewer_name)), '')) AS reader_review_reviewer_name,
            a.reader_review_title, a.reader_review_rating, a.reader_review_description, a.reader_review_dt,
            (SELECT COUNT(*) FROM reader_review_likes rl WHERE rl.reader_review_number = a.reader_review_number) AS like_count
    FROM    reader_reviews a
    LEFT OUTER JOIN members m ON m.member_number = a.member_number
    WHERE   a.member_number = ?
    AND     a.reader_review_approved_flag = 1
    
        ORDER BY a.reader_review_dt DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 13697

get_follower_count (Datasource=bookbrowse_com_new, Time=10ms, Records=1) in /root/website/queries/qry_get_follower_count.cfm @ 01:39:21.021
SELECT COUNT(*) AS follower_count
    FROM member_follows
    WHERE followed_member_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 13697

get_following_count (Datasource=bookbrowse_com_new, Time=10ms, Records=1) in /root/website/queries/qry_get_following_count.cfm @ 01:39:21.021
SELECT COUNT(*) AS following_count
    FROM member_follows
    WHERE follower_member_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 13697

get_reviewer_number (Datasource=bookbrowse_com_new, Time=10ms, Records=1) in /root/website/readers/dsp_profile.cfm @ 01:39:21.021
SELECT TOP 1 reviewer_number
                FROM reviewers
                WHERE reviewer_email = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = callum.writer@gmail.com

get_reader_reviews_power_reviewers (Datasource=bookbrowse_com_new, Time=0ms, Records=50, Cached Query) in /root/website/queries/qry_get_reader_reviews_power_reviewers.cfm @ 01:39:21.021
SELECT 		top 50 reader_review_reviewer_email_address, count(reader_review_reviewer_email_address) as "count"
	FROM 		reader_reviews
	WHERE 		reader_review_reviewer_email_address like '%@%'
	AND 		reader_review_reviewer_email_address <> 'reviews@bookbrowse.com'
	GROUP BY 	reader_review_reviewer_email_address
	
	
	ORDER BY 	count desc
get_reviewer_details (Datasource=bookbrowse_com_new, Time=16ms, Records=1) in /root/website/readers/dsp_profile.cfm @ 01:39:21.021
SELECT reviewer_photo, reviewer_bio, reviewer_first_name, reviewer_last_name
            FROM reviewers
            WHERE reviewer_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 125

get_editorial_reviews (Datasource=bookbrowse_com_new, Time=631ms, Records=55) in /root/website/readers/dsp_profile.cfm @ 01:39:22.022
SELECT  d.book_number, d.book_title, d.book_sub_title,
                    e.ezine_dt,
                    ep.ezine_preview_number, ep.ezine_preview_title, ep.ezine_preview_subtitle,
                    ep.ezine_preview_author, ep.ezine_preview_jacket_image,
                    mr.media_review_rating,
                    LEFT(mr.media_review, 500) AS review_excerpt
            FROM    ezine_edition_mapping b
            INNER JOIN editions c ON c.edition_number = b.edition_number
            INNER JOIN books d ON d.book_number = c.book_number
            INNER JOIN ezines e ON e.ezine_number = b.ezine_number
            LEFT JOIN ezine_previews ep ON ep.ezine_preview_isbn13 = c.edition_isbn13
                AND ep.ezine_preview_isbn13 IS NOT NULL AND LEN(ep.ezine_preview_isbn13) > 0
            LEFT JOIN media_reviews mr ON mr.book_number = c.book_number AND mr.media_review_type_number = 9
            WHERE   b.reviewer_number = ?
            AND     e.ezine_dt = (SELECT TOP 1 ez.ezine_dt
                                  FROM ezines ez
                                  INNER JOIN ezine_edition_mapping eem ON eem.ezine_number = ez.ezine_number
                                  INNER JOIN editions ed ON ed.edition_number = eem.edition_number
                                  WHERE ed.book_number = c.book_number
                                  ORDER BY ez.ezine_dt ASC)
            ORDER BY e.ezine_dt DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 125

get_arcs_for_ad (Datasource=bookbrowse_com_new, Time=11ms, Records=0) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 01:39:22.022
SELECT 	top 10 a.arc_number,arc_promo_text,
		b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_publish_dt, 
		(select (CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,0))) AS numeric(12,0)))+
				(CASE WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 25 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 50 THEN 0.5
				 WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 50 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 75 THEN -0.5
				 ELSE 0
				 END)
 			from arc_allocator	where arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) AS arcrating

FROM arcs a
INNER JOIN ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number

WHERE arc_closed_flag = 1
AND arc_obc_flag = 0
AND getdate() >= arc_on_ad_dt
AND (select count(*) from arc_allocator d where d.arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) > 1
and getdate() <= dateadd(day,1,a.arc_off_ad_dt)

ORDER BY NEWID()
get_arcs_for_ad (Datasource=bookbrowse_com_new, Time=30ms, Records=3) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 01:39:22.022
SELECT 	top 3 a.arc_number,arc_promo_text,
			b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_publish_dt, 
			(select (CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,0))) AS numeric(12,0)))+
					(CASE WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 25 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 50 THEN 0.5
					 WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 50 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 75 THEN -0.5
					 ELSE 0
					 END)
				from arc_allocator	where arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) AS arcrating

	FROM arcs a
	INNER JOIN ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number

	WHERE arc_closed_flag = 1
	AND arc_obc_flag = 0
	AND getdate() >= arc_on_ad_dt
	AND (select count(*) from arc_allocator d where d.arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) > 1

	ORDER BY a.arc_off_ad_dt DESC
get_ads (Datasource=bookbrowse_com_new, Time=15ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 01:39:22.022
SELECT		a.adid,	adweight
	FROM		adsystem a
	INNER JOIN 	ad_category_mapping b ON b.adid = a.adid
	WHERE		a.section = ?
	AND			a.active  = 1
	AND 		a.start_date <= GETDATE()
	
	AND (a.viewby LIKE '%n%' OR a.viewby = 'all')
            

	AND     (b.category_number IN (	SELECT	category_number
									FROM	category_book_mapping
									WHERE	book_number = ?)
      		OR 	b.category_number = ?)
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = adzone6
Parameter #2(CF_SQL_VARCHAR) = 0
Parameter #3(CF_SQL_VARCHAR) = 0

get_ads (Datasource=bookbrowse_com_new, Time=13ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 01:39:22.022
SELECT	a.adid,	adweight
        FROM	adsystem a
        WHERE	a.section = ? 
        AND 	a.active  = 1 
        AND		a.start_date <= GETDATE()	
        
        AND (a.viewby LIKE '%n%' OR a.viewby = 'all')
        AND (select count(*) from ad_category_mapping where datalength(category_number) >= 1 and adid = a.adid) = 0
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = adzone6

get_type (Datasource=bookbrowse_com_new, Time=17ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 01:39:22.022
SELECT	a.start_date, a.adid, a.end_date, a.camp_views, a.image_name, a.alt_text, a.views, a.code, a.adsize
        FROM	adsystem a
        WHERE	a.adid = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1112

get_quotes (Datasource=bookbrowse_com_new, Time=33ms, Records=1) in /root/website/site/blocks/dsp_book_giveaway.cfm @ 01:39:22.022
select top 1 ezine_number, ezine_quote, ezine_quote_title
	    from ezines
	    where len(ezine_quote_title) > 1
	    order by newid()
get_free_newsletters (Datasource=bookbrowse_com_new, Time=20ms, Records=4) in /root/website/queries/qry_get_free_newsletters.cfm @ 01:39:22.022
SELECT 	*
    FROM 	free_newsletters
get_ads (Datasource=bookbrowse_com_new, Time=16ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 01:39:22.022
SELECT		a.adid,	adweight
	FROM		adsystem a
	INNER JOIN 	ad_category_mapping b ON b.adid = a.adid
	WHERE		a.section = ?
	AND			a.active  = 1
	AND 		a.start_date <= GETDATE()
		 	AND a.adid NOT IN (?) 
	AND (a.viewby LIKE '%n%' OR a.viewby = 'all')
            

	AND     (b.category_number IN (	SELECT	category_number
									FROM	category_book_mapping
									WHERE	book_number = ?)
      		OR 	b.category_number = ?)
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = showcase_track
Parameter #2(CF_SQL_INTEGER) = 1112
Parameter #3(CF_SQL_VARCHAR) = 0
Parameter #4(CF_SQL_VARCHAR) = 0

get_ads (Datasource=bookbrowse_com_new, Time=21ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 01:39:22.022
SELECT	a.adid,	adweight
        FROM	adsystem a
        WHERE	a.section = ? 
        AND 	a.active  = 1 
        AND		a.start_date <= GETDATE()	
        		AND a.adid NOT IN (?) 
        AND (a.viewby LIKE '%n%' OR a.viewby = 'all')
        AND (select count(*) from ad_category_mapping where datalength(category_number) >= 1 and adid = a.adid) = 0
Query Parameter Value(s) -
Parameter #1(CF_SQL_VARCHAR) = showcase_track
Parameter #2(CF_SQL_INTEGER) = 1112

get_type (Datasource=bookbrowse_com_new, Time=25ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 01:39:22.022
SELECT	a.start_date, a.adid, a.end_date, a.camp_views, a.image_name, a.alt_text, a.views, a.code, a.adsize
        FROM	adsystem a
        WHERE	a.adid = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 594


Scope Variables

CGI Variables:
AUTH_PASSWORD=
AUTH_TYPE=
AUTH_USER=
CERT_COOKIE=
CERT_FLAGS=
CERT_ISSUER=
CERT_KEYSIZE=
CERT_SECRETKEYSIZE=
CERT_SERIALNUMBER=
CERT_SERVER_ISSUER=
CERT_SERVER_SUBJECT=
CERT_SUBJECT=
CF_TEMPLATE_PATH=/root/website/readers/index.cfm
CONTENT_LENGTH=
CONTENT_TYPE=
CONTEXT_PATH=
GATEWAY_INTERFACE=
HTTPS=
HTTPS_KEYSIZE=
HTTPS_SECRETKEYSIZE=
HTTPS_SERVER_ISSUER=
HTTPS_SERVER_SUBJECT=
HTTP_ACCEPT=*/*
HTTP_ACCEPT_ENCODING=gzip, br, zstd, deflate
HTTP_ACCEPT_LANGUAGE=
HTTP_CONNECTION=upgrade
HTTP_COOKIE=CFCLIENT_BOOKBROWSE=order%3Dp%23member%5Fnumber%3D0%23member%5Factive%5Fflag%3D0%23member%5Flogged%5Fin%5Fflag%3D0%23library%5Fuser%5Fflag%3D0%23view%3Dbooks%23; CFTOKEN=8a29bbdc44670db7-085785EE-9915-8647-8C9AFF9EB853F738; CFGLOBALS=urltoken%3DCFID%23%3D4081338%26CFTOKEN%23%3D8a29bbdc44670db7%2D085785EE%2D9915%2D8647%2D8C9AFF9EB853F738%23lastvisit%3D%7Bts%20%272026%2D06%2D01%2001%3A39%3A21%27%7D%23hitcount%3D68%23timecreated%3D%7Bts%20%272026%2D06%2D01%2001%3A38%3A59%27%7D%23cftoken%3D8a29bbdc44670db7%2D085785EE%2D9915%2D8647%2D8C9AFF9EB853F738%23cfid%3D4081338%23; CFID=4081338
HTTP_HOST=dev.bookbrowse.com
HTTP_REFERER=
HTTP_URL=
HTTP_USER_AGENT=Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
LOCAL_ADDR=127.0.0.1
PATH_INFO=/13697
PATH_TRANSLATED=/root/website/readers/index.cfm
QUERY_STRING=
REMOTE_ADDR=127.0.0.1
REMOTE_HOST=127.0.0.1
REMOTE_USER=
REQUEST_METHOD=GET
SCRIPT_NAME=/readers/index.cfm
SERVER_NAME=dev.bookbrowse.com
SERVER_PORT=8500
SERVER_PORT_SECURE=0
SERVER_PROTOCOL=HTTP/1.1
SERVER_SOFTWARE=
WEB_SERVER_API=
Client Variables:
cfid=4081338
cftoken=8a29bbdc44670db7-085785EE-9915-8647-8C9AFF9EB853F738
hitcount=74
lastvisit={ts '2026-06-01 01:39:22'}
library_user_flag=0
member_active_flag=0
member_logged_in_flag=0
member_number=0
order=p
timecreated={ts '2026-06-01 01:38:59'}
urltoken=CFID=4081338&CFTOKEN=8a29bbdc44670db7-085785EE-9915-8647-8C9AFF9EB853F738
view=books
Cookie Variables:
CFCLIENT_BOOKBROWSE=order=p#member_number=0#member_active_flag=0#member_logged_in_flag=0#library_user_flag=0#view=books#
CFGLOBALS=urltoken=CFID#=4081338&CFTOKEN#=8a29bbdc44670db7-085785EE-9915-8647-8C9AFF9EB853F738#lastvisit={ts '2026-06-01 01:39:21'}#hitcount=68#timecreated={ts '2026-06-01 01:38:59'}#cftoken=8a29bbdc44670db7-085785EE-9915-8647-8C9AFF9EB853F738#cfid=4081338#
CFID=4081338
CFTOKEN=8a29bbdc44670db7-085785EE-9915-8647-8C9AFF9EB853F738
Session Variables:
cfid=4081338
cftoken=8a29bbdc44670db7-085785EE-9915-8647-8C9AFF9EB853F738
sessionid=BOOKBROWSE_4081338_8a29bbdc44670db7-085785EE-9915-8647-8C9AFF9EB853F738
urltoken=CFID=4081338&CFTOKEN=8a29bbdc44670db7-085785EE-9915-8647-8C9AFF9EB853F738
URL Parameters:
13697=
Debug Rendering Time: 20 ms