Memory Management

When I was starting out as a web designer, one of my chief joys was simply observing how my mentors went about their job—the way they prepared for projects, the way they organized their work. I knew that it would take a while for my skills to catch up to theirs, but I had an inkling that developing a foundation of good work habits was something that would stay with me throughout my career.

Article Continues Below

Many of those habits centered around creating a personal system for organizing all the associated bits and pieces that contributed to the actual code I wrote. These days as I mentor Bluecadet’s dev apprentices, I frequently get asked how I keep all this information in my head. And my answer is always: I don’t. It’s simply not possible for me. I don’t have a “memory palace” like you’d see onscreen in Sherlock (or described in Hilary Mantel’s Wolf Hall). But I have tried a few things over the years, and what follows are a few habits and tools that have helped me.

Extend your memory#section2

Remember this: you will forget. It may not seem like it, hammering away with everything so freshly-imprinted in your mind. But you will forget, at least long enough to drive you absolutely batty—or you’ll remember too late to do any good. So the trick is figuring out a way to augment your fickle memory.

The core of my personal memory system has remained fairly stable over the years: networked notes, lots of bookmarks, and a couple of buffer utilities. I’ve mixed and matched many different tools on top of those components, like a chef trying out new knives, but the general setup remains the same. I describe some OS X/iOS tools that I use as part of my system, but those are not a requirement and can be substituted with applications for your preferred operating system.

Networked notes#section3

Think of these as breadcrumbs for yourself. You want to be able to quickly jot things down, true—but more importantly, you have to be able to find them once some time has passed.

I use a loose system of text notes, hooked up to a single folder in Dropbox. I settled on text for a number of reasons:

  • It’s not strongly tied to any piece of software. I use nvALT to create, name, and search through most of my notes, but I tend to edit them in Byword, which is available on both OS X and iOS.
  • It’s easily searchable, it’s extremely portable, and it’s lightweight.
  • It’s easily backed up.
  • I can scan my notes at the file system level in addition to within an app.
  • It’s fast. Start typing a word in the nvALT search bar and it whittles down the results. I use a system of “tags” when naming my files, where each tag is preceded by an @ symbol, like so: @bluecadet. Multiple tags can be chained together, for example: @bluecadet @laphamsquarterly. Generally I use anywhere from one to four tags per note. Common ones are a project tag, or a subject (say, @drupal or @wordpress). So a note about setting up Drupal on a project could be named “@bluecadet @drupal @projectname Setup Notes.txt.” There are lots of naming systems. I used this nvALT 101 primer by Michael Schechter as a jumping-off point, but I found it useful to just put my tags directly into the filename. Try a few conventions out and see what sticks for you.
Notes naming system screenshot
My file naming system for text notes.

What do I use notes for? Every time I run into anything on a project, whether it’s something that confuses me, or something I just figured out, I put that in a note. If I have a commonly-used snippet for a project (say, a deploy command), then I put that in a note too. I try to keep the notes short and specific—if I find myself adding more and more to a note I will often break it out into separate notes that are related by a shared tag. This makes it easier to find things when searching (or even just scanning the file directory of all the notes).

Later on those notes could form the basis for a blog post, a talk, or simply a lunch-and-learn session with my coworkers.

Scratch pad#section4

I have one special note that I keep open during the day, a “scratch pad” for things that pop into my brain while I’m focusing on a specific task. (Ironically, this is a tip that I read somewhere and failed to bookmark). These aren’t necessarily things that are related to what I’m doing at that moment—in fact, they might be things that could potentially distract me from my current task. I jot a quick line in the scratch pad and when I have a break I can follow up on those items. I like to write this as a note in nvALT instead of in a notebook because I can later copy-and-paste bits and pieces into specific, tagged notes.

Bookmarking: Pinboard#section5

So notes cover my stuff, but what about everyone else’s? Bookmarks can be extremely useful for building up a body of links around a subject, but like my text notes they only started to have value when I could access them anywhere. I save my bookmarks to Pinboard. I used to use Delicious, but after its near-death, I imported my links to Pinboard when a friend gave me a gift subscription. I like that Pinboard gives you a (paid) option to archive your bookmarks, so you can retrieve a cached copy of a page if link rot has set in with the original.

Anything that could potentially help me down the line gets tagged and saved. When I’m doing research in the browser, I will follow links off Google searches, skim them quickly, and bookmark things for later, in-depth reading. When I’m following links off Twitter I dump stuff to Pocket, since I have Pinboard set to automatically grab all my Pocket articles. Before I enabled that last feature, I had some links in Pocket and some in Pinboard, so I had to look for things in two separate places.

Whatever system you use, make sure it’s accessible from your mobile devices. I use Pinner for iOS, which works pretty well with iOS 8’s share sheets. Every few days I sit down with my iPad and sift through the links that are auto-saved from Pocket and add more tags to them.

