Chris Bohjalian Interview, plus links to author biography, book summaries, excerpts and reviews

Chris Bohjalian

Chris Bohjalian

How to pronounce Chris Bohjalian: boh-JAIL-yen

An interview with Chris Bohjalian

Author Chris Bohjalian chats with BookBrowsers

We'd like to welcome author Chris Bohjalian to our discussion. Over the years BookBrowse has reviewed many of Mr. Bohjalian's works, and we recently hosted a discussion of his latest novel, The Jackal's Mistress, on the BookBrowse Community Forum. You can find information about the book at BookBrowse.com and view the BookBrowse Book Club discussion here.

BookBrowse: Which of your books was your favorite to write? Which one are you most proud of? Which was the most challenging?


Chris Bohjalian: Favorite to write? Perhaps The Flight Attendant or The Lioness. I had a blast interviewing flight attendants (my aunt was a flight attendant). I find their job unbelievably hard and under appreciated, and yet they are so tolerant of the people they see at their worst. And they have all seen wild stuff while trying to keep us safe at 35,000 feet.

And writing a novel such as The Lioness demanded going on a safari and researching old Hollywood. I loved every moment of both elements.

Now, I can tell you that I am LEAST proud of A Killing in the Real World, the single worst first novel ever published, bar none.

I think my historical fiction — novels such as Hour of the Witch, Skeletons at the Feast, The Jackal's Mistress, and The Sandcastle Girls — may be better than my thrillers, and so, perhaps, I take more pride in them. But it's obviously subjective, and my opinion changes daily. Ask me tomorrow, and I might be feeling that The Red Lotus is my best novel. Or, some days, Midwives.

The most challenging novel to write was The Double Bind. That's the only book I've written where I knew the ending when I started to write, and I found it difficult for me to get from point A to point Z. It was like having a jigsaw puzzle with the border complete, but no idea what the image was inside.

BB: Have you ever started a book thinking you had a set direction, only to have it wide up somewhere else completely? Or have you had a character "hijack" a story - demand to be heard, or to have their story told, even though it's not what you intended?

CB: Can I answer "all of them?" Or, perhaps, "most of them?" I rarely know where my books are going. I depend on my characters to take me by the hand and lead me through the dark of the story.

BB: Is there a book you've written that you feel should have received more recognition than it did?

CB: Oh, when you write 25 books, some will always draw more attention than others. But I have so fortunate to be the flavor of the month four times: Midwives, The Double Bind, The Sandcastle Girls, and The Flight Attendant. Now, I do wish more readers had discovered Close Your Eyes, Hold Hands, but because the narrator is a teenager, a lot of folks supposed mistakenly it was YA and passed. The reality, of course, is that lots of adults read lots of YA: there are, after all, SO many brilliant YA books. But, for whatever the reason, that novel – which I think is among my best – never caught on.

BB: How do you determine what subjects to write about? Do you usually have more than a single book in the works at any one time, or do you work to completion on one before moving to the next?

CB: I never begin a new novel until I have turned in the second draft of its predecessor. (My books always go through five or six drafts.)

But given the time a book spends in production, I am always polishing one novel while I am writing the next one.

And I only write a book if it's interesting to me: if I'm not enthusiastic while writing it, it's unlikely a reader will be enthusiastic while reading it. I have cut bait many times.

BB: Where does your inspiration come from? I'm curious about how you came up with the idea of writing about a safari gone wrong during the Golden Age of Hollywood, for example. Your books cover a wide range of time periods and topics. Are you constantly thinking, "Hmmm… that might make a good book"? Or do you have people approaching you all the time saying, "You know, [this] would make a GREAT book…"?

CB: Ah, The Lioness. The novel was born in a movie theater. I emerged from a matinee in August 2019, squinting against the high summer sun, and thought to myself, "My God, I love movies. Why have I never written a Hollywood novel?"

When my books work, and heaven knows they do not always work, one of the emotions that keeps you turning the pages is dread. I know so many of my favorite novels, movies, and TV series live at the nexus of anxiety and fear.

Moreover, I tend to be writing novels these days that have multiple geographies, some that are romantic or (and this is an important distinction) romanticized. In the last ten years, I have set novels with scenes in Syria, Armenia, Italy, Manhattan, Dubai, Moscow, Sochi, Vietnam, 1662 Boston, 1864 Virginia, 2022 Las Vegas, and (yes) my beloved Vermont.

So, I wanted a venue in addition to Hollywood: where I could send a Hollywood entourage that would put them completely out of their element, and in deep and real danger? Who would rise to the challenge of survival and who would not? I knew this would be set in one of Hollywood's big screen golden ages from my childhood, which meant it would be set during the Cold War.

And that led me to East Africa. I was originally thinking the book would be The Poisonwood Bible meets And Then There Were None. But now, thanks to Jordy's Book Club, I view it more as Evelyn Hugo meets Jurassic Park.

And, yes, like most novelists, I am always thrilled when I have one of those epiphanies, those "ah-ha" moments when I have found what might be my next novel.

BB: Have you ever asked yourself where in the world you'd like to visit and then ponder if that locale has the roots of a story just waiting for you to write? From your previous responses it seems the glimmer of an idea comes to you first followed by the research that might necessitate travel. My question could be described as the "chicken before the egg or egg before the chicken" syndrome. Where in the world would I like to visit and then delve into the surrounding history or where does the historical research lead me?

CB: Great question. Only once have I been somewhere and thought, THIS is a novel. That would have been on my third visit to Tuscany in 2008. (I have friends who live there, and I used to bike there.) I realized it had been a battlefield in 1944, and The Light in the Ruins was born.

Usually, I have had a premise for a book and THEN gone to the geography — i.e., Vietnam or Tanzania.

BB: How do you go about researching your books? Has that changed since your first novel was published in 1988?

CB: Lord, 1988 was the Mesozoic era. Everything has changed. I wrote my first novel in longhand, using fine point Bic pins and yellow legal pads.

