Binder: Another Note Taking Tool

Posted on July 26, 2018

Binder is a tool I made during my senior year at KU for taking notes in class. The intention was to make note taking on my Linux machine easy with the following goals:

  • Allow the user to organize notes in any manner.
  • Notes should be a flat file format for ease of use, editing, and version control if desired.
  • The “binder” should be a single file that is easily navigable.
  • The “binder” should be customizable by the user.

Binder supports the above by compiling markdown files using Pandoc from the current working directory, and all child directories, into a single html file. This file has default styles, but can be updated by the user.

Beyond just wanting to build a note taking application for myself, another reason to build this tool was to become more comfortable with Monad transfomers. In particular, Binder makes use of the transformers and mtl Haskell packages.

If I were to go back and refactor Binder my main goal would be to rely less on concrete implementation from transformers and more on the mtl-style typeclasses to keep methods generic and ready for future refactors.