Friday, September 25, 2009

Portable Cross Platform Personal Wiki

Problem


I have been using Atlassian Confluence Wiki Personal License (free) at home for a while now. Basically I used Confluence to record all important information, such as how I setup my own server, what directories store what, command bash command prompts and useful scripts etc. Wiki is really useful is keeping track of all the little "findings" and tricks for the future.

Besides Confluence, I am using another wiki engine at work. This creates a problem where a lot of the time, my "knowledge" is stored into different places and quite hard to search for something. At home, I cannot get access to work's wiki and vice versa.

Wouldn't it be great to have a portable personal wiki that you can bring with you no matter where you goes (at work, at home, etc) and still manage to keep track of everything that you think is important?



Quest

The problem above has led me into search for the best solution in fulfilling what I want. There are few main requirements that I want from a Wiki:


  • Portable: This means I can bring it with me no matter where I go. Having a personal wiki hosted on some site probably help but what I might not be able to access it if company firewall blocks it or for some reason, I am situated at a location with no Internet. The obvious solution to this would be a USB thumb drive. Nowdays, USB thumb drive is so small (keychain size) and easy to bring around. Furthermore, their storage capacity is getting higher and better.
  • Cross platform: I am using Mac at home but Windows/Linux at work. So I need a portable wiki that could run seamlessly in both environment.
  • Small Footprint: Given the need for portability, the Wiki probably needs a small footprint (in terms of the environment to run the wiki), so that I don't need to install anything on the host machine that I am using.
Over the years, I have been trying to find the holy grail for the problem and have attempted the following:



XAMPP is an Apache distribution that contains MySQL, PHP and Perl. It allows the user to install everything on a USB thumb drive. This is really useful if you are a Web developer (PHP for example) and want to carry your work with you everywhere. XAMPP has different distributions for Windows, Linux, Mac OS X and Solaris.

Once we have the XAMPP installed on USB drive, we then install MediaWiki, which is a Wiki engine written in PHP using MySQL to store the data.

There are various articles that describe how to install XAMPP and MediaWiki:

Lifehacker - Run Your Personal Wikipedia from a USB Stick

Also MediaWiki provides a manual to describe how to install the Wiki using WOS Portable / Uniform Server (both on Windows platform).


Verdict

I have been playing around with XAMPP + MediaWiki combination. There are few issues with it and it does not meet my requirements.



  1. Slow: Install XAMPP on my USB thumb drive took around 1 hour or more - perhaps it is my USB drive (formatted to FAT32?). Everytime I need to start XAMPP, I am required to start the XAMPP console and start both MySQL and Apache.
  2. Cross-platform: Although XAMPP provides different distribution for Mac and Windows, unfortunately I have to install both distributions and might need to migrate data back and forth for the Wiki data stores in MySQL. To get around this problem, I am using a Windows VM on my Mac to be able to use the XAMPP (Windows). This provides a consistent Wiki usage at home and work.
XAMPP + MediaWiki seems a bit fiddly and too much preparation and work (start XAMPP, start Apache and MySQL) for my requirements.

At last, I found what I am looking for:

Wiki on a stick

According to the website above, "Wiki on a stick" a personal wiki that lives in one self-modifying XHTML containing software, interface and data. Very useful for creating small websites and mantaining notes or todo-lists; completely javascript-programmable, supports images and files embedding.

Basically it is just a simple HTML file. Once you open the HTML file in your browser, you can start create Wiki pages. Everything is manipulated with javascript + XHTML in a single HTML. How cool is that!

This immediately fulfill all my requirements - portable, small footprint, cross platform! It is nothing more that a HTML page and what you need is a modern browser that supports the javascript that it needs (I am using Firefox 3+).

I have been using a while now with "Wiki on a stick" - and I truly like it. It is very portable and don't need to fiddle around the environment/platform that allows you to run the Wiki on.

However there are some gotchas that needs to beaware of when using this, which I have summarise my experience below.

Experience with "Wiki on a Stick"

Although it looks like this is the best solution for me, there are some gotchas:


  • Don't expect full blown Wiki functionality: As this Wiki is designed for its simplicity and small footprint, do not expect bells and whistles that other more powerful Wikis have.
  • Might not suitable for enterprise and multiple update: As I am not looking for multiple updates/concurrent updates, this suitable me well. However if you are looking to use this Wiki and allow concurrent updates, I would strongly recommend using other Wiki engines, such as MediaWiki, JSP Wiki, etc.
  • Binaries: Although this wiki supports images and files embedded, as you know, this is a single HTML file, embedded large binaries might not be a good ideas in a single file (imagine a Microsoft Word with 100+ images embedded). My solution to this is create a separate folders on USB drive (relative to the HTML Wiki) for images, attachments, files, etc, and use or other HTML tag in the Wiki to refer to those files.

Since using Wiki on a stick, I have also found similar personal Wiki called TiddlyWiki. It has much more support and plugins than the former.

1 comment:

Unknown said...

Hello,
The Article on Portable Cross Platform Personal Wiki is nice.It give Detail information about Cross Platform .Now a days Cross Platform App Development is in boom.Thanks for sharing the information about it. Xamarin Apps Development