James Rollins Interview, plus links to author biography, book summaries, excerpts and reviews

James Rollins
Photo by David Sylvian

James Rollins

An interview with James Rollins

James Rollins discusses Map of Bones and also answers a multitude of questions relating to his other books, his life as a writer and much else.

Truth or Supposition: the Vatican employs an elite cadre of spies around the globe?
That would be true. Like any government, the Vatican does indeed maintain a sophisticated intelligence-gathering operation, even employing full-time agents. One of its most notable and heroic missions took place during the Cold War, when the Vatican attempted to smuggle priests into the Soviet Bloc to act as spies.

And even today, such clandestine operations continue. During the Iraq war, the Vatican maintained detailed intelligence of conditions on the ground -- gleaned not from individual spies, but from its community of two hundred thousand Iraqi Catholics. And perhaps therein lies the Vatican's greatest strength: Between its diplomatic ambassadors, its worldwide charitable organizations, and its millions of parishioners and lay persons, the Vatican certainly maintains a sophisticated global network of eyes and ears.

How did you learn of this, if indeed true?
Despite the Vatican's code of silence on this matter, painstaking research by David Alvarez resulted in a detailed treatise on this subject: Spies in the Vatican: Espionage & Intrigue from Napoleon to the Holocaust. The author's main source for this book came from an American Jesuit Robert Graham, who spent decades in Rome investigating espionage. And I find it intensely interesting that shortly after Robert Graham's death, the Vatican ordered all his research papers sealed and returned to Rome. It seems the code of silence still continues.

Map of Bones is laced with items of interest about holy relics; how did you research the origin of items, and what what importance do they hold to believers?
Raised a Roman Catholic, I was well versed in the trials and tortures of the many saints throughout the ages and the veneration of their bodily remains. But it was only while researching this book that I learned how Catholic canon law requires every chapel or church altar to enclose some form of relic within it. I learned further, that in order to meet this demand, the Vatican maintains its own 'relics library,' a storehouse of filing cabinets, shelves, and drawers filled with bits of bone or spoonfuls of dust.

Why I wondered? Why this cultish reverence to body parts? The official answer was that the bodies of saints were imbued with the Holy Spirit, and it was this Spirit was that revered after death, not necessarily the physical remains. But as I researched, I wondered if there could be a deeper mystery here. Answering this question became the first step to building the story of Map of Bones.

Your books often interlace high-concept scientific theory within the pages of your novels. While not wanting to spill any undue secrets about the plot of Map of Bones, can you give us the scoop on some of the breaking-news scientific concepts you laced through the pages of this book?
Ah, a peak behind the curtain. Suffice it to say that the science behind this story is not fiction, but based on current research going on in labs around the world, including British Aerospace, Argonne National Laboratories, even Boeing Labs. The investigations center on a new form of solid matter that was recently discovered -- or should I say re-discovered? Further research into this subject matter also revealed an intriguing historical trail, stretching back to medieval alchemists and beyond. But to tell more would spoil the adventure!

This book launches a new series, based upon the SIGMA force introduced in Sandstorm: why the move to linked novels, from your compellingly readable stand-alone thrillers of the past?
For years, readers have contacted me and asked questions about various cast members from my earlier books. What became of Ashley and Ben's baby after Subterranean? What is the next port of call for the crew of the Deep Fathom? What about was incubating in the tanks at the end of Excavation?

I came to realize that I wanted to know those answers, too. I was no longer satisfied with the confines of a single book. So I challenged myself to construct a series -- something unique and distinct. I wanted to build a landscape of three-dimensional characters and to create my own mythology of these people's lives. I didn't want to fashion a series like the hundreds out there already, where one character is constantly bumbling into one harrowing adventure after another, who never really ages, who never really grows.

While there certainly will be a central recurring character in the series, the supporting players will come and go in what I describe as a "revolving set of characters around a central figure." All these characters will grow over the course of the series, balancing personal lives and professional, some succeeding, some failing. The same with the central character, a new member to Sigma Force: Commander Gray Pierce. He will struggle to find his own path to balance family, God, and country, stumbling along the way, but ultimately finding his path.

