Kristopher Jansma Interview, plus links to author biography, book summaries, excerpts and reviews

Kristopher Jansma

Kristopher Jansma

An interview with Kristopher Jansma

Kristopher Jansma discusses his debut novel, The Unchangeable Spots of Leopards, and how his teaching job helped - and influenced - the writing of the book.

First things first: how does an adjunct professor working on two New York-area campuses manage to do any writing, let alone the thoughtful, sophisticated work that went into The Unchangeable Spots of Leopards?
During the semesters, I've typically taught five sections a week—though I've done as many as seven, and yes, often on two campuses, though they are thankfully close to one another. When you factor in the preparation and the grading and the advising and another four or five hours at a tutoring desk, it's a lot of work, as thousands and thousands of other young adjunct professors around the country can tell you. But I actually get more writing done during these packed semesters than I do over the summers. When I know I can just get to it later, it's too easy to put off. But when I've only got one free hour to write, and that it might be my only hour for the next two or three days…I have to give it everything I've got.

Beyond that, though, teaching gives me the chance to spend several hours each day thinking about writing and talking about writing…figuring out how to make it interesting to younger people who often don't read or write very much outside of class. When you walk into a room full of eighteen-year-old students and it is 8:15 AM and half of them haven't even gone to bed yet, you've got two options: One, you can just get up there and give them material and tell them it'll be on a test or a quiz…Or, two, you can get up there and tell them, "Here's why it matters. Here's what you'll be able to do, if you listen to what I have to say. And then I want to hear from you because this goes both ways." If you go with option number two, when you walk out of that classroom at 9:30, you're going to easily be twice as jazzed as they are—and that's when I want to sit down and write something I've never seen written before.

Your teaching has given you some rather prickly views about the state of higher education, and you aren't shy about expressing them in your novel. What's wrong with teaching at the collegiate level these days, and how do you think we might start changing it?
Well, first, let's be clear: many of those opinions are the narrator's, not mine! And he expresses them at a pretty low point in his life, when he's losing all faith in his life as a writer.

Two years before I began working on Leopards, I was teaching at a city college and I was totally new to the job. I'd sent out CVs to dozens of schools and no one was hiring, and then just a week before the semester began, the chair at this college called me up and said that someone had just quit and would I take two sections? I said of course I'd do it, and he said, "Great. Pick out a textbook and show up on the first day!" And that was basically it. There wasn't an orientation or a syllabus or a list of course expectations or anything.

So I walked in on the first day and started talking about William Zinsser and more or less made the rest up as I went along. I brought in readings I liked and some I thought they'd like. There were thirty-five students in each class. By week four or five, I had maybe twenty-five still showing up. By the end of the semester, I only had fifteen coming regularly, and about five more kids who showed up just enough to pass. And I was so upset—I thought for sure I'd be fired. Some of the kids were doing really well and were really into it, but I knew a huge portion of the class would fail.

Finally I found another professor to talk to about it and he laughed and said not to worry. The attrition rate for first-year students at the college was over fifty percent. It was just a given that kids would either give up, drop out, or fail because they couldn't handle it even if they tried hard. No one saw it as their own failing, because it was built into the system…so I wrote the first pieces of that chapter back when I was feeling that disillusionment pretty intensely.

But in the years since that first class, that school has put more effort into supporting its teachers and its first-year students. I began teaching at another college, which also had a high attrition rate and lax admissions standards…but they were working hard to change it. There are practical paths toward improvement, but the main thing is that someone has to care about the students. College needs to be a place where a student can discover they're capable of more than they ever believed possible—not the other way around.

The Unchangeable Spots of Leopards begins and ends in an airport terminal—a place that is not quite a place but rather a point of transition between places. Your novel seems to thrive on the moment and energy of transition; it never comes to rest, either geographically or in any other sense. Why such restlessness?
Airport terminals, train stations—they're places that never change and yet are constantly in flux. As you say, most people are rushing through from one place to another—and whenever I'm in an airport, I wonder about all the people who are there day in, day out, watching the rest of us. To me that's exactly what being a writer is like. Everyone else is rushing around, trying to get from point A to point B; my job is to sit back and watch all that restlessness, and hit pause on one person—make them stand still so that I can capture what's driving them.

