Jonathan Safran Foer Interview, plus links to author biography, book summaries, excerpts and reviews

Jonathan Safran Foer
Photo Credit: Grant Delin.

Jonathan Safran Foer

An interview with Jonathan Safran Foer

In three separate interviews Jonathan Safran Foer discusses Eating Animals, Everything Is Illuminated and  Extremely Loud and Incredibly Close

In three separate interviews Jonathan Safran Foer discusses Eating Animals, Everything Is Illuminated and  Extremely Loud and Incredibly Close...

Jonathan Safran Foer, author of Eating Animals, talks with Jeffrey Goldberg, national correspondent for The Atlantic

Jonathan Safran Foer's new book, Eating Animals, is an eloquent exploration of something most sentient humans think about at some point in their lives: Just what exactly am I eating? Or more to the point, Just who exactly am I eating? Foer has written an excellent, serious, and earnest book, and I spoke to him about his conclusions recently. What follows is an edited version of our conversation.

It seems, from reading Eating Animals, that you want people to adopt vegetarianism, but you don't actually say, "I've presented you with evidence that makes it morally impossible for you to eat meat." Why don't you go all the way?

I don't know that I would put it quite like you just did. I was really moved, I have to say, by some of the small farms that I went to. I would say that the goodness of good farmers might have surprised me more than the badness of bad farmers. Maybe that's just because I had more exposure to what factory farming was. But I went to farms where animals were treated better than I treat my dog, and it would just be impossible to try to honestly argue that they don't have good lives. So, of course, they're killed in the end, but our lives are destined for death also. And while they are rare, there certainly are slaughterhouses that kill animals in ways such that the animals don't anticipate death or feel it. So to argue against this kind of farming you have to get into a sort of philosophical terrain that I don't get into - an argument having to do with an animal's right to continue living. That is entirely different from its right to live without being treated cruelly, and I don't know what my own feelings about that issue are.

So are you a vegetarian because, at this point in the history of farming, it's safer, morally, to be a vegetarian? In other words, if you absolutely knew that all the meat or eggs and milk that were produced by X farm were produced according to your standards, would you go back to eating meat?

You mean assuming that that farm existed in the context of this world?

Yes, assuming that there was a farm somewhere where the animals, from birth to painless, unknowing death, where everything was as humane and gentle and kind as possible, would you then eat that animal?

I wouldn't, for two reasons. One, because endorsing the exception is to endorse the rule. People would see me as another person eating meat. You know, it's like what happened with farmed fish. Salmon farming was originally created to take pressure off of wild salmon populations, because it's been clear for a long time that they're going to run out. But what happened was, when more supply was created, there was more demand for wild salmon, because our eating habits are contagious. There was more salmon on the menu suddenly, and you see your friends eating salmon, and so you eat salmon - that has more power than does conscientious eating.

There's also the fact that the kind of farming you're talking about can't be scaled. There's enough humane chicken now raised in America to feed Staten Island, at the rate we're eating chicken. You can use child labor as an analogy. It's easily conceivable that there are many situations in which giving a six-year-old a job would improve that six-year-old's life and, on a case-by-case basis, would be a good thing. But we don't create systems for the exceptions, we create them for the rule.

Isn't it terribly boring to be a vegetarian?

I don't find it boring. Maybe I've just been a vegetarian for long enough.

Maybe you're a good cook.

Maybe I'm a good cook. I don't look at other things on menus and long for them anymore. Of course, I was in a restaurant the other day and the guy at the table next to me got this amazing-looking steak, and my mouth watered and I thought, "I'm having something that is probably not going to be as good as that." There are a lot of things that we crave, there are a lot of things that would make us more fulfilled in a sensory way that we just say no to.

When I was a vegetarian, the first thing I would cut out was mammals, because I figured that mammals are the closest species to me. Birds are more distant and fish are still more distant, but you argue very strongly that beef is actually the most humane thing to eat. Do you differentiate at all, on a moral scale, between eating mammals and eating birds and eating fish?

Another way to think about this is how different does an animal have to be for us to simply regard it as a living thing. And I think this kind of dichotomous way of framing this - it does a real disservice to the conversation. Even the word vegetarian . You were talking about cutting things out of your diet, instead of cutting down. There are an awful lot of people who care about this stuff and for reasons good or bad just can't envision becoming vegetarian. So what do we do with that? Do we throw our hands up in the air and say that since I'm not going to be perfect about this I'm completely off the hook?

I care about the environment, I try to buy good appliances, I certainly turn the lights off when I leave rooms, and so on and so forth, and yet I also fly. So should I, when getting off the plane, say, "Okay, I know that was bad, so I'm now bad, I'm going to leave lights on, I'm going to let my car idle"? It's nuts. I wish people would talk about food in a way that was more similar to how we talk about the environment. The question of "Are you an environmentalist or not?" is nonsense.

