The Ebook Business
Tom: So how long as you been working on this in total? Is it two years? Is that right?
Sandi: I don’t even want to think. Katrina, when did we start?
Katrina: We started going back and forth almost three years ago.
Sandi: Yeah, it’s been a while.
Katrina: And then we probably started on the book two years ago.
Sandi: I fear a little bit when I say that, because I don’t want to give people the impression that it will be many years before it’s done. It’s going to be done soon.
Katrina: Let’s talk about that. Tom, at the very beginning you asked “what was the process for making this book?”. One of the things is that we know the contents of the entire book. We have the code examples step by step by step for the two final chapters. We know what the ideas are that we need to explain, and we know pretty much in which order we need to explain them.
And so a lot of the work in these two years has been discovering what those ideas are, discovering what order we need to explain them in, discovering what the step by step process of the refactoring needs to be in order to be able to convey those ideas. And so I feel like a lot of the groundwork has been laid, and what you’re seeing now is, in addition to all of the right ideas in the right place and the right refactoring and the code examples, also this enormous process of shaping the language to avoid unnecessary jargon, to not make assumptions about what people already know, and also all of the editing that goes on top of that.
A lot of the work for chapters five and six is done, so it won’t take two more years, I promise. Can I promise that?
Sandi: Yeah, you can promise that. Getting the writing right… like, I have been the final writer, in an attempt to keep the tone even in the whole book, and writing is painful for me, but that’s all that’s left. All the ideas are complete; it’s a matter of getting the English so that it’s straightforward.
I will say, Tom, you’re at fault for the beta being released at this point in time.
Tom: Oh no!
Sandi: You know that, right?
Tom: No! What did I do?
Sandi: Well, because I asked you a year ago. The word was out, and people wanted what we had written up to that point, and I had a conversation with you about: when is it morally acceptable to release a beta? Because releasing a beta means taking people’s money. And you gave me a heuristic that was very useful. You said: it has to be a complete thought that would be useful to people — valuable to people — even if they never got anything else.
Sandi: Now, there’s no worry that they’re not going to get anything else, but it gave us a place to put a marker in the sand. I would be interested, actually, in your opinion. Because, have you looked through the whole book? Have you read all the way through chapter four?
Tom: I have.
Sandi: Okay, so does it feel like a complete thought to you? I mean, a cliffhanger perhaps, but a complete useful thought at this point?
Tom: Yeah. I think it’s obviously at that point. If you both got hit by a bus tomorrow — I hope you don’t, but if you did — and this book was left in its current state, I think that there is a lot of useful and interesting stuff in there. I think it will be even better when you get all the way through to the punchline, if only because that completes the motivating example.
Early on in the book, you talk about: we have this new requirement and we need to implement it, and ultimately the whole story arc of the book is implementing this requirement.
Sandi: Yeah, exactly.
Tom: And so it would be a shame if you never got to the point where you show that requirement being implemented, and obviously you will.
Sandi: It would be a disappointment, wouldn’t it? Up til this point it is basically an exposition of those refactoring rules, and a complete long example of what happens if you follow them. And so the first half of the book, there’s a fair amount of OO in there, but it’s a lot refactoring, it’s like the combination of refactoring and OO principles. It gets more increasingly OO-ish, because now that people know those principles they’re just used sort of reflexively, like, they’re used without much talk, and the rest of the book gets increasingly like, many more objects get created, and many amazing things happen that are more in the OO term.
The book was released at this point because it felt like enough content to be morally acceptable for us to take people’s money, frankly.
Tom: So that’s a good opportunity to take a slight detour away from the content of the book and just ask you about: how has the experience of self-publishing an ebook been? Because I know, Sandi, POODR was published by a… let’s call them a “real publishing company”. And it was on paper and everything. But with this one, as far as I can tell, the two of you have taken on at least most of the burden of marketing it, and actually putting the file together, and really doing all of the work, and deciding on the pricing and promoting it.
How has that whole process been? As just two people, have you found it easy to launch a beta of a programming book, or has it been completely different to what you expected?
Katrina: It’s a pain.
Sandi: Okay, it is a pain. But it’s like… what business are we all going to be in? The first thing I feel the need to say is that I have people, and most of the burden of managing the logistics of selling and the marketing of selling fall upon them. If it were not for them, this would, I think, be an almost unbearable burden.
If somebody who was primarily a programmer, like me, asked me for advice about writing and self-publishing a book, I would tell them not to try to do it themselves. There’s a lot. There’s web sites, there’s money, there’s Stripe, there’s DPD cart, there blah blah blah, right, that goes on and on. So that’s one thing. You just have to have help, and without help we would just be overwhelmed.
The book launched last Wednesday. I’ve been been very superstitious. Like, I have been unable to think about whether or not people would actually buy it.
Katrina: It’s the same for me, yeah. These ideas are important. We’ve stumbled upon some simple ways of understanding something that are truly helpful, and that feels a little bit rare in programming books. I feel like a lot of programming books are not talking to me, they’re talking to someone who’s way smarter than me. And I’m pretty smart, but I don’t have all of the background knowledge, right. And so I feel like this book is important in some ways, in that it doesn’t require you to know all the things, it just requires you to know enough to be able to read it, and think about it. But, like, we’re self publishing it! There’s no guarantee that anyone would buy it. And it didn’t feel like we could make any sort of guess about the future in that regard.
Sandi: Our initial impetus to have lots and lots of conversation about these ideas came about because we were teaching together. I have a class on practical object-oriented design — it’s incredibly expensive. Like, private companies buy it. There’s so much demand for the course that I’m booking way off into the future. I keep trying to work this balance between what do I charge for the course and how often I teach it, so that I can be home at my house sometime.
I have a real blue-collar background. I’m the first person in my family to go to college, I learned to write code at a vocational technical school, at a trade school in the US. I found myself at this remove of my life, feeling like I had tons and tons of information that would be really useful to people like me, with my background, and absolutely no way to get it to them, because I had priced myself out of the market. So we were serving this really narrow niche of people that had tons of money, and not being able to get this information to a whole broad swath of programmers who might find it really useful, who are self-taught like I was…
Katrina: And I am.
Sandi: …and like Katrina is. And so that’s what caused us to decide to write a book. And when we first started working on it years ago, we were like… we were so naive. So we would be like, “programming books! they’re too expensive! when we write this we’re going to sell it for ten dollars! ten dollars would be awesome!” And time has passed, over the years… well, Katrina, did you want to jump in and say something about that?
Katrina: Oh my goodness. At some point, we floated the idea of forty dollars. And I was like, “no way, no way, it’s not possible, it’s horrible, I hate when people do that…”
Sandi: “It’s a rip-off to the community.”
Katrina: “…it’s a rip-off to the community, and it’s not going to happen”. And I was bullheaded about it, very very much. And so that was like, no, absolutely not.
Sandi: Well, we were in total agreement. And then time passed — years passed! — while we worked on it. So in the end, we were really struggling with, what is a fair price relative to its value, relative to what other people would pay. We really wanted to get it out to people, but then we stumbled across Avdi’s postcard scheme. And that really solved all of the pricing problems.
You can imagine, it is a huge — marketing, selling and all that — but picking the amount of money you’re going to ask people for a piece of content, it’s a marketing problem, but it’s a moral problem, more than a marketing problem. And so now we finally stumbled onto a way to give the book away, while having people get it for no money but for a little effort. And then that freed us up to price it right where other technical books are priced. That seemed to really totally solve the whole dilemma.
Let me tell you a thing that’s happened last week, Tom, since the book was published. People from countries whose exchange rate is bad keep sending me emails saying: other self-published authors have a program where they give people from Brazil, for example, they sell it for fifty percent. And I just don’t know how to navigate that moral landscape. It’s like, well, is that fair to people who paid full price in other countries? Does every country that has a different exchange rate pay a different percentage of the list price? If someone from that country pays full price, does it have an effect on other people’s prices? Like, I don’t want to make those decisions about other people’s finances. And so now we’re doing a thing where there’s two prices for the book: $49 and free, and for free you have to mail us a postcard.
We’re also doing a thing… we just talked about it this weekend, so we’re getting ready to put it up. We’re going to put some good postcard karma products on the web site. So if you get a free book and you want to pay something, you can just come to the web site and buy karma, and that lets you contribute some money to the postcard program without us deciding what discount you get or deserve.
And so, I don’t know. Tom, I would be interested in your… now I’m going to put you on the spot publicly. What should things cost, and how do we navigate those waters where some people can’t pay, but we want to give them the content?
Tom: It’s really difficult, and like you say, I think the postcard situation is a good one. If I was going to buy a book that was going to make me better at my job, then I think I would be prepared to pay a significant amount of money for that. It’s always been confusing to me how these things are priced, and especially when people expected ebooks to be cheaper than a physical printed book. In many respects an ebook is a more convenient form factor — I would always rather have an ebook, because I can put it on my phone, and on my iPad, and on my Kindle, and I can read it on my computer screen.
I read your book on my iPad, and I made notes in it in iBooks, and then when I sat in front of my Mac all of those notes were right there, and I could put them in an email and send them to you. So that’s very convenient for me. I don’t know how much ebooks should cost, but obviously if you’ve set a price for it and people are paying that price — which I assume they are, I assume you have customers —
Sandi: Yeah. Lots.
Tom: — well, if it’s “lots” then I guess you should have charged a hundred dollars for it or something.
Sandi: The price is sort of based on what other people are charging: Avdi’s books, Jim Gay’s books, other self-published authors. Now I know there are definitely self-published authors who charge less, but there’s also self-published authors who charge more. So, I don’t know, I don’t know. I wish I knew what was right. We would have just done it.
Tom: In some respects it’s misleading to call it a book, because what you’ve really done here is produce a distilled version of the course that you give.
Sandi: The course. Yeah.
Tom: And so the choice that people have is that if they want to come on your course, then they have to persuade someone at their company to find enough money to be able to pay for you to come and give that course in their company in 2018…
Sandi: Yes. Exactly.
Tom: …or they can pay $49 to get… not all of that benefit, obviously there’s no substitute for spending three days in a room with the two of you, learning about programming…
Sandi: Or you.
Tom: Or me. Or Avdi, or whoever else. But there’s definitely some benefit in reading the book. They’re going to get some of the content from the training course distilled down into a little concentrated nugget of information, and the fact that we call that an “ebook” is a little bit of a cultural accident, really. You could just as well call it an online training course.
Sandi: That’s an interesting thing. Had we called it online training, people would find it cheap.
Sandi: And it is exactly that. It feels not like a tech book to me. I mean, it’s not exactly a workbook, but it’s much closer.
Tom: You only made the book available in one file format, which was EPUB. Was that a problem for people, or has EPUB won the ebook format wars now?
Katrina: Uh, was that a problem? Yes. Let’s talk about file formats. A few people wanted PDFs. Many many many more people wanted PDFs than we anticipated. PDF is a really problematic format for a number of reasons, and so we have created a PDF now and it’s not awesome but it will get you the content and it will even print, if I recall correctly, per my latest experiments.
Sandi: I believe you fixed that.
Katrina: Alright, so PDF, we have that. Now, in the PDF, the pages are letter-sized for technical reasons, which means that there are fewer pages in the PDF than there are in the EPUB, but it’s the same content, don’t be fooled.
Let’s talk about Kindle.
Katrina: Do you want to talk about Kindle?
Sandi: No, no.
Katrina: Alright, okay. Kindle is owned by Amazon, and they have a command-line tool, that is quite good, that will convert an EPUB into a pretty decent Kindle format. However, it is illegal for us to use that tool to generate a Kindle formatted file that we then sell somewhere other than on Amazon.
So we can tell you how to download that tool and do it yourself; not everyone is comfortable on the command line. There is an online service where you can upload your EPUB and they will probably use that tool and then send that to you, and that’s fine because at that point you own the EPUB, and so it’s on you. Or — and this is what we also do — we can generate a kind of terrible Kindle formatted file using a free and open tool, but since the format is proprietary, the tool creator can’t actually know all the details of how to turn an EPUB into a Kindle.
Sandi: Last Wednesday, at 10:30 in the morning, we released this book, and it was only available in EPUB format at that point. Part of that was based on the fact that, in the entire history of Practical Object-Oriented Design in Ruby, only five people had ever bought the PDF. I have access to that data.
Katrina: And that’s in how many years?
Sandi: That’s twenty-five thousand copies of that book have sold, since September 2012. Five people have asked for a PDF. So we’re like, “well no-one’s going to want the PDF, so we don’t have to do that”. And then, we can only make a crappy Mobi. And surely everyone who owns a Kindle will have no trouble converting the EPUB to Mobi. So we’re like, “great, we’ll just do EPUBs, that’s awesome”.
And so then, you know, people started buying it and… turns out we were wrong about those things. People wanted us to give them a Mobi version even if it was bad; nobody really understands about Amazon’s proprietary licensing of that format; and I’ll bet ten or fifteen or twenty people sent me email that first morning, Wednesday morning, wanting the PDF. So now we’re doing the self-published author scramble around thing, trying to make a ZIP file and upload it to DPD cart so that when people buy the book, they get more than one format.
And that was definitely a mistake on our part. Our assumptions about what people would do, could do, would be happy with, were really wrong. As a storefront owner, I definitely disappointed some people on Wednesday; by Sunday afternoon we had a ZIP file up there where we’re producing all three formats, and in the ZIP file is instructions about how to make a better Kindle format, but if anybody out there’s getting ready to self-publish a book, I would tell you: all three formats have to be available from day one, when people start buying the product.
Katrina: And try printing your PDF, a page that includes code in it. Just saying.
Sandi: And I don’t really know… Katrina did something. At one point I accidentally printed out the PDF. I was trying to compare it to the page size in POODR to see how much content is on that 8.5″ × 11″ sheet of paper that the PDF is on. Most books are that 7″ × 9″ format. And so, we were trying to figure out, now the book looks smaller because it’s on these big pages, is it really the amount of content I told people? Are they going to be freaked out by that? But I printed one and it turned out none of the code showed up on the page. It was like, missing code.
Katrina: Including inline. If we refer to a variable inline in the text, that was also gone.
Sandi: It was just missing. Fortunately that got fixed by Katrina, and I don’t even know how.
Katrina: You don’t want to know.
Sandi: So now we fully support all electronic formats. People want print, and they’re insistent on having it now. But it’s a beta, of course, it’s not done, so we would not have a print version at this point anyway. It was interesting to me how many requests for print… I mean, so many people want print that we’re actively trying to figure out how to get dead-tree versions of this when it’s done. And then that becomes a whole new pricing boondoggle, because, certainly for a small publisher like me, I don’t think print is cheap, and I don’t really know how to be fair to the people.
A number of people have asked for it, and I’ve told them it’ll be available at a massive discount. One of the ideas that we’ve been bandying about is selling the print book at cost. You always have to buy the ebook, and then, if you want, you can get the printed copy in addition at cost. I don’t know what it costs to self-publish your own print book, but it wouldn’t surprise me if the book itself plus shipping and handling was $20 or more. I don’t know, to get small quantities of your own book printed, I suspect that’s not cheap. But we’re going to try to satisfy the people who want that.
Katrina: We don’t know how yet.
Sandi: We don’t know how. We don’t know how.
Tom: It sounds like it’ll be a lot of hard work.
Sandi: Well. Yes. It’s a pain. You know, I’m a reader of print books too, so I’m motivated to solve that. But we don’t know what we’re going to do right now.