Recent Reader Reviews

Best Recent Reader Reviews

See also First Impressions, for member reviews of upcoming books
Trisha_T

family secrets that kept me hooked
"everyone is an unreliable narrator."

Ooooh this one was SO GOOD. It had me hooked from the start. Olivia is in a really tough spot. She's burned some bridges recently in her ghost writing career and the industry has canceled her for it. She's in a bit of a bind, financially, and is wondering if she'll work again.

When a surprise offers is extended. After leaving her father's house years ago, she's never been back, never spoke to him again. As a famous horror author, she felt he'd neglected her and she'd rather having nothing than forgive him for his mistakes. But now he's asking her to ghostwrite a story with him - one that comes with a large advance and additional pages as they work well and turn pages in. She doesn't want to but agrees. She needs the money.

From there, this story is completely addicting. I've spent the whole day relating the whole story to the family in my house. We were all waiting on cliffhangers as the mystery unfolded and each twist turned tighter. I had no guesses and enjoyed kicking around the ideas with my husband and adult child. Can you believe it, we ran out of ideas and I just had to keep reading because I truly didn't know what was coming next. This is a heartbreaking story about 2 siblings, murdered and taken horribly from their family, their friends, and the lives they should have been allowed to lead. It hooked me from the start and was such a great thriller! I loved it!

A huge thank you to the author and publisher for providing an e-ARC via Netgalley. This does not affect my opinion regarding the book.
Trisha_T

What a wonderfully, dark, gothic story.
"There is no saying what horrors might lurk in those black waters."

What a wonderfully, dark, gothic story. A bog, a surfacing body, an autopsy and madness. Lucy's been called to her sister's home by her sister's husband. Her twin sister, Sarah, is very unwell. But it's not a cold, Sarah is prone to bouts of "hysteria" and Lucy comes to help her out. Last time, it was when she'd lost a child. Now she comes because she wants to ensure Sarah doesn't lose her husband and house. Sarah's greatest fear is being committed.

This was a dark read and I loved it. Lucy's love for Sarah is tested again and again. She has to keep deciding if she will keep picking Sarah or, if at some point, she needs to get out from her shadow and live her own life. I loved the conflict, the gross bloody moments, and the confusion on how to define what was going on. The pace was perfect, gross at times then back to wondering what was going on. The story took turns I never saw coming and kept me absolutely glued to the pages. I loved this one! Can't wait for more from this author!
Power Reviewer jillg

There’s no place like home.
BEFORE DOROTHY
by Hazel Gaynor

I loved Hazel Gaynor’s 2023 release, The Last Lifeboat, so I wanted to read this historical fiction read by her. From only seeing Auntie Em in the movie, The Wizard of Oz, as an older woman, it was nice to see her transformed to Emily Gale — a vibrant young woman who journeyed from Chicago to the Kansas prairie. We see her as a newlywed ready to move where Henry wanted to farm — the Great Plains. Emily had a special bond to her sister, Annie, which became strained by distance, secrets, and the paths that each chose. When tragedy strikes and Dorothy lands on Emily and Henry’s doorstep, Emily struggles with her own limitations. The landscape of the prairie lifestyle that Gaynor portrays is with a deep sense of realism. You can taste and feel the dust and grit. I think she captured the stark beauty of the prairie along with the relentless hardships of life in the Great Plains. The bond with Dorothy shifts from distant, to duty, to something more richer with the shared grief, and quite understanding they form. Gaynor’s blending of historical fiction with literary reimagining of this classic (The Wizard of Oz) worked for me. I enjoyed all the “Easter Eggs” throughout as a nod to The Wizard of Oz.

This is a story of identity, family, the resilience of women, bonds between sisters, mothers, and daughters, and the quiet courage it takes to carry on when everything seems lost.

Thank you to BookBrowse for the book to read.
Emily (Emmie Mere)

