Infinite Machine

Infinite Machine, or infmx, is the custom software that generates quadpoint.org. I started this project because I couldn't find a similar project that would do what I wanted how I wanted. Infinite Machine generates static content (.html files) from templates and specially-formatted documents written in a wiki-like syntax.

Infinite Machine was originally a Django application that generated pages on the fly. It had a number of caching mechanisms in place to keep up performance, and a feature called Infinite Caching was implemented to update the cache asynchronously, allowing for virtually infinite cache times.

Then I realized this was silly and unnecessary.

In summer 2010, Infinite Machine was reimplemented to use the same interface as Jekyll.

Features

Infinite Machine has features similar to other wikis, namely Wikipedia and DokuWiki. Here are some of the major features that have been implemented.

Wiki syntax

The primary component of Infinite Machine is a wiki parser. A key feature I wanted in my website software is the ability to write content in wiki-like syntax instead of HTML. I settled on the Creole specification, and Infinite Machine uses the parser from python-creole.

See the syntax page for examples.

Syntax highlighting

When source code is included in a document, it is easy to add syntax highlighting in infmx. The Pygments library is used to highlight code snippets like this:

1
2
3
4
5
6
7
#include <stdio.h>

int main(int argc, char **argv)
{
  printf("syntax highlighting is awesome\n");
  return 0;
}

Structure extraction

In true wiki spirit, Infinite Machine extracts the document title, summary, and headers to be displayed individually by a template. The summary is considered to be everything between the title header and the second level header. The table of contents is automatically generated from the header information and is displayed after the summary, as shown at the top of this page.

Downloading

Infinite Machine is an open source project. It is hosted on GitHub at msparks/infinitemachine.

It can be cloned with:

git clone git://github.com/msparks/infinitemachine.git

No fancy documentation is available yet. Infinite Machine is still new and may not be ready for general use, but feel free to submit bugs and patches.