Something is better than nothing.

There's a really broad consensus that exists in this country now on the question of factory farming. Any person in America who is not on the fringe of society, who is exposed to a factory farm firsthand, wouldn't automatically say, "I'm never eating this again." But they would say, "This isn't right. This isn't who I am. I don't want to give my money to make more of these. It's not what I choose. It's antithetical to the lessons I teach my kids and that my parents taught me." Maybe one day the world will change, and we'll be in the luxurious position of being able to debate whether or not it's inherently wrong to eat animals, but the question doesn't matter right now.

Go back to this question, because it's one of the many surprising things in your book: Why is eating beef, which comes from mammals, more humane than eating a chicken?

There are two reasons. One is that it takes 220 chickens to make one cow, so just in terms of individual suffering from a utilitarian perspective, that's 220 lives versus one life. Also, cows are the only species that still get to live at least part of their lives, and in many cases it's most of their lives, in habitats that make sense for them. To my knowledge, all cattle in America now spend at least some time on pastures, except for dairies.

Factory farming that produces milk - is it more inhumane than non– factory farming that produces beef?

Dairy cows are, in fact, being used to death.

So does the dairy cow have a less pleasant cow-life than the beef cattle in the pasture?

I would say that's certainly true.

It upends the assumption that milk is cruelty-free. Turkey, by the way, from your book, sounds like the absolute worst.

You wouldn't want to be a turkey. Actually, analogous to the milk question, a free-range hen is the worst. If there's any farm animal you wouldn't want to be, that's what it is.

What about cage-free, cruelty-free eggs?

Well, cruelty-free means nothing. Free-range, when applied to hens, means zero. It is literally not defined and it is up to supplier testimonials whether or not to use it, so you should take as much comfort from "free-range" as you should from "starry and magical." Cage-free does mean something: it means exactly what it sounds like it means, literally not in cages, which is not to say that much for the welfare of animals.

That could mean a small building that has 3,000 of them crammed in.

More like 30,000. You won't get buildings with 3,000 - it's 30,000, 50,000, or 60,000. That being said, there are people who actually quantify how much space cage-free hens have, and I think it's something like 110 square inches as opposed to 67 for those in a cage, so that's a lot more space, but draw yourself a rectangle of 110 square inches - it's not what people have in mind when they spend more of their money to buy this product. Cage-free and free-range eggs are the fastest-growing sector of the food industry right now, which says something so amazing about Americans.

People want to feel good about the product they're buying.

Right. They don't taste better, and they're not better for us. People all across the country are spending more of their money on something simply because they think it's the right thing to do, and they are being taken advantage of, and that should make everybody very angry.

Let's talk about Michiko Kakutani's review of your book, which showed, I think, that she's ideologically opposed to raising this issue as a serious issue. How do you respond to someone who would say, "How could you devote your life to worrying about a chicken over a child?" It's an argument that I'm sure you've heard in other places.

I actually haven't heard it anywhere else, which is a strange thing. Obviously I care more about kids than I care about chickens, but that's not to say that I have to choose. It's not a zero-sum game. People who care about animals tend to care about people. They don't care about animals to the exclusion of people. Caring is not a fi nite resource, and even more than that, it's like a muscle: the more you exercise it, the stronger it gets. This is what Tolstoy meant when he said famously that if there were no more slaughterhouses, there'd be no more battlefi elds. It's a silly statement in its own right, but it gestures at something that's true.

The question is, if we don't say no to this, what do we say no to? If we don't say no to something that systematically abuses 50 billion animals, if we don't say no to the number one cause of global warming, and not by a little bit, but by a lot, if we don't say no to what the UN has said is one of the top two or three causes of every signifi - cant environmental problem in the world, locally and globally, if we don't say no to something that is clearly - not clear to me, but clear to the World Health Organization - a prime factor in the generation of avian and swine fl us, if we don't say no to something that's making our antibiotics less effective and ineffective, if we don't say no to something that causes 76 million cases of food-borne illness every year, just what do we say no to? This is not a case where we need to go to war with another country or spend a trillion dollars or elect a new government. We just need to say no to it.

Does meat-eating and the cruel treatment of animals make you feel worse about humans?

Eighteen percent of college students are vegetarian now. There are more vegetarians in college than there are Catholics, there are more vegetarians than any major, except for business, and it's very close, by about 1 percent. That's something I feel very good about. How can you feel bad when people have been fed lies, literally from nursery school? I spoke at high schools all around the country and almost without fail there'd be a poster in the gym from the Dairy Council, or from some sort of meat board, telling them why it's necessary for their health, why it's cool. The labeling is manipulative; it's impossible for people to see where the food comes from. Does that say something about consumers, that we're buying the wrong things? I really believe, and I think I'm right to believe, that if you were to poll 100 Americans from all over the country, take them to a factory farm, you'd have 95 of them saying, "I'm not going to eat that."