I do all my own research. All of it. When I'm interviewing an expert, I never know where the conversation will go, and I want to be present to ask unexpected follow-up questions. I was a newspaper columnist for decades and a magazine journalist for years. I enjoy this part of the work immensely.

To research a novel such as The Jackal's Mistress:

• I read secondary sources, books about the Civil War, especially those that had a focus on the Shenandoah Valley.
• I read primary sources, letters and memoirs from the era.
• I interviewed historians who knew about the Vermont Brigade, Civil War medicine, and the war in Northern Virginia.
• I traveled from the Museum of Civil War Medicine in Frederick, Maryland to Harper's Ferry, West Virginia, then through the Shenandoah Valley in Virginia (visiting such key sites as the Third Battle of Winchester), and into Richmond.

I also had expert historians read rough drafts of the novel.

BB: How involved do you get in the creation of the audio versions of your novels? How about with the screenplays (e.g., The Flight Attendant)?

CB: Kelly Gildea of Penguin Random House Audio has been producing (and sometimes directing) my audiobooks since 2011. She's brilliant. I trust her to find the perfect narrators. And I'm thrilled when it seems to her the right narrator is my daughter, Grace Experience. Grace is not "merely" my daughter: she is also a terrific actor and one of my three principal manuscript readers, along with her mother, Victoria Blewer, and my editor, Jenny Jackson. They are three of the smartest people I know — and they're always honest with me about what works and what doesn't.

I've had three books become movies and one that became a TV series. My principal involvement has been hanging out at craft services and trying to stay out of the way when I'm on the set.

Now, I did write teleplays for episodes of two other books and a screenplay for a third, but they never went anywhere.

BB: I know The Flight Attendant was made into a limited series on HBO. Can you say a little bit about your involvement with the series with regard to helping the production company stay true to the story and also whether you had any input into which actors or actresses were selected for the key roles.

CB: All success to that show belongs to show runner Steve Yockey, the brilliant actor Kaley Cuoco, and the teams at Warner and Max. My involvement season one was enjoying bagels from craft services and trying to stay out of the way when I was on set. And because season two was filmed in 2021, the Covid protocols were so intense I was not even on set.

BB: Do you decide the title of your books?

CB: Either I do or my brilliant editor, Jenny Jackson, does. Some of my titles are better than others. I considered calling The Jackal's Mistress, The Jackal and Libby Steadman or Libby's War or The Mistress Bullet.

BB: How about cover art? Do you get any say in that? I'd think that your wife [photographer and artist Victoria Blewer] would be a valuable resource in that regard, with her "artist's eye."

CB: Back in the day — prior to perhaps 2004 — my wife created my covers, working with my publisher. Her original, hand-colored photos are on the hardcovers of Water Witches, Midwives, The Law of Similars, and The Buffalo Soldier.

I am still deeply involved in my covers. But, obviously, I defer to art directors and marketing.

BB: I see that The Jackal's Mistress is your 25th book. What inspired you to start writing in the first place? What made it possible for you to take time out of your life to complete the book?

CB: Take "time out of my life?"

I NEVER took time out of my life. Never.

I wrote my first three novels while working full-time in advertising. I wrote them from 5 am to 7 am in the morning before going to work, Monday and Tuesday nights after work, and then on the weekends.

I wrote my fourth novel while juggling journalism and a weekly newspaper column (which I would write every week from 1992 - 2015).

As for what inspired me to start? Who knows? But I still have some of the short stories I was writing even in fourth grade: I discovered my mother had saved them after my father died.

BB: At what point did you consider yourself a successful novelist? Was there a specific event that made you think, "Wow, I've made it!"?

CB: Do we ever think we've made it?

Obviously I have "made it" by a lot of measures.

But there are still lots of days when I feel like a poser, moments when I fear my talent is not commensurate with my vision.

BB: Has becoming a writer changed the way you read others' books, and if so, how?

CB: Well, I am more likely to understand the wiring and plumbing behind the Sheetrock.

But that's true for all novelists.

I probably read 55 to 60 books every year, and I still love it when a book leaves me with all the feels at the end or gives me a whopping inferiority complex.

BB: What are some of the books you've read that you feel are exceptional?

CB: I probably read between 50 and 60 books every year. So, let's just focus on "recent" books. Here are some of my faves:

The Wedding People
Broken Country
Martyr
Memorial Days
Challenger
Going Home
North Woods
Colored Television
Intermezzo
The God of the Woods
Yellowface
Come and Get It
Grief is for People
Chain Gang All-Stars

BB: Do you have an enormous pile of unread books around your house, or do you prefer ebooks?

CB: I have read exactly one ebook in my life. I don't even own a tablet. It was on my way to the Serengeti and there was no way the book was at a bookstore at JFK. I read it on my phone.

So, yes, my house is awash in Jenga towers of books made of paper.

BB: What question do you wish people would ask (or ask more often) about your work?

CB: I just finished my 35th book tour. Among the most interesting questions I have ever been asked was on this tour. It was asked by Barnes & Noble's Miwa Messer for her "Poured Over" podcast. "Chris," she asked, "what's with all the grief?" It was so damn smart and such a precise surgical incision into my body of work.

BB: How did you answer her? It does seem that your books always have an element of tragedy to them.

CB: Ah, grief. I answered Miwa by talking about how trauma is in my DNA as a grandson of two survivors of the Armenian Genocide, but also how grief is a part of the soul of the world. People much smarter than me have observed that all of living is but saying goodbye, and we live in a state of anticipatory grief.

BB: What are you working on now?

CB: In August of 2026 you will see The Amateur. The novel is about an 18-year-old likely LPGA golf superstar who, in 1978, drives a golf ball through the practice net at her swank country club in a suburb of New York City, accidentally killing a caddy — and classmate. It derails her life and the novel builds to a courtroom drama. In some ways, it's reminiscent of my novel, Midwives.

