Building a Memex by Andrew Louis


Being able to see information in the original context of when I encountered it is one of the superpowers that my Memex gives me. I can search, focus on a result, and zoom back in time and see everything I was doing at the time and how I got there.

This week, two books made me consider the power of words ripped out of context. Zong and Injun are both about weighty subjects and extremely effective because of the creative way language is destroyed and then rebuilt.

Jordan Abel, the author of Injun, assembled 91 old western novels, used ctrl+f to find occurrences of the term “injun”, and then began working with the 509 results:

After separating out each of the sentences that contained the word, I ended up with 26 print pages. I then cut up each page into a section of long poem. Sometimes I would cut up a page into three to five word clusters. Sometimes I would cut up a page without looking. Sometimes I would rearrange the pieces until something sounded right. Sometimes I would just write down how the pieces fell together.

Injun by Jordan Abel. Left: poetry composed with sentence fragments; middle: a view of a particular word across different books; right: paragraphs formed by stringing together sentences containing “injun” with that word removed

It works. The brain goes into overdrive seeing new patterns and making new connections.

The Memex will always be more of a tool for seeing information in context. That said, having the ability to see familiar history in radically new arrangements and contexts can be a tool for introspection or a creative primer.

Here’s a random query from my message history for the term “Jesus”:

But to more practical Memex updates:

Syncing notes into the Memex

One of the conclusions most developers reach when they grow older is this: the only type of data you can trust is plain text files.

I’ve been using Evernote for years but it’s lost data at critical moments, it’s over-designed and slow, and has an ancient API that I haven’t mustered up the energy to build an importer for.

I switched to a perfect alternative this week: Bear Writer. It’s a beautiful OSX/iOS app that has no bells and whistles — it’s simply a great frontend for the plaintext Markdown format.

(It’s also easy to copy out formatted text which is why this email looks slightly better than previous ones.)

How meta!

One of the biggest challenges of working on this Memex as a personal project is preventing myself from adding every feature under the sun. In the long run, I can imagine how a sophisticated note-taking system fits into the project goals but right now, I need to focus on making the Memex a great archiving/searching tool. This means integrating third-party services to sync in data from instead of trying to reproduce their behaviour.

Being able to easily import my notes into the Memex was a big reason I switched to Bear and I was able to get an importer working this week. I create an initial created activity for when a note is started and build edited activities as a note is edited. I’m also able to pull in images and tags. When I’m writing thoughts about a new feature, it’s powerful to be able to see the note’s evolution on the same timeline as browser history or git commits, for example.

The next step is allowing for custom rules to be applied to notes. For example, I want to be able to associate any note tagged “#reading” with a corresponding book entry in the Memex dataset so I can do queries like “find all occurrences of ‘Toronto’ in my notes about books authored by Margaret Atwood.”

If you use similar note-taking apps like nvAlt or Ulysses, it’ll be pretty easy to adapt the importer.

Find in page

Electron makes it easier than ever to create desktop apps using familiar web technology. One feature that doesn’t come automatically is the find-in-page feature (command+f) that people use instinctively.

I added that to the Memex app this week with the help of the electron-in-page-search plugin. Here’s an example where I do a broad query (“find all quotes I’ve saved”) and then jump quickly through results that match “Scarborough”

Docker packaging

Last week, I mentioned how I was changing approaches to packaging the API/importer systems for Docker inside the Memex app to come inside the app file instead of via git pull. This new version should be working in the next day or two and then it’ll be much easier to get existing/future users new updates seamlessly through the built-in auto-updating feature.

If you want to be a guinea pig and start using the Memex, send me an email!