Adapted from the interview originally published on December 11, 2009, at TheAtlantic.com. Reprinted with permission.




An interview with Jonathan Safran Foer about Extremely Loud and Incredibly Close
(an interview about Everything Is Illuminated follows immediately afterwards)

How would you summarize your novel?
Oskar Schell is an inventor, jewelry designer, amateur entomologist, Francophile, percussionist, avid fan-letter writer, pacifist, Central Park archeologist, romantic, Great Explorer, jeweler, actor (Yorick in the winter production of Hamlet), inconsistent vegan, collector of: rare coins, butterflies that have died natural deaths, Beatles memorabilia, miniature cacti and semi-precious stones. He is nine years old. After being let out of school on the morning of September 11, he walks home to his family's apartment on Manhattan's Upper West Side. His watch reads 10:18:32. He listens to the five messages on the answering machine: from 8:52, 9:12, 9:31, 9:46 and 10:04. All are from his father, who is trapped in the World Trade Center. Before Oskar has time to time to figure out what to do, or even what to think or feel, the phone rings. His watch reads 10:22:29. He looks at the caller ID, and sees that it's his father. The story proceeds from this moment, following Oskar in his efforts to make sense of his father's senseless death. That inward journey takes him through the five boroughs of New York, as he attempts to solve a mystery surrounding a key he discovers in his father's closet, which he thinks is central to his father's life and death. The story moves freely between members of Oskar's family, careening from Central Park to Dresden, deep space to Hiroshima, and ending, ultimately, where it began: at Oskar's father's grave. But this time it's the middle of the night. Oskar is accompanied by a strange man who has been renting a room in his grandmother's apartment. They are there to dig up Oskar's father's empty coffin.

This is a novel of balances: humor and tragedy, destruction and invention, Something and Nothing, life and death.

How did the idea for the novel originate?
Very organically. It began with a museum, actually. A once-famous European writer disappeared for forty years, and then reappeared. Over the course of successive rewrites—as my passions and sense of writing changed, and as the world changed—the novel was destroyed and rebuilt many times. The writer and museum fell by the wayside. A precocious young boy in a damaged city took center stage. I've written thirty-nine distinct drafts of this book. Like a boat whose every plank is replaced while journeying at sea, the first and last drafts have nothing tangible in common— no characters, themes or plot—and yet are one in the same. And to get to the 400 or so pages that ultimately comprise the novel, I had to write well over 2,500. Which is to say the boat has been an aircraft carrier, at times. It's been a volatile process.

To make a long story short, I've tried to follow my instincts. I've tried to write the book I would want to read, rather than the book I would want to write. I've tried never to ask if something was smart, but instead if it felt genuine. A set of themes rose to the surface: silence, invention, anxiety, naiveté, absence, the difficulty of expressing love, war… I felt I couldn't push them down, and I chose not to try to. Voices became pronounced. Some characters became vivid, others vanished. A plot… happened. If it sounds inefficient, I've described it properly. I cannot imagine how I could have been less efficient. But maybe inefficiency is the point. One can use a map and drive to a destination. Or one can follow the most interesting, beautiful roads—trusting oneself, trusting the car, and trusting the logic of the pavement—and end up where you couldn't have realized you wanted to be until you got there. Writing, for me, is about following roads. And that intuitive, wandering approach explains not only why this book is so far from where I started, but why I feel it so personally, so viscerally, and so, well, loudly and closely.

Where does the character of Oskar come from?  Were you at all like him?  Are you still?
My parents have a photograph of me on their refrigerator. I'm about six years old, asleep on the sofa, wearing a plaid blazer, a blue sequined bowtie, and rings on each of my ten fingers. Apparently, the look was indicative of my sense of fashion for about a year. That photograph was one of my major sources of inspiration for Oskar. As for how much I actually was like him, it's hard to say. Like most children, I had a number of collections. And I suppose my interests tended toward the esoteric, and my style toward the precocious and annoying. I sent my share of fan letters, suffered numerous failed attempts to kiss women my mother's age, and did work in the family jewelry business for a summer… Am I still like that? Fortunately, or unfortunately, most of Oskar has been civilized out of me.

Much of the novel has to do with war.  What made you want to take this on as a subject matter?
Of course the news has been saturated with the Iraq war. And before that the war in Afghanistan. And before that September 11. And there are so many other wars—big and small—that receive less, if any, attention. And there are wars within our country, between increasingly polarized ideologies, and within our households: intimate wars, wars within families, between lovers. Breakfast table wars. Silent wars. My generation of Americans has been among the most privileged in history, in our ignorance of military war. Our sense of the armed forces was defined by benevolent actions that more often than not came too late—in Bosnia, in Rwanda. In other words, war, American war, was good.