BB: You mentioned that your books go through several drafts. How far along are you on The Amateur? Do you have another book in the works you can give us a hint about?

CB: The Amateur is done. It's being copy-edited. That book will come out in 2026. So, I am writing a new play at the moment.

BB: I'm surprised that once a book is done, it takes that long to get it to market. How long is it, on average, from the time you finish the first draft until it gets to stores?

CB: It varies. I write faster than it makes sense to publish a book, sometimes. (After all, who REALLY wants to read one of my books every 12 months?) But, usually, it's about 12 to 15 from the time I turn in a final draft and when the book is published.

BB: I just can't image what it's like to have one's job be writing books. It seems like it would take a lot of discipline to consistently spend hours creating a novel. Do you write every day?

CB: I write every day that I am not on tour or traveling. Even Easter and Christmas mornings.

I find I am most entertained when I am working when I am writing something very different from what I wrote last. It feels a LOT less like work if the material is new to me and I am surprised by what I'm learning as I write.

BB: I imagine the pandemic derailed some of your traveling plans. Were any of your novels delayed because you couldn't fly then?

CB: I was SO lucky when it came to researching The Lioness. I was SUPPOSED to go to the Serengeti in May 2020, but there were two cancellations on a late fall 2019 safari, and so my wife and I went then. This meant that I was able to write that novel in 2020.

I was in Las Vegas in the summer of 2021 researching The Princess of Las Vegas. Among the strange Covid moments? The lines of people at the slot machines wearing masks, WITH HOLES CUT AROUND THE MOUTH SO THEY COULD SMOKE.

Now, I was supposed to be in Aleppo in 2011, researching The Sandcastle Girls. I had to cancel when the Arab Spring became the cataclysmic Syrian war.

BB: I expect you've seen a lot of crazy stuff in your travels, both during your research and your book tours. Any other anecdotes you can share?

CB: Such as the time on a book tour that a hotel returned to me NOT my laundry, but a woman's – and their laundry was closed now and I was checking out at 5 in the morning? Or the time I vomited on my third flight of the day, a turbo prop into Steamboat Springs, with book groups on the plane coming to meet me and Andre Dubus III and Sena Jeter Naslund? I just finished my 35th book tour: I have the material for a Netflix comedy special.

BB: I've read most of your books and have enjoyed them all! The first one I read was Trans-Sister Radio and the copy I read did not give me any indication in the accompanying information that "Chris" was not a woman. When I subsequently learned you are male, I was amazed about your ability in this book—and the others I subsequently read—to so expertly represent women's experiences! Any comment on this?

CB: One review of my novel, Midwives, ended, "An added benefit of this novel is the candor and honesty with which Bohjalian writes about her experiences in labor, and what must have been like for her to give birth."

I don't necessarily plan to write a novel from a woman's point of view. When I do – and, in all likelihood, I have as many male points of view in my work as I do female – it's because it seems to me that a woman would be more likely than a man to go on this particular emotional journey. Or that's the voice I hear in my head when I imagine the premise.

And, of course, any point of view that is rendered in the third person (or, in one of my books, the second) is experienced differently from the first. Compare my narrator in Midwives, Connie Danforth, for instance, with the omniscient narrator in Skeletons at the Feast (who moves among easily a dozen different characters).

BB: What advice would you give an aspiring writer?

CB: Read lots. Read in the genres you love. Know the first draft is not the last draft. Have fun.

BB: Our deepest thanks to Chris Bohjalian for being a part of this BookBrowse discussion and to all the BookBrowsers who participated. Look for the author's latest novel, The Amateur, in August 2026.



This discussion took place on the BookBrowse Community Forum, April 14-April 22, 2025. The conversation above has been edited for clarity.

* * *

For additional interviews with Chris Bohjalian, please see the reading guides for Midwives and Skeletons at the Feast

The story behind the story: The kernel that led to the novel, The Sandcastle Girls

Sometimes my novels have positively elephantine gestation periods - and even that, in some cases, is an underestimate. A mother elephant carries her young for not quite two years; I have spent, in some cases, not quite two decades contemplating the tiniest seed of a story and wondering how it might grow into a novel.

Moreover, in the quarter-century I've been writing books, I've realized two things about a lengthy gestation period. First, the longer I spend allowing an idea to take root inside me, the better the finished book; second, the more time I spend thinking about a book, the less time I spend actually writing it. Here's a confession: The first draft of the novel for which I may always be known best, Midwives, took a mere (and eerily appropriate) nine months to write. Skeletons at the Feast, another book I will always be proud of, took only 10. But I spent a long time pondering both of these novels before ever setting a single word down on paper.

Perhaps in no case has the relationship between reflection and construction - between the ethereal wisps of imagination and the concrete words of creation - been more evident than in the novel I have arriving this summer, The Sandcastle Girls. The novel has been gestating at the very least since 1992, when I first tried to make sense of the Armenian Genocide: a slaughter that most of the world knows next to nothing about.

My first attempt to write about the genocide, penned 20 years ago now, exists only as a rough draft in the underground archives of my alma mater. It will never be published, neither in my lifetime nor after I'm dead. I spent over two years struggling mightily to complete a draft, and I never shared it with my editor. My wife, who has always been an objective reader of my work, and I agreed: The manuscript should either be buried or burned. I couldn't bring myself to do either, but neither did I ever want the pages to see the light of the day. Hence, the exile to the underground archives.

Moreover, just about this time, Carol Edgarian published her poignant drama of the Armenian Genocide and the diaspora, Rise the Euphrates. It's a deeply moving novel and, it seemed to me, a further indication that the world didn't need my book.

And so instead I embarked upon a novel that had been in the back of my mind for some time: A tale of a New England midwife and a home birth that has gone tragically wrong.