Incidentally, I love writing at airports. Part of this stems from my constant fear of missing flights—I will inevitably end up at the airport with hours to spare, but luckily it's also really the perfect place to write. It's a self-contained universe; you've got everything you need in one bag; no one from the outside world can really bother you. If anyone calls you, you've got the perfect excuse not to be disrupted, "Oh, sorry, I'm at the airport. Can't talk right now." It's very liberating!

Your book also continually expresses a fascination with diagonals: the zigzag movements of men on a checkerboard; the slant truths of Emily Dickinson poems. What attracts you to movements on the bias?
"On the bias." I like that. Great double-meaning to that word…I should have worked that term into the book somewhere!

At Johns Hopkins University, where I studied as an undergraduate, our introductory Fiction and Poetry course was split into two halves. The fall semester was called Telling it Straight and the spring was Telling it Slant, taken right from that Dickinson poem. So from the very beginning of my study of writing, I was thinking about writing in those terms. That first semester I wrote some of my very first stories, and they were almost all taken directly from my own experiences or those of friends from high school. It wasn't until the second semester that I began to understand how sometimes making something up out of pure imagination could be a far more truthful story.

The two main characters of The Unchangeable Spots of Leopards, your nameless narrator and his "frenemy" Julian McGann, have a great deal in common—they're both gifted but slightly deranged writers who have trouble putting down roots—and yet you manage to develop them as distinct and different characters. How did you manage to keep them from blurring together?
Over the years I spent in classes and workshops with other writers, I think I developed a sense for the many, many varieties of writers out there. And if we are slightly deranged then I'd say we each go about it in our own unique way. No, seriously though, every writer comes at the task differently and for different reasons, and our literature is more diverse for it.

The narrator sees Julian as a writer who is naturally gifted—simply more talented than himself. But like many novice writers, the narrator doesn't understand that, ultimately, talent is somewhat beside the point. Plenty of people with talent lack drive. Julian's dedication comes from this kind of total obsessiveness, but this also threatens him. He'd rather be writing than sleeping or bathing or eating or experiencing the outside world. It can become an addiction, and it can really break people, as it does in Julian's case.

The narrator's dedication comes mainly from his envy of Julian's dedication, and he romanticizes the sacrifices that he sees his roommate making…which I think we all do sometimes. We talk about how much Hemingway could drink and Byron's scandalous sex life, and even come to believe that self-destruction is a prerequisite for being a writer, instead of a very perilous side effect. Anyway, as the narrator learns, envy can be a very good motivator, but I think it can only take you so far. You've got to have something else to get you through the final stretch.

Your readers are likely to have come across other unnamed narrators, like Ellison's invisible man or Dostoevsky's paradoxalist from the underground. However, few such narrators are as teasingly and playfully presented as the alias-rich voice of your novel. Why did you choose not to give him a real name, and did you have as much fun with the whole nameless motif as you appear to have had?

Absolutely, I had fun with it. I love The Invisible Man and Notes from the Underground. My favorite unnamed narrator might be from The Aspern Papers by Henry James. The narrator in that story is trying to con an old lady and her niece out of some valuable papers, and he's very upfront with us all along about how he manipulates them. He says he invents a nom de guerre, as in a war name used by a soldier, when he introduces himself to them—but he never tells us what it is. And then, later in the book, he casually mentions that he's confessed his true name to the niece, and you almost drop the book because it's so unfair that he'd tell her and not you! Anytime a book can trick you into thinking something like that, you know you're in good hands.

Unnamed narrators have long been a fascination of mine, because here you have someone who is telling you a story, most likely confessing all sorts of personal and intimate things, and yet withholds the most basic social intimacy. And this creates a kind of suspicion. Anyone making a confession is also trying to sell you something--a version of events, a justification for wrongdoing, or even just a humanity behind certain actions. But when the person won't even tell you his name, then it makes you think twice about his agenda.

Readers who glance at your table of contents and see that the two most substantial sections of the novel are titled "What Was Lost" and "What Was Found" might anticipate a straightforward story of failure and redemption. That turns out not to be exactly true, though the story is about losing and finding in a lot of ways. Care to comment?
That's interesting. In a way it is a story of failure and redemption, though not a straightforward one, surely. Maybe it is a "slant-forward," redemption tale. But yes, it is a story about losing, right from the very first line. Losing novels, losing love, losing faith, losing friends…It could have been a very depressing book, except that I think that losing is also a first step toward changing. And that's the big question the narrator struggles with throughout—can he change his nature?

