Editor's Note: Seth Brown writes about extremely technical topics over at DrBunsen.org. His interests span from awesome vim overviews to personal productivity with some stop overs in whisky town. Virtually everything he posts I put straight into Instapaper. That is if I can wait to read it. Most of the time I stop everything to read each post entirely. Each post is a little technical course on a single fascinating topic..
If you like, please provide a brief bio
My name is Seth Brown. I live in the United States with my wife Katrina and our dog Stewie. By day, I'm a bioinformatician. I use statistics and computers to analyze big data and understand human disease. By night I use the same tools to build stuff, answer questions that interest me, and act deliciously geeky. Mark Twain said that work and play are two words that describe the same thing under different conditions—I feel extremely lucky to be able to agree with him.
Why did you start writing at DrBunsen.org
I started DrBunsen.org from a confluence of things that were happening in my life. I had just finished an enjoyable post as a visiting professor and I felt a need to continue educating after I left my position. Web development was something that I had no prior experience with and something that I always had an itch to learn. I wanted a public venue where I could continue to improve my writing, coding, and analytical skills as well as interact with other people who shared similar interests. Creating a website satisfied all of these criteria, so here we are.
How do you capture your ideas and research an article on your blog?
Capture is frequently precipitated by my own interests in learning something new. One of the best way to learn something is to write about it. This is one way I try to trick myself into being awesome. I get ideas by trying to answer questions that I think are interesting, pursuing difficult problems I've encountered, and writing about inspiring subjects.
I capture most of my ideas with pen and paper or on my office whiteboard. Lately, I've been using the Retro 51 Tornado for most of my paper capture. I digitize everything, so the irony here is not lost on me. I've yet to find another medium that rivals the speed, information density, or expressiveness of drawing for capture and idea generation. From these physical inputs, I use an automated system that I wrote to archive daily digital snapshots of my whiteboard and other drawings and images that I take with my iPhone camera. Apps like Prizmo make the iPhone a powerful capture tool in my workflow.
A nascent blog post begins when I create a new OmniFocus project and import an image of a drawing that I've captured into the project. I like to further develop my posts from within OmniFocus in the form of shallow outlines; simple bullet points mostly. I also add links, images, and sometimes audio data to the project. My best ideas occur at random times so I like to confine the development process to OmniFocus where I can quickly capture supporting ideas at my computer or remotely on iOS. When I feel that I've accumulated sufficient material, I use my OmniFocus outline as a guide for writing my posts. Most of my blog post ideas die at this stage when I come to the realization that either my ideas are poor or someone has already written something better than I could ever hope to produce. Once I've accumulated sufficient material within the OmniFocus project, I start the writing process.
How does this differ from your process for writing professionally?
The initial idea capturing process is similar between my blog and professional work. My work projects are larger and more complex, so I supplement my capture process by using a wiki system generated with Gollum and written in Markdown. I find that wikis are a great medium to organize, consolidate, and interconnect my drawings, with URLs, PDF files, visualizations, and other resources relevant to a given project. I frequently have impromptu whiteboard brain-storming sessions with coworkers that I capture with my iPhone and later add to my wiki. Drawing and image capture are very useful in these contexts.
You write a lot of code. How do you research and create code for your professional and personal projects?
I create personal and professional code similar to how I create prose. Coding and writing are essentially the same thing. I start coding projects by drawing diagrams of how my programs will work, how the individual pieces will fit together, and what data structures and algorithms I plan to use. If I'm creating a tool that other people will use, I think about the user interface first and work backward to write the implementation. Experience has taught me that diving into a project without thoroughly thinking it through leads to downstream problems.
I don't research code per say, but I do like to read code to make myself a better programmer. I read great writers to understand how to become a better writer, so this seems like what I should be doing with code as well—the XMonad source code and Peter Norvig's Sudoku puzzle solver are beautiful examples.
Whenever I encounter a useful piece of code, I add it to my snippet library if the snippet is short or refactor it into one of own my personal modules. I've always struggle with how best to keep small code snippets, but I've settled on using CodeBox. I have very large snippet libraries for several languages, so searching my own resources is usually the fastest way to find what I need. Symbol Hound and Hoogle are also handy tools for metacharacter queries and other special searches.
Can you provide an overview of your writing process?
It's essential for me to build an outline in OmniFocus prior to starting the writing process. The outline is a way for me to evaluate whether I can write a cohesive body of text around an idea. The cornerstone of good writing is good ideas. I like outlines because they allow me to see how my writing will look and flow. Once I have the substance captured in outline form, I can concentrate on the flow and syntax of my words during the writing process.
Before I start writing, I like to read short passages from great writers. I write mostly technical material, so I try to read and emulate the styles of the best technical writers I know—Harold Varmus, Brian Kernighan, and Oliver Sacks to name a few. I try to absorb their styles and integrate them into my own. In the words of Paul Graham, copy what you like and in the words of Ausin Kleon, steal like an artist.
I write the final version of a document start to finish, paragraph by paragraph, until the final version is finished. I write in Markdown for my blog and initially Markdown for my professional work, which later gets converted to TeX and rendered with the XeTeX engine. I've never been able to write drafts and then iterate through revisions until a final version is produced. I rarely finish a post in one sitting. I like to write in short spurts over the course of several days. As I write, I like to read my words aloud. This technique greatly improves my writing.
If I get stuck while writing, I use a few techniques to help me. Sometimes I start working on another project for a few days then go back to writing. Switching working environments and input devices can help. I move from working on the computer at my standing desk to an iPad on a chase. If I get stuck more than once or twice while working on a piece, it's usually a sign that my original ideas are flawed.
How long have you been doing it this way?
What enhancements have you made to make writing and research easier?
Practice is the biggest enhancement I've made to my writing. The more I write, the better and faster I get. I use several tools I've written to help me automate steps in the writing process. I write a lot of Markdown and one of my favorite enhancements is a simple Markdown formatting tool that I've written called formd. I also make heavy use of TextExpander to simplify a lot of writing drudgery. TextExpander is especially useful for Unicode characters. I have an entire snippet group dedicated to Unicode, which greatly speeds up my professional writing where I use a lot of obscure math symbols and greek letters.
I've experimented with many different research enhancements over the years. Towards Effective Information Processing is kind of my manifesto on this subject. Learning to automate much of the initial research process has been the biggest enhancement that I've made.
Do you have a specific work environment or setup for researching and composing an article?
My home office is my preferred working environment because it's where I get the most done. The lack of a commute and the distraction free environment make me much more productive than in a typical office. My work environment consists of a standing drafting table with a three monitor configuration and bias lighting. I spent my youth working on drafting tables and it remains my preferred work surface. My left display always has a full screen iTerm2 window running in it. I spend close to 90% of my time between iTerm2 and Google Chrome. I use terminal Vim inside iTerm for all my writing and coding.
Do you write from a mobile device? If so, how does this process differ from your desk computer?
I write with my iPad. My writing process really doesn't change very much on the iPad, it just slows down. I don't find that the iPad can even remotely substitute for my work station, but I do feel it plays an important role in my writing workflow. The iPad allows me to sit outside or in a remote location, which can sometimes help me write.
I use OmniFocus for the iPad since I use OmniFocus so heavily on my Mac. Dropbox is the glue that holds all my writing together on my computer and remote devices. I completely burnt-out on iOS Dropbox text editors sometime in 2009. There are just too many excellent iOS apps to keep track of. I just use whatever Federico Viticci recommends; lately that's Writing Kit on the iPad. Thanks to your recommendations, I also use Terminology frequently while I write.
Does your workflow change based on the type of post?
What parts of your workflow are you looking to change or improve?
Location-specific functionality is an untapped area of my workflow. There is tremendous potential to leverage proximity sensors and WiFi location to carry out specific actions though a computer or mobile device. Every six months, I try to integrate contextual functionality into my workflow with little success. In an ideal world, my iPhone would open my garage door, turn the lights on in my office, and open a terminal window because it is aware that I am in the car, close to home, and at 11am there is a high probability that I will be working on the command line.
What parts of your workflow are you least willing to change?
Maybe I'm dodging the question, but I'm willing to drop any piece of my workflow if it makes me a faster or better writer. I have no allegiances. With that being said, it will take something special to get me to get me to move away from Vim as my text editor.
Anything else you would like to share about your workflow?
I write best in flannel surrounded by the The Goldberg Variations.