Speaking of Sandstorm, what is this we hear about the cover treatment of the newly released mass market edition making publishing news?
I certainly have to give my publishers credit for breaking barriers with the mass market editions of my books. With my first book, Subterranea, my publishers took a chance by developing a multiple stepback cover -- the first of its kind. And once again, they're pulling out all stops and releasing Sandstorm with a new lenticular holographic cover, employing a new patented technology. And as a writer who delves into new sciences, what could be more gratifying?

You've said that that Map of Bones is the religious man's answer The DaVinci Code; but that indeed, you started writing this long before Dan Brown's pivotal work of fiction was published. Can you expand upon this?
Map of Bones was my attempt to tell a historical thriller set against a backdrop of mythology, Catholicism, and current-day technology. And while I knew in advance my novel would be compared to Dan Brown's The Da Vinci Code, the germ for this idea actually started about ten years ago. I had come across a text while vacationing in Rome, about Vatican history and intrigue during the Great Schism where Europe was split by popes and anti-popes and the papacy was driven out of Rome to France. I found this bit of history fraught with possibility. But I didn't yet have the fictional thriller to go with it. So over the course of the past decade, I began collating ideas, bits of character, trickles of storyline until the larger story gelled into existence. This became came Map of Bones.

Still there is another underlying reason I decided to tell this story now. Many thrillers, when collided with the Catholic Church or the Vatican, paint the Church, faith, and belief in a disparaging light. In Map of Bones, I sought to show the Church and its past in a manner that is both realistic and acknowledges some of the Vatican's corrupted past, but also stresses the role of Church as a fundamental factor in forming Western Civilization, and how faith in all its forms is as part of human nature as our own biology, whether it be the belief in God, a Higher Power, or in the substantive good in mankind.

And yes, besides all that, it's also a nonstop wild chase around the Mediterranean through tombs, crypts, crumbling palaces, and the Seven Wonders of the Ancient World.

We've been calling Map of Bones the genesis of a genre; you're calling it the birth of a new kind of thriller ... what sets this book apart from the works of your literary counterparts, such as Brown, Crichton, and Carr?
I think you've tapped the perfect trio of writers to illustrate my goal. Michael Crichton is a master of the scientific adventure. Caleb Carr is a pure genius at constructing historical mysteries. And Dan Brown has broken unprecedented ground by turning art history and religion into a breakneck thrill ride.

I want to do all this and more. In the world at large, science has its own history, religion has its own mystery, mythology has its own truth. Why can't a new genre encompass all these realities? I intend this new series to do just that, to break down the boundaries of genre, to seamlessly blend historical mystery, breakneck thriller, and scientific adventure.

And ultimately I hope the result will not only excite a reader into turning pages, but also move and intrigue the reader to investigate beyond the covers of the books.

As I wrote in the Author's Note at the end of Map of Bones, the greatest path to truth is found in the simple adage: Seek and you shall find.


Frequently Asked Questions

How do you handle a writer's block?
The wry answer: With two books a year to complete, I don't have time for writer's block. But more seriously, I think times when a story begins to bog down and I feel "blocked" is most often due to something intrinsically wrong with the scene or character or point of view I'm working on. Sometimes I have to backtrack and search for where the story had gone astray and edit things back into proper alignment. Once I correct that error, the story flows with more vigor again and we're off and running.

Have you ever put yourself into a story?
I think there is a part of me in every character I create—good and bad. That's one of the best parts of writing: to explore those dark corners of your own psyche, to fathom the depths of your own character, and to challenge yourself. What could be more fun?

Has a character from your writing ever influenced your real life in a surprising way?
Characters are always surprising me, taking stories into unexpected territories or ideas. I swear sometimes my characters have come up with elements all on their own and I'm just the chronicler. I can't say any specific character "changed my life," but by exploring the human condition of various characters and living in their skins over the course of a book, I think my own appreciation and patience for the quirks, foibles, and eccentricities of my fellow man has grown.

What did you do to celebrate your first book being published?
I had a huge party with friends and family. But you'll have to ask them about it...for some reason, after countless bottles of champagne, I can't seem to remember the details.

Do you have any traditions associated with writing?
Nope. I write in all sorts of circumstances and conditions: in a quiet office, with music blaring, with the television running in the background, on airplanes, in hotel rooms, outside, inside. I don't like tying my writing down to certain required conditions/traditions for fear that it will lock me into a pattern that will trap rather than allow me the freedom to explore and grow. But I do have certain code that I attempt to stick to: write everyday, read everyday. That's enough of a tradition.

