Well, the long march of dissertation writing has finally set in. As one would imagine (if one knows a lot of graduate students), I'm blogging about writing my dissertation instead of, you know, writing the damn thing. That said, this post is also detailing some of the work I put into the pre-writing of my dissertation.
When most Englishy/Rhet-Comp people hear the term "pre-writing," they usually think of something along the lines of outlining or brainstorming. That's not what I'm talking about, though. For me, pre-writing the dissertation meant coming up with a series of technological "best practices" for writing the thing, in the first place. After all, how do you write a book? I mean, technologically.
In setting out to solve this problem, as a way of forestalling the impending arrival of actual writing, I begin to come up with a series of criteria for how I was going to write my dissertation. I figured the process of writing some shapeless and large blob of text that will eventually be turned into a book (god willing), into a PSU thesis (which, of course, has its own very strict set of formatting requirements), and, possibly, into individual articles would mandate more than just typing stuff into Microsoft Word, which seemed like it could get unsustainable really fast.
Moreover, I have this vague idea that I might need to work on my dissertation from a public or library computer or, maybe, during office hours or something. Ultimately, I realized that all of these vague requirements boiled down to a number of things:
Dissertation Writing Technology Needs
Any dissertation writing technology system needed to be:
- Formatting neutral. By "formatting neutral", I mean:
- Multimedia: This dissertation needs to be displayed on the web, on the page, and sent to people who may have a myriad of different technological needs (ideally, whatever dissertation writing system I arrive at needs to be able to spit out PDF, HTML, and Word/RTF).
- Citation: Moreover, the ultimate publication location of this material is a big, scary cloud in the future. Therefore, it seems best to keep citations in a system that can be converted on the fly to whatever citation system a given press may need (MLA and Chicago are probably enough).
- Cheap. Ideally free.
- Platform Independent. Nothing that was specifically tied to OSX or anything else.
- Mobile (ie. documents are not tied to any one location).
Possible Solutions
- Google Docs - Most people are probably aware of Google's distributed, sharing-centric online word processor. In case you aren't, Google Docs is basically a fancy HTML editor hooked up to a really killer sharing/collaboration system. Google Docs, however, is not as full featured as something like Microsoft Word. It has no citation manager, for instance. Additionally, it's footnoting feature is not reliable. Also, I find that when I use Google Docs, I usually just end up editing the HTML directly, anyway, because I find it faster, as the HTML menus seem slow in the editor.
- Microsoft Word - I think everyone whose used a computer has probably used MS Word at some point. The new version even comes with a reasonably decent, formatting neutral citation manager. Of course, the problem becomes "what if I want to work on a computer that doesn't have the newest version." Also, at the end of the day, I sometimes find Word's busy interface to be resistant to long-term writing.
- Scrivener - This program was an almost-there solution. It's a very cool OSX-only word processor that lets you input in Markdown and has a lot of neat features for people using a word processor to write a long-form project. Also, while it has some citation support, they are managed through external (non-free) programs and this support is not formatting neutral. Additionally, the OSX-only nature suggests problems for platform neutrality. That said, this is a very interesting option for people looking into writing a longer document.
Note: - I realize there are a lot of other interesting projects out there for OSX. I know I didn't really consider Mellel or Bean, and I'm sure there are some other excellent solutions out there. I just had to get something working.
The Solution: Write Your Own!
While looking at the features of Scrivener, I noticed that it supported writing documents in Markdown, which is the HTML shortcut language I write this blog in. As I was already used to formatting documents in Markdown and, as it is just specially formatted simple text, I realized that some kind of Markdown-based solution was going to be the way forward for this project.
Of course, the big killer was that Markdown lacks a built-in citation management system. **sigh**. What to do?
I started looking in to free and open source solutions to bibliography management and stumbled upon Zotero again, after a few friends had mentioned it. Zotero is an in-broswer citation manager that allows you to pull in bibliography data using Firefox and organize it into folders and what have you. Awesome. The problem is that Zotero only has plugin support for MS Word and OpenOffice (and it lacks an API, so there's no really good way to get data out of, other than messing w/ a very complicated SQLite database). I realized that if I was going to be able to use Zotero with my hypothetical Markdown based solution, I was going to have to figure out some other way to get the data out of Zotero.
Thankfully, Zotero supports exporting your bibliography in a number of formats, including BibTeX, which is a nifty little programmatic markup language for bibliography information. So, now I have some way of creating a machine parsable bibliographies and some way of creating minimal text. How to put them together?
This last question was the insurmountable one. Enter Ruby. Basically, I wrote my own footnoting software that provides Markdown-like syntax for footnotes. Essentially, you surround your footnotes in double brackets ([[ ]]) to let the program know you want a footnote.
Simple enough stuff: the parser translates these footnotes into HTML that you can style however you want (I'd recommend reading this article). Additionally, I figured out how to make footnotes in Google Docs, so this package outputs HTML that works in Google Docs, as well.
References were a bit more of a problem, but, essentially, references are fancy footnotes (even in MLA format). I can now give a reference like this: [[reference:bibtex_id page#]]. The bibtex_id is something that Zotero assigns to each source (as mandated by the BibTeX standard) and the page# is obviously the page number of the referenced quotation. To get a BibTeX document from Zotero, I still have to manually export the bibliography every time I add something, but it's still a nice solution.
Right now, my footnoting software only supports books and does Chicago (notes w/o bibliography) and MLA. Extending it shouldn't be that hard and once I finish it, I'll upload it (if people are interested now, let me know). It's written in Ruby and is pretty hacked together.
The cool thing about this format is that converting from one format to another is a matter of changing the formatting instruction from, say, "chicago" to "mla" in each document. Done.
In addition to being able to output Google Docs code (which can further be converted to MS Word), I found the program Prince which converts HTML into a PDF on the command line. So, now, I can convert my Markdown+Footnote code into HTML, Word, and PDF, all using some shell scripts that I call from TextMate (the greatest program in the world). That said, I can just as easily call a lot of this from the Internet, which I do at my dissertation's homepage. I realize that TextMate is actually quite expensive, but as I've already bought a copy and most of its functionality can be duplicated through a website, I didn't count it against the total cost of the system.
To Recap
Here's a list of all the technologies I'm using to write my dissertation:
- TextMate - Awesome text editor that allows shell scripts that can convert my markdown into HTML, Google Docs, and PDF.
- Markdown - HTML shortcut language that provides easy, no-nonsense document formatting that can be converted into HTML (and from there into almost anything).
- I should point out that I'm specifically using Discount, the really, really high quality C port of the original Markdown code. I've tried a whole bunch of Markdown implementations and it's far and away the best.
- Zotero - Free online bibliography manager. Can scrape citation data from most sites (except the PSU library for some reason). Export to BibTex for inclusion in the system.
- Footnote - My Ruby script that processes Markup-like code into footnotes and also pulls references from a BibTeX database.
- Prince - Awesome (and free) program that converts HTML (and any XML document) into a PDF file.
- Subversion - The version control system everyone uses. This allows me to easily move files from computer to computer and keep track of changes in a centralized manner.
In Conclusion
As always, the problem and the solution of writing on a computer is that you can always come up with your own custom way of doing things, provided you have the time and the skills necessary. Is this system right for you? Probably not, but it works for me and, more importantly, it allows me to keep my dissertation in as many places and formats as possible.
Other than bragging, though, I hope this post shows that it can be beneficial to think through the technologies you will be using before beginning a process like writing a dissertation. That way, you can spend more time writing and less time, down the road, battling with software you don't like or don't understand fully.
For my money, I love this system because, unlike with something like MS Word or Google Docs, I can format the entire document using nothing but a keyboard (I thought about writing the whole thing in VI) and don't have to worry about a long manual or having to stop the creative process to fight with a bunch of menus and a mouse in order to format something. I wanted something that would be as simple as possible and would not get in the way when it came to formatting.
Anyway, more information to come on Footnote, as I get more time to work on it. Also, check out my dissertation's website at http://andrew.pilsch.com/dissertation