It's been a painfully disillusioning few years for my generation, not only because we've had to face malevolent wars, but because we've had to face our own foolishness. It's only now that we're able to digest the lessons and use them. Toward what end? Toward the end of preventing war. There's a brief scene in the book, in which Oskar plays an interview with a Hiroshima survivor. She says, "That is what death is like. It doesn't matter what uniforms the soldiers are wearing. It doesn't matter how good the weapons are. I thought if everyone could see what I saw, we would never have war anymore."

Those words are loosely based on an actual interview transcript, and I believe them. The more closely we look at something, the more responsible we will be with it. Which is why the most important decision a novelist can make is what he or she chooses to look at—in so far as there's a choice at all.

The form of the book is quite new, particularly the use of photography.  How did that come about?
I was browsing the Internet one night—allowing links to carry me farther and farther from the news sites I normally visit—and was shocked by the breadth and graphicness of the images I quite unintentionally came across. I don't mean that in a naïve or prudish way. There's something exhilarating about being so close to everything at once, something beautiful. But there's something incredibly lonely about it, too. And ugly. It made me think about children, and the visual environment in which they are now developing. What must it be like, as a nine year old, to see beheadings, and home videos of famous actresses having sex, and dogs fighting, and babies being born, and people jumping from planes with broken parachutes? Some of the images in the novel pertain directly to Oskar's story, but many are there to provide context to his life, and give the reader access to a different kind of sympathy. That is, the photographs show not only what Oskar's eyes might see, they show his eyes.

What's the significance of the title?
I like titles that contribute to the meaning of the book, rather than describe the book's contents. Which is to say I'm not going to have a great answer to this question, any more than I'd be able to describe the significance of Oskar. Oskar is Oskar. The title is the title.

But that's a bit annoying. Maybe I could say that things in the novel are loud and close. War is loud and close—for Oskar's grandparents, who survived the firebombing of Dresden, and for Oskar, who lost his father in the World Trade Center attacks. The future is loud and close. Love is loud and close. And many things are silent and far away. There are mute characters, and characters who can't hear. Characters who travel halfway around the world to be distant from those they love, and characters who endlessly wander the city in an attempt to get home. And then there are the things—like Oskar's relationship with his father—that are simultaneously loud and silent, and close and far away…

In reference to the novel itself, I hope the reader feels it loudly and closely. If I had a good voice, and all the time in the world, I'd like to sing my thoughts and feelings directly into people's ears. Given that my voice is terrible, and time is limited—and who would want me that close to their face, anyway?—I write the best substitute I can.

What are you working on now?
I recently finished a libretto for the Deutsche Staatsoper (German National Opera House) titled, "Seven Attempted Escapes from Silence," and am now working with the director and set designer on bringing the words to the stage. (The opera will premier in September, 2005.) I'm also working on finishing up a collaborative art book, Joe, with the sculptor Richard Serra and photographer Hiroshi Sugimoto, to be published this fall. Finally, I've been working on two public art projects, "The Whispering Parabolas" (in which two massive parabolas will be built on opposite ends of the Central Park Reservoir, to facilitate intimate conversations in the middle of Manhattan), and "10,000 Windows," in cooperation with the students of La Guardia High School.


A Conversation with Jonathan Safran Foer about Everything Is Illuminated

How would you summarize your novel?
In the summer after his junior year of college, Jonathan Safran Foer leaves the ivy of Princeton for the impoverished farmlands of eastern Europe. Armed with only a photograph of questionable origin, he hopes to find Augustine — a woman who might be a link to a grandfather he never knew. He is guided on his journey by Alexander Perchov, a young Ukrainian translator, poignantly insightful and absurd, who is also searching for lost family, but in his case, family that is very much alive and near. What follows is a quixotic misadventure, at sharp turns comedic and tragic, which culminates in the most essential existential questions: Who am I? What am I to do?

Woven into this narrative is the novel that Jonathan is working on — an imagined history of Trachimbrod, the shtetl that he and Alex investigate. As the contemporary section moves back in time, the imagined history moves forward. "Reality" and "fiction" meet in the final scene, when the Nazis invade Trachimbrod and all is, or isn't, lost.

Everything Is Illuminated is, above all things, about love — between parent and child, between lovers, friends, and generations, between what happened and what will happen.

How did the idea for the book originate?
When I was young, I would often spend Friday nights at my grandmother's house. On the way in, she would lift me from the ground with one of her wonderful and terrifying hugs. And on the way out the next afternoon, I was again lifted into the air with her love. It wasn't until years later that I realized she was also weighing me.