There's a quote I stumbled upon while reading some of Salinger's old letters once, and it completely changed the way I wanted to end the book. While he was serving in WWII, Salinger wrote a letter home expressing his frustrations with the many stories he was continually writing while he was over there. He said he felt that no writer had "the right to tear his characters apart" if he didn't know how to put them together again. And that just hit me square on. I knew I had to figure out how to end the book without, as he put it, "leaving them all broken on the page with just 'The End' written underneath." It took a while but eventually I saw a way to do it, and that's when I finally settled on those section titles "What Was Lost" and "What Was Found."

Your story also seems to take great pleasure in doubling. Your narrator has a doppelgänger. The lead woman is an actress, which is another kind of doubling. Many of the other characters have two names, and, of course, the manuscript comes in two halves of the same height and "consistency." What makes doubling so intriguing to you?
Doubling comes up in the story in many different places, but often it is a way of exposing change. When you hold a copy and an original far apart, it can be very hard to see any difference. But when you put them right beside one another, all the tiny modifications become easier to spot—like one of those puzzles in a Highlights for Children magazine.

As an undergraduate, I was lucky enough to take a graduate seminar with Professor John Irwin, who had written tremendous essays and books about doubling in modern literature. One concept he introduced me to, I remember, was a gnomon. It's what the Greeks called the triangular piece on a sundial that casts the shadow that goes around slowly over time. In literature, a gnomon can be anything or anyone that the protagonist meets early in the novel and then sees again towards the end of the book. By contrasting the protagonist's reactions to these two encounters, a reader can better see how he has changed during the time between.

Your novel is strewn with unattainable women and with quite a few highly available gay men. Would you like to talk a bit about the sexual mood of the book?
Well, I think the women are only one of many unattainable things that the narrator yearns for, especially in the first half of the ook. He wants to best Julian in the story contest, he wants to write this novel, he wants to fit into this world of privilege, and he wants Evelyn to run off with him. But to be always wanting something and never actually having it is to exist forever in a fiction. It can always be whatever you imagine and never what it truly is. Maybe that tells us something about his reticence to be with the women in the book who are attainable.

As for Julian's "high availability," the narrator implies this at various points, but conspicuously he never considers that Julian might love, or be loved, by these men. They are so interchangeable to the narrator that he meanly refers to them all as "Simons"—a joke he shares with Evelyn. And yet there is real love between Julian and the narrator, which is not sexual, but which the narrator cannot seem to speak about.

Talking about sex all the time is the mark of someone who doesn't know anything about real love, and I wanted that to come across in the way the narrator talks about Julian's sex life, as well as his own.

The way in which your narrator approaches the honeymooners in Dubai reminded me a lot of M. Clamence in Camus's The Fall. Do you count that book among your influences? What do you see as your major influences, for that matter?
There were a lot of influences on Leopards, that varied wildly from chapter to chapter. I did read The Fall, quite a long time ago, so maybe it crept in there. I had mainly been thinking, in that chapter, of telling a sort of Thousand and One Nights type of story within a story—which rose up out of the Middle Eastern setting, but which also fit that moment nicely, where the two halves of the novel meet. It's a little jarring, and the reader needs a little jarring there.

Other chapters came out of other, different places. I wrote the eponymous chapter just after seeing Waiting for Godot on stage for the very first time. The next week I saw the British film Withnail & I and that got me thinking about the next chapter, which I named "Anton and I" out of respect to the film, which is brilliant. And "In the Writer's Colony" had a bit of "In the Penal Colony" behind it, at least at first…I think I had just been teaching that story and it seemed to resonate with the themes. The whole book came together in this way. I'd be working on other things and then I'd run across something somewhere that just felt like Leopards.

I also caught more than a hint of Hunter S. Thompson. Is he another personal guru?
I had avoided Thompson for a long time because I thought of him as a guy who mainly wrote about drugs, which don't really interest me much. But then I happened across Down and Out in Paris and London by George Orwell, and I loved it, and I wondered if maybe Thompson's title was a nod to Orwell's. So I picked up Fear and Loathing one day and read the first page and was completely riveted. The narrator's voice just sucked me right in. I'd expected it to be sloppy and sprawling and surreal, but it was so crystalline and so real. And really funny! I wasn't expecting that. Plus it gave a firsthand account of something that couldn't be described any other way, like poverty in Orwell's book.

