As an website, mearie.org has several unusual characteristics.
There are two personal domains operated by Kang Seonghoon, which can be considered as integral parts of broader mearie.org. This includes the following websites:
- The primary website, and contains official materials written and created by Kang Seonghoon.
- It is a sort of blog and basically available in Korean, but I sometimes find time to write English posts.
- A personal encyclopedia project. Only available in Korean.
- A companion to main
mearie.org website, and contains lots of unofficial materials (i.e. subject to change wildly and considered experimental).
- Source code repositories powered by Mercurial and Subversion, respectively. The latter is only used for legacy projects. Several major projects are also mirrored in bitbucket.
- Used to host TokigunStudio, a precursor to mearie.org. Its sole role is to maintain permalinks to it.
A software for mearie.org had quite strange requirements:
- Should not force plain HTML, but should allow it if needed. I have no difficulty in writing plain HTML but it is hard to maintain.
- Should be mainly static. I didn't use most dynamic features in many softwares and still they cause overheads to the server.
- Should not use databases, unless it is just a cache. It has to be readable even if the software is gone.
- Should be maintainable off-line. My laptop doesn't have stable Internet connection anyway, and I prefer to write long articles in Vim.
- Should be maintained in some VCS, and preferably in distributed VCS.
- Should support bilingual environment.
- Should have search engine friendly URLs, and still consise.
- Should be scriptable.
- Should be entirely composed of minimal number of free softwares.
I have tested several methods to meet these requirements for years, and my current solution (as used in mearie.org) reflects them. Unfortunately I didn't find any other solutions; most BBSes, blogs and CMSes are rejected early. werc was close but not perfect.
Current mearie.org solution consists of two Python scripts, Mako templating engine, Pandoc, ImageMagick, Mercurial and Makefile. In detail:
- I write the plain (actually Markdown) text and add it to Mercurial repository.
make builds the website automatically and incrementally.
- Makefile rebuilds itself via Python script if the repository has been changed. So newly added file should be handled automatically.
- Makefile also converts the plain text file into HTML file via Python script, which invokes Pandoc and Mako.
- Pandoc converts Markdown syntax. Since this is a bit slow, the results are cached for later use. (This is so efficient that I could use it in a navigation construction.)
- Mako does templating jobs and also allows some compile-time scripting in Python.
- Image and other resources are handled by custom Mako procedure on-demand.
- Web server serves compiled pages.
- Bilingual pages are handled by Apache's
mod_negotiation. So I can easily make
blah.ko.txt and link to just
blah (note no
- Other than that, all pages are static and can be efficiently served.
This solution is somewhat strange but works well. You can find the website source in Mercurial repository. (Also linked far below of this page.)