Being a survivor of World War II, being someone who spent years — approximately the years I am now experiencing — scrounging for food while traversing Europe barefoot, she is acutely, desperately aware of weights: of bodies, of presences, of things that do and don't exist. And it has always been with measuring — the distances between what is felt and said, the lightness of love, the heft of showing love — that I have connected with her. My writing, I have begun to understand — I am learning anew with each newly written word — springs from the same need to measure.

I did not intend to write Everything Is Illuminated. I intended to chronicle, in strictly nonfictional terms, a trip that I made to Ukraine as a twenty-year-old. Armed with a photograph of the woman who, I was told, had saved my grandfather from the Nazis, I embarked on a journey to Trachimbrod, the shtetl of my family's origins. The comedy of errors lasted five days. I found nothing but nothing, and in that nothing — a landscape of completely realized absence — nothing was to be found. Because I didn't tell my grandmother about the trip — she would never have let me go — I didn't know what questions to ask, or whom to ask, or the necessary names of people, places, and things. The nothing came as much from me as from what I encountered. I returned to Prague, where I had planned to write the story of what had happened.

But what had happened? It took me a week to finish the first sentence. In the remaining month, I wrote 280 pages. What made beginning so difficult, and the remainder so seemingly automatic, was imagination — the initial problem, and ultimate liberation, of imagining. My mind wanted to wander, to invent, to use what I had seen as a canvas, rather than the paints. But, I wondered, is the Holocaust exactly that which cannot be imagined? What are one's responsibilities to "the truth" of a story, and what is "the truth"? Can historical accuracy be replaced with imaginative accuracy? The eye with the mind's eye?

The novel's two voices — one "realistic," the other "folkloric" — and their movement toward each other, has to do with this problem of imagination. The Holocaust presents a real moral quandary for the artist. Is one allowed to be funny? Is one allowed to attempt verisimilitude? To forgo it? What are the moral implications of quaintness? Of wit? Of sentimentality? What, if anything, is untouchable?

With the two very different voices, I attempted to show the rift that I experienced when trying to imagine the book. (It is the most explicit of many rifts in the book.) And with their development toward each other, I attempted to heal the rift, or wound.

>Everything Is Illuminated proposes the possibility of a responsible duality, of "did and didn't," of things being one way and also the opposite way. Rather than aligning itself with either "how things were" or "how things could have been," the novel measures the difference between the two, and by so doing, attempts to reflect the way things feel.

Did you ever find the woman who apparently saved your grandfather from the Nazis?
I wasn't even close to finding her. The trip was so ill conceived, so poorly planned, so without the research that would have been necessary to have had any hope of accomplishing what I thought was my purpose — finding Augustine — that I never had a chance.

But in retrospect, I'm not sure that the purpose was to find her. I'm not even sure I wanted to find her. I was twenty when I made the trip — an unobservant Jew, with no felt connection to, or great interest in, my past. I kept an ironic distance from religion, and was skeptical of anything described as "Jewish."

And yet, my writing — what little I did then — began to take on a Jewish sensibility, if not content. To my surprise, I started asking genealogical questions of my mother, and sending Amazon.com workers to the darkest recesses of the warehouse for titles like Shtetl Finder Gazeteer by Chester G. Cohen. (Chester G. Cohen?) I was a closeted Jew.

After twenty years of life, the feelings and facts had begun to diverge. I spent my time and energy on activities I didn't think I cared about. There was a split — a strange and exhilarating split — between the Jonathan that thought (secular), and the Jonathan that did (Jewish). Because my trip to Ukraine came at the beginning of this fracture — before I could appreciate the coexistence of my halves — I was not yet ready to want to find Augustine. I jeopardized my trip by refusing to prepare for it.

Thankfully. The complete absence that I found in Ukraine gave my imagination total freedom. The novel wouldn't have been possible had my search been that other kind of success.

Is the Jonathan Safran Foer in your story the Jonathan Safran Foer who wrote the story? If not, which one do you prefer?
I try to treat all Jonathan Safran Foers equally, appreciating their unique gifts, ignoring, when possible, their unique shortcomings, patting all of their heads when I think to, and saying things like, "You're smart," or, "You're cute."

Now, as for the particular JSF who wrote the book, and the one in the book, they are profoundly different people who happen to share a profound amount. It's useless to try to find points of convergence and divergence, just as it's useless to prefer one over the other, since both the writer and the character are always changing — neither under my control. And that possibility of change, that insistence on change, is what makes this kind of writing feel, for me, so exhilarating and terrifying. Will I grow away from the JSF in the book, or will we grow toward each other? In twenty years — God willing we both live that long — will we be like strangers? Or will we know each other completely?

It refers to a passage in the book in which all of the citizens of Trachimbrod are making love at once. The narrator puts forth a pseudoscientific "theory," the gist of which is:

From space, astronauts can see people making love as a tiny speck of light. Not light, exactly, but a glow that could be confused for light — a coital radiance that takes generations to pour like honey through the darkness to the astronaut's eyes.

In about one and a half centuries — after the lovers who made the glow will have long since been laid permanently on their backs — the metropolitan cities will be seen from space. They will glow all year. Smaller cities will also be seen, but with great difficulty. Towns will be virtually impossible to spot. Individual couples invisible.

The glow is born from the sum of thousands of loves: newlyweds and teenagers who spark like lighters out of butane, pairs of men who burn fast and bright, pairs of women who illuminate for hours with soft multiple glows, orgies like rock and flint toys sold at festivals, couples trying unsuccessfully to have children who burn their frustrated image on the continent like the bloom a bright light leaves on the eye after you turn away from it.

Some nights, some places are a little brighter. It's difficult to stare at New York City on Valentine's Day, or Dublin on St. Patrick's. The old walled city of Jerusalem lights up like a candle each of Chanukah's eight nights. Trachimday is the only time all year when the tiny village of Trachimbrod can be seen from space, when enough copulative voltage is generated to sex the Polish-Ukrainian skies electric. We're here, the glow of 1804 will say in one and a half centuries. We're here, and we're alive.

Of course, the title is also playing off the other notions of illumination, particularly revelation. The book traces an arc from ignorance to knowledge, from inexperience to wisdom.

I've also always loved the idea of illuminated manuscripts — embellished, overstuffed books. And I love the idea of books being more than books, or being, rather, something other than books. I think the ideal experience of my book would be like listening to music.

Copyright Houghton Mifflin Publishing

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 Jonathan Safran Foer at BookBrowse
We Are the Weather jacket Here I Am jacket New American Haggadah jacket Eating Animals 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 Jonathan Safran Foer 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 54 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...

There is no science without fancy and no art without fact

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 03:48 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
1780285737168 ms 1.78028573717E+012 ms 1 /root/website/app_server.cfm
614 ms 614 ms 1 /root/website/author_interviews/full/index.cfm
203 ms 203 ms 1 /root/website/author_interviews/full/dsp_main.cfm
175 ms 175 ms 1 /root/website/app_globals.cfm
118 ms 118 ms 1 /root/website/app_layout.cfm
94 ms 31 ms 3 /root/website/adsystem/adsystem_mod.cfm
89 ms 45 ms 2 /root/website/queries/qry_get_books_by_author_id.cfm
70 ms 70 ms 1 /root/website/queries/qry_get_books_by_author_id_lite.cfm
67 ms 67 ms 1 /root/website/site/blocks/layout/dsp_right_column.cfm
55 ms 55 ms 1 /root/website/queries/qry_get_active_obc.cfm
42 ms 42 ms 1 /root/website/queries/qry_get_current_competition.cfm
39 ms 13 ms 3 /root/website/site/blocks/membership_advantages.cfm
38 ms 38 ms 1 /root/website/adzones/AdZone2.cfm
38 ms 13 ms 3 /root/website/queries/qry_get_member_account_types.cfm
34 ms 34 ms 1 /root/website/site/blocks/layout/dsp_footer.cfm
30 ms 30 ms 1 /root/website/adzones/showcase_track.cfm
27 ms 27 ms 1 /root/website/adzones/AdZone6.cfm
27 ms 27 ms 1 /root/website/site/blocks/dsp_border_first_impressions.cfm
26 ms 26 ms 1 /root/website/queries/qry_get_arcs_for_ad.cfm
20 ms 5 ms 4 /root/website/actions/act_spider_tracker.cfm
20 ms 20 ms 1 /root/website/queries/qry_get_current_wordplay.cfm
19 ms 19 ms 1 /root/website/queries/qry_get_bb_briefs_by_author.cfm
15 ms 15 ms 1 /root/website/actions/adstatus.cfm
14 ms 14 ms 1 /root/website/queries/qry_get_all_books_by_author_id.cfm
13 ms 13 ms 1 /root/website/act_check_login.cfm
13 ms 13 ms 1 /root/website/queries/qry_get_author_readalikes_by_id.cfm
13 ms 13 ms 1 /root/website/queries/qry_get_member_info.cfm
12 ms 12 ms 1 /root/website/queries/qry_get_free_newsletters.cfm
12 ms 12 ms 1 /root/website/site/blocks/layout/dsp_bottom_block.cfm
9 ms 9 ms 1 /root/website/site/blocks/dsp_book_giveaway.cfm
2 ms 2 ms 1 /root/website/site/blocks/layout/dsp_header.cfm
1 ms 1 ms 1 /root/website/queries/qry_get_current_ezine.cfm
1 ms 1 ms 1 /root/website/site/blocks/layout/head.cfm
0 ms 0 ms 1 /root/website/Application.cfm
0 ms 0 ms 1 /root/website/act_libraryIPLogin.cfm
0 ms 0 ms 1 /root/website/actions/udfs.cfm
0 ms 0 ms 1 /root/website/banners/ad_594.cfm
0 ms 0 ms 1 /root/website/formurl2attributes.cfm
0 ms 0 ms 1 /root/website/js/fbjavascriptsdk.cfm
0 ms 0 ms 1 /root/website/queries/qry_get_previous_arcs_for_ad.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_border_booktalk.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_header_newsletter.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_top_author_block.cfm
0 ms 0 ms 1 /root/website/site/blocks/dsp_wordplay.cfm
0 ms 0 ms 1 /root/website/site/blocks/email_modal.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/google_tags.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/header_announcement.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/main_menu.cfm
0 ms 0 ms 1 /root/website/site/blocks/layout/main_search.cfm
1 ms  STARTUP, PARSING, COMPILING, LOADING, & SHUTDOWN
615 ms  TOTAL EXECUTION TIME
red = over 250 ms average execution time