But, I couldn't say he was a "personal guru" because I never read another book of Thompson's after that one, and I don't know that much about his life.

I think in terms of personal gurus, I'd have to go with writers whose lives inspire me as much as their work: David Mitchell, J. D. Salinger, Nabokov, Fitzgerald. They leave me in total awe of what they can do. I don't know that I can call them influences though, because I don't dare try to write like them. I sort of want to go on believing that what they can do is just magic that can't be replicated.

It's interesting that you have written a novel that deceives its readers with Mephistophelean glee but that truth clearly means so much to you. What do you have to say about our current cultural preoccupation with regard to truth?
Like "Professor Wallace" I am really fascinated with fakers and plagiarists and liars. I'm really a terrible liar myself and I'm always intrigued by people who can do it so effortlessly. Growing up, I used to love the character of George on Seinfeld, who advises Jerry on passing a lie detector test: "It's not a lie if you believe it." And that's one thing I wonder about—do these people really believe their own lies? A writing professor of mine once opined that fiction was "something that could have happened, but didn't." Jonah Lehrer wrote several things that Bob Dylan might well have said, but happened not to. Stephen Glass made up stories which could have happened, but didn't. That's fiction.

And people are upset by betrayals like these—and rightly so—because when you write something and say it is true, you're asking people to go out on a limb and take you at your word. If they find out you're lying, then it's a breach of that contract. To me it's important to keep in mind that James Frey started out trying to sell A Million Little Pieces as a work of fiction. Nobody wanted to publish it. Call it a true story, however, and it becomes a bestseller that sweeps the nation and garners Oprah's seal of approval. Of course that was terribly, terribly wrong of him to do. But it also begs the question: Why does the same exact story fail to move us until we're told "this really happened"?

People forget that fiction can be every bit as truthful as nonfiction. When the reader begins by accepting the premise that what they're about to read is not a factual account of real events or the actions of real people…And yet they will still hang on every twist, and still fall in love with the characters and pump their fists in the air when they do well and sob when they fail…Well, that's a very real thing.

We take your point in the novel that all of fiction is a pack of lies. But can it afford to be just a grand deception? Do the lies mean anything at all unless they reveal some deeper truth?
Absolutely not. There is no meaning to lies without that deeper truth, and more important, no, it can't afford it. We can't afford it.

Elizabeth Bowen said, in her Notes on Writing a Novel, "The novel lies, in saying that something happened that did not. It must, therefore, contain uncontradictable truth, to warrant the original lie." And I think this is part of the limb that fiction asks you to step out on. There's a promise of some high-hanging fruit at the end of that limb. We read books all the time that fall short on this promise, I think. The characters make implausible choices or the author creates unearned twists in the plot, or the sentences just simply fail to animate our own imaginations. There's nothing irrefutably true about these things. Readers know, deep down, that the real world is a lot more complicated and interesting than that.

But when that irrefutable truth is there, a beating heart beneath every paragraph, it allows a writer to tell greater and greater lies. There are some fantastic things that happen in Leopards. But my hope is that when readers come to the end of the novel, they will think, "Ok, yes, finally!" and not "Puhlllease! You expect me to buy this?"

Your story within a story within a story about Colette Marsh and the Civil War-era gilder is a marvelous vignette. How did you come up with it?
It was a leap for me, because I'd really never written historical fiction before, but it was something I'd always wanted to try. I'd initially written the "Anton & I" chapter without the excerpts included, but with the characters only describing the story enough that a reader might get an idea of what it was about. I wanted it to feel like a fantasy version of the narrator's situation with Evelyn, but for him to still feel like it might be hidden in some way—that he could reasonably believe she wouldn't think it was about her when she read it. Gold was already becoming a big motif in the other sections, and so I thought I'd set it during the Gilded Age. But then I began doing some research and discovered all this fantastic and horrible stuff about the Draft Riots in 1863, and it seemed like the perfect backdrop for this opulent wedding, and this story about class, and so then I had to shift it slightly to "Just Before" the Gilded Age. In my early drafts it remained a whole separate chapter, following "Anton and I" but it took us too far away from Julian and Evelyn, and so I trimmed it considerably and wove it directly into the earlier chapter.