What book of yours do you think would make the best movie?
Egads! That's a tough one. I live and breathe my characters' lives. Their story rolls through my head like a movie each time. I'd be hard pressed to pick a novel that I'd most like to see. Each books have moments that I'd love to see on the big screen.

What character from your writing stays with you the most?
Depends on the day. But most often it is not past characters that influence me, but the current ones in the work-in-progress. I so get under these folks' skins that it can take me up to an hour to shake loose of them and return to reality. I'm often dazed and incoherent for a bit while coming up for air after writing for a spell.

Is starting a new book difficult for you?
No, that's the best part. Nothing is more exciting and challenging than bringing to life for the first time a new story and characters. It's like exploring a new world each time.

Do you have a recurring detail that appears in your books?
I think one of the recurring themes in my novels is the exploration of how advancing technology effects us. Technology is not all cogs and wheels. There is a human cost to every bit of technology. It regularly tests society's moral compass. Is human cloning good or bad? What about stem cell research on aborted fetal tissue? What about the escalating realism of the violence in video games? Can and should we engineer our children in the womb? At every turn, in every facet, technology tests a society—morally, spiritually, and economically. And at the pace in which technology is leaping and bounding we are quickly outstripping our abilities to rein in our advancements or to adequately judge where these technologies will take us.

So what to we do? Where are we heading?

Such questions are wonderful fodder in the modern scientific adventure. Through the vehicle of the adventure story, I can explore not only the physical threat of unchecked advancements but also the spiritual and moral dangers. Because fundamentally, the true terror of technology is not the cogs and the wheels, but how it will change us.

And even more frightening . . . will we even have a voice in this evolution?

How much research do you do for a novel?
Too much and not enough. When I research, I usually have 4-5 books that are my research bibles for a particular novel. Then I branch off onto the Internet for additional tidbits and also do phone interviews with experts in their respective fields of study. It is surprising how open and helpful people are in this endeavor. For instance, while researching details on the space shuttle, I was lost among the volumes of information on NASA's web site. Finally frustrated with labyrinthine layout of the site, I contacted the webmaster of the site and asked for information. Two days later, I found on my doorstep the entire technical manual for the shuttle, hand-delivered and dropped off. That's just one of countless examples of folks who have gone out of their way to help an author. It's also a great way to create new fans!

What prompted you to select the type of fiction that you did as you became a novelist?
I think most novelists write what interests them . . . which was a quandary for me, as my reading interests were wide and varied. Though I'm an avid reader of all the current thriller writers, I also love horror, scifi/fantasy, and mysteries. When I first began writing, I dabbled in short fiction, trying various voices, styles, and genres. It was all terrible, stuff buried now deep in the backyard. But it did serve to find the voice that most spoke to me and allowed me to tackle my first novel-length project, Subterranean. This first book, like Excavation, is really a cross-genre novel, a mix of ALL the tropes of my favorite genres: a mainstream thriller at heart, but with a bit of mystery and a dark current of sci-fi/fantasy coursing throughout it.

What writers and/or novels and films influenced the direction of your work?
I have been asked this question many times at signings, conferences, etc. And initially I would shrug. I read so avidly that it was difficult to say who most influenced my work. It actually took a reader to expose the heart of my deepest influence. After reading Subterranean and Excavation, he emailed me to tell me I was ripping off Doc Savage. After reading this, I glanced to my library's bookshelves, sitting there were all 182 Doc Savage novels (Bantam reprints, not the actual pulps). He was right! I read these from adolescence through high school and was absolutely in love with these "scientific adventure" books. Sitting next to them were smaller collection of other pulp reprints: The Shadow, The Spider, The Avenger.

So at the heart, my deepest influence are the old pulps. On some unconscious level, I've been trying to bring back those old dime adventure stories, recast into the present, adapted to modern technologies, and given a polish.

