I like to go back and re-read my old blog entries. It’s not really narcissism (at least I hope not), it is more like a trip down the memory lane. It gives me a glimpse of what I was into at a given point in time, what was on my mind and what I chose to share with the world. More than that, these posts can be used as recall devices that let me access memories that over the years got burred. I can for example stumble on an old video game review and remember other details – like where I was at that time, or maybe the girl I had a crush on back then. It’s kinda like the journals from Butterfly Effect. Only I can’t go changing things.
Unfortunately the problem with a public blog is that there is only so much that I’m willing to share with the entire internet. A lot of the stuff that is on my mind gets converted into blog posts, but a large percentage of my musings and reflections simply get discarded into the void. Mostly because they are irrelevant, or silly to everyone else. Recording them could only be potentially beneficial for one person: me. So I figured, why not start a private journal of sorts. Something to capture the spillover intellectual output that does not on this blog. It couldn’t hurt, and it would be a great mnemonic reasoned down the road.
Alas, I have hit a roadblock right out of the gate: how. How do I set this up? How do I update it? How do I keep it secure?
I figured these are my requirements:
- I would like this journal to be hassle free, and easy to update and search through. Ideally I would like to leave stuff like dating entries, and sorting them to software.
- Since this would be a private journal, I would like it to be secure. Best if it’s encrypted, or at the very least password protected. I don’t necessarily want it to be web accessible.
- This is a long view project – something that only becomes a valuable resource if I keep at it for many years. Therefore I don’t want to trust it to some kind of an online service that may disappear in a few years. If I use a web based solution, I want to run it on my server, and save data to my database.
- I need to be able to get to the data, even if the client is not available for purpose of backup or migration. Ideally I would prefer it to be saved in a DB, as plain text, or in some open format.
- I should be able to update it from anywhere – from home, from work, from my phone. The ideal solution would have clients for Windows, Linux, OSX and iOS. Which means I am pretty much looking for something web based, but as mentioned – I don’t want it to be easily accessible to the outside world.
Surprisingly enough, I found noting out there that would cater to the particular set of requirements. Right now I’m looking at three potential courses of action:
The Low Tech Solution
My initial idea for this was to just use plain text files. Vim has a built in encryption tool (you can use it by typing in :X) and it runs on just about every platform (except iOS). I could keep the file in the Dropbox and access them from any machine capable running Vim. This is a very robust solution, and one that will last. Even if Dropbox goes away, the encrypted text files can be easily moved somewhere else.
On the other hand, this won’t let me to add entries from my phone. It also will force me to date my entries myself, and won’t provide built in search and navigation tools. So while this is something that will definitely work, and will definitely last, I could clearly do much better.
The Online Solution
I could potentially set up a private blog for myself. WordPress seems like an overkill for this, but I know my way around it pretty well so it is something that could work. Ideally I’d prefer something lighter. I will only be contributing text entries, and I don’t necessarily need all the features of a full blown blog. I could use something lighter like… Actually, I don’t know. What are some good, stable lightweight blogging platforms?
I could require authentication via .htaccess file and use the blog’s internal security tools to make everything private and only visible to me – both at the same time. This should keep it moderately private.
That said, this solution still faces the internet directly, and provides no encryption.
The Creative Solution
Since I can’t seem to find the right solution, I could write one myself. Data would be stored in flat files on local file system taking advantage of Dropbox or similar remote file syncing tool. The files would be encrypted for security and the GUI would do the decryption on the fly. The interface would most likely be written in Java to be platform independent. I could later create a iOS client, if I wanted to.
So those are the options so far. What do you think? Any suggestions on how to implement a private journal? Do any of you keep one? How do you do it? How do you keep it secure? Let me know. I would love to hear some alternative solutions to this problem.
How about saving to a private pastebin folder?
As for running your own (in this case pastebin) a brief google search led me to this
Have you considered a locally hosted wiki? You could even avoid setting up mysql and mediawiki and just go with a tiddlywiki – it has a journal feature built right in, with basic search, and some other goodies. No new security threat either. Since it is just a single html file, it is lightweight, easy to backup or transfer, and can be used with any browser. And if browsers advance so far they can’t deal with this file anymore, you can always use a text editor.
If you can run Ruby on your server, I’d definitively go for git-blog. Elliott’s blog seems decent to me; simple and usable. On the other hand, I’m a Git fanboy, so my view is biased ;)
As for encryption, why don’t you use HTTPS? You can simply generate your self-signed certificates and assign them to a specific subdomain, there’s no need to pay anyone.
I keep bringing up Emacs all the time, but that’s just because it’s usually a relevant response. :-)
Very similar to your vim suggestion, Emacs org-mode provides a massive amount of functionality, giving you all the organization and navigation you’ll ever need. And, like vim, Emacs has transparent encryption. Starting an encrypted org-mode journal is as simple as,
* Open Emacs
* Start a new file called my-journal.org.gpg
The first time you save it will prompt you (twice) for a symmetric passphrase to use for encryption. Then you just use that passphrase again later when opening it. For remote access: no need for Dropbox. All you need is an ssh server and you can use Emacs tramp to access/edit the file remotely as if it was a local file.
However it probably suffers from the same problems as your vim solution. I don’t know the state of Emacs on the iStuff. Also, encryption at the file level is at odds with versioning. If you wanted to check it into Git you’d really want the whole filesystem underneath encrypted, which isn’t so easy to make transparent (mount, edit, commit, unmount).
Have you considered sharing you dark secrets with the internet? We promise, we won’t tell.
I don’t get the arguments against setting this up as a locked down wordpress instance. Sure, if you were setting it up from scratch, it may seem like much work. But you already have it up and running. Couldn’t you basically clone the blog, add a .htaccess file, and be done with it? And then you could use exactly the same tools you use to post on your blog, which you are already familiar with.
To quote the book Numerical Recipes: “While this may at first seem like swatting a fly with a golden brick, it turns out that when you already have the brick, and the fly is asleep right under it, all you have to do is let it fall!”
I got addicted to Vimwiki a few weeks ago. It has a built-in diary feature (ww) that automatically creates a new file for whatever date it currently is, edits that same file anytime you open it during that day, and automatically creates an index page with the entries. You can also set this to auto-generate html each time you save a page so you can put those ‘diary wiki’ files in a server directory for remote private viewing if desired. This is in addition to your ‘normal’ wiki or wikis.
I also setup a script to automatically add each entry to a git repo on my server and sync (push and pull) that git repo (via cron) to whatever other computer I have setup in the script (currently – laptop and a 2nd server). Since this is single user, there should never be a git merge issue, as I’m only going to be working from one machine at a time. It’s working awesomely so far!
#!/bin/sh
type -P keychain &>/dev/null || { echo "I require keychain but it's not installed. Aborting." >&2; exit 1; }
eval `keychain --noask --eval --agents ssh id_rsa` || exit 1
local="$HOME/.local/share/vimwiki"
ssh_name="homeserver"
h=`hostname`
if [ "$h" = "$ssh_name" ]; then
s=""
else
s="$ssh_name"":"
fi
remote="$s""/srv/git/vimwiki"
status=`ping -qc1 google.com 2> /dev/null`
if [ -n "$status" ]; then
cd "$local"
git add .
git commit -a -m 'Autocommit'
git pull
git push
else
exit 11 # I think this is the cron exit code to try again
fi
The only element I haven’t worked on yet is doing updates from my phone (android). I’m thinking a simple private web page on my server that just has a text box that will automatically generate the correct diary file name and put it where it’s supposed to go.
Scott
@ Chris Wellons:
There is a mobile-org app for both android and ios, not sure how/if it handles encryption. It requires a webdav server too.
You should defenitly check out “Trunk Notes” from the app store. At first it sounds ridiculous to use the iPhone (in my case an iPad) as server, but hell it works great. Wiki with images, sound recording, lots of special commands (tags, tail, …) custom CSS, dropbox sync, encryption on iOS, editing in the desktop browser ( using the phone as server), or via file in the dropbox. I was even able to use the desktop decryption tool to incorporate git into the mix… ( for doing daily snapshots).
3.99$ are well spent, but if you are not sure, check out the developers blog, he highlights many of the advanced features…
Currently, I am moving all my sites to this tool – since pages are written in markdown (my old software had that as well) I only have to update image references…
http://appsonthemove.com/blog
@ Gjorgji:
Oh, hey – nice! I was searching for a private pastebin solution some time ago, and everything I found was either hosted, or required way to much effort. Not something I would be using for a journal though.
@ jambarama:
I thought about it, but meh… Tidlywiki worries me a bit because it is self contained. I’m not entirely sure I want my client to be intertwined with my data. Updates must be a bit dicey – especially if you have a lot of content in it.
@ IceBrain:
I always generate my own, unless it’s user facing solution. Then I’ll shell out a few bucks for a certificate from like Godaddy or somewhere.
Funny thing: every place I have ever worked had some sort of service hosted by a third party, which used a self signed certificate. Usually a web mail server, admin panel for something or whatever. It drives me crazy.
If our app has like 3 tech-savvy users, then fine – self signed works great. But if you have anywhere between 30 and 300 daily users, most of whom are complete idiots then you need a valid certificate. :)
@ Chris Wellons:
Yep, same problem as vim. Though I’m slowly giving up on all these requirements….
@ Tino:
Well, this is actually one of my top options. Here is a scary bit – I think I will need to color-code the admin UI on one of the blogs, to avoid posting personal entries to the public blog and vice-versa. :P
@ Scott Hansen:
Ooh! Interesting. I shall investigate this.
@ Ron:
Oh shit, nice. This might actually be worth while. :)
@ Daniel:
Holly crap! This is really cool! I did’t think about using the phone as a server, but it totally makes sense. That’s actually fairly brilliant.
Not sure if this would work as a journal, but I totally want to run a simple web-server off my phone now. Knowing apple they probably banned http serving apps by now though.
@ Liudvikas:
LOL! But my dark secrets are probably fairly boring. I sort of promised myself I won’t be one of those bloggers who write 6k words entries about how their day was. But that’s probably the kind of stuff I would track in a personal journal. Boring stuff that my future self could potentially get a kick out of some years from now – stuff for reminiscing, and remembering the “good old days”. That’s how I’m looking at this – auxiliary memory / notes for a future version of me.
I have been using notepad on windows as a journal for many years. I use the logging function you mention in your next entry and it works well. I wish that function was available in every text editor on every Operating System.
I don’t worry about encryption because it is sitting on my own hard drive and that is already password protected.
A bit late to the discussion here, but I was thinking of doing an open source web app around this idea. A bit of searching and I stumbled across an iPhone app with many of the features you requested in addition to rave reviews. I don’t have an iPhone myself otherwise I would check it out:
http://www.momentoapp.com/
Thi would be a breeze for Tinderbox. (www.eastgate.com)
It is mac only but it has all the functionality to maintain a weblog and a set of notes in the same file and give you total control over what is published and what isn’t.
Dave