Loved this take an Auntie Em!
I grew up completely obsessed with The Wizard of Oz but truly never wondered what Auntie Em was like before we knew her, so I love that author Hazel Gaynor thought of it for us!

Before Dorothy explores Emily Kelley before and after she becomes Emily Gale, including how Dorothy comes to live with her and Uncle Henry. With dual timelines of 1924 Chicago and Kansas a decade later, we learn so much about Emily as a young woman, a new wife, and an aunt who becomes caregiver.

I just adored Emily and was fascinated at the thought of her as a youthful, modern, city woman who more than willingly gives it up to become a prairie wife, while staying true to herself. Her assimilation into her new community wasn’t necessarily and easy one, and thought the Kansas characters were great additions. I especially warmed to the character of Adelaide, a female pilot who smashes societal expectations and gives energy to the women in Kansas.

Spread throughout the book are not-so-subtle references to The Wizard of Oz (Dorothy’s lion stuffed animal), as well as those done on the sly (is Adelaide Glinda the Good Witch?) I thought all those pieces were done well.

The theme of roles women play in each other’s lives was present throughout the book. We saw that prominently in Emily’s Kansas community but I wish we had more of Emily and her two sisters, one of whom has already left for a new life when the book begins. I was so intrigued by their relationships and definitely wanted more.

The author did a nice job of weaving in the very difficult life of homesteading, and the very real consequences of the Dust Bowl, a time in U.S. history when severe dust storms all but destroyed middle America. I honestly don’t know great details about this time, but the author’s narrative transported me right there. Through her writing, Gaynor honors the land shows respect for the people who tend to it.

Completely unexpected was the author’s decision to make Emily, her sisters and parents Irish immigrants. It made sense, though, as another theme was the idea around what makes a place home, finding home (there’s no place like home!).

All in all, I really enjoyed Before Dorothy. Definitely recommend!

I received an advance review copy from BookBrowse for free, and I am leaving this review voluntarily. All opinions are my own.
Power Reviewer jillg

Speculative Fiction Read
THE POPPY FIELDS
By Nikki Erlick

Narration was well done by the cast of: Marin Ireland; Dan Bittner; Stacey Glemboski; Graham Halstead; Mia Barron; Callie Dalton; Janina Edwards; Shawn K. Jain; Christian Barillas; Jason Culp.

Thanks to NetGalley and HarperAudio Adult for the
ALC

I was drawn to the unique premise of this speculative fiction novel exploring grief and healing through the treatment center, The Poppy Fields. I liked it being told through multiple POV and transcripts from the various applicants to The Poppy Fields. Ellis the enigmatic founder of The Poppy Fields, just wants to leave her mark on the world, and with the Poppy Fields, she has done so. We get to meet four people traveling together to The Poppy Fields for various reasons. Could there really be a cure for the broken-hearted? Can you sleep through the pain and accept the shadowy side effects? How do we heal in the wake of loss? How far does one go in order to be healed? Touching upon heartache, healing, self-discovery, friendship, forgiveness, and hope.

Nikki Erlick’s portrayal of grief in this speculative fiction read was compelling and engaged me from the beginning. The characters are dynamic and complex, with each carrying emotional burdens and seeking healing. This book would be a perfect book club pick. Her debut, The Measure, was a brilliant read and The Poppy Fields is another solid, enjoyable read as well. I can hardly wait to see what Nikki Erlick has in store for us in her next hit.
Power Reviewer jillg

A Southern Crime Thriller
KING OF ASHES
By S. A. Cosby

Narration by Adam Lazarre-White is always spot on.

A fast-paced dark gritty southern crime thriller set in a run-down Virginia town, Jefferson Run. Roman Carruthers has been called home because his father is in a coma after a car accident. He finds his younger brother, Dante, in debt to dangerous thugs and his sister, Neveah, trying to hold the family and the family business together. When Roman learns his father’s car crash was not an accident and because Dante’s immaturity and recklessness has put the family in extreme danger, Roman knows he must now step in. Also, there is a mystery as to why their mother disappeared years ago. How far would you go to protect yourself and your family?