Other influences on a more conscious level are Jules Verne, H.G. Wells, and H. Rider Haggard (as of course Subterranean was clearly a modern adaptation of Verne's Journey to the Center of the Earth). But for more more current influences, I would definitely have to include the mainstays of thriller fiction: Crichton, King, and Cussler.

As a follow-up to the previous question: Excavation works very well within the category of the traditional lost world/lost race adventure as found in H. Rider Haggard and Edgar Rice Burroughs--a narrative tradition that extends back historically to the classic scientific romances of Jules Verne in the nineteenth century-- but then you've added your own highly inventive variant to this category of fiction (the conclusion of your novel, for example, offers a wild ride indeed not found in the work of Verne, Haggard, or Burroughs). How did you decide to write Excavation, and did you deliberately construct your story within the narrative tradition of the lost world adventure?
I did indeed construct Excavation specifically as a lost world novel. My editor even classified my early books as "lost race" novels. The germ of this specific novel came from two ideas that merged together.

- A lost Incan tribe still surviving up in the Andes

- And the possibilities of nanotechnology being used to evolve the human species

I love merging the ancient and the modern, then stirring that pot and seeing what develops. You'll see this blend in each of my books.

Additionally, I also like to peel back ancient myths and search for the hidden truths behind these stories. In Subterranean, it was Aboriginal mythology. In Excavation, it was Incan mythology. In Deep Fathom, it was Polynesian mythology.

How would you describe your larger philosophy of writing and authorship?
My goal when I set out to write is not to examine the human condition or explore the trials and tribulations of modern society. When I set out to write, I aim for pure balls-to-the-wall adventure, pure escape and entertainment. I follow the three M's of storytelling: murder, magic, and mayhem.

But with that said, I don't think any adventure story will work unless you do indeed engage the reader on a level deeper than pure popcorn-entertainment. He must care about the characters or why join you on this journey? He must be invested in the character to care about their fate. So though entertainment is the goal, it is equally important to craft characters who will live, breathe, and bleed in your reader's heart and mind. As such, the human condition of your characters must be addressed and examined. They must be brought to life with all the frailties and quirks and problems and nuisances that the reader brings with him to the books. For the reader to relate, he must find something in which to relate. This must not be neglected. I strongly believe that character and plot must be tightly interwoven, especially in adventure fiction. One will not work without the other.

How do you view the element of suspense in your work? As a practical question, how do you structure it and manage it in your plot?
Suspense is the true heart of all good adventures, the proverbial "cliff hanger." You take your character (and reader) to the edge of disaster, have him peer over, then push him from behind when they least expect it. And the crux of a good thriller is to make those cliffs higher and higher throughout the novel. Strive for tightening that noose notch by notch. Each level of suspense should build upon the other. Each situation must be unique, each outcome more inventive. Lester Dent (author of most Doc Savage novels) once suggested: "never kill characters the same way twice." He was right—always strive to be unique. Finally, let the reader rest between events, then just as they think they've caught their breath, hit 'em again and again and again. And one last note on the practical side, always end a chapter with a note of peril, whether physical or emotional. Make that reader want to turn that next page to see what happens.

How do I get published? Do I need an agent?
Here's the basics in a nutshell.
- Finish your book.  A first-time writer needs to have the ENTIRE novel done before approaching an agent or publisher. Print it in proper manuscript format. Guidelines can be found in most how-to write books.

- Get an agent.

Which means first finding the right agents to send your book to! I used Jeff Herman's Insiders Guide to Book Editors, Publishers and Literary Agents. In his book, he has most of the agencies fill out a Q&A, specifically asking them what they like to represent and what they don't. Grab a pen and start circling those agencies that sound like they would want to represent your material (obviously you don't want to waste your money and their time if the agent only represents non-fiction and you have a fiction piece). Once you have a list, then follow proper submission guidelines: a ONE-page query note (consisting of a hook to the story you're writing, why you're the best one to tell this story, the proposed market for this story, and any publishing credits), the first 50 pages of your novel, double-spaced and free of errors, and a brief synopsis (5-6 pages), and a SASE for their response.

Then start sending it out and sending it out!

Now that all said . .. ONE WARNING! There are a lot of scam agencies out there. NEVER pay a cent up front for ANYTHING (not a reading fee, not a copying fee, not an editorial/book doctor fee). If you send something somewhere and get such a response, toss it IMMEDIATELY into the trash can, cuz that's where you're money would be going if you sent it.

So that's the skinny on "the agent hunt." Be wily, be persitent, be patient . . .

One of the worst things for unpublished authors is having their manuscripts returned to them with a rejection; presumably this also happened to you. How did you react to the rejection?
That is a tough part about writing: eventually you have to send your baby out into the big, mean world and hope it is not treated too poorly. But it always is. Rejections are a matter of business for a writer. How I handled it was by never giving up. In one word: Persistence. I would float out ten query letters to agents. Every time I got a rejection, I would simply send out another letter to another agency. Thus there were always at least another ten chances of getting published waiting in the wings. This helped to take the hopeless sting out of those many, many, many rejections.

What about writer's groups or critique groups?
There are different schools of thought on this. I'm on the pro-side of critique groups. I think they're a valuable way to get feedback on your writing. In fact, I belong to a local writer's critique group here in Sacramento. I started with this group when I was writing short fiction, and after seven published novels, I'm still with the same group. They are my proverbial "first readers." I value their opinion and input. Not a page gets published that is not read and commented upon by them first.

Do you have any advice for authors who are looking to get published?
I could write volumes on this subject. But it basically boils down to a few key items. First: READ. Read everything in the genre you want to write, but don't limit yourself. Read broadly. The best teacher of writing is a good book. Second: WRITE EVERYDAY. Even if it's only a few paragraphs, set aside some cracks in time to spoil yourself with the luxury of writing. If you write everyday and read everyday, your own skills will improve constantly. As you write and stumble on a scene or ponder some technique to develop character, you'll find the answer in the next book you pick up and read. You'll constantly finding yourself going, "Oh, that's how you do that!" So let me repeat: the best way to learn to write is simply to read. Lastly and again this is a repetition: PERSISTENCE. Once you're happy with your project, chuck that baby out there…and keep sending it out there until someone notices. Also allow the power of networking to help you: go to conventions, writing conferences, booksignings. Talk to authors, agents, publishers. Sometimes this can be the backdoor into getting your own work noticed! So there you have it: read everyday, write everyday, and persist in your dream.

Can you describe your typical writing day?
I am fairly regimented in my writing: I get up and go immediately to the computer. I will write for two hours, then I take a two hour break, then back again for two hours. Then I print up what I wrote and hand-edit it in the evening, giving it a polish, then enter those edits, so I can start fresh the next day. I'll do this 5-6 days a weeks.

How extensive is your research before starting a novel – do you need a set level of comfort from your research before you begin to write, or do you do research as you go?
When I do my initial research--and this all applies mostly to the thrillers—I'll research until I have a good feeling of place, and I have the dynamics of the scientific mystery established. Then I'll construct the plot. Once this is accomplished, I'll begin to write, and what I'll find is that I'll have a score of niggling details to research during each writing shift. This is minor stuff: street names, a bit of detail on a gun, some snatch of foreign language. I'll research this on the fly. Sometimes as I write, sometimes when the day's writing is over. The choice often depends if the detail needed will set some tone that I want to establish in the scene…if so, then I'll pop on the Internet right then and grab what I need. If not, then I'll wait until the day's end when I'm polishing and line-editing.

I've read that you are an avid scuba diver and enjoy spelunking. Do any of your experiences find their way into your novels?
Oh, I think each and every one of my novels has some character either heading underwater or underground. It allows me to live vicariously through my characters as I'm landlocked in my office.

We know you have retired from fulltime veterinary work. When did you decide that you were successful enough as a writer to safely move from one career to the other?
It was a gradual process. I first sold my veterinary practice after selling my first two thrillers, but I continued to work as an employed veterinary at the same facility. This allowed me to shed the business responsibilities and wear one less hat to work. Over three more years, I graduated down to part-time, then weekend work, and then I stepped away completely. Now all I do is a monthly spay-and-neuter clinic at the local animal shelter here in Sacramento. Ultimately, the question is when can one step away from their "regular" job? I had read somewhere about the "Rule of Five." You have to have five books out on the shelves, all earning royalties, before you can safely give up the day job. And oddly enough, this is about what happened to me. By the time, five books were on the shelves, I had stepped away.

Do you have any favorite authors?
I always hate this question. Though I ask it of fellow authors, too. My reading habits are wide and free-ranging. So it's hard to say I have a particular favorite, but I'll list a few. In the classics department, I'm all about Dickens and Twain. In modern literature, I read every word of Annie Proulx. In thrillers, I love the three K's: Koontz, King, and Crichton (okay the last does not start with a "K" but it sounds like it does). In mysteries, I really love Janet Evanovitch, Nevada Barr, and the new writer, P.J. Tracy. In adventure fiction, I read everything by the writing team of Douglas Preston and Lincoln Child. In science fiction and horror, I love the cross-genre writer, Dan Simmons, and brilliant space opera of Lois McMaster Bujold. In fantasy, I am enamored and envious of the talents of George R.R. Martin and Stephen Donaldson. And I'm sure as soon as I turn around and look at my wall of books in my library that I've forgotten a thousand-and-one other absolute favorites. So let me stop here.

How do you choose the name's of your characters?
It does take some thought. I often take half a book before I even discover my main character's real name. I don't know if I have any specific process. I look through phone books, or if I hear of any unusual name, I note it. Then it's a matter of mixing and matching, trying a name on for size, playing with it, then finally settling on one that fits best.

Should popular fiction be taught in schools?
I certainly do think there is a viable place for popular fiction in a school's curriculum. To expose students to only work that is deemed "high art" or "literate" is to ignore the long tradition of storytelling as popular entertainment. Shakespeare in his time was considered a popular storyteller, delving in themes of revenge, comical tomfoolery, and high romance. Since when did imagination become less important than theme when assigning value to literature? If schools are going to instill a love of reading in students, then give them something they'd love to read. Rather than MOBY DICK, put THE SHINING on the must-read list. Both novels deal with men driven my compulsion and madness. But which is going to excite the present-day student? Which is going to thrill a student into exploring past the required reading list? So perhaps there is a place for popular fiction in school...if for no other reason but to remind students that reading is not supposed to be an assignment but an entertaining means of enlightenment.

The above interviews are reproduced with the permission of James Rollins' publisher Harper Collins. The first, questions about Map of Bones, first appeared at www.harpercollins.com in 2005, the second, frequently asked questions with James Rollins, was reproduced from the author's website at www.jamescollins.com.

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 James Rollins at BookBrowse
Altar of Eden jacket The Doomsday Key jacket The Last Oracle jacket The Judas Strain 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 James Rollins 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

  • Steve Berry

    Steve Berry

    Steve Berry is the New York Times and #1 internationally bestselling author of the Cotton Malone novels (The Bishop's Pawn, The Malta Exchange), among other books, and several works of short fiction. He has 25 million books ... (more)

    If you enjoyed:
    Map of Bones

    Try:
    The Third Secret
    by Steve Berry

  • Dan Brown

    Dan Brown

    Dan Brown is the author of many bestselling novels, including the #1 New York Times bestseller, The Da Vinci Code. He is a graduate of Amherst College and Phillips Exeter Academy, where he spent time as an English teacher ... (more)

    If you enjoyed:
    Map of Bones

    Try:
    Angels & Demons
    by Dan Brown

We recommend 4 similar authors

View all 4 Read-Alikes

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

The good writer, the great writer, has what I have called the three S's: The power to see, to sense, and to say. ...

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 01-Jun-26 05:08 AM
Locale en
User Agent Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Remote IP 127.0.0.1
Host Name 127.0.0.1


Execution Time

Total Time Avg Time Count Template
1780290510733 ms 1.78029051073E+012 ms 1 /root/website/app_server.cfm
233 ms 233 ms 1 top level /root/website/author_interviews/full/index.cfm
112 ms 112 ms 1 /root/website/author_interviews/full/dsp_main.cfm
86 ms 43 ms 2 /root/website/queries/qry_get_books_by_author_id.cfm
53 ms 53 ms 1 /root/website/app_layout.cfm
42 ms 42 ms 1 /root/website/app_globals.cfm
34 ms 34 ms 1 /root/website/site/blocks/layout/dsp_right_column.cfm
30 ms 10 ms 3 /root/website/adsystem/adsystem_mod.cfm
14 ms 14 ms 1 /root/website/queries/qry_get_active_obc.cfm
13 ms 13 ms 1 /root/website/adzones/AdZone6.cfm
12 ms 12 ms 1 /root/website/queries/qry_get_bb_briefs_by_author.cfm
11 ms 11 ms 1 /root/website/site/blocks/dsp_border_first_impressions.cfm
11 ms 11 ms 1 /root/website/site/blocks/layout/dsp_footer.cfm
10 ms 10 ms 1 /root/website/adzones/AdZone2.cfm
10 ms 10 ms 1 /root/website/queries/qry_get_arcs_for_ad.cfm
10 ms 3 ms 3 /root/website/site/blocks/membership_advantages.cfm
9 ms 9 ms 1 /root/website/adzones/showcase_track.cfm
9 ms 3 ms 3 /root/website/queries/qry_get_member_account_types.cfm
7 ms 7 ms 1 /root/website/site/blocks/dsp_book_giveaway.cfm
5 ms 5 ms 1 /root/website/queries/qry_get_current_competition.cfm
4 ms 4 ms 1 /root/website/actions/adstatus.cfm
4 ms 4 ms 1 /root/website/queries/qry_get_all_books_by_author_id.cfm
4 ms 4 ms 1 /root/website/queries/qry_get_books_by_author_id_lite.cfm
3 ms 3 ms 1 /root/website/act_check_login.cfm
3 ms 3 ms 1 /root/website/queries/qry_get_author_readalikes_by_id.cfm
2 ms 1 ms 4 /root/website/actions/act_spider_tracker.cfm
2 ms 2 ms 1 /root/website/queries/qry_get_current_wordplay.cfm
2 ms 2 ms 1 /root/website/queries/qry_get_free_newsletters.cfm
2 ms 2 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/act_libraryIPLogin.cfm
1 ms 1 ms 1 /root/website/queries/qry_get_previous_arcs_for_ad.cfm
1 ms 1 ms 1 /root/website/site/blocks/layout/head.cfm
1 ms 1 ms 1 /root/website/site/blocks/layout/main_menu.cfm
0 ms 0 ms 1 /root/website/Application.cfm
0 ms 0 ms 1 /root/website/actions/udfs.cfm
0 ms 0 ms 1 /root/website/banners/ad_594.cfm
0 ms 0 ms 1 /root/website/formurl2attributes.cfm
0 ms 0 ms 1 /root/website/js/fbjavascriptsdk.cfm
0 ms 0 ms 1 /root/website/queries/qry_get_current_ezine.cfm
0 ms 0 ms 1 /root/website/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_search.cfm
2 ms  STARTUP, PARSING, COMPILING, LOADING, & SHUTDOWN
235 ms  TOTAL EXECUTION TIME
red = over 250 ms average execution time


SQL Queries

spidercheck (Datasource=bookbrowse_com_new, Time=2ms, Records=1) in /root/website/actions/act_spider_tracker.cfm @ 05:08:30.030
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=1ms, Records=0) in /root/website/queries/qry_get_member_info.cfm @ 05:08:30.030
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=3ms, Records=2) in /root/website/actions/adstatus.cfm @ 05:08:30.030
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 @ 05:08:30.030
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=2ms, Records=1) in /root/website/queries/qry_get_current_wordplay.cfm @ 05:08:30.030
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=2ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 05:08:30.030
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=1ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 05:08:30.030
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 @ 05:08:30.030
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=3ms, Records=0) in /root/website/queries/qry_get_active_obc.cfm @ 05:08:30.030
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 @ 05:08:30.030
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=5ms, Records=4) in /root/website/queries/qry_get_active_obc.cfm @ 05:08:30.030
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=2ms, Records=1) in /root/website/queries/qry_get_books_by_author_id_lite.cfm @ 05:08:30.030
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) = 1155

