Building a Memex by Andrew Louis

A week of beta testing

A homily on memories:

“You know what I think?” she says. “That people’s memories are maybe the fuel they burn to stay alive. Whether those memories have any actual importance or not, it doesn’t matter as far as the maintenance of life is concerned. They’re all just fuel. Advertising fillers in the newspaper, philosophy books, dirty pictures in a magazine, a bundle of ten-thousand-yen bills: when you feed ’em to the fire, they’re all just paper. The fire isn’t thinking, ‘Oh, this is Kant,’ or ‘Oh, this is the Yomiuri evening edition,’ or ‘Nice tits,’ while it burns. To the fire, they’re nothing but scraps of paper. It’s the exact same thing. Important memories, not-so-important memories, totally useless memories: there’s no distinction—they’re all just fuel.”

Korogi nods to herself. Then she goes on:

“You know, I think if I didn’t have that fuel, if I didn’t have these memory drawers inside me, I would’ve snapped a long time ago. I would’ve curled up in a ditch somewhere and died. It’s because I can pull the memories out of the drawers when I have to—the important ones and the useless ones—that I can go on living this nightmare of a life. I might think I can’t take it anymore, that I can’t go on anymore, but one way or another I get past that.”

From Haruki Murakami’s After Dark which I’ve been reading this week.

That’s the literary supplement for this week. On to project updates: I did three installs of the Memex this week!

My biggest learning: the onboarding process has to be as automatic as possible.In particular, setting up the different importers is a very manual process and this won’t scale up for users who aren’tpatient friends.

After setting up a few importers with my friend Michael, I think he’s convinced me that I should make a centralized onboarding service so people can quickly connect their third-party accounts (twitter, facebook, etc) with one click. Actual data would still live on the user’s computer but the downside is that I can theoretically capture access tokens. But for the paranoid, I can offer the code for the onboarding service which they can self-host.

Managing updates automatically

Another thing I learned was that it’s going to be very difficult to predict all possible shell environments and configurations. A problem I had with one installation this week was my friend’s git configuration required an ssh passphrase and the git clone command used to pull the api and importer code into docker failed.

I think the only way to make the installer work smoothly is to bundle as much into the app/docker as possible. I’m now in the process of adjusting the Electron build process to include the the bundled code. One advantage of doing it this way is I can ensure that the api/importer/frontend versions are always in a state of compatibility.

Since I won’t be relying on the app to update itself through git pull anymore, I decided to prioritizing an auto-updater system this week:

Most OSX apps that have auto-updating are using Squirrel under the hood. Electron provides a nice API on top of this and all you have to do is provide an external updater server for your app to point to. Nuts (used by squirrel — get it??) is a package that watches for new releases on a Github project and lets Squirrel know when to trigger an auto update. I set up a new server this week and coded a node/express wrapper around nuts. I also got Electron to pass in a device id so that I could have a sense of how frequently users are updating the app as well as adding an auth token so I don’t give away 100% of my source code to anyone who can guess the updater url.

As frustrating as Javascript is sometimes, this was my first Node/Express project and I went from no experience to a deployed app in only an hour or two. When people ask me for recommendations on how to get into web development, I might start steering them this way…

Tweaking the interface

I learned another thing from the first week of beta usage when my friend Khallil asked “those are tabs??” when I was showing him around the app’s interface.

I spent a bit of time making the interface look a bit more like actual tabs. I also added home, refresh, and back/forward buttons.

If you want to give the Memex a whirl and have a bit of time to get together with me and do the install, send me an email!

Happy Labour Day!