Annual general update

It’s May. Winter is done now, so it’s time for spring cleaning! In addition to cleaning your living space, Spring is also a good time to clean out the “project plans” and focus on one or two key goals for the summer. This is what I intend to do in this post. Read on to learn about the recent developments, and the strategic plan for Minireference Co. for the coming year.

Since the LA book is finished, I will have more time now to focus on software projects and push forward all aspects of the business. Being in content-sprint-mode on LA applications for the past year really didn’t leave much time for updating the website, communicating with readers, twitter outreach, and developing sales and marketing channels in general. It’s like the business side of the company is asleep for one year.

Business is going strong, but to grow to 10x current size we’ll need a good strategy. It’s time to extend the product line to Web, Mobile, ePub, and Kindle. It’s also time to develop new products like email courses, exercises, jupyter notebooks, youtube tutorials, and maybe even audio lessons. A younger version of me would try to do all of these at the same time, but now I know that technology for the sake of technology is an empty pursuit. (That being said, sometimes quick wins can be had using the right tech, so any project that can ship in less than a week is OK.)

I need to think strategically, and also not think too much and focus on shipping.

The big picture

Let’s first figure out the overall mission. What do you want your readers to become? I want all my adult readers to become awesome at math. Also, I want all the analytically minded youth to be aware of the System. I want everyone to have affordable access to university-level science knowledge. Okay, so how do we do this?


Writing books is a lot of work, but there is no way to avoid this. If I want to ensure a consistent high quality of explanations and the logical coherence of the lessons, I have to be involved with all the books. I don’t need to be the main author though—I can be the developmental editor. I think this is my true calling in life.

Each book takes about two year to produce, so as long as it’s just me writing, Minireference Co. will always be on the flat part of the hockey stick growth graph. The best thing for growth right now is to find qualified authors that can help me scale to 10x current number of books in two years. Somewhere out there there is a chemist with years of tutoring experience who can write the No bullshit guide to chemistry in no time at all. Somewhere out there there is an economics grad student who can explain all the ideas from macro and micro economics in a single 200pp book. Same for differential equations (can be written either by a math student or an engineer, or a collaboration?). I definitely need a stats book too, written by a real statistician.

Content TODOs:

  1. Write pitch for authors along the lines of “Think you have a book in you? Join the Minireference Co. content team, and get paid to write about your favourite subject.”
  2. Update website, adding a new /authors endpoint.
  3. Think about revenue sharing models. Contractors? Royalties? Advance? Write contracts.
  4. Write a white paper on self-publishing tools. Package and release LaTeX templates and ePub production scripts for use by other authors.
  5. Develop scripts for publishing workflows based around text sources (md/tex), github repos, diffs, typo fixes, and multi-author collaboration. [BACKLOG]

Distribution platforms

Given the effort involved in producing educational content, it makes sense to distribute it as widely as possible. We need a multimedia approach. The print books are good.

Distribution TODOs:

  1. Create the split-versions of the first book for Kindle: No bullshit guide to math, No bullshit guide to mechanics, No bullshit guide to calculus. [June 2016]
  2. Finalize LA book, and push it to Lulu, Amazon, and Ingram channels. [August 2016]
  3. Release a iOS and Android apps with book content. Keep it simple: use a basic  ListView for browsing the topics and  WebViews (HTML+MathJax) for each topic.  [Summer 2016]

The above goals are easy to achieve and totally worth doing. The last thing you want to do in business is to waste time. Every week that I’m not on the kindle store means hundreds of dollars of unrealized sales. The LA book needs to ship ASAP too. People have been waiting, for so long.

New products