get_author_by_author_id (Datasource=bookbrowse_com_new, Time=2ms, Records=1) in /root/website/queries/qry_get_books_by_author_id_lite.cfm @ 05:08:30.030
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) = 1155

get_all_books_by_author_id (Datasource=bookbrowse_com_new, Time=3ms, Records=6) in /root/website/queries/qry_get_all_books_by_author_id.cfm @ 05:08:30.030
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) = 1155
Parameter #2(CF_SQL_INTEGER) = 1155

get_bb_briefs_by_author (Datasource=bookbrowse_com_new, Time=10ms, Records=5) in /root/website/queries/qry_get_bb_briefs_by_author.cfm @ 05:08:30.030
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) = 1155

get_author_readalikes_by_id (Datasource=bookbrowse_com_new, Time=1ms, Records=4) in /root/website/queries/qry_get_author_readalikes_by_id.cfm @ 05:08:30.030
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) = 1155

get_ads (Datasource=bookbrowse_com_new, Time=3ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 05:08:30.030
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=2ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 05:08:30.030
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=2ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 05:08:30.030
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_member_account_types (Datasource=bookbrowse_com_new, Time=2ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 05:08:30.030
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=17ms, Records=1) in /root/website/queries/qry_get_books_by_author_id.cfm @ 05:08:30.030
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) = 1170
Parameter #2(CF_SQL_INTEGER) = 1170
Parameter #3(CF_SQL_INTEGER) = 1170