S. A. Cosby’s writing is gorgeous, raw, gritty, and brutal. This book starts out with the gas petal down and never lets up. An intense read of multifaceted, well developed characters. S. A. Cosby is an outstanding author who tells a story brilliantly. This is going to be made into a series, by Higher Ground (Barack and Michelle Obama’s production company) along with Amblin Entertainment (Steven Spielberg’s).

Thanks to NetGalley and Macmillan Audio
Published June 10 2025
Power Reviewer jillg

A Raw and Emotional Read
THE GIRLS WHO GREW BIG
By Leila Mottley

This is a raw and emotional read portraying teenage motherhood in a small town on the Florida panhandle. Centered around three young women navigating the complexities of raising children while they are basically children themselves. Young girls making decisions they shouldn’t have to be making at their age. You see the struggles and hardships they face, but also the sisterhood, bonds, and hopes they share. Each of these young mothers share their perspectives, thus making their experiences raw and authentic. A character driven story that does not shy away from the heart-wrenching hardships, but also shows the hopes along the way. The choices these girls and young men make are extremely frustrating and you feel for them and their children. Also frustrating is that they don’t have the parental guidance or understanding, especially from society, that they so desperately need. I didn’t relate to these girls and the circumstances of their day-to-day living, but I did care about them and their children. I felt I wanted to lecture them and also hug them. Will they mature and find their path and their way to happiness? You will be rooting for each of these young women as you read their story by this young author who skillfully writes an emotional, powerful, and painful read portraying them. Leila Mottley’s writing is vivid, poetic, lyrical, raw and authentic, and reflects on both trauma and beauty in her language. She writes with such depth and skill beyond her young age — there is no doubt she will have a remarkable future ahead. I am going to go back and read her debut, Nightcrawling; I started this and because it is about marginalized lives in Oakland, it was a difficult read. Her debut was written at 17-years-old and published at 19-years-old.


Touching upon young mothers, young fathers, family, choices, self-esteem, relationships, hardships, compassion, and hope.

Thanks to NetGalley and Knopf, Pantheon, Vintage and Anchor | Knopf for the ARC ebook
Power Reviewer jillg

How Many Red Flags Is Too Many?
DON’T LET HIM IN
By Lisa Jewell


Aisling (Ash) Swan’s father has suddenly died, and her mother begins to date again —Ash quickly becomes suspicious of her mother’s new companion.

This creepy psychological thriller intricately weaves the lives of three women—Nina, Ash, and Martha—who become drawn into the lives of two elusive men, Nick and Alistair. Do you ever truly know those you let into your life? How many red flags is too many? Not knowing too much about this book and going in totally blind and letting this twisted story unfold is best.


Lisa Jewell’s plot unfolds through multiple points of view, building suspense slowly but compellingly. There is unease and hidden danger that lurks behind the facade of normal life. Her writing is clear and approachable. It started off a bit slow for me and became more fast-paced midway through. I always look forward to Lisa Jewell’s books. Explores themes of trust, truth and deception, obsession, and the complexities of relationships. Delving into the darker aspects of human nature.

Thanks to NetGalley and Atria Books for the ARC ebook.
Power Reviewer techeditor

It's not nice to fool Mother Nature
Blake Crouch is the only science-fiction writer I will read with any regularity. That is because his plots and subject matter are never ridiculous. That is more true of UPGRADE than of any of his other books that I've read. He succeeds in making his main character and narrator sound like a scientist when he talks about genealogy and DNA.

Logan lives happily with his wife and child and never wishes for more. He is a scientist but now works as a special agent for the Gene Protection Agency. It is his job to find and arrest anyone who tries to modify genes.

On one of Logan's raids of a "dark gene lab," he is impaled with a virus that will upgrade his own genes and make him an almost superhuman. He discovers that this was a deliberate plan of his previously-thought-dead mother, also a scientist but far more brilliant than he is.