SQL Queries

spidercheck (Datasource=bookbrowse_com_new, Time=19ms, Records=1) in /root/website/actions/act_spider_tracker.cfm @ 03:48:57.057
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=12ms, Records=0) in /root/website/queries/qry_get_member_info.cfm @ 03:48:57.057
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=14ms, Records=2) in /root/website/actions/adstatus.cfm @ 03:48:57.057
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 @ 03:48:57.057
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=19ms, Records=1) in /root/website/queries/qry_get_current_wordplay.cfm @ 03:48:57.057
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=30ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 03:48:57.057
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=11ms, Records=0) in /root/website/queries/qry_get_current_competition.cfm @ 03:48:57.057
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 @ 03:48:57.057
SELECT 	a.arc_number,a.arc_client_url,a.arc_active_dt, a.arc_off_ad_dt,
		b.ezine_preview_number, b.ezine_preview_title, b.ezine_preview_subtitle, b.ezine_preview_jacket_image, b.ezine_preview_author, b.ezine_preview_publisher, 
		b.ezine_preview_publish_dt, b.ezine_preview_jacket_desc, b.ezine_preview_number_of_pages, b.ezine_preview_bb_comments, b.ezine_preview_isbn13,
		c.ezine_preview_category_name AS "ezine_preview_category",
		(select count(*) from arc_allocator d where d.arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) as "reviews",
		(select (CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,0))) AS numeric(12,0)))+
				(CASE WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 25 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 50 THEN 0.5
				 WHEN right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) > 50 AND right(CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,2))) AS numeric(12,2)),2) < 75 THEN -0.5
				 ELSE 0
				 END)
 			from arc_allocator	where arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) AS arcrating,
 			(select (CAST(AVG(CAST(arc_allocator_review_rating AS numeric(12,1))) AS numeric(12,1)))from arc_allocator where arc_number = a.arc_number and arc_allocator_review_approved_flag = 1) AS "decrating"

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

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

ORDER BY a.arc_on_ad_dt DESC
get_future_obc (Datasource=bookbrowse_com_new, Time=15ms, Records=0) in /root/website/queries/qry_get_active_obc.cfm @ 03:48:57.057
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=18ms, Records=1) in /root/website/queries/qry_get_active_obc.cfm @ 03:48:57.057
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=20ms, Records=4) in /root/website/queries/qry_get_active_obc.cfm @ 03:48:57.057
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=13ms, Records=4) in /root/website/queries/qry_get_books_by_author_id_lite.cfm @ 03:48:57.057
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) = 1120

get_author_by_author_id (Datasource=bookbrowse_com_new, Time=55ms, Records=1) in /root/website/queries/qry_get_books_by_author_id_lite.cfm @ 03:48:57.057
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) = 1120

get_all_books_by_author_id (Datasource=bookbrowse_com_new, Time=12ms, Records=6) in /root/website/queries/qry_get_all_books_by_author_id.cfm @ 03:48:57.057
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) = 1120
Parameter #2(CF_SQL_INTEGER) = 1120

get_bb_briefs_by_author (Datasource=bookbrowse_com_new, Time=19ms, Records=2) in /root/website/queries/qry_get_bb_briefs_by_author.cfm @ 03:48:57.057
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) = 1120

get_author_readalikes_by_id (Datasource=bookbrowse_com_new, Time=12ms, Records=54) in /root/website/queries/qry_get_author_readalikes_by_id.cfm @ 03:48:57.057
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) = 1120

get_ads (Datasource=bookbrowse_com_new, Time=18ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 03:48:57.057
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=17ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 03:48:57.057
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=13ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 03:48:57.057
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=12ms, Records=1) in /root/website/actions/udfs.cfm @ 03:48:57.057
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) = 3459

