Migrate the site to Jekyll

In an effort to start updating the site more regularly, I am integrating
a file-based blog-aware static site generator (Jekyll).  With this in
place, there's no need for the PHP to generate page content.  Instead,
generate all pages using Jekyll.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Add site news item about Jekyll

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Update the licensing information

The previous page was a bit vague about how the code was licensed under
MIT and content under CC BY (since the distinction between code and
content is unclear).  Clarify the wording to indicate that everything is
available under CC BY (with exceptions) and code and markup are also
under MIT.

Add the programs to the exceptions list, just to further clarify that
programs are covered by their own licenses.

Link to the source on GitHub.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Use URL with trailing slash as canonical for index pages

No need for duplicate URLs to access the same resource.  Treat the one
with a trailing slash as canonical and redirect to it when necessary.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Generate sitemap.xml

As a minor assistance to crawlers.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Create the main blog page

Create an index page for the blog (bits) section of the website which
contains a list of post excerpts with links to the post page.  Include a
plugin to add some more post data to the Liquid information.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Update the post layout to include dates

Use the same trick/hack from the blog index page.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Create an Atom feed for the blog

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Remove extra space between sentences in output

The page is displayed in a proportional font, so there is no need for
the second space between sentences.  Remove it.

Note:  The source retains two spaces because I edit in monospace fonts.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Convert &reg; to &#0174;

The content will be used in cases where a doctype defining this entity
is not available (e.g. in Atom feeds).  Therefore, use a numeric entity
instead.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Fix content-type meta information for HTML5

The HTML5 spec requires the content-type value to be lower-case.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Technically, Jekyll is the generator

Note that hand-crafted pages are specifically prohibited from including
including a generator meta element.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Fix metadata to meet HTML5 spec.

Change copyright rel to license in header (already correct in footer).
Remove the copyright and license meta elements since they are not
registered and redundant with the license link.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Big .htaccess cleanup

Fix the RewriteRules to use correct variable names and to preserve the
query string when rewriting (currently unused, but may be in the
future).

Lots and lots of debugging to get MultiViews working for serving XHTML.
This is an unholy abomination, but it works.  I hope Apache gets a fix
for the qs parameter eventually.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Compress text responses

Use mod_deflate to compress responses which include text content (text,
JavaScript, XML) to reduce bandwidth.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Specify charset for HTML, XHTML, Atom

The markup files for this site are always UTF-8 (or a subset such as
US-ASCII), so advise the client early in the Content-Type header to
prevent possible errors from charset detection.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Check XML before publishing

We want to abort site generation if we have invalid XML.  The XHTML
files are checked (implicitly) during the conversion to XSLT, so just
check the Atom feeds and any other generic XML files.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Rename the Atom feed

Move the Atom feed into a feeds directory below bits.  This directory
will hold all of the feeds for the blog (if/when tag feeds are added).

Also change the extension from .xml to .atom.  This makes it easier to
serve it with the correct media type on the server and to distinguish it
from any future RSS XML.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Post about changing the default browser in Thunderbird

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Post about serving XHTML with Apache MultiViews

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>