Over the next 15 years, all but one of my novels would be set largely in New England. Sometimes they would be about women and men at the social margins: homeopaths, transsexuals, and dowsers. Other times they would plumb social issues that matter to me: homelessness, domestic violence, and animal rights.

The one exception, the one book not set in New England? Skeletons at the Feast, a story set in Poland and Germany in the last six months of the Second World War. That novel is, in part, about a fictional family's complicity in the Holocaust. Often as I toured on behalf of the book in 2008 and 2009, readers would ask me the following: When was I going to write about the Armenian Genocide? After all, from my last name it's clear that I am at least part Armenian. (I am, in fact, half-Armenian; my mother was Swedish.)

I had contemplated the subject often, even after failing in my first attempt to build a novel around the Meds Yeghern. The Great Calamity. Three of my four Armenian great-grandparents died in the poisonous miasma of the genocide and the First World War. Moreover, some of my best - and from a novelist's perspective most interesting - childhood memories occurred while I was visiting my Armenian grandparents at their massive brick monolith of a home in a suburb of New York City. Occasionally, my Mid-Western, Swedish mother would refer to their house as the "Ottoman annex of the Metropolitan," because it was - at least by the standards of Westchester County in the middle third of the twentieth century - so exotic.

In 2010, my father's health began to deteriorate badly. He lived in Florida at the time, while I lived in Vermont. I remember how on one of my visits, when he was newly home after yet another long stay in the hospital, together we looked at old family photographs. I was trying to take his mind off his pain, but I also found the exercise incredibly interesting. In some cases, these were images I had seen on the walls of my grandparents' or my parents' house since I was a child, but they had become little more than white noise: I knew them so well that I barely noticed them and they had grown as invisible to me as old wallpaper.

Now, however, they took on a new life. I recall one in particular that fascinated me: a formal portrait of my father when he was five years old, his parents behind him. All of them are impeccably coiffed. My grandfather is seated in an elegant wooden chair in the sort of suit and tie and vest that he seemed always to be wearing when I was a boy, and my grandmother is standing beside him in a beautiful black dress with a white collar and a corsage. I can see bits of my daughter - their great-granddaughter - in my grandmother's beautiful, almond-shaped eyes. My father, a kindergartener at the time, is wearing shorts, a white shirt, and a rather badly knotted necktie with a cross on it.

I knew almost nothing about my grandparents' story. But that picture reminded me of those moments when, as a child myself, I would sit on my grandfather's lap or listen to him, enrapt, as he played his beloved oud. I recalled the wondrous aroma of lamb and mint that always wafted from their front door when I would arrive, and my grandmother's magnificent cheese boregs. I thought of their library filled with books in a language - an alphabet - I could not begin to decipher, even as I was learning to read English.

And at some point, the seeds of my family's own personal diaspora began to take root. I had no interest in revisiting the disastrous manuscript that was gathering dust in my college archives. But I knew that I wanted to try once again to write about the Armenian Genocide. A good friend of mine, a journalist and genocide scholar, urged me on.

Ironically, I was about 90 pages into my new book when Mark Mustian published his beautifully written and deeply thought-provoking novel, The Gendarme. I felt a bit as I had in 1994 when I read Carol Edgarian's Rise the Euphrates. Did the world really need my book when it had Mark's - or, for that matter, the stories and memoirs that Peter Balakian, Nancy Kricorian, Micheline Aharonian Marcom, and Franz Werfel had given us? It might have been my father's failing health, or it might have been the fact that I was older now; it might have been the reality that already I cared deeply for the fictional women and men in my new novel. But this time I soldiered on.

I think The Sandcastle Girls may be the most important book I've written. It is certainly the most personal. It's a big, broad, sweeping historical love story. The novel moves back and forth in time between the present and 1915; between the narrative of an Armenian-American novelist at mid-life and her grandparents' nightmarish stories of survival in Aleppo, Van, and Gallipoli in 1915. Those fictional grandparents are not by any stretch my grandparents, but the novel would not exist without their courage and charisma.

Is the novel among my best work? The book opens with memories from my childhood in my grandparents' home, what my mother referred to as the Ottoman Annex. In other words, it has been gestating almost my entire life.


This essay appeared originally in The Armenian Weekly in 2012.

Unless otherwise stated, this interview was conducted at the time the book was first published, and is reproduced with permission of the publisher. This interview may not be reproduced or reprinted without permission in writing from the copyright holder.

Membership Advantages
  • Reviews
  • "Beyond the Book" articles
  • Free books to read and review (US only)
  • Find books by time period, setting & theme
  • Read-alike suggestions by book and author
  • Book club discussions
  • and much more!
  • Just $60 for 12 months or $20 for 3 months.
  • More about membership!

Books by this Author

Books by Chris Bohjalian at BookBrowse
The Jackal's Mistress jacket The Princess of Las Vegas jacket The Lioness jacket Hour of the Witch jacket
Membership Advantages
  • Reviews
  • "Beyond the Book" articles
  • Free books to read and review (US only)
  • Find books by time period, setting & theme
  • Read-alike suggestions by book and author
  • Book club discussions
  • and much more!
  • Just $60 for 12 months or $20 for 3 months.
  • More about membership!

Read-Alikes

All the books below are recommended as read-alikes for Chris Bohjalian but some maybe more relevant to you than others depending on which books by the author you have read and enjoyed. So look for the suggested read-alikes by title linked on the right.
How we choose readalikes

  • Diane Ackerman

    Diane Ackerman

    Poet, essayist, and naturalist, Diane Ackerman is the author of many highly acclaimed works of nonfiction, including A Natural History of the Senses -- a book beloved by readers all over the world and the volumes Deep Play, A... (more)

    If you enjoyed:
    The Sandcastle Girls

    Try:
    The Zookeeper's Wife
    by Diane Ackerman

  • Jokha Alharthi

    Jokha Alharthi

    Jokha Alharthi is the first Omani woman to have a novel translated into English, and Celestial Bodies is the first book translated from Arabic to win the Man Booker International Prize. She is the author of two previous ... (more)

    If you enjoyed:
    The Sandcastle Girls

    Try:
    Celestial Bodies
    by Jokha Alharthi