The Unchangeable Spots of Leopards is prefaced by a sort of all-points bulletin, asking anyone who thinks he or she may be the author of the book to please contact Haslett & Grouse. Has anyone come forward yet?
No, but we're keeping our eyes open! Until then, I'm more than happy to continue taking the credit.

The novel takes readers around the world and back again, to many different locales: Tokyo, Luxembourg, Sri Lanka, Iceland…Have you been to all these places? How did you do the research necessary to transport readers to these places? And I'm assuming you aren't fluent in French and Russian and Japanese and Icelandic…
No, I'm not at all. In fact I may be the world's worst language student, and I have the report cards to prove it. I studied French in grade school and Russian in college, but I can barely remember a dozen words of either. Italian was the only course I ever failed outright. The only language I did well with was Latin, in middle school and high school, because we never had to speak it out loud. I could take my time on the translations, and I could also usually see the links between the Latin words and the English derivatives.

For the translations in the book, I got by with a little help from my friends. My sister-in-law speaks fluent French. A student of mine had done a semester abroad in Japan, and she very kindly helped me out there. And thanks to social networking, I was able to reach some old friends who helped with the Russian and even the Tamil and the Luxembourgish! They also helped me with some of the cultural details, because there was simply no way I could manage to go to all these places myself.

I did go to the Grand Canyon, and rafted the river with my family, and also to Luxembourg with my wife, and we spent a day in the old city there. I was also able to go to Ghana with my in-laws, who were taking a sabbatical to teach in Kumasi. But I haven't been to Dubai or Iceland or Sri Lanka. Yet. Those stories required a lot of research, in libraries and also online. It's pretty incredible what you can do these days. A few mouse clicks and I can be looking at a street view right outside of the Colombo Fort Railway Station. I can look at the cocktail menu for Vu's Bar in the Jumeirah Emirates Towers. I can go onto a forum where Indian couples are discussing Hindi weddings.

People say you should write what you know, but that so depletes our possibilities, and by extent, our literature. It was important to me that the novel not just be limited to what I knew already. For me, writing has always been an excuse to learn a lot more than the little I know.

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 Kristopher Jansma at BookBrowse
Our Narrow Hiding Places jacket The Unchangeable Spots of Leopards 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 Kristopher Jansma 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

We recommend 10 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...

To be ignorant of what occurred before you were born is to remain always a child

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 08:18 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
1780301932068 ms 1.78030193207E+012 ms 1 /root/website/app_server.cfm
681 ms 681 ms 1 /root/website/author_interviews/full/index.cfm
299 ms 299 ms 1 /root/website/app_globals.cfm
127 ms 127 ms 1 /root/website/author_interviews/full/dsp_main.cfm
125 ms 125 ms 1 /root/website/app_layout.cfm
93 ms 31 ms 3 /root/website/adsystem/adsystem_mod.cfm
89 ms 89 ms 1 /root/website/site/blocks/layout/dsp_right_column.cfm
64 ms 64 ms 1 /root/website/queries/qry_get_books_by_author_id_lite.cfm
57 ms 29 ms 2 /root/website/queries/qry_get_books_by_author_id.cfm
50 ms 50 ms 1 /root/website/queries/qry_get_active_obc.cfm
44 ms 44 ms 1 /root/website/queries/qry_get_current_competition.cfm
40 ms 40 ms 1 /root/website/adzones/AdZone6.cfm
39 ms 39 ms 1 /root/website/actions/adstatus.cfm
30 ms 30 ms 1 /root/website/queries/qry_get_bb_briefs_by_author.cfm
30 ms 30 ms 1 /root/website/site/blocks/dsp_border_first_impressions.cfm
28 ms 28 ms 1 /root/website/queries/qry_get_arcs_for_ad.cfm
28 ms 28 ms 1 /root/website/site/blocks/layout/dsp_footer.cfm
27 ms 27 ms 1 /root/website/adzones/showcase_track.cfm
26 ms 26 ms 1 /root/website/adzones/AdZone2.cfm
25 ms 25 ms 1 /root/website/act_check_login.cfm
25 ms 25 ms 1 /root/website/queries/qry_get_member_info.cfm
17 ms 17 ms 1 /root/website/queries/qry_get_all_books_by_author_id.cfm
17 ms 6 ms 3 /root/website/queries/qry_get_member_account_types.cfm
17 ms 6 ms 3 /root/website/site/blocks/membership_advantages.cfm
16 ms 16 ms 1 /root/website/queries/qry_get_current_wordplay.cfm
14 ms 14 ms 1 /root/website/queries/qry_get_author_readalikes_by_id.cfm
13 ms 3 ms 4 /root/website/actions/act_spider_tracker.cfm
13 ms 13 ms 1 /root/website/site/blocks/dsp_book_giveaway.cfm
4 ms 4 ms 1 /root/website/site/blocks/layout/dsp_bottom_block.cfm
1 ms 1 ms 1 /root/website/queries/qry_get_free_newsletters.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/dsp_header.cfm
1 ms 1 ms 1 /root/website/site/blocks/layout/main_menu.cfm
0 ms 0 ms 1 /root/website/Application.cfm
0 ms 0 ms 1 /root/website/act_libraryIPLogin.cfm
0 ms 0 ms 1 /root/website/actions/udfs.cfm
0 ms 0 ms 1 /root/website/banners/ad_594.cfm
0 ms 0 ms 1 /root/website/formurl2attributes.cfm
0 ms 0 ms 1 /root/website/js/fbjavascriptsdk.cfm
0 ms 0 ms 1 /root/website/queries/qry_get_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/head.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/header_announcement.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/main_search.cfm
0 ms  STARTUP, PARSING, COMPILING, LOADING, & SHUTDOWN
681 ms  TOTAL EXECUTION TIME
red = over 250 ms average execution time


