+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Site Software</title>
+ <meta name="generator" content="muse.el" />
+ <meta http-equiv="Content-Type"
+ content="text/html; charset=utf-8" />
+ <link href="http://feeds.unknownlamer.org/rss/site-updates"
+ rel="alternate" type="application/rss+xml" title="Updates Feed" />
+
+<link rel="stylesheet" href="default.css" media="screen" />
+ </head>
+ <body>
+ <h1>Site Software</h1>
+ <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">Basic Setup</a>
+</dt>
+<dt>
+<a href="#sec2">Scripts</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec3">Book Database</a>
+</dt>
+<dt>
+<a href="#sec4">RSS Feed</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec5">License</a>
+</dt>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><h2><a name="sec1" id="sec1"></a>
+Basic Setup</h2>
+
+<p class="first">I work on the static content of the site using <a href="http://mwolson.org/projects/EmacsMuse.html">Emacs Muse</a>. My muse
+configuration is pretty long and available in my
+<a href="http://unknownlamer.org/darcsweb/browse?r=site-emacs;a=headblob;f=/init.d/muse.el">site-emacs repository</a>. The site itself exists in a <a href="http://unknownlamer.org/darcsweb/browse?r=unknownlamer.org;a=summary">darcs repository</a>
+which is a fork of the source repository I edit locally—the source
+repository contains muse/image files while the site repository
+contains html updates as a separate series of patches.</p>
+
+<p>This provides a very nice editing environment and makes publishing
+fairly easy—I push edits from my laptop to my workstation and then
+off to <a href="http://hcoop.net">HCoop</a> with the html updates. Almost no effort is spent dealing
+with some dumb web interface or other pointless things making it much
+easier for me to just write things and toss them up onto the web.</p>
+
+
+<h2><a name="sec2" id="sec2"></a>
+Scripts</h2>
+
+<p class="first">There are a few scripts and templates in the <a href="http://unknownlamer.org/darcsweb/browse?r=site-support;a=summary">darcsweb::site-support</a>
+repository that I use to update the
+site. <a href="http://unknownlamer.org/darcsweb/browse?r=site-support;a=headblob;f=/update.sh">darcsweb::site-support/update.sh</a> automates the process of
+sending patches off to the server via afs.</p>
+
+<h3><a name="sec3" id="sec3"></a>
+Book Database</h3>
+
+<p><a href="Book%20List.html">Book List</a> is autogenerated by <a href="http://unknownlamer.org/darcsweb/browse?r=site-support;a=headblob;f=/books.lisp">darcsweb::site-support/books.lisp</a> which
+reads a template and a small sexp <em>database</em> of book entries and spits
+out a muse file which is not kept under VC. This works well for me
+currently, but I intend to eventually <em>upgrade</em> this simple system to an
+<a href="http://common-lisp.net/project/elephant/">Elephant</a> object database with a <a href="http://common-lisp.net/project/mcclim/">CLIM</a> frontend for editing
+entries. I'll probably end up writing a minimal database manager for
+the sexp based system first.</p>
+
+
+<h3><a name="sec4" id="sec4"></a>
+RSS Feed</h3>
+
+<p class="first">The site rss feed is generated by <a href="http://unknownlamer.org/darcsweb/browse?r=site-support;a=headblob;f=/rss.lisp">darcsweb::site-support/rss.lisp</a>. It
+fetches the darcs xml changelog for interesting files and then spits
+out a tolerable feed with automagically generated links from <code>*.muse</code> to
+<code>*.html</code>. A <a href="http://unknownlamer.org/darcsweb/browse?r=site-support;a=headblob;f=/update-rss-binary">dumped binary</a> is run from a darcs hook on the main
+repository that handily updates the feed whenever I commit.</p>
+
+<p><code>apply posthook update-site-rss
+apply run-posthook</code></p>
+
+<p>Boring old Apache is used to serve up the generated feed. The feed
+stays updated when I update, and Apache deals with properly letting
+readers know when the file last changed and whatnot.</p>
+
+
+
+<h2><a name="sec5" id="sec5"></a>
+License</h2>
+
+<p class="first">All of the scripts used to generate the site are in the public domain
+unless otherwise mentioned in the files themselves. To use them
+anywhere else would require modification, but a few chunks of code
+could be generally useful for other things.</p>
+
+
+ <!-- Page published by Emacs Muse ends here -->
+
+ <p class="cke-buttons">
+ <!-- validating badges, any browser, etc -->
+ <a href="http://validator.w3.org/check/referer"><img
+ src="http://www.w3.org/Icons/valid-xhtml10"
+ alt="Valid XHTML 1.0!" /></a>
+
+ <a href="http://www.anybrowser.org/campaign/"><img
+ src="img/buttons/w3c_ab.png" alt="[ Viewable With Any Browser
+ ]" /></a>
+
+ <a href="http://www.debian.org/"><img
+ src="img/buttons/debian.png" alt="[ Powered by Debian ]" /></a>
+
+ <a href="http://hcoop.net/">
+ <img src="img/buttons/hcoop.png"
+ alt="[ Hosted by HCoop]" />
+ </a>
+
+ <a href="http://www.fsf.org/register_form?referrer=114">
+ <img src="img/buttons/fsf_member.png"
+ alt="[ FSF Associate Member ]" />
+ </a>
+ </p>
+
+<p class="cke-footer"><captain_krunk> ntk is currently using "telnet fyodor 25" to send email
+</p>
+<p class="cke-timestamp">Last Modified:
+ September 28, 2008</p>
+ </body>
+</html>
\ No newline at end of file