Buffers: clipboard history and command line lookup#section6

These last two tips are both very small, but they’ve saved me so much time (and countless keystrokes) over the years, especially given how often cut-and-paste figures into my job.

Find a clipboard history tool that works for you. I suggest using the clipboard history in your launcher application of choice (I use Launchbar since it has one built in, but Alfred has one as part of its Powerpack). On iOS I use Clips (although it does require an in-app purchase to store unlimited items and sync them across all your devices). Having multiple items available means less time spent moving between windows and applications—you can grab several items, and then paste them back from your history. I’m excited to see how the recently-announced multitasking features in iOS 9 help in this regard. (It also looks like Android M will have multiple window support.) If you don’t use a launcher, Macworld has a fairly recent roundup of standalone Mac apps.

If you use the command line bash shell, CTRL+R is your friend: it will allow you to do a string search through your recent commands. Hit CTLR+R repeatedly to cycle through multiple matches in your command history. When you deal with repetitive terminal commands like I do (deploying to remote servers, for instance), it’s even faster than copying-and-pasting from a clipboard history. (zsh users: looks like there’s some key bindings involved.)

Finding your way#section7

I like to tell Bluecadet’s dev apprentices that they should pay close attention to the little pieces that form the “glue” of their mentor’s process. Developing a personal way of working that transcends projects and code can assist you through many changes in roles and skills over the course of your career.

Rather than opting in to a single do-it-all tool, I’ve found it helpful to craft my own system out of pieces that are lightweight, simple, flexible, and low-maintenance. The tools I use are just layers on top of that system. For example, as I wrote this column I tested out two Markdown text editors without having to change how I organize my notes.

Your personal system may look very different from the one I’ve described here. I have colleagues who use Evernote, Google Docs, or Simplenote as their primary tool. The common thread is that they invested some time and found something that worked for them.

What’s missing? I still don’t have a great tool for compiling visual references. I’ve seen some colleagues use Pinterest and Gimmebar. I’ll close by asking: what are you using?

11 Reader Comments

  1. This was fascinating. Thanks! I have worked on this for years, even before I was a developer. I think especially developers are more likely to invent their own system for (well, for doing anything) as a developers mindset is one that builds. That being said my most recent approach has been almost painfully simple and will be revised: a single .txt file which contains everything. Each new day I start a new line, date it, and then things I want to remember I use a particular syntax for. So, I can search in a particular way to find anything due to this syntax. Maybe someday I’ll write a program against it. But, in the meantime, I don’t have to manage 5000 tools, everything is all in one place, and it is fully flexible (although not very powerful at this point). Also, it severely lacks backup. I’ll be adding that at some point.

  2. Amanda: I liked your point about having one place to find everything, and how that’s more useful than several different tools that can generate confusion.

  3. I’m a bit spread out. I use:

    -Pocket for saving web resources
    -Evernote for storing long chunks of information generated by myself or gathered form the web
    -TickTick to manage reminders (Evernote does this but for some reason I’m not comfortable using them), alerts and to-do lists (mostly publishing dates and deadlines), and last but not least
    -A paper notebook to jot down small details and make checklists of detailed stuff that I’ll be making in the same day

  4. Rodrigo: I hadn’t heard of TickTick, thanks for sharing that. I also keep a paper notebook strictly for daily tasks (each day gets a new page) and meeting notes, which then get transferred to a digital note if needed.

  5. I have a similar method of organizing dev notes except that I use a Free mac app called Notational Velocity ( to create and organize the text files. You can set the default storage directory to a dropbox folder to so they’ll be synced across all your machines.

  6. Some great tips there – my methods aren’t so organised, but work for me.

    I use pinboard – awesome service.
    I’ve tried evernote, didn’t like it much.
    I use google drive a lot.
    The biggest failing I have, which I need to fix, is my note system – really old school. I file stuff into a HOWTO folder with various subfolders, but on my local disk.
    On the other hand, I make use of the work wiki a lot and also Jira.

    I’m going to try networked notes …

  7. Curtis: I mentioned nvALT above, which is a variant of Notational Velocity. I tend to use that for searching/creating notes, and Byword for more involved editing (longer lists, for example, or a blog post).

    matthewtrow: I had a similar experience with Evernote. Couldn’t get comfortable. I know folks who absolutely love it, though. Google Drive I use for files, and collaborating on Docs. But I avoid it if I don’t need to share with other folks—I find it too slow for things like short notes.

  8. Mark, I was literally wasting time and trying not to look at my open blog post when CSS Weekly came in and offered this wonderful article.

    Me and my buddy run a blog in our agency’s name already but you actually did make me consider to start a second blog or write on Medium or whatever, to share exactly those everyday things. Of which by the way I believe, that the solution to whatever one did sinks better into permanent memory when writing about it.

    Keep it up!

Got something to say?

We have turned off comments, but you can see what folks had to say before we did so.

More from ALA