What follows is Logan's adventures as he attempts to prevent his mother and then his sister from infecting the world with this virus. They feel that the human species can only be saved by this upgrade. But Logan knows that he can't stand by and watch millions die from the virus's negative effects.

This all happens in the 21st century, only a few years from now. Crouch could be implying that this is something we need to worry about but warns that "it's not nice to fool Mother Nature" (which you may remember if you're old enough). He could also be saying that our intelligence doesn't need to be upgraded. Maybe his final letter to his wife and daughter explains it.
Power Reviewer Ann_Beman

One family, three alternate versions of their lives
One family, three alternate versions of what 35 years in their lives might be like. Cora's newborn needs a name, and her husband expects (commands) her to stroller downtown to the registrar and register the baby as Gordon, which is his name and his father's name. But Cora likes the name Julien. And their 9-year-old daughter Maia prefers Bear.

So the novel narrates between the three possible timelines that result from the consequences of Cora's three different choices of name. And since Cora's husband is a respected local physician by day and a controlling, violent monster by night, the three choices have very different consequences.

Domestic abuse and other rough emotional terrain gave me pause, but the novel's sliding-doors structure and its rich, layered prose had me page-turning with few stops. Highly recommend.

Thanks to Pamela Dorman Books/Viking and NetGalley for an opportunity to read an advanced reader copy and share my opinion of this book.

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...

All my major works have been written in prison...

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 /reader_reviews/index.cfm
Time Stamp 31-May-26 06:30 PM
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
1780252220507 ms 1.78025222051E+012 ms 1 /root/website/app_server.cfm
158 ms 158 ms 1 top level /root/website/reader_reviews/index.cfm
71 ms 71 ms 1 /root/website/app_globals.cfm
65 ms 65 ms 1 /root/website/app_layout.cfm
37 ms 37 ms 1 /root/website/site/blocks/layout/dsp_right_column.cfm
27 ms 14 ms 2 /root/website/adsystem/adsystem_mod.cfm
24 ms 24 ms 1 /root/website/queries/qry_get_active_obc.cfm
19 ms 19 ms 1 /root/website/site/blocks/layout/dsp_footer.cfm
17 ms 17 ms 1 /root/website/adzones/showcase_track.cfm
14 ms 14 ms 1 /root/website/adzones/AdZone6.cfm
13 ms 13 ms 1 /root/website/reader_reviews/dsp_default.cfm
13 ms 13 ms 1 /root/website/site/blocks/dsp_border_first_impressions.cfm
12 ms 12 ms 1 /root/website/queries/qry_get_arcs_for_ad.cfm
11 ms 11 ms 1 /root/website/queries/qry_get_current_competition.cfm
9 ms 9 ms 1 /root/website/actions/adstatus.cfm
6 ms 6 ms 1 /root/website/act_check_login.cfm
6 ms 6 ms 1 /root/website/site/blocks/dsp_book_giveaway.cfm
5 ms 5 ms 1 /root/website/queries/qry_get_member_info.cfm
4 ms 1 ms 3 /root/website/actions/act_spider_tracker.cfm
4 ms 4 ms 1 /root/website/queries/qry_get_current_wordplay.cfm
3 ms 3 ms 1 /root/website/site/blocks/layout/dsp_header.cfm
1 ms 1 ms 1 /root/website/queries/qry_get_current_ezine.cfm
1 ms 1 ms 1 /root/website/queries/qry_get_previous_arcs_for_ad.cfm
1 ms 1 ms 2 /root/website/queries/qry_get_reader_reviews_newest_recommended_topten.cfm
1 ms 1 ms 2 /root/website/queries/qry_get_reader_reviews_power_reviewers.cfm
1 ms 1 ms 1 /root/website/site/blocks/dsp_border_booktalk.cfm
1 ms 1 ms 1 /root/website/site/blocks/layout/dsp_bottom_block.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/Application.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_free_newsletters.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
2 ms  STARTUP, PARSING, COMPILING, LOADING, & SHUTDOWN
160 ms  TOTAL EXECUTION TIME
red = over 250 ms average execution time


SQL Queries

spidercheck (Datasource=bookbrowse_com_new, Time=4ms, Records=1) in /root/website/actions/act_spider_tracker.cfm @ 18:30:20.020
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=4ms, Records=0) in /root/website/queries/qry_get_member_info.cfm @ 18:30:20.020
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=9ms, Records=2) in /root/website/actions/adstatus.cfm @ 18:30:20.020
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 @ 18:30:20.020
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=3ms, Records=1) in /root/website/queries/qry_get_current_wordplay.cfm @ 18:30:20.020
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=5ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 18:30:20.020
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=3ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 18:30:20.020
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 @ 18:30:20.020
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=9ms, Records=0) in /root/website/queries/qry_get_active_obc.cfm @ 18:30:20.020
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=4ms, Records=1) in /root/website/queries/qry_get_active_obc.cfm @ 18:30:20.020
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=8ms, Records=4) in /root/website/queries/qry_get_active_obc.cfm @ 18:30:20.020
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_book_number (Datasource=bookbrowse_com_new, Time=5ms, Records=0) in /root/website/reader_reviews/index.cfm @ 18:30:20.020
SELECT 	ezine_preview_bb_link, ezine_preview_title
		FROM 	ezine_previews
		WHERE 	ezine_preview_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 0

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 @ 18:30:20.020
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_reader_reviews_newest_recommended_topten (Datasource=bookbrowse_com_new, Time=0ms, Records=10, Cached Query) in /root/website/queries/qry_get_reader_reviews_newest_recommended_topten.cfm @ 18:30:20.020
SELECT TOP 10
		r.*,
		e.ezine_preview_jacket_image,

		CASE WHEN r.book_number > 0
			 THEN ''
			 ELSE e.ezine_preview_author
		END AS "author_name",

		CASE WHEN r.book_number > 0
			 THEN b.book_title
			 ELSE e.ezine_preview_title
		END AS "book_title",

		COALESCE(NULLIF(LTRIM(RTRIM(m.discourse_username)), ''), NULLIF(LTRIM(RTRIM(r.reader_review_reviewer_name)), '')) AS reviewer_display_name


    FROM reader_reviews r
    LEFT JOIN books b ON b.book_number = r.book_number
	left join ezine_previews e on e.ezine_preview_number = r.ezine_preview_number
	LEFT JOIN members m ON m.member_number = r.member_number
    WHERE r.reader_review_approved_flag = 1
    AND r.reader_review_recommended = 1
    ORDER BY reader_review_number DESC