get_author_by_author_id (Datasource=bookbrowse_com_new, Time=1ms, Records=1) in /root/website/queries/qry_get_books_by_author_id.cfm @ 05:08:30.030
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) = 1170

get_books_by_author_id (Datasource=bookbrowse_com_new, Time=63ms, Records=3) in /root/website/queries/qry_get_books_by_author_id.cfm @ 05:08:30.030
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) = 226
Parameter #2(CF_SQL_INTEGER) = 226
Parameter #3(CF_SQL_INTEGER) = 226

get_author_by_author_id (Datasource=bookbrowse_com_new, Time=1ms, Records=1) in /root/website/queries/qry_get_books_by_author_id.cfm @ 05:08:30.030
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) = 226

get_member_account_types (Datasource=bookbrowse_com_new, Time=2ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 05:08:30.030
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=4ms, Records=0) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 05:08:30.030
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=5ms, Records=3) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 05:08:30.030
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 @ 05:08:30.030
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 @ 05:08:30.030
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=0ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 05:08:30.030
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=5ms, Records=1) in /root/website/site/blocks/dsp_book_giveaway.cfm @ 05:08:30.030
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=1ms, Records=4) in /root/website/queries/qry_get_free_newsletters.cfm @ 05:08:30.030
SELECT 	*
    FROM 	free_newsletters