Books are good and all, but we need to think about the future. Will print book still be around 50 years from now? Maybe. But surely technology can play some role. Below are some product ideas that I plan to test in the coming years.

  1. Email course. Adult learners who are learning math and physics on their own need a little structure—a series of emails to keep them on track with their studies. Imagine a sequence of 10 emails that walk you through the sections of a chapter. Each email can contain links to lessons, video tutorials, exercise sheets.
  2. I’ve been experimenting with video tutorials and notebooks. I’m very impressed with the efficiency of teaching using jupyter notebooks and SymPy. I also like the “walkthrough” model of teaching, based on the book. But do the video lessons work? Are they effective at delivering the knowledge? Should they be at 1x, 1.5x, or 2x playback by default?
  3. Mobile applications. Everything has to be mobile these days. There is an opportunity to reach a wider audience through the Google Play Store and the Apple App Store. The plan for this project is in two steps: MVP as a Free app (lessons, concept map, exercises) [DEMO] Introduce paid apps based on feedback and experience of the free app
  4. EXERCIS. No learning is complete without putting the new knowledge into practice. That’s why I need to develop an exercises framework. It’s time I invested some dev efforts into this. I won’t be starting from scratch, but use khan-exercises or edX stack. I can offer it to readers either as a free bonus (incentive to buy book), or as part of the “deluxe” edition of the book. With the exercise framework packaged as a standalone JavaScript application, it can be distributed to students to use offline, or used from inside a WebView in the mobile applications.
  5. STRUCTURE. For as far back as I can remember, I’ve been obsessed with building a graph-like structure to describe the connections between all subjects, topics, and concepts in science and math. Now’s the time to finally build it! Strictly speaking, the graph by itself is not a product but the base for other products. For example “a concept browser” could be used to help people orient themselves in any field. Also a “what to learn next” recommender system can be build based on the knowledge of prerequisite structure between concepts.

These are all nice projects, but each of them requires a lot of development effort. I will need help. I could potentially try to pull it all off on my own, but it would be much faster to get interns to help me, or hire contractors. It’s not something I’m experienced with, but I think if I write solid specs for all these products, I could get external help.


Marketing push

With the two books in print (through lulu, amazons, Ingram) and digitally (gumroad, kindle), it’s now time to invest some cash and effort in a marketing campaign. A friend of mine who works in advertising recommended using a 30sec youtube video ad. Given a budget of \$20k for this, producing the video would take around \$10k and another \$10k would be used for the ads. If the video is good, such a campaign could lead to \$20k in sales. And if ROI>0, then I should do it, right?

I should really have a presskit for the company, and reach out to the tech news outlets and the startup community. Surely there is some free publicity to be had. The general themes of expensive textbooks will surely receive attention. Not sure how to spin it, but it’s definitely worth investing into this now that v5.1 of the math book is solid, and once v1.0 of the linear algebra book comes out.
Exercise framework

I’m a little disappointed by the referral page I setup for Shoutly. It’s probably my fault for not putting more thought and effort into it. Despite this failure, I still think there is a lot of potential for a referral program when setup right. If I can reach one student in a class of 300 undergraduates and incentivize her to recommend the book to her classmates, then I’m golden. Giving her a cut of sales profits could be good, but maybe there are other ways too? What if she can setup a “discussion group” for her class, with a unique URL. She won’t be “pushing” the book directly, but setting up a community for her class. Then again, I’m sure there are facebook groups for this already.



I’ve got many other ideas brewing too, but I don’t want to spread myself too thin. Instead of hiring authors, I could focus on the publishing technology, content curation, and recommendations. I recently bought EZOER.COM which would be a nice home for such a project. The best part about OER is you can still sell the print book. You can’t charge a huge margin, but it’s not like I’m very extractive right now either.


So, lots of things for Summer 2016. I better move my desk closer to the coffee machine

Git for authors

Using version control is very useful for storing text documents like papers and books. It’s amazing how easy it is to track changes to documents, and communicate these changes with other authors. In my career as a researcher, I’ve had the chance to initiate many colleagues to the use of mercurial and git for storing paper manuscripts. Also, when working on my math books, I’ve had the fortune to work with an editor who understands version control and performed her edits directly to the books’ source repo. This blog post is a brainstorming session on the what a git user interface specific to author’s needs could look like.

The other day I was onboarding a new author and had a chance to explain to him the basics of git, and I realized how complicated the action verbs are. To save some work, you need to put files in the staging area using git add <filename>, commit the change to the local repo, then push the changes to the remote repo. These commands, and the corresponding commands for pulling changes from the remote repo to your local one, and updating your working directory from the local repo, are very logical after you get used to them, and represent necessary complexity. The diagram below illustrates well the different git verbs newcomers to git need to get used to.

git verbs explained