get_reader_reviews_newest_recommended_topten (Datasource=bookbrowse_com_new, Time=0ms, Records=10, Cached Query) in /root/website/queries/qry_get_reader_reviews_newest_recommended_topten.cfm @ 18:30:20.020
SELECT TOP 10
		r.*,
		e.ezine_preview_jacket_image,

		CASE WHEN r.book_number > 0
			 THEN ''
			 ELSE e.ezine_preview_author
		END AS "author_name",

		CASE WHEN r.book_number > 0
			 THEN b.book_title
			 ELSE e.ezine_preview_title
		END AS "book_title",

		COALESCE(NULLIF(LTRIM(RTRIM(m.discourse_username)), ''), NULLIF(LTRIM(RTRIM(r.reader_review_reviewer_name)), '')) AS reviewer_display_name


    FROM reader_reviews r
    LEFT JOIN books b ON b.book_number = r.book_number
	left join ezine_previews e on e.ezine_preview_number = r.ezine_preview_number
	LEFT JOIN members m ON m.member_number = r.member_number
    WHERE r.reader_review_approved_flag = 1
    AND r.reader_review_recommended = 1
    ORDER BY reader_review_number DESC
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 @ 18:30:20.020
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
IsPowerReviewer (Datasource=, Time=0ms, Records=0) in /root/website/reader_reviews/dsp_default.cfm @ 18:30:20.020
select 	*
					from 	get_reader_reviews_power_reviewers
					where 	reader_review_reviewer_email_address LIKE 'trishathomas78@gmail.com'