get_ads (Datasource=bookbrowse_com_new, Time=2ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 05:08:30.030
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 @ 05:08:30.030
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 @ 05:08:30.030
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=CFTOKEN=976b4d87e608b51c-0FCEE156-F8CE-85E1-FDD4F74FFA3AC64E; CFGLOBALS=urltoken%3DCFID%23%3D4089030%26CFTOKEN%23%3D976b4d87e608b51c%2D0FCEE156%2DF8CE%2D85E1%2DFDD4F74FFA3AC64E%23lastvisit%3D%7Bts%20%272026%2D06%2D01%2005%3A08%3A25%27%7D%23hitcount%3D10%23timecreated%3D%7Bts%20%272026%2D06%2D01%2005%3A07%3A45%27%7D%23cftoken%3D976b4d87e608b51c%2D0FCEE156%2DF8CE%2D85E1%2DFDD4F74FFA3AC64E%23cfid%3D4089030%23; CFID=4089030; 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/1155/james-rollins
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=4089030
cftoken=976b4d87e608b51c-0FCEE156-F8CE-85E1-FDD4F74FFA3AC64E
hitcount=10
lastvisit={ts '2026-06-01 05:08:25'}
library_user_flag=0
member_active_flag=0
member_logged_in_flag=0
member_number=0
order=p
timecreated={ts '2026-06-01 05:07:45'}
urltoken=CFID=4089030&CFTOKEN=976b4d87e608b51c-0FCEE156-F8CE-85E1-FDD4F74FFA3AC64E
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#=4089030&CFTOKEN#=976b4d87e608b51c-0FCEE156-F8CE-85E1-FDD4F74FFA3AC64E#lastvisit={ts '2026-06-01 05:08:25'}#hitcount=10#timecreated={ts '2026-06-01 05:07:45'}#cftoken=976b4d87e608b51c-0FCEE156-F8CE-85E1-FDD4F74FFA3AC64E#cfid=4089030#
CFID=4089030
CFTOKEN=976b4d87e608b51c-0FCEE156-F8CE-85E1-FDD4F74FFA3AC64E
Session Variables:
cfid=4089030
cftoken=976b4d87e608b51c-0FCEE156-F8CE-85E1-FDD4F74FFA3AC64E
sessionid=BOOKBROWSE_4089030_976b4d87e608b51c-0FCEE156-F8CE-85E1-FDD4F74FFA3AC64E
urltoken=CFID=4089030&CFTOKEN=976b4d87e608b51c-0FCEE156-F8CE-85E1-FDD4F74FFA3AC64E
URL Parameters:
author_number=1155
james-rollins=
Debug Rendering Time: 11 ms