It’s been 6 months since I published my first book, Django for Beginners and wrote up some thoughts on the process.

I wanted to give an update on what I’ve learned in that time, what I’ve been up to, and my thoughts on creating technical content in general going forward.

6 month recap

Over the last six months I’ve written and published a second book, Django for APIs and started work on a third. I also submitted a proposal for a talk at DjangoCon that I’ll be giving–this is my first time attending any official Python conference. And I’ve spent serious time on a side project with other developers that I hope to announce in the future. So I’ve been busy.

Django for APIs

I wrote Django for APIs relatively quickly in hindsight, though it certainly didn’t feel that way at the time. From March to June I focused on it. There’s always a degree of self-doubt around content: Am I writing on the right thing? Do readers care about this next topic? Or is there a better, bigger one out there?

Thanks to Amazon and their “Frequently Bought Together” feature I could see that the most commonly bought book was one on REST APIs with Django, so that gave me confidence I was working on the right thing.

Unlike Django for Beginners, I didn’t write and post everything online first and receive feedback over a long period of time. Instead I wrote the book largely solo. As a result, once I was “done” with the manuscript and all the code, I spent 6 weeks sending the manuscript out to trusted reviewers. And waiting. Receive some feedback, make updates, wait. Repeat.

I did not enjoy this period of time. It was frustrating. But I think this is the only way to do it unless I’m going to spend 1-2 years and write the first draft online again, which makes less sense now that I have an audience and have learned how to write/publish high-quality books.

The next question was, Who should review the book? Who has the requisite expertise let alone the time? I made a wish list of programmers I admire and just emailed them all. Almost everyone responded in some way and many of them took time to review my work which I’m extremely grateful for. I think the lesson here is, Don’t be afraid to ask.

Publishing the book was more direct than the previous iteration. I again used Leanpub for formatting which lets me write in Markdown and auto-generate new versions quickly. Honestly if I did the layout manually, using InDesign, I’d probably go nuts. The syntax highlighting capabilities of InDesign are questionable and the ability to just focus on the content is key.

I didn’t do a big marketing push for the book once it was ready. I sent a tweet out about it, published the books, and sent an email to my newsletter subscribers. I was so sick to death of the book myself I just wanted to get it out there. I think most authors can appreciate this feeling.

Self Publishing on Amazon Tips

I’ve learned a few things about Amazon self publishing. One of them is that when you create a new book and are assigned an ISBN, there are 3 things you can not change after the fact. The title, subtitle, and trim size.

In my case, I included the version number “2.0” in the original subtitle. But we’re now on 2.1 and in a year it will be 2.2 and so on. I had to create a new book within Amazon’s system that did not specify the version number, email Amazon support to transfer over the reviews/SEO (which thankfully they did), and endure a brief period of time when there were 2 copies of my book out there. Not ideal, but lesson learned.

Everything else in the book can be changed over time: cover, interior, description. So…think carefully about your title and subtitle.

Traditional Publishing

Due to the modest success of my first book, I’ve received offers from a growing number of traditional publishers. This is flattering. And I think for first-time authors there can be good reasons to go the traditional publisher route. You’ll have a team of professionals working to help you get the book out, they’ll hold your hand along the way, and will handle the long list of non-writing activities–editing, copyediting, technical review, interior layout, cover design, marketing, distribution, etc–that can easily overwhelm an author.

The biggest risk is that you simply don’t finish writing the book. It will take way, way, way more time and energy than you think. So anything you can do to help ameliorate this fact is probably a good thing and traditional publishers unquestionably help in this regard

Now let’s talk about why you might want to self-publish as I have. First, I actually was a book editor for 5 years before learning how to program so I have direct experience in the field that gives me some advantages but also probably leaves me with some glaring blindspots (if you spot any in this write-up, please let me know!).

Certainly I would prefer to have a helpful team work with me on my books but that means giving up control and a lot of future royalties.

If you’ve never seen a book contract, they are very standard. John Resig wrote up a detailed overview some years ago on it. And Al Sweigart wrote a more recent update.

The key takeaways of the traditional model are this:

  • marketing and promotion is largely up to you
  • your “advance” is not free money, it is literally a loan against future book sales and will typically be hundreds or low thousands of dollars
  • you will learn to hate “returns,” bookstores can return unsold books at any time and you eat the cost
  • royalties are roughly 15% for print and 30% for ebook
  • your payout will be every 6 months at best

A bestselling book might sell 5,000 copies a year. This is a rough breakdown of the royalties to an author, assuming a list price of $40 which is common.

2,500 paperback * $40 * 15% = $15,000
2,500 ebook * 40 * 30% = $30,000

So after all that work, marketing, updates, emails, etc. you earned $45,000 a year later, maybe.

I’ve spoken to many fellow technical book authors in recent months and a common refrain I hear, even from the bestsellers, is that writing books alone doesn’t generate enough money to make it a full-time job. This is why there is a profound shortage of high-quality writing on programming. And when it comes time to update the content, most authors don’t.

So…my glib advice would be that if you’ve never written a book before, are doing it mainly for the prestige (personal, consulting business related), then absolutely go the traditional publisher route.

But if you want to make a living writing technical books seriously consider self-publishing or some other format like videos.

