Taking Personal Notes

Posted by Jack on 2011-08-24 at 12:01
Tagged: software , work

I've just started on a new team at work, which essentially means I have a clean slate for the first time since I got out of college and moved to Austin for IBM three years ago. Of course, since then, I've had a good three years of work experience which, while certainly not impressive, means that I can avoid all sorts of newbie mistakes that I made when coming into my first project.

One of those mistakes, I believe, was not taking proper notes. And by "proper" I mean digital, searchable, and accessible from anywhere. There are probably five or six notebooks of various dimensions that I've alternatingly filled with doodles and cryptic notes taken on phone calls. Paper notes seemed like a good idea at the time -- especially coming out of a college classroom -- but, as the project stretched on and I couldn't find that damned random IP address or URL I scrawled on a piece of paper (I was sure was around here somewhere!), it was clear I had failed.

Desktop Software

There are a lot of neat programs out there that I discovered looking for a good solution. GNOME actually comes with Tomboy (or gnote if you're not down with the whole mono thing) which has the right idea with a wiki-ish syntax, but having to keep things synced with rsync or something doesn't appeal. If I was going to hand synchronize I might as well use Vim. To wit, there's actually Vimwiki which seems a bit anemic although it does a good job of keeping in the Vim spirit. There's also Wikidpad, a notepad-esque wiki with a bunch of fun icons and settings, that looked neat as cross-platform solution -- I haven't actually used a Windows box in years, but I still have a lingering fear that I'll be in the improbable situation in which I need to look something up from one. Not a cold sweat kind of fear, but it's still something that I'd like to be able to do.

All of these solutions require a client though and either it's Linux only and ubiquitous or cross-platform and a bit of trouble. None of them sync either. Also, what about my phone? Notebooks are great because they're portable, so I'd like to be able to access notes from a coffee shop or hotel without lugging my laptop or counting on laughable "business centers". These solutions would probably be better suited to someone that wants to take notes in them instead of using a static text file on one machine. I'm sure there are lots of users out there like this, but I'm not one of them.

The Cloud?

There are some well known cloud solutions that run on Android and the desktop, like Evernote, which would get the job done but as some of my previous work attests, I really prefer to keep my data out of the cloud and on my home servers if at all possible and, even better, using open source. In the case of work notes, I have to be very careful with security. I can't have unknowns looking at my notes when they include stuff like phone numbers and passcodes, hostnames and passwords, potentially confidential attachments in the future. Even (or maybe especially) if they double super secret swear not to look, they can.

Since I have no desire to write any sort of synchronization script, or an Android app, or to keep my data on someone else's machines, I narrowed my choices down to browser based solutions. Every platform has a browser, right?

Pocket Wikis

There are a number of browser wiki implementations (like Wiki on a Stick, or TiddlyWiki) that are predicated on simplicity such that you can toss them on a USB key and read them almost anywhere and usually write them too, with browser support. However these are minimal to the point of ugliness and I'm not the kind of person that carries a USB key in my pocket. Seems like a useful thing to have on hand, but I have some sort of psychological aversion to it because I'm deadly afraid of breaking it in half. $400 phone? No problem. $30 USB stick? Oh no! What if I break it!? Of course, you can apparently use these single-file wikis from your Android phone (i.e. using AndTidWiki), which is definitely cool considering you don't need to have any connectivity and you're much more likely to be carrying your phone than having your laptop out, but then to actually read on a different screen (or use a real keyboard to edit it) you have to be carrying your USB cable or use another transfer method at which point you're back to hand synchronization. Having the cable when you want to edit probably isn't too bad -- it is part of your charger after all -- and small notes like addresses and phone numbers can be input easily enough on a phone keyboard.

The pocket wikis might be great if you've got a companion USB key on you all the time, or you're cool using it on your phone 100% of the time. Offline access is definitely a bonus and you don't get more cross-platform than HTML/Javascript these days. I was close to using this solution, but I'm hardly ever without internet (thankfully) and it's also very theoretically dangerous to be walking about with all of your important / confidential information on an easy to lose device. Add the minor annoyance of having to make major edits to the wiki with the phone plugged into a desktop and I wasn't sold.

At this point, I'm basically down to using a web server with a real, honest to $DEITY wiki. That lets me use it from my phone or an arbitrary computer with a browser. There are a ton of real wikis out there. Wikipedia's servers run Mediawiki which is entirely open source, but then again I'm not exactly going to be serving 100,000 articles to millions of users with this thing so that seemed like overkill. Enter MoinMoin.


MoinMoin is essentially the perfect solution. It's a very well known and widely used piece of software. It's written in Python so if I ever needed to screw with it, I could. As I mentioned before it's a real wiki with all that that entails (stuff like templating, history, a real interface for editing, markup, etc.) but as the true coup de grace to the other solutions, it has a self-contained "Desktop Edition" which means that it's got a low-performance low-resource built-in webserver that just works, pre-configured for localhost:8080. That's perfect for a wiki that will essentially only have one user.

For added security, I left the Desktop Edition webserver running on localhost:8080 and use my favorite encryption method - SSH port forwarding - to forward the port to any machine that I'm using. Even my phone with ConnectBot, or to the spectre of an unknown Windows machine with PuTTY.

Digital? Check. Searchable? Check. Accessible anywhere? Check. We have a winner.

I've been using MoinMoin for about two weeks now and I've put everything in it. Passcodes, bug links, TODOs for work and home, lists of helpful resources, server lists, even detailed instructions for doing PowerPC netboots from an internal server. I feel better already.

For anyone interested in doing the same thing, MoinMoin includes instructions for a basic self-contained install. You can even keep it upgraded just by untarring over your current directory structure and restarting the web server script.