SQL Queries

spidercheck (Datasource=bookbrowse_com_new, Time=12ms, Records=1) in /root/website/actions/act_spider_tracker.cfm @ 08:18:52.052
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=24ms, Records=0) in /root/website/queries/qry_get_member_info.cfm @ 08:18:52.052
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=39ms, Records=2) in /root/website/actions/adstatus.cfm @ 08:18:52.052
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 @ 08:18:52.052
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=16ms, Records=1) in /root/website/queries/qry_get_current_wordplay.cfm @ 08:18:52.052
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=24ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 08:18:52.052
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=18ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 08:18:52.052
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 @ 08:18:52.052
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=17ms, Records=0) in /root/website/queries/qry_get_active_obc.cfm @ 08:18:52.052
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=17ms, Records=1) in /root/website/queries/qry_get_active_obc.cfm @ 08:18:52.052
SELECT 		a.arc_forumidfk, a.discourse_flag, a.arc_promo_text,
				b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_jacket_desc, b.ezine_preview_publisher, ezine_preview_publish_dt, ezine_preview_number_of_pages,  ezine_preview_isbn, ezine_preview_short_summary,
	            b.ezine_preview_bb_author_link, ezine_preview_bb_link,
	            c.book_reading_guide
	
	FROM 		arcs a
	INNER JOIN 	ezine_previews b ON b.ezine_preview_number = a.ezine_preview_number
	LEFT JOIN  	books c on c.book_number = b.ezine_preview_bb_link
	
	WHERE 		a.arc_obc_flag = 1
	AND			a.arc_active_flag = 0
	AND 		arc_closed_flag = 1
	AND 		getdate() >= arc_on_ad_dt
	AND 		getdate() < arc_off_ad_dt
	ORDER BY  	NEWID()
get_recent_obc (Datasource=bookbrowse_com_new, Time=13ms, Records=4) in /root/website/queries/qry_get_active_obc.cfm @ 08:18:52.052
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=51ms, Records=1) in /root/website/queries/qry_get_books_by_author_id_lite.cfm @ 08:18:52.052
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) = 2285

get_author_by_author_id (Datasource=bookbrowse_com_new, Time=11ms, Records=1) in /root/website/queries/qry_get_books_by_author_id_lite.cfm @ 08:18:52.052
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) = 2285

get_all_books_by_author_id (Datasource=bookbrowse_com_new, Time=16ms, Records=2) in /root/website/queries/qry_get_all_books_by_author_id.cfm @ 08:18:52.052
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) = 2285
Parameter #2(CF_SQL_INTEGER) = 2285

get_bb_briefs_by_author (Datasource=bookbrowse_com_new, Time=22ms, Records=1) in /root/website/queries/qry_get_bb_briefs_by_author.cfm @ 08:18:52.052
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) = 2285

get_author_readalikes_by_id (Datasource=bookbrowse_com_new, Time=10ms, Records=10) in /root/website/queries/qry_get_author_readalikes_by_id.cfm @ 08:18:52.052
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) = 2285