We recommend 40 similar authors


Non-members can see 2 results. Become a member
Membership Advantages
  • Reviews
  • "Beyond the Book" articles
  • Free books to read and review (US only)
  • Find books by time period, setting & theme
  • Read-alike suggestions by book and author
  • Book club discussions
  • and much more!
  • Just $60 for 12 months or $20 for 3 months.
  • More about membership!

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

When a true genius appears in the world, you may know him by this sign...

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 /author_interviews/full/index.cfm
Time Stamp 31-May-26 09:07 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
1780261653198 ms 1.7802616532E+012 ms 1 /root/website/app_server.cfm
980 ms 980 ms 1 /root/website/author_interviews/full/index.cfm
334 ms 334 ms 1 /root/website/author_interviews/full/dsp_main.cfm
199 ms 199 ms 1 /root/website/app_layout.cfm
157 ms 79 ms 2 /root/website/queries/qry_get_books_by_author_id.cfm
150 ms 50 ms 3 /root/website/adsystem/adsystem_mod.cfm
150 ms 150 ms 1 /root/website/site/blocks/layout/dsp_right_column.cfm
136 ms 136 ms 1 /root/website/queries/qry_get_books_by_author_id_lite.cfm
118 ms 118 ms 1 /root/website/queries/qry_get_author_readalikes_by_id.cfm
110 ms 110 ms 1 /root/website/app_globals.cfm
83 ms 28 ms 3 /root/website/site/blocks/membership_advantages.cfm
81 ms 27 ms 3 /root/website/queries/qry_get_member_account_types.cfm
58 ms 58 ms 1 /root/website/queries/qry_get_bb_briefs_by_author.cfm
56 ms 56 ms 1 /root/website/adzones/AdZone2.cfm
56 ms 56 ms 1 /root/website/adzones/AdZone6.cfm
47 ms 47 ms 1 /root/website/site/blocks/dsp_book_giveaway.cfm
45 ms 45 ms 1 /root/website/site/blocks/dsp_border_first_impressions.cfm
44 ms 44 ms 1 /root/website/queries/qry_get_arcs_for_ad.cfm
42 ms 42 ms 1 /root/website/site/blocks/layout/dsp_footer.cfm
41 ms 41 ms 1 /root/website/adzones/showcase_track.cfm
39 ms 39 ms 1 /root/website/queries/qry_get_active_obc.cfm
19 ms 19 ms 1 /root/website/queries/qry_get_all_books_by_author_id.cfm
16 ms 4 ms 4 /root/website/actions/act_spider_tracker.cfm
15 ms 15 ms 1 /root/website/queries/qry_get_current_competition.cfm
12 ms 12 ms 1 /root/website/queries/qry_get_current_wordplay.cfm
11 ms 11 ms 1 /root/website/actions/adstatus.cfm
8 ms 8 ms 1 /root/website/act_check_login.cfm
7 ms 7 ms 1 /root/website/queries/qry_get_member_info.cfm
2 ms 2 ms 1 /root/website/site/blocks/layout/dsp_bottom_block.cfm
2 ms 2 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/site/blocks/layout/head.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/queries/qry_get_previous_arcs_for_ad.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_top_author_block.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_menu.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/main_search.cfm
1 ms  STARTUP, PARSING, COMPILING, LOADING, & SHUTDOWN
981 ms  TOTAL EXECUTION TIME
red = over 250 ms average execution time


SQL Queries

spidercheck (Datasource=bookbrowse_com_new, Time=15ms, Records=1) in /root/website/actions/act_spider_tracker.cfm @ 21:07:33.033
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=7ms, Records=0) in /root/website/queries/qry_get_member_info.cfm @ 21:07:33.033
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=11ms, Records=2) in /root/website/actions/adstatus.cfm @ 21:07:33.033
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 @ 21:07:33.033
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=11ms, Records=1) in /root/website/queries/qry_get_current_wordplay.cfm @ 21:07:33.033
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=9ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 21:07:33.033
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=5ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 21:07:33.033
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 @ 21:07:33.033
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=8ms, Records=0) in /root/website/queries/qry_get_active_obc.cfm @ 21:07:33.033
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=20ms, Records=1) in /root/website/queries/qry_get_active_obc.cfm @ 21:07:33.033
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 @ 21:07:33.033
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_books_by_author_id (Datasource=bookbrowse_com_new, Time=106ms, Records=6) in /root/website/queries/qry_get_books_by_author_id_lite.cfm @ 21:07:33.033
select	a.book_number, a.book_title, a.book_sub_title, book_short_summary,
				(CASE WHEN f.edition_publish_dt < g.edition_publish_dt OR g.edition_publish_dt IS NULL THEN f.edition_publish_dt
                      ELSE g.edition_publish_dt 
                      END) "publish_dt"
		
        from 	books a
		inner join book_author_mapping e ON e.book_number = a.book_number
        inner join authors d ON d.author_number = e.author_number
        left outer join editions f ON a.book_number = f.book_number and f.edition_paperback_flag = 0 
   		left outer join editions g ON a.book_number = g.book_number and g.edition_paperback_flag = 1 
		
       	where 	d.author_number = ?
        and 	a.book_number IN (	select	distinct b.book_number 
        							from	categories a, category_book_mapping b 
                                    where 	a.category_number = b.category_number 
                                    and 	a.category_active_flag = 1)

		order by publish_dt DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 183