get_book_image (Datasource=bookbrowse_com_new, Time=17ms, Records=1) in /root/website/actions/udfs.cfm @ 03:48:57.057
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) = 2355

get_member_account_types (Datasource=bookbrowse_com_new, Time=16ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 03:48:57.057
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=21ms, Records=5) in /root/website/queries/qry_get_books_by_author_id.cfm @ 03:48:57.057
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=10ms, Records=1) in /root/website/queries/qry_get_books_by_author_id.cfm @ 03:48:57.057
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=45ms, Records=2) in /root/website/queries/qry_get_books_by_author_id.cfm @ 03:48:57.057
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) = 2117
Parameter #2(CF_SQL_INTEGER) = 2117
Parameter #3(CF_SQL_INTEGER) = 2117

get_author_by_author_id (Datasource=bookbrowse_com_new, Time=10ms, Records=1) in /root/website/queries/qry_get_books_by_author_id.cfm @ 03:48:57.057
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) = 2117

get_member_account_types (Datasource=bookbrowse_com_new, Time=6ms, Records=2) in /root/website/queries/qry_get_member_account_types.cfm @ 03:48:57.057
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=10ms, Records=0) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 03:48:57.057
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=15ms, Records=3) in /root/website/queries/qry_get_arcs_for_ad.cfm @ 03:48:57.057
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=8ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 03:48:57.057
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=7ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 03:48:57.057
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=10ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 03:48:57.057
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=8ms, Records=1) in /root/website/site/blocks/dsp_book_giveaway.cfm @ 03:48:57.057
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=10ms, Records=4) in /root/website/queries/qry_get_free_newsletters.cfm @ 03:48:57.057
SELECT 	*
    FROM 	free_newsletters
get_ads (Datasource=bookbrowse_com_new, Time=11ms, Records=0) in /root/website/adsystem/adsystem_mod.cfm @ 03:48:57.057
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=12ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 03:48:57.057
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=6ms, Records=1) in /root/website/adsystem/adsystem_mod.cfm @ 03:48:57.057
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=CFGLOBALS=urltoken%3DCFID%23%3D4084693%26CFTOKEN%23%3D871eadaf6cccb933%2D0CFC741F%2DEC70%2D06BF%2DE033D9D6F4301DBD%23lastvisit%3D%7Bts%20%272026%2D06%2D01%2003%3A48%3A57%27%7D%23hitcount%3D31%23timecreated%3D%7Bts%20%272026%2D06%2D01%2003%3A48%3A51%27%7D%23cftoken%3Da1d38b72886dfeac%2D0CFC709D%2DB4A6%2D5C5A%2DA2FC4A83D6658BEE%23cfid%3D4084692%23; FREEACCESSCOUNT=1; CFCLIENT_BOOKBROWSE=order%3Dp%23member%5Fnumber%3D0%23member%5Factive%5Fflag%3D0%23member%5Flogged%5Fin%5Fflag%3D0%23library%5Fuser%5Fflag%3D0%23view%3Dbooks%23; CFTOKEN=871eadaf6cccb933-0CFC741F-EC70-06BF-E033D9D6F4301DBD; CFID=4084693
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/1120/jonathan-safran-foer
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=4084692
cftoken=a1d38b72886dfeac-0CFC709D-B4A6-5C5A-A2FC4A83D6658BEE
hitcount=34
lastvisit={ts '2026-06-01 03:48:57'}
library_user_flag=0
member_active_flag=0
member_logged_in_flag=0
member_number=0
order=p
timecreated={ts '2026-06-01 03:48:51'}
urltoken=CFID=4084693&CFTOKEN=871eadaf6cccb933-0CFC741F-EC70-06BF-E033D9D6F4301DBD
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#=4084693&CFTOKEN#=871eadaf6cccb933-0CFC741F-EC70-06BF-E033D9D6F4301DBD#lastvisit={ts '2026-06-01 03:48:57'}#hitcount=31#timecreated={ts '2026-06-01 03:48:51'}#cftoken=a1d38b72886dfeac-0CFC709D-B4A6-5C5A-A2FC4A83D6658BEE#cfid=4084692#
CFID=4084693
CFTOKEN=871eadaf6cccb933-0CFC741F-EC70-06BF-E033D9D6F4301DBD
FREEACCESSCOUNT=1
Session Variables:
cfid=4084693
cftoken=871eadaf6cccb933-0CFC741F-EC70-06BF-E033D9D6F4301DBD
sessionid=BOOKBROWSE_4084693_871eadaf6cccb933-0CFC741F-EC70-06BF-E033D9D6F4301DBD
urltoken=CFID=4084693&CFTOKEN=871eadaf6cccb933-0CFC741F-EC70-06BF-E033D9D6F4301DBD
URL Parameters:
author_number=1120
jonathan-safran-foer=
Debug Rendering Time: 24 ms