Skip to main content

How I'm writing #nanowrimo this year (using @GitHub)

2 min read

I'm participating in National Novel Writing Month again, mostly because last year was so much fun.

Last year I wrote a simple database-backed CMS to help me write. My brain was so addled by blogging for a decade that I found I could only be creative in a big text box in the middle of a web browser. It was kind of sobering, but I powered through, and I'm proud of the end result.

This year, I'm writing in public again - you can follow my story, such as it is, as I write it. But I've abandoned my database-driven CMS approach and am going another way.

Each of my chapters is a simple text file, named in chronological order: 01.txt, 02.txt and so on. I've been using TextWrangler, my favorite Mac text editor, but of course it doesn't matter at all.

My changes are synced to a a GitHub repository, where anyone can download the original source text files. (I've decided to license the whole thing under an Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0) Creative Commons license.

I also plan on using Poetica to work with editors to refine my text as I go on (it's by far the best online service that does this). Right now, though, I'm in shitty first draft mode.

My web server also regularly syncs with the GitHub repository, so I know that if I commit a text change, it'll be reflected publicly online. For the public version, I decided it would be nice to include an HTML snippet at the top of each chapter. Mostly, for now, this includes embeddable music from around the web, but I also plan to include animated GIFs, Javascript-enhanced illustrations and a bunch of other stuff. I built a very simple reader script that takes the text files, formats them appropriately, and then injects the equivalent chapter-number.html file at the top. Keeping the HTML and the text separate will make it easier for me to keep track of word count as the project grows.

It's working well - at the time of writing, I'm ahead! You can follow along at