get_author_by_author_id (Datasource=bookbrowse_com_new, Time=28ms, Records=1) in /root/website/queries/qry_get_books_by_author_id_lite.cfm @ 21:07:33.033
select	d.author_number, d.author_first_name, d.author_middle_initial, d.author_last_name, d.author_pronunciation,
				i.author_info_number, i.author_number, i.author_info_image, i.author_info_entry_dt,
                i.author_info_url, i.author_info_interview_summary, i.author_info_interview, i.author_info_biography, i.author_info_copyright_info
                		
        from 	authors d, author_info i
		
        where 	d.author_number = ?
        and 	d.author_number = i.author_number
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 183

get_all_books_by_author_id (Datasource=bookbrowse_com_new, Time=19ms, Records=17) in /root/website/queries/qry_get_all_books_by_author_id.cfm @ 21:07:33.033
select	a.book_number, 
        		'' AS ezine_preview_number,
                a.book_title, 
                a.book_sub_title, 
				(CASE WHEN f.edition_publish_dt < g.edition_publish_dt OR g.edition_publish_dt IS NULL THEN f.edition_publish_dt
                      ELSE g.edition_publish_dt 
                      END) "publish_dt",
                '' as "jacket"
		
        from 	books a
		inner join book_author_mapping e ON e.book_number = a.book_number
        inner join authors d ON d.author_number = e.author_number
		left outer join editions f ON a.book_number = f.book_number and f.edition_paperback_flag = 0
		left outer join editions g ON a.book_number = g.book_number and g.edition_paperback_flag = 1
		
        where 	d.author_number = ?
        and 	a.book_number IN (	select	distinct b.book_number 
        							from	categories a, category_book_mapping b 
                                    where 	a.category_number = b.category_number 
                                    and 	a.category_active_flag = 1)        
        UNION

		select	'' AS book_number,
        		ezine_preview_number, 
				ezine_preview_title AS "book_title", 
				ezine_preview_subtitle AS "book_sub_title",
                ezine_preview_publish_dt AS "publish_dt",
                ezine_preview_jacket_image as "jacket"
		
        from 	ezine_previews
		
        where 	ezine_preview_bb_author_link = ?
        and		ezine_preview_bb_link < 1
        
        order by publish_dt DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 183
Parameter #2(CF_SQL_INTEGER) = 183

get_bb_briefs_by_author (Datasource=bookbrowse_com_new, Time=58ms, Records=11) in /root/website/queries/qry_get_bb_briefs_by_author.cfm @ 21:07:33.033
select	ezine_preview_number, 
				ezine_preview_title, 
				ezine_preview_subtitle,
                ezine_preview_publish_dt ,
                ezine_preview_jacket_image
		
        from 	ezine_previews
		
        where 	ezine_preview_bb_author_link = ?
        and		(ezine_preview_bb_link IS NULL
				 or ezine_preview_bb_link < 1)
        and		ezine_number > 0
        
		order by ezine_preview_publish_dt DESC
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 183

get_author_readalikes_by_id (Datasource=bookbrowse_com_new, Time=117ms, Records=40) in /root/website/queries/qry_get_author_readalikes_by_id.cfm @ 21:07:33.033
SELECT		a.author_number,
			CASE	WHEN datalength(a.author_middle_initial) > 0 
					THEN a.author_first_name + ' ' + a.author_middle_initial + ' ' + a.author_last_name
					ELSE a.author_first_name + ' ' + a.author_last_name
					END AS "author_full_name",
			b.book_number, 
			f.book_title as "book",

			CASE	WHEN datalength(e.author_middle_initial) > 0 
					THEN e.author_first_name + ' ' + e.author_middle_initial + ' ' + e.author_last_name
					ELSE e.author_first_name + ' ' + e.author_last_name
					END AS "liked_author_full_name",
			e.author_number as "liked_author_number", 
			g.book_title as "liked_book",
			c.liked_book_number as "liked_book_number" 

FROM		authors a
INNER JOIN	book_author_mapping b ON b.author_number = a.author_number
INNER JOIN	liked c ON c.book_number = b.book_number
INNER JOIN	book_author_mapping d ON d.book_number = c.liked_book_number
INNER JOIN	authors e ON e.author_number = d.author_number
INNER JOIN	books f on f.book_number = b.book_number
INNER JOIN	books g on g.book_number = c.liked_book_number

WHERE		a.author_number = ?

ORDER BY 	e.author_last_name, e.author_first_name
Query Parameter Value(s) -
Parameter #1(cf_sql_integer) = 183

get_ads (Datasource=bookbrowse_com_new, Time=35ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 21:07:33.033
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) = adzone2
Parameter #2(CF_SQL_VARCHAR) = 0
Parameter #3(CF_SQL_VARCHAR) = 0

get_ads (Datasource=bookbrowse_com_new, Time=18ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 21:07:33.033
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) = adzone2

get_member_account_types (Datasource=bookbrowse_com_new, Time=25ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 21:07:33.033
select member_account_type_number, member_account_type_name, member_account_type_charge, member_account_type_charge_frequency, member_account_type_postscript, member_account_type_months, member_account_type_stripe_lookup_key
from member_account_types
where member_account_type_number = (select top 1 member_account_type_number
									from member_account_types
									where member_account_type_months = 12
									and member_account_type_public = 1
									order by member_account_type_charge ASC)
									
or member_account_type_number =		(select top 1 member_account_type_number
									from member_account_types
									where member_account_type_months = 3
									and member_account_type_public = 1
									order by member_account_type_charge ASC)
									
order by member_account_type_sort_order ASC
get_book_image (Datasource=bookbrowse_com_new, Time=31ms, Records=1) in /root/website/actions/udfs.cfm @ 21:07:33.033
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) = 4450

