For a few months I experimented taking notes using a Python script that is just a few lines long.

Notes look like this:

#todo write about observations from #mininote project

Each note is a single line of text. Note the hashtags.

With Guake installed, and the script in path, you can go from 0 to taking a note in less than a second.

For certain types of note taking this works really well. Lists that grow over time: idea list, reading list, etc.


This gets out of hand pretty quickly. The app needs to provide navigation tools to pull the notes the user wants to see out of a big messy pile of notes.


Here are some search result visualizations I’ve experimented with. Some are text based, and others graphical (made with D3).

Tag list

The simplest. I’ve found it helpful to display a sorted list of tags present in search results. This makes it easy to understand the spread of results you got back and to follow up with a refined search if necessary:

#mininote (30)  #ideas (10)  #features (10)  #done (7)  #questions (5)  #philosophy (5)  #todo (3)

Tag tree

From my own experience, many tags are used hierarchically and can be viewed as a tree. The result is an outline view of search results:

#mininote (30)
    #ideas (10)
    #questions (5)
    #philosophy (5)
    #features (10)
        #done (7)
        #todo (3)

Tag clustering

Grouping search results based on tags makes it much easier to visually scan through results to find notes of interest:

#mininote #ideas

#mininote #todo

Time axis histograms

Interactive visualizations based on time or other metadata (e.g. location) provide an easy way to apply filters:


Tag graph

Sometimes it is difficult to find notes due to inconsistent use of tags. A tag graph that shows how tags have been used together is one way to explore related groups of notes:



This is now a beta app for Evernote called Mininote:


A subset of the features discussed above are implemented. See the project on Github to give it a try.