That same 5,000 copies self-published, if you sold 1,000 ebooks, 2,000 paperback, and 2,000 Kindle would look like this:

2,000 paperback * $40 * 50% = $40,000
2,000 Kindle * $40 * 35% = $28,000
1,000 Gumroad * $40 * 95% = $38,000

That nets out to $104,000 per year. It’s a big difference.

You can also see your sales in real-time when you self-publish though I’m not sure this is a good thing. It hasn’t been good for my mental health to know that sales are a click away, although getting paid weekly via Gumroad is quite nice. Amazon, by contrast, has a 2 month lag on payments.


With time I realize that everything comes down to marketing. Great content matters to a degree, but what separates everything is marketing. Specifically getting user email addresses so that you can form an ongoing relationship with customers.

With Gumroad you get the email address of your buyers. With Amazon you do not know who your customer is. Also Amazon self-publishing, awesome as it is, only works in 13 countries for Kindle and 7 for paperback…there’s a lot of the world out there that still wants content.

Next year I will focus much more heavily on marketing my existing books and content rather than just cranking out new stuff. There are many ways to do this and I probably could use the help of an expert here down the road.

For now I’ve been writing and updating articles on my personal site,, and its traffic has exploded in recent months. I’m at 50,000 unique visitors for the past month and it’s been hockey-sticking for a while now. I’m not sure when things will taper off.

At the same time, all my articles are for Django 2.0 so I should update them to 2.1, and then in less than a year, 2.2, and so on. As long as I can drive traffic to my books then I can justify the time to do this. Otherwise, no.

The business of writing

When you start having real income (4 figures) as a book author a whole host of other concerns emerge around legal structure and taxes.

Should I set up my publishing as a sole proprietorship? LLC? C-corp? S-corp? What can I expense? Etc etc etc. I spent quite a bit of time on this now that writing may be a sustainable endeavor for me.

The best approach is to find a good attorney and accountant but this costs money. I found the Self-Publisher’s Legal Handbook to be a good introductory guide to things. For me, I’ve set up a DBA for my publishing, Still River Press, and run things as a sole proprietorship. This is the simplest, cheapest approach.

Down the line “maybe” it will make sense to explore an LLC but that’s something that requires mid 6 figures to even consider and I’m far, far from there.

Another fun thing: taxes and expenses. I’ve set up business checking account and credit card. And configured Fresh Books. All of this is necessary but takes time and focus. I want to automate all of this as much as possible going forward.

Big Picture

Currently I receive 10-20 emails a day from readers and I respond to each one. I love doing this. I’ve even found out my book was used for a Mentorship Week in Zimbabwe recently which is incredibly cool and touching to me. Programming truly is a global skill.

I’ve also had professors emailing me for “review copies” (ie, free) of my books that they intend to use for Django courses this school year. Since Python is the default programming language taught at many universities, and students want to learn web development, it’s natural that some Django book will become the de facto standard over the coming years if it can stay up-to-date.

But I also see my time and focus spent in many ways beyond just content. It takes a lot to respond to users promptly. Writing and updating my personal site takes a lot of time. Marketing is a huge amount of time and should be more. Updating the books annually–I’ve already updated Django for Beginners to 2.1 which took several weeks since Django changed, Chrome changed (new screenshots), SendGrid changed (new email flow), and Heroku changed. That’s just in the past 6 months! And then I also need to keep building new projects to learn things, keep my skills fresh and, you know, code.

I need to work on getting the balance here better. Whether that means paying for help is an open question. Books don’t likely offer enough revenues to entertain the notion though videos down the road might.


I remain highly intrigued and yet cautious of video content. At the end of the day, sites like Treehouse,, Udemy, are just a solitary developer talking and typing on a screen. The production values don’t have to be super high; good content and teaching is what matters.

However…marketing is tough. And if you’re teaching frameworks like Django as opposed to programming languages like Python, I’m not sure how someone can keep things current. Every single year Django has an update planned. With text it’s a lot easier to make changes; a video must be re-recorded annually.

I would love to know what percentage of sales on online sites like Egghead, Frontend Masters, even Treehouse are from individuals versus companies. It makes tons of sense for tech companies to have a robust learning budget so their developers keep up to speed with new technologies. And spending a few hundred dollars a month is an easy investment here while for a single person, spending $50-$100 is a big investment.

At the other end of the spectrum is YouTube where there are several Python-specific channels that do quite well even with the minimal amount of advertising dollars per view. This list includes sentdex, Corey Schafer, and others.


Looking ahead I’m surprised by how successful my books have been in such a short period of time. I’m not yet at the point where books alone are self sufficient for me but I can see a future in which they are. I hope to achieve that next year.

I’ll have 3 books out. They will need constant updates and time spent responding to readers, but the up-front work is done. It’s tempting to write 3 more books in 2019 but a better approach is to continually refine my existing content, add to it where needed, and really perfect what I already have. We’ll see if I enjoy this as much as I enjoy making new things :)

I’d also like to add more in-person teaching to my schedule. Developers are typically on the introverted end of the spectrum but I’m actually not. I love the power of writing/coding to reach thousands and potentially millions of people, but spending all day staring at a screen–especially when I’m working alone on my own stuff–is tough for me.

I loved teaching at Williams College in 2016 and I currently live in Boston so I’ll be exploring local opportunities to teach.