get_ads (Datasource=bookbrowse_com_new, Time=12ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 08:18:52.052
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=12ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 08:18:52.052
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=6ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 08:18:52.052
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=7ms, Records=1) in /root/website/actions/udfs.cfm @ 08:18:52.052
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) = 2855

get_member_account_types (Datasource=bookbrowse_com_new, Time=7ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 08:18:52.052
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=31ms, Records=5) in /root/website/queries/qry_get_books_by_author_id.cfm @ 08:18:52.052
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) = 1243
Parameter #2(CF_SQL_INTEGER) = 1243
Parameter #3(CF_SQL_INTEGER) = 1243

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

get_books_by_author_id (Datasource=bookbrowse_com_new, Time=6ms, Records=4) in /root/website/queries/qry_get_books_by_author_id.cfm @ 08:18:52.052
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) = 677
Parameter #2(CF_SQL_INTEGER) = 677
Parameter #3(CF_SQL_INTEGER) = 677

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

get_member_account_types (Datasource=bookbrowse_com_new, Time=1ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 08:18:52.052
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=12ms, Records=0) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 08:18:52.052
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=8ms, Records=3) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 08:18:52.052
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=16ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 08:18:52.052
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=12ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 08:18:52.052
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=9ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 08:18:52.052
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=13ms, Records=1) in /root/website/site/blocks/dsp_book_giveaway.cfm @ 08:18:52.052
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 @ 08:18:52.052
SELECT 	*
    FROM 	free_newsletters
get_ads (Datasource=bookbrowse_com_new, Time=9ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 08:18:52.052
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=7ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 08:18:52.052
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 @ 08:18:52.052
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=FREEACCESSCOUNT=0; CFID=4092459; CFCLIENT_BOOKBROWSE=order%3Dp%23member%5Fnumber%3D0%23member%5Factive%5Fflag%3D0%23member%5Flogged%5Fin%5Fflag%3D0%23library%5Fuser%5Fflag%3D0%23view%3Dbooks%23; CFGLOBALS=urltoken%3DCFID%23%3D4092459%26CFTOKEN%23%3D847d8c3d717591e0%2D16A07CA9%2D0D64%2D3143%2D75165E509604E8E4%23lastvisit%3D%7Bts%20%272026%2D06%2D01%2008%3A18%3A51%27%7D%23hitcount%3D208%23timecreated%3D%7Bts%20%272026%2D06%2D01%2008%3A18%3A25%27%7D%23cftoken%3D847d8c3d717591e0%2D16A07CA9%2D0D64%2D3143%2D75165E509604E8E4%23cfid%3D4092459%23; CFTOKEN=847d8c3d717591e0-16A07CA9-0D64-3143-75165E509604E8E4
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/2285/author/kristopher-jansma
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=4092459
cftoken=847d8c3d717591e0-16A07CA9-0D64-3143-75165E509604E8E4
hitcount=214
lastvisit={ts '2026-06-01 08:18:52'}
library_user_flag=0
member_active_flag=0
member_logged_in_flag=0
member_number=0
order=p
timecreated={ts '2026-06-01 08:18:25'}
urltoken=CFID=4092459&CFTOKEN=847d8c3d717591e0-16A07CA9-0D64-3143-75165E509604E8E4
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#=4092459&CFTOKEN#=847d8c3d717591e0-16A07CA9-0D64-3143-75165E509604E8E4#lastvisit={ts '2026-06-01 08:18:51'}#hitcount=208#timecreated={ts '2026-06-01 08:18:25'}#cftoken=847d8c3d717591e0-16A07CA9-0D64-3143-75165E509604E8E4#cfid=4092459#
CFID=4092459
CFTOKEN=847d8c3d717591e0-16A07CA9-0D64-3143-75165E509604E8E4
FREEACCESSCOUNT=0
Session Variables:
cfid=4092459
cftoken=847d8c3d717591e0-16A07CA9-0D64-3143-75165E509604E8E4
sessionid=BOOKBROWSE_4092459_847d8c3d717591e0-16A07CA9-0D64-3143-75165E509604E8E4
urltoken=CFID=4092459&CFTOKEN=847d8c3d717591e0-16A07CA9-0D64-3143-75165E509604E8E4
URL Parameters:
author=kristopher-jansma
author_number=2285
Debug Rendering Time: 60 ms