Alessandro Dotti Contra

Linux/Unix DevOps


Concepts

I have a visual way of memorize information, so mind maps are an incredible aid when learning something new or refreshing something already learnt. Since I have a tendency to structure information in a hierachical way - by the mean of outlines - having a tool that creates a mind map from an outline is quite useful. This is why concepts was written.

concepts is a python script which relies on Graphviz to create a mind map like graph from the outline feeded on the standard input:

$> cat outline.txt | concepts.py

The image created is named, by default, concepts-graph.png

The latest version can be downloaded here.

The outline and the map

And now a little demo that serves the purpose of explaining how to create the outline for later processing.

Beside the actual information, we need to provide two meta-information for the tool to do its job: concept's depth and concept's format.

The depth of a concept is expressed by indenting lines with spaces; every two spaces prefixed to the concept increase the depth by one level. Note that Graphviz control characters are allowed, and concepts must not span multiple lines.

The format of a concept is expressed by it's first character. Formats were defined by my needs and tastes, but the script can be hacked quite easily.

So, this is the demo outline:

#I'm a comment, and will be ignored.

|Top concept (there must be only one)

  +this is a complex concepts
  	=and this is something important
	!this needs to stand out
	-a basic information
	-another basic information
	  :with a note attached
	  :and another more important note

  *Some code ...
  	>with its pros
	<and its cons

And this is the generated mind map:

Concepts graph