I designed and developed Munin, a NLP (natural language processing) powered personal database of individual memory. Using a familiar chat-based interface, it empowers people to store their memories by seamlessly defining simple language patterns. These memories can then be retrieved using previously defined patterns.
The database is named after one of the Norse god Odin’s two ravens - Hugin and Munin, who are Thought and Memory respectively. Many smart agent systems choose to characterize themselves as people (often as assistants or secretaries). These systems are often disappointing, failing to understand the simplest human request. I deliberately choose a raven as my logo. Even in mythological form, the raven is still limited in its capabilities and far from human. This idea encourages the user to be curious and accept limitations.
I’m fascinated by the idea of exposing data structures and algorithms to users, allowing them to fashion their own interfaces suited for their particular needs. As I explored this idea further, I found inspiration in Joel on Software’s writing on Excel as a general purpose tool.
General-purpose tools allow users to fashion their own interfaces to solve problems. I believe this is a far more ethical approach to delivering computing than one-size-fits-all interfaces which deliver some efficiency, but also produce monocultures of thought and action. In building several prototypes for Munin, I realized that the the user could create an interface to enter and retrieve data using NLP applied on the user’s input.
There is a tension between designing to solve a specific problem and of solving for a more abstracted and general version of the problem. While a general solution can prove too abstract, it can also be applied to a wider class of problems. With Munin, generalizing the problem opened up a whole new realm of possibilities, revealing a twist on the command-line interface.
I designed and developed Munin, a personal database in which memories take the form of statements. Munin’s interface is language. To store a new memory, just enter a phrase or sentence. Munin runs a simple NLP parts-of-speech tagger on the entry and stores the results in a database along with some metadata. To retrieve memories, a question (phrase or statement ending in a “?”) is used. The parts-of-speech of the question is used to retrieve entered memories. The attached metadata allows for more context-aware querying, allowing for the use of “today, yesterday, last week, etc” to filter memories.
Designing Munin meant that I had to let go of my desire to define all of the system’s behavior. I had to allow the user to make mistakes. I discovered that using the system, understanding its limitations and its capabilities was a necessary part of learning to use it.
I used Munin over a few weeks, to track my spending, how often I watered my plants, how I was feeling, the number of steps I walked, and various other habits and routines. Because of its simple text command interface, I could use it for a variety of purposes without needing a new app or having to learn a whole new interface. Furthermore, by being able to define the actual sentence (format) I want to use, I could define an interface to store and retrieve memories.
By choosing a powerful conceptual model, I incorporated flexibility into the tool so it could be used in many ways. Unfortunately, creating the system as a website with localstorage limited how easily I could use it, especially considering the uneven support on mobile browsers.
A system with such wide applicability relies on ease of access in many contexts. An existing textual interface such as WhatsApp or SMS are an ideal platform to build on. I am currently building a SMS-based interface for Munin (using Twilio).