My writing setup

I do almost all of my writing in Google Docs and VS Code. Occasionally I’ll take longhand notes or jot things down in Apple Notes, but the real content that I write at work and for this blog is in one of those locations.

My VS Code setup #

When I’m working in VS Code, I use several extensions to help make my work as easy as possible.

Code Spell Checker #

Misspelling things in strings in code and when writing in an IDE without built-in spell check can be a challenge. This extension adds a straightforward and easy-to-use and configure spell checker to VS Code. It also advises on some grammar rules, non-intrusively.

Code Spell Checker from Street Side Software

Markdown All in One #

This extension is best-in-class for writing Markdown. Get autocomplete for links, auto-created table of contents, and automated renumbering of lists.

There’s probably more in there, but those are the game changing features for me of this extension.

Markdown All in One from Yu Zhang

Markdownlint #

Like any good linter, this extension helps enforce style standards when writing Markdown, ensuring that your syntax is consistent and correct throughout your documents. Also critical? It highlights when link fragments (like anchor links) are invalid.

I don’t like to see linting rules while I’m writing on a specific line, so I use the following settings to better manage that:

"markdownlint.run": "onSave",  
"markdownlint.focusMode": 5,  

markdownlint from David Anson

TODO Highlight #

If you add TODOs to what you write, you need to be able to find them again so that you can fix them.

TODO Highlight by Wayou Liu

Indent-Rainbow #

After writing in ReStructured Text without a linter for over a year, and with any code that I write being in Python, being able to see exactly what indent level I’m at is crucial for valid markup and syntax.

indent-rainbow from oderwat

WordCounter #

I forgot I had this extension installed because it’s unobtrusive. I use it to get a quick glance of how many words I’ve written for a blog post (and provide an early indicator that I’m writing an epic by accident).

WordCounter by Etienne Faisant

What I don’t use #

I don’t use any git extensions, and I don’t use Vale.

I have GitLens installed but I’ve never actually used it because I prefer to use GitHub Desktop as my primary interface with changes that I make with git.

I don’t use Vale because I don’t use a style guide when writing my blog posts. When I’ve worked in docs-as-code environments, the style guides hadn’t been codified into Vale rules and programmatic style checking was not a priority.

Other VS Code settings #

To make sure my files always get saved:

"files.autoSave": "onFocusChange"  

To manage switching between git branches even easier:

"scm.workingSets.enabled": true  

To make the text that I write easier to read:

"editor.wordWrap": "on"

To see every single space in my writing and eliminate accidental double spaces:

"editor.renderWhitespace": "all"

This was especially critical when writing in ReStructured Text, because an extra space could break a list or disrupt the formatting of an entire doc. Markdown is more forgiving, but I’m in the habit of enabling this setting ever since.

Google Docs settings #

These are a few settings in Google Docs that I use all the time. Most of these can be set by going to Tools > Preferences:

I also use keyboard shortcuts constantly, whether it’s reformatting text to be a header or to match a standard style, or to paste without formatting.

I’ve been delighted with the Copy as Markdown and Paste as Markdown options. Despite the exact markup not being what I always choose to use, it makes formatting documents for tech review or codifying hasty drafts for publishing a lot faster.

Other shortcuts for writing #

Generally, on my computer I tend to have a few keyboard shortcuts set up for the purposes of text autocomplete:

I’ll also set up other rules to catch common misspellings that I make — endpoing, documetnation — as well as finish long words or phrases — authz for authorization, authn for authentication, descr for description, and more.

I’m not big on personal optimizing, but I do find it helpful to make the process of typing as effortless of a translation from mind to document as writing longhand notes for myself.