(Credit: Kieran Healy‘s excellent guide to git)


So what would git for authors look like?

It’s my non-expert opinion that this is too much complexity for the average non-technical person. Imagine a teacher who wants to use an OER textbook with her students, and in the process of producing the document for her class she finds some typos, which she wants to contribute back to the OER textbook project. Let’s do a thought experiment and imagine a humane interface that would make sense for this task. To make the thought experiment more concrete, we’ll personify the teacher as Jane,  a university professor who is in charge of a first-year physics class.

We’ll assume github is used as the storage backend, but most of author’s OER browsing,  and collaboration happens on a different site (say whose users are authors, teachers, students, and parents. Suppose the OER book that Jane wants to use is College Phyisics by OpenStax, and this book is available in “source” format from the github repo openstax/physics, which we’ll refer to as upstream below. Given this preexisting setup, here are the steps the teacher would use:

  1. Login to
  2. Copy openstax/physics  to janesmith/physicsbook  (note we don’t say “fork” because it has different connotation as to the permanence and authority of the repo)
  3. Clone janesmith/physicsbook to her ~/Documents/School/Textbooks/OpenStaxPhysics
  4. Follow instructions for “building” the book locally. (e.g. running pdflatex three times)
  5. Performs customization like:
    1. Change cover page
    2. Remove chapters she doesn’t plan on covering in her class
    3. Add a custom preface with references specific to her class
    4. Choose values for “configuration variables” like font size, paper size, etc.
  6. Generate custom book for her class (PDF for print, PDF for screen, .epub, and .mobi)

At this point, she can distribute the eBooks to her students using her school’s LMS’ “file uploads” feature and setup the print PDF for print-on-demand using, so students will be able to order the book in print. Her students will benefit from a world-class textbook for $20-30 when printed as a two-tome softcover, black-and-white print book. No payment or further engagement with would be required.

If she doesn’t like her school’s LMS system she could “host” her custom book on These are the steps she would take to publish her changes to her public-copy repository

  1. git save: combines the effect of git add and git commit using a two-prompt wizard
  2. git publish

She could now give the links to the “build” directory of

Now suppose that halfway through the course, she finds some typos in Chapter 2 of the book, which she wants to correct, and furthermore she wants to share her corrections with the “upstream” copy of the textbook. (Bear with me with this scenario, we’ll have to think more about good incentives to share your corrections with others, but for the purpose of this thought experiment let’s assume Jane is feeling altruistic today). These are the commands she’ll have to use to “suggest edits” to the upstream authors who manage openstax/physics:

  1. Make the corrections in her working directory
  2. git save
  3. git publish (to her copy)
  4. git suggestedits which pops up a wizard asking her to give a short label for her edit suggestions, and pick the commits that should be part of the “suggested edit” (a pull request behind the scenes). The suggestedits command will perform the following steps behind the scenes.
    git checkout -b typoFixesChapter2
    git rebase -i   (choosing only corrections commits, and not the customization commits)
    – open github pull request

To keep things simple, Jane will never be shown the typoFixesChapter2 branch, and for all intents and purposes the rest of the workflow will be done entirely through the web interface. For example, if the upstream maintainers wants her to change something in her “suggested edits” (pull request), she’ll have to make these changes through the web interface, rather than edit the branch typoFixesChapter2 and push again. For all intents and purposes, Jane is always working on the master branch of her copy of the book.

I think introducing the new verbs save, publish, and suggestedits would be easier to use and correspond more closely to authors’ needs.

More power tools for authors

Assuming the source format is text based, git’s basic diff functionality will prove to be useful for “watching” changes made to large collections of text.  If the source is LaTeX documents, ezOER could run latex-diff to generate diff documents showing “rendered” differences between revisions, also know as red-blue diffs.

The build process could be automated using a generic continuous integration server. A script could run after each commit to regenerate the book in various PDF and eBook formats, and also generate diffs. We could even have some “language checks” scripts, that act like linters for text.


I’ve thought about this previously, but now the “authoring workflow” is becoming clearer. I need something like this for managing Minireference Co.’s (closed-source) content, but I plan to build all the tooling as open source. Would love to hear you feedback about this idea in the comments below.