get_member_account_types (Datasource=bookbrowse_com_new, Time=40ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 21:07:33.033
select member_account_type_number, member_account_type_name, member_account_type_charge, member_account_type_charge_frequency, member_account_type_postscript, member_account_type_months, member_account_type_stripe_lookup_key
from member_account_types
where member_account_type_number = (select top 1 member_account_type_number
									from member_account_types
									where member_account_type_months = 12
									and member_account_type_public = 1
									order by member_account_type_charge ASC)
									
or member_account_type_number =		(select top 1 member_account_type_number
									from member_account_types
									where member_account_type_months = 3
									and member_account_type_public = 1
									order by member_account_type_charge ASC)
									
order by member_account_type_sort_order ASC
get_books_by_author_id (Datasource=bookbrowse_com_new, Time=82ms, Records=2) in /root/website/queries/qry_get_books_by_author_id.cfm @ 21:07:33.033
select	a.book_number, 
				a.book_title, 
				(CASE WHEN UPPER(LEFT(a.book_title, 2)) = 'A ' THEN SUBSTRING(a.book_title, 3, len(a.book_title) - 2) WHEN UPPER(LEFT(a.book_title, 3)) = 'AN ' THEN SUBSTRING(a.book_title, 4, len(a.book_title) - 3) WHEN UPPER(LEFT(a.book_title, 4)) = 'THE ' THEN SUBSTRING(a.book_title, 5, len(a.book_title) - 4) ELSE a.book_title END) "sort_book_title", 
				a.book_sub_title, 
				a.book_entry_dt, 
				a.book_short_summary, 
				a.book_jacket_info, 
                a.book_excerpt, 
                a.book_reading_guide,
				d.author_number, d.author_first_name, d.author_middle_initial, d.author_last_name, 
				f.edition_publish_dt "hardcover_publish_dt", f.edition_number_of_pages "hardcover_number_of_pages", f.edition_isbn "hardcover_isbn", f.edition_isbn13 "hardcover_isbn13",f.edition_jacket_image "hardcover_jacket_image",
				g.edition_publish_dt "paperback_publish_dt", g.edition_number_of_pages "paperback_number_of_pages", g.edition_isbn "paperback_isbn", g.edition_isbn13 "paperback_isbn13",g.edition_jacket_image "paperback_jacket_image",
				i.author_info_biography, i.author_info_interview, i.author_info_image, i.author_info_url,
                (select count(c.book_number) as "author_bookcount" from book_author_mapping c where c.author_number = ?) + (select count(e.ezine_preview_number) as "author_bookcount" from ezine_previews e where e.ezine_preview_bb_author_link = ?) as "authorbookcount"
                
		    from books a
            inner join book_author_mapping e ON a.book_number = e.book_number
            inner join authors d ON e.author_number = d.author_number
            inner join author_info i ON d.author_number = i.author_number
            left outer join editions f ON a.book_number = f.book_number and f.edition_paperback_flag = 0
            left outer join editions g ON a.book_number = g.book_number and g.edition_paperback_flag = 1
                        
            where e.author_number = ?
            and a.book_number IN (select distinct b.book_number from categories a, category_book_mapping b where a.category_number = b.category_number and a.category_active_flag = 1)
			
            order by sort_book_title
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1497
Parameter #2(CF_SQL_INTEGER) = 1497
Parameter #3(CF_SQL_INTEGER) = 1497

get_author_by_author_id (Datasource=bookbrowse_com_new, Time=32ms, Records=1) in /root/website/queries/qry_get_books_by_author_id.cfm @ 21:07:33.033
select	d.author_number, d.author_first_name, d.author_middle_initial, d.author_last_name, d.author_pronunciation,
                CASE	WHEN datalength(d.author_middle_initial) > 0 
                        THEN d.author_first_name + ' ' + d.author_middle_initial + ' ' + d.author_last_name
                        ELSE d.author_first_name + ' ' + d.author_last_name
                        END AS "author_full_name",
				i.author_info_number, i.author_number, i.author_info_image, i.author_info_entry_dt,
                i.author_info_url, i.author_info_interview_summary, i.author_info_interview, i.author_info_biography, i.author_info_copyright_info
                		
        from 	authors d, author_info i
		
        where 	d.author_number = ?
        and 	d.author_number = i.author_number
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 1497

get_books_by_author_id (Datasource=bookbrowse_com_new, Time=23ms, Records=1) in /root/website/queries/qry_get_books_by_author_id.cfm @ 21:07:33.033
select	a.book_number, 
				a.book_title, 
				(CASE WHEN UPPER(LEFT(a.book_title, 2)) = 'A ' THEN SUBSTRING(a.book_title, 3, len(a.book_title) - 2) WHEN UPPER(LEFT(a.book_title, 3)) = 'AN ' THEN SUBSTRING(a.book_title, 4, len(a.book_title) - 3) WHEN UPPER(LEFT(a.book_title, 4)) = 'THE ' THEN SUBSTRING(a.book_title, 5, len(a.book_title) - 4) ELSE a.book_title END) "sort_book_title", 
				a.book_sub_title, 
				a.book_entry_dt, 
				a.book_short_summary, 
				a.book_jacket_info, 
                a.book_excerpt, 
                a.book_reading_guide,
				d.author_number, d.author_first_name, d.author_middle_initial, d.author_last_name, 
				f.edition_publish_dt "hardcover_publish_dt", f.edition_number_of_pages "hardcover_number_of_pages", f.edition_isbn "hardcover_isbn", f.edition_isbn13 "hardcover_isbn13",f.edition_jacket_image "hardcover_jacket_image",
				g.edition_publish_dt "paperback_publish_dt", g.edition_number_of_pages "paperback_number_of_pages", g.edition_isbn "paperback_isbn", g.edition_isbn13 "paperback_isbn13",g.edition_jacket_image "paperback_jacket_image",
				i.author_info_biography, i.author_info_interview, i.author_info_image, i.author_info_url,
                (select count(c.book_number) as "author_bookcount" from book_author_mapping c where c.author_number = ?) + (select count(e.ezine_preview_number) as "author_bookcount" from ezine_previews e where e.ezine_preview_bb_author_link = ?) as "authorbookcount"
                
		    from books a
            inner join book_author_mapping e ON a.book_number = e.book_number
            inner join authors d ON e.author_number = d.author_number
            inner join author_info i ON d.author_number = i.author_number
            left outer join editions f ON a.book_number = f.book_number and f.edition_paperback_flag = 0
            left outer join editions g ON a.book_number = g.book_number and g.edition_paperback_flag = 1
                        
            where e.author_number = ?
            and a.book_number IN (select distinct b.book_number from categories a, category_book_mapping b where a.category_number = b.category_number and a.category_active_flag = 1)
			
            order by sort_book_title
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3301
Parameter #2(CF_SQL_INTEGER) = 3301
Parameter #3(CF_SQL_INTEGER) = 3301

get_author_by_author_id (Datasource=bookbrowse_com_new, Time=17ms, Records=1) in /root/website/queries/qry_get_books_by_author_id.cfm @ 21:07:33.033
select	d.author_number, d.author_first_name, d.author_middle_initial, d.author_last_name, d.author_pronunciation,
                CASE	WHEN datalength(d.author_middle_initial) > 0 
                        THEN d.author_first_name + ' ' + d.author_middle_initial + ' ' + d.author_last_name
                        ELSE d.author_first_name + ' ' + d.author_last_name
                        END AS "author_full_name",
				i.author_info_number, i.author_number, i.author_info_image, i.author_info_entry_dt,
                i.author_info_url, i.author_info_interview_summary, i.author_info_interview, i.author_info_biography, i.author_info_copyright_info
                		
        from 	authors d, author_info i
		
        where 	d.author_number = ?
        and 	d.author_number = i.author_number
Query Parameter Value(s) -
Parameter #1(CF_SQL_INTEGER) = 3301

get_member_account_types (Datasource=bookbrowse_com_new, Time=13ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 21:07:33.033
select member_account_type_number, member_account_type_name, member_account_type_charge, member_account_type_charge_frequency, member_account_type_postscript, member_account_type_months, member_account_type_stripe_lookup_key
from member_account_types
where member_account_type_number = (select top 1 member_account_type_number
									from member_account_types
									where member_account_type_months = 12
									and member_account_type_public = 1
									order by member_account_type_charge ASC)
									
or member_account_type_number =		(select top 1 member_account_type_number
									from member_account_types
									where member_account_type_months = 3
									and member_account_type_public = 1
									order by member_account_type_charge ASC)
									
order by member_account_type_sort_order ASC
get_arcs_for_ad (Datasource=bookbrowse_com_new, Time=13ms, Records=0) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 21:07:33.033
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 @ 21:07:34.034
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=18ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 21:07:34.034
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 @ 21:07:34.034
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=22ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 21:07:34.034
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=45ms, Records=1) in /root/website/site/blocks/dsp_book_giveaway.cfm @ 21:07:34.034
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 @ 21:07:34.034
SELECT 	*
    FROM 	free_newsletters
get_ads (Datasource=bookbrowse_com_new, Time=16ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 21:07:34.034
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=10ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 21:07:34.034
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=10ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 21:07:34.034
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/author_interviews/full/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=CFID=4074094; CFGLOBALS=urltoken%3DCFID%23%3D4074094%26CFTOKEN%23%3D4941dc596c775eb2%2DFEA25116%2DF947%2DE164%2DD15B51B3AA6D811F%23lastvisit%3D%7Bts%20%272026%2D05%2D31%2021%3A07%3A32%27%7D%23hitcount%3D2%23timecreated%3D%7Bts%20%272026%2D05%2D31%2021%3A07%3A32%27%7D%23cftoken%3D4941dc596c775eb2%2DFEA25116%2DF947%2DE164%2DD15B51B3AA6D811F%23cfid%3D4074094%23; CFTOKEN=4941dc596c775eb2-FEA25116-F947-E164-D15B51B3AA6D811F; CFCLIENT_BOOKBROWSE=order%3Dp%23member%5Fnumber%3D0%23member%5Factive%5Fflag%3D0%23member%5Flogged%5Fin%5Fflag%3D0%23library%5Fuser%5Fflag%3D0%23view%3Dbooks%23
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=/author_number/183/chris-bohjalian
PATH_TRANSLATED=/root/website/author_interviews/full/index.cfm
QUERY_STRING=
REMOTE_ADDR=127.0.0.1
REMOTE_HOST=127.0.0.1
REMOTE_USER=
REQUEST_METHOD=GET
SCRIPT_NAME=/author_interviews/full/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=4074094
cftoken=4941dc596c775eb2-FEA25116-F947-E164-D15B51B3AA6D811F
hitcount=3
lastvisit={ts '2026-05-31 21:07:33'}
library_user_flag=0
member_active_flag=0
member_logged_in_flag=0
member_number=0
order=p
timecreated={ts '2026-05-31 21:07:32'}
urltoken=CFID=4074094&CFTOKEN=4941dc596c775eb2-FEA25116-F947-E164-D15B51B3AA6D811F
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#=4074094&CFTOKEN#=4941dc596c775eb2-FEA25116-F947-E164-D15B51B3AA6D811F#lastvisit={ts '2026-05-31 21:07:32'}#hitcount=2#timecreated={ts '2026-05-31 21:07:32'}#cftoken=4941dc596c775eb2-FEA25116-F947-E164-D15B51B3AA6D811F#cfid=4074094#
CFID=4074094
CFTOKEN=4941dc596c775eb2-FEA25116-F947-E164-D15B51B3AA6D811F
Session Variables:
cfid=4074094
cftoken=4941dc596c775eb2-FEA25116-F947-E164-D15B51B3AA6D811F
sessionid=BOOKBROWSE_4074094_4941dc596c775eb2-FEA25116-F947-E164-D15B51B3AA6D811F
urltoken=CFID=4074094&CFTOKEN=4941dc596c775eb2-FEA25116-F947-E164-D15B51B3AA6D811F
URL Parameters:
author_number=183
chris-bohjalian=
Debug Rendering Time: 13 ms