IsPowerReviewer (Datasource=, Time=0ms, Records=0) in /root/website/reader_reviews/dsp_default.cfm @ 18:30:20.020
select 	*
					from 	get_reader_reviews_power_reviewers
					where 	reader_review_reviewer_email_address LIKE 'trishathomas78@gmail.com'
IsPowerReviewer (Datasource=, Time=0ms, Records=1) in /root/website/reader_reviews/dsp_default.cfm @ 18:30:20.020
select 	*
					from 	get_reader_reviews_power_reviewers
					where 	reader_review_reviewer_email_address LIKE 'jillgrebe@att.net'
IsPowerReviewer (Datasource=, Time=0ms, Records=0) in /root/website/reader_reviews/dsp_default.cfm @ 18:30:20.020
select 	*
					from 	get_reader_reviews_power_reviewers
					where 	reader_review_reviewer_email_address LIKE 'sheloved2read@gmail.com'
IsPowerReviewer (Datasource=, Time=1ms, Records=1) in /root/website/reader_reviews/dsp_default.cfm @ 18:30:20.020
select 	*
					from 	get_reader_reviews_power_reviewers
					where 	reader_review_reviewer_email_address LIKE 'jillgrebe@att.net'
IsPowerReviewer (Datasource=, Time=0ms, Records=1) in /root/website/reader_reviews/dsp_default.cfm @ 18:30:20.020
select 	*
					from 	get_reader_reviews_power_reviewers
					where 	reader_review_reviewer_email_address LIKE 'jillgrebe@att.net'
IsPowerReviewer (Datasource=, Time=0ms, Records=1) in /root/website/reader_reviews/dsp_default.cfm @ 18:30:20.020
select 	*
					from 	get_reader_reviews_power_reviewers
					where 	reader_review_reviewer_email_address LIKE 'jillgrebe@att.net'
IsPowerReviewer (Datasource=, Time=1ms, Records=1) in /root/website/reader_reviews/dsp_default.cfm @ 18:30:20.020
select 	*
					from 	get_reader_reviews_power_reviewers
					where 	reader_review_reviewer_email_address LIKE 'jillgrebe@att.net'
IsPowerReviewer (Datasource=, Time=0ms, Records=1) in /root/website/reader_reviews/dsp_default.cfm @ 18:30:20.020
select 	*
					from 	get_reader_reviews_power_reviewers
					where 	reader_review_reviewer_email_address LIKE 'bethvollbach@sbcglobal.net'
get_book_image (Datasource=bookbrowse_com_new, Time=1ms, Records=1) in /root/website/actions/udfs.cfm @ 18:30:20.020
select 	f.edition_publish_dt "hardcover_publish_dt", f.edition_jacket_image "hardcover_jacket_image", 
            g.edition_publish_dt "paperback_publish_dt", g.edition_jacket_image "paperback_jacket_image"
    
    from   	books a
	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 	a.book_number = ?
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 5009

IsPowerReviewer (Datasource=, Time=1ms, Records=1) in /root/website/reader_reviews/dsp_default.cfm @ 18:30:20.020
select 	*
					from 	get_reader_reviews_power_reviewers
					where 	reader_review_reviewer_email_address LIKE 'yobeemer2175@yahoo.com'
get_arcs_for_ad (Datasource=bookbrowse_com_new, Time=4ms, Records=0) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 18:30:20.020
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=6ms, Records=3) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 18:30:20.020
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=5ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 18:30:20.020
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=3ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 18:30:20.020
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=1ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 18:30:20.020
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=4ms, Records=1) in /root/website/site/blocks/dsp_book_giveaway.cfm @ 18:30:20.020
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=0ms, Records=4, Cached Query) in /root/website/queries/qry_get_free_newsletters.cfm @ 18:30:20.020
SELECT 	*
    FROM 	free_newsletters
