My External Brain
I have lots of hobbies, and not a whole lot of extra room in my head, so I end up with notes and reminders written down outside my head. I’ve tried several note-taking services over the years, but none seemed to fill all my needs all of the time, so currently I have a soup of services for my various notes:
Hyper-powered task list. Good for things that eventually will be “marked complete” rather than “deleted”, and things that have a good one-line summary. Can have due dates and tags to keep them organized. Has a private workspace area, but more focused on sharing workspaces with a team.
Long-winded notes-to-self. Has sharing capabilities on a per-notebook basis, but defaults to private.
Shorter articles that link to each other. Has a wide variety of plugins to extend the capabilities (I use Semantic Web plugins to add structured metadata to articles), and the ability to have templates and transclusions from other articles.
I’m a developer, so some of my doodling is in code. GitHub has the option to create a full “repository” for a project with multiple files, documentation, etc., or create a “gist” for a more simple interface, focused on fewer files.
Online Markdown editor, which can sync with Google Drive and Dropbox. It includes syntax highlighting as a bonus
Code on GitHub is good for long-term development and long-term projects, but needs to be set up and installed before run. CodePen is good for web-based code fragments that you can run-in-place, to show off a point.
For web bookmarks, I use Diigo to have a centralized place to sync my bookmarks to. I like that it has a “read later” option to quickly flag a site as “come back to it later”, which makes it a bit like Asana, but also has the option to tag bookmarks and annotate pages, which makes it more of a reference tool like Evernote.
So, how did I arrive at this soup of services? Because I’m both an artist and a developer, I’ve found that my notes need to include several different things:
- Bulleted lists: for short ideas, all related to a central topic
- Images/Diagrams: Either inspiration from another source, or something I created as an output of that project
- Code fragments: Sometimes interspersed with commentary. At the very least I need the ability to format the text as a monospaced font for these fragments, though having syntax highlighting is a definite bonus.
- Source Editing: Don’t force me to use your WYSIWYG! I’m a developer and I like getting my hands in on the code. WYSIWYG editors often limit my ability to insert tables or redo font formatting exactly the way I want, so I often end up switching to source mode to fix something.
- Private: Having the ability to share is good, but the majority of my notes are for my own personal benefit and not ready for the rest of the world to see yet. All my late-night entrepreneurial ideas I don’t want shared with the world (no stealing my idea for a baby rattle with a kinetic battery to power its own lights!), nor needing everyone to know I still need to keep a quick reference on-hand to remember the various tar command line arguments.
I’ve found some services excel at some of those, but not all. My initial note-taking service was MediaWiki, which won’t work for most people because that’s a web engine you need to have your own webserver to host it with, if you want a private MediaWiki instance. It’s also the most complex, offering the most options through plugins (either existing ones or ones I could write myself), but it’s then also my responsibility to make sure it’s backed-up and always-available (as I learned the first time my hard drive failed on my home web server…) I added plugins for syntax highlighting, and MediaWiki has the capability to upload images, which seemed to cover most of my bases. But then I got a smartphone which replaced my laptop as my main mobile device. MediaWiki is not the best for making a quick note or doing any drastic editing on a mobile device, though there’s plenty of skins that make browsing the content manageable on a mobile device.
I tried Evernote then, as a centralized service for my notes, and Evernote does most of the things I need, except code fragments. I can manually set a monospace font, but with no syntax highlighting, it’s not the best. And, with Evernote’s WYSIWYG editor, if the formatting got flummoxed, there was very little I could do besides strip all formatting and redo it.
Evernote does excel at getting images into notes, allowing drag-and-drop insertion of images in the desktop client, and the mobile app able to take quick photos from the device’s camera, and doing automatic OCR on the images is a wonderful bonus. And the images are saved as part of the note’s data.
I tried for a while using Marxico as an external editor for Evernote files, which works great for solving most issues with Evernote editing, as it allows writing in Markdown format, and saves the rendered HTML as an Evernote document, but then makes the notes un-editable in Evernote itself (though provides a nice link to redirect to Marxico to edit it). Also, it’s not free; you have to read carefully to see that it’s only free for 10 days, after that it’s a $15.99/year service to use.
GitHub Gists are able to be embedded in other sites, like this:
Though as you can see, in a two-file Gist, it runs them both together, with no option to separate them. If I wanted to put some descriptive text between the two files, I’d need to create them as two separate Gists, with two separate embeds in whatever final note they were going to be part of.
But not possible for any other language samples. Ideone is a site that can fill that gap somewhat, offering runn-able environments for a slew of other languages.
StackEdit is very similar to Marxico, in that it’s an online Markdown-powered editor, and both have great syntax-highlighting support, but StackEdit can’t embed images in the notes (since it saves the source Markdown format, not a rich text format render), so you need to host your images elsewhere on some other service, and then reference that image in the Markdown file. StackEdit does handle drag-and-drop insertion of images by syncing them into your Google+ account, which is a nice, seamless way to do it in one action, but I keep my notes in Dropbox, not Google. And even if I switched to storing in Google, the notes would end up in Drive, and the photo embeds would end up in Google+ Photos.
StackEdit does sync with Dropbox as a means to store the generated Markdown files, but it does that on a file-by-file basis. When I’m setting up a new device with my StackEdit notes, I need to open each file one by one from my Dropbox sync location in order to add it to StackEdit’s local cache on that machine. Unlike Marxico, where once synced with your Evernote account can find all Marxico notes that exist in your notebooks.
Asana entered the fray as a tool used at work, which also found use in my home life for things I generally was making simple bulleted lists for, previously. Asana has added simple formatting options to the details of each task, and the ability to attach documents to each task, so images can be referenced, but no code formatting at all. Their mobile app got some upgrades recently, and is much more useful now, but doesn’t have an Android widget for quick home-screen task manipulations.
Diigo is great for collecting content that already has a home online, and the ability to add private annotations is great! They did add an ability to create “Outliners” which act like text notes, but can interact with your web library items too. There’s some good potential there, but the free plan only allows up to 5 outliners.
One Tool to Rule them All?
So that’s my setup at the moment: Evernote for general note-taking (long-term reference), StackEdit if I know I’m going to be writing a little code, GitHub if I know I’m going to be writing a lot of code, MediaWiki for structured data, Asana for short-term day-to-day planning, and Diigo for web reading lists. For the future, there’s a few changes I see that could allow me to use one service more exclusively:
Evernote: Add ability to edit the source of a document, either HTML like what currently powers your notes, or Markdown, so when your WYSIWYG editor fails, I can fix it. And add syntax highlighting or at least a means to insert an HTML pre or code block.
StackEdit: Add the option to select a folder in Dropbox, and not just a file, to batch-import multiple documents I already have created in their own dedicated folder in my Dropbox account.
I see there’s more options when working with StackEdit in combination with Google Drive instead of with Dropbox; there’s a plugin in Google Drive to open the document directly into StackEdit, which might be a better way to go. Then only the issue of where the image embeds are would be something to figure out, and it would cover most of my general note-taking needs.
Using MediaWiki and StackEdit, I have gravitated toward the “true” source of my notes is Wikitext or Markdown. One possibility I should explore more in the future is CouchDB and using JSON/Document syntax as the “true” source. StackEdit has the ability to use CouchDB as data store, and the way I use MediaWiki for structured content could also fit within a CouchDB context. That has possibilities for storing all the types of notes that I have, with just a bit of configuration…