get_ads (Datasource=bookbrowse_com_new, Time=3ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 18:30:20.020
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=2ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 18:30:20.020
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=1ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 18:30:20.020
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/reader_reviews/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=next%5Furl%3Dhttps%3A%2F%2Fdev%2Ebookbrowse%2Ecom%2Freadinglists%2Findex%2Ecfm%23order%3Dp%23member%5Factive%5Fflag%3D0%23member%5Fnumber%3D0%23member%5Flogged%5Fin%5Fflag%3D0%23library%5Fuser%5Fflag%3D0%23view%3Dbooks%23; CFGLOBALS=urltoken%3DCFID%23%3D4071343%26CFTOKEN%23%3D8bd99c3d50a60d3b%2DF902F75B%2DE6D3%2D2415%2D1660507C468DA59D%23lastvisit%3D%7Bts%20%272026%2D05%2D31%2018%3A30%3A20%27%7D%23hitcount%3D4%23timecreated%3D%7Bts%20%272026%2D05%2D31%2018%3A30%3A19%27%7D%23cftoken%3D8bd99c3d50a60d3b%2DF902F75B%2DE6D3%2D2415%2D1660507C468DA59D%23cfid%3D4071343%23; CFTOKEN=8bd99c3d50a60d3b-F902F75B-E6D3-2415-1660507C468DA59D; CFID=4071343
HTTP_HOST=dev.bookbrowse.com
HTTP_REFERER=http://dev.bookbrowse.com/reader_reviews/
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=
PATH_TRANSLATED=/root/website/reader_reviews/index.cfm
QUERY_STRING=
REMOTE_ADDR=127.0.0.1
REMOTE_HOST=127.0.0.1
REMOTE_USER=
REQUEST_METHOD=GET
SCRIPT_NAME=/reader_reviews/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=4071343
cftoken=8bd99c3d50a60d3b-F902F75B-E6D3-2415-1660507C468DA59D
hitcount=4
lastvisit={ts '2026-05-31 18:30:20'}
library_user_flag=0
member_active_flag=0
member_logged_in_flag=0
member_number=0
next_url=https://dev.bookbrowse.com/readinglists/index.cfm
order=p
timecreated={ts '2026-05-31 18:30:19'}
urltoken=CFID=4071343&CFTOKEN=8bd99c3d50a60d3b-F902F75B-E6D3-2415-1660507C468DA59D
view=books
Cookie Variables:
CFCLIENT_BOOKBROWSE=next_url=https://dev.bookbrowse.com/readinglists/index.cfm#order=p#member_active_flag=0#member_number=0#member_logged_in_flag=0#library_user_flag=0#view=books#
CFGLOBALS=urltoken=CFID#=4071343&CFTOKEN#=8bd99c3d50a60d3b-F902F75B-E6D3-2415-1660507C468DA59D#lastvisit={ts '2026-05-31 18:30:20'}#hitcount=4#timecreated={ts '2026-05-31 18:30:19'}#cftoken=8bd99c3d50a60d3b-F902F75B-E6D3-2415-1660507C468DA59D#cfid=4071343#
CFID=4071343
CFTOKEN=8bd99c3d50a60d3b-F902F75B-E6D3-2415-1660507C468DA59D
Session Variables:
cfid=4071343
cftoken=8bd99c3d50a60d3b-F902F75B-E6D3-2415-1660507C468DA59D
sessionid=BOOKBROWSE_4071343_8bd99c3d50a60d3b-F902F75B-E6D3-2415-1660507C468DA59D
urltoken=CFID=4071343&CFTOKEN=8bd99c3d50a60d3b-F902F75B-E6D3-2415-1660507C468DA59D
Debug Rendering Time: 8 ms