Initialize new repo
authorclinton <clinton@unknownlamer.org>
Tue, 22 Jul 2008 20:46:36 +0000 (20:46 +0000)
committerClinton Ebadi <clinton@unknownlamer.org>
Mon, 2 Dec 2019 01:22:58 +0000 (20:22 -0500)
19 files changed:
Bicycle Routes.html [new file with mode: 0644]
Bicycle.html [new file with mode: 0644]
Books.html [new file with mode: 0644]
Cary to Greensboro Bicycle Route.html [new file with mode: 0644]
Code.html [new file with mode: 0644]
Lisp.html [new file with mode: 0644]
Metaobject Protocols.html [new file with mode: 0644]
Music I Enjoy.html [new file with mode: 0644]
My Bicycle.html [new file with mode: 0644]
Old Viewpoints.html [new file with mode: 0644]
Politics.html [new file with mode: 0644]
Quotations.html [new file with mode: 0644]
Reading.html [new file with mode: 0644]
SCWM.html [new file with mode: 0644]
TRUTH.html [new file with mode: 0644]
UCWNotes.html [new file with mode: 0644]
William James - The Varieties of Religious Experience.html [new file with mode: 0644]
Wisdom.html [new file with mode: 0644]
index.html [new file with mode: 0644]

diff --git a/Bicycle Routes.html b/Bicycle Routes.html
new file mode 100644 (file)
index 0000000..36286ef
--- /dev/null
@@ -0,0 +1,101 @@
+<?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>Bicycle Routes</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>Bicycle Routes</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">My Routes</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec2">Bikely Routes</a>
+</dt>
+<dt>
+<a href="#sec3">Cary to Greensboro Bicycle Route</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec4">Maryland/DC Routes</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec5">Bikewashington</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><p>I travel mostly by bicycle, and have to plot routes out for myself
+often. I think some may be useful to people in the Baltimore area of
+Maryland.</p>
+
+<h2><a name="sec1" id="sec1"></a>
+My Routes</h2>
+
+<h3><a name="sec2" id="sec2"></a>
+<a href="http://www.bikely.com/listpaths/by/clinton">Bikely Routes</a></h3>
+
+
+<h3><a name="sec3" id="sec3"></a>
+<a href="Cary%20to%20Greensboro%20Bicycle%20Route.html">Cary to Greensboro Bicycle Route</a></h3>
+
+
+
+<h2><a name="sec4" id="sec4"></a>
+Maryland/DC Routes</h2>
+
+<h3><a name="sec5" id="sec5"></a>
+<a href="http://bikewashington.org/routes/all.htm">Bikewashington</a></h3>
+
+<p class="first">A nice collection of routes for travelling around Maryland with full
+cues and maps.</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">Jessie: i stuck the phone antenna up the dogs nose and he ignored me
+</p>
+<p class="cke-timestamp">Last Modified:
+    March 13, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/Bicycle.html b/Bicycle.html
new file mode 100644 (file)
index 0000000..9042ee9
--- /dev/null
@@ -0,0 +1,108 @@
+<?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>Bicycles Are Our Friends</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>Bicycles Are Our Friends</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">Bicycle Routes</a>
+</dt>
+<dt>
+<a href="#sec2">My Bicycle</a>
+</dt>
+<dt>
+<a href="#sec3">Bicycling Journal Entries</a>
+</dt>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><h2><a name="sec1" id="sec1"></a>
+<a href="Bicycle%20Routes.html">Bicycle Routes</a></h2>
+
+
+<h2><a name="sec2" id="sec2"></a>
+<a href="My%20Bicycle.html">My Bicycle</a></h2>
+
+
+<h2><a name="sec3" id="sec3"></a>
+<a href="http://journal.unknownlamer.org/tag/bicycle">Bicycling Journal Entries</a></h2>
+
+<p class="first">I write about various bicycle related things in my journal.</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">                     How can you accept social supression                      
+                      This weak state of mind in our time                      
+                        I demand release from hypocrisy                        
+                 I'd rather die than be held down, forced down                 
+
+</p>
+<p class="cke-timestamp">Last Modified:
+    July 22, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/Books.html b/Books.html
new file mode 100644 (file)
index 0000000..b5108f1
--- /dev/null
@@ -0,0 +1,56 @@
+<?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>Books</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>Books</h1>
+   <div class="contents">
+<dl>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><p><a name="title" id="title"></a>
+Book Reviews of a Sort</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">And did those feet in ancient times
+Walk bare upon these lonely streets like mine?
+Does God watch us from that penthouse high above
+His children down below who live on air and love?
+</p>
+<p class="cke-timestamp">Last Modified:
+    March 13, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/Cary to Greensboro Bicycle Route.html b/Cary to Greensboro Bicycle Route.html
new file mode 100644 (file)
index 0000000..28194db
--- /dev/null
@@ -0,0 +1,153 @@
+<?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>Earth Day Trip to Greensboro</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>Earth Day Trip to Greensboro</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">Route</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec2">UNC Greensboro</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec3">Return Route</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec4">Alternative</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><p>UNCGreen was having an Earth Day celebration a bit early (to avoid
+conflicts with final exams) on April 19, 2007. I know several people
+who attend UNCG, and I was in Morrisville at the time so I decided to
+tape my handlebars green and make the trek.</p>
+
+<h2><a name="sec1" id="sec1"></a>
+Route</h2>
+
+<p class="first">The route starts in the middle of Morrisville/Cary on Davis Drive at
+the corner of High House Road facing South, and ends at the Amtrak
+Depot in Greensboro.</p>
+
+<ol>
+<li>R High House Road</li>
+<li>Continue on High House - becomes Green Hill Road</li>
+<li>L Lewter Shop Road @ End of Road</li>
+<li>R NC-751</li>
+<li>L Martha's Chapel Road</li>
+<li>R Farrington Road (1008) @ Jordan Lake</li>
+<li>L Lystra Road @ Light</li>
+<li>L Jack Bennet Road</li>
+<li>L US-15-501 @ Light</li>
+<li>R Andrew's Store Road @ Shop Quick Gas Station</li>
+<li>L Mann's Chapel Road</li>
+<li>R Oak Hill Road</li>
+<li>R Hamlet Chapel Road</li>
+<li>L River Road</li>
+<li>L Chicken Bridge Road (crossing Haw River)</li>
+<li>R Mount Olive Church Road</li>
+<li>Continue on Mount Olive - becomes Russell Road</li>
+<li>L Greenhill Road</li>
+<li>R Old Switchboard Road</li>
+<li>R Lindley Mill Road</li>
+<li>L Major Hill Road</li>
+<li>Bear R Hollman Mill Road</li>
+<li>L Griffin Road</li>
+<li>L Snow Camp Road</li>
+<li>R Sylvan School Road</li>
+<li>Bear R Sylvan School Road - becomes W Greensboro Chapel
+Hill Road (1005) at Pleasant Hill Church Road</li>
+<li>L Alamance Church Road</li>
+<li>Cross 40 and enter Greensboro</li>
+<li>R Willow Road</li>
+<li>L McConnel Road</li>
+<li>Bear L E Washington Street</li>
+<li>Arrive at Amtrak Depot</li>
+</ol>
+
+<h3><a name="sec2" id="sec2"></a>
+UNC Greensboro</h3>
+
+<ol>
+<li>Continue on E Washington Street</li>
+<li>L S Spring Street</li>
+<li>Bear R Spring Garden Street</li>
+<li>R Tate Street</li>
+<li>Arrive at University</li>
+</ol>
+
+
+
+<h2><a name="sec3" id="sec3"></a>
+Return Route</h2>
+
+<p class="first">I based my route on a route from the
+<a href="http://cycling.ahands.org/greensboro-raleigh.html">Greensboro Amtrak to Raleigh Amtrak</a>. I had to reverse it as it was in
+the wrong direction. It should be obvious how to get back to Cary or
+Morrisville; simply hit whatever road in town you need from High House
+Road.</p>
+
+<h3><a name="sec4" id="sec4"></a>
+Alternative</h3>
+
+<p class="first">Instead of turning on Andrew's Store Road, continue on Mann's Chapel
+until it hits US-15/501. If you take the left you will end up
+intersection with NC54 or can go into Chapel Hill. NC54 East can be
+taken all the way back to Raleigh. It isn't <em>that</em> bad to ride on, but
+I'd recommend not doing it after dark unless your bicycle is very
+bright.</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">&lt;captain_krunk&gt; ntk is currently using "telnet fyodor 25" to send email
+</p>
+<p class="cke-timestamp">Last Modified:
+    March 13, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/Code.html b/Code.html
new file mode 100644 (file)
index 0000000..1b2f292
--- /dev/null
+++ b/Code.html
@@ -0,0 +1,63 @@
+<?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>Programming Projects</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>Programming Projects</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">Nothing Much to See Here</a>
+</dt>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><h2><a name="sec1" id="sec1"></a>
+Nothing Much to See Here</h2>
+
+<p class="first">All of my current, and some not so current, projects are browsable via
+<a href="http://hnknownalmer.org/darcsweb/browse">my darcsweb</a>. You might want to take a look at my <a href="Lisp.html">Lisp projects</a> page.</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">Danielle: well road signs were pissing me off
+Danielle: I took one of them out, but the other haven't followed as
+          planned
+</p>
+<p class="cke-timestamp">Last Modified:
+    July 22, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/Lisp.html b/Lisp.html
new file mode 100644 (file)
index 0000000..a06ff56
--- /dev/null
+++ b/Lisp.html
@@ -0,0 +1,89 @@
+<?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>Lisp is for Cool People</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>Lisp is for Cool People</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">Scheme Constraints Window Manager</a>
+</dt>
+<dt>
+<a href="#sec2">Metaobject Protocols</a>
+</dt>
+<dt>
+<a href="#sec3">UCW Structural Notes</a>
+</dt>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><p>I am a programmer, and I write most of my software in Scheme and
+Common Lisp. Lately I have been tending toward Common Lisp for
+potential commercial ventures as there is a very solid set of
+libraries for doing almost anything in Common Lisp. It's like using
+perl, but with well designed libraries and readable applications.</p>
+
+<h2><a name="sec1" id="sec1"></a>
+<a href="SCWM.html">Scheme Constraints Window Manager</a></h2>
+
+<p class="first">Some work I have done on <a href="http://scwm.sourceforge.net">SCWM</a>.</p>
+
+
+<h2><a name="sec2" id="sec2"></a>
+<a href="Metaobject%20Protocols.html">Metaobject Protocols</a></h2>
+
+<p class="first">Notes for a short (fifteen minute) presentation on MOPs.</p>
+
+
+<h2><a name="sec3" id="sec3"></a>
+<a href="UCWNotes.html">UCW Structural Notes</a></h2>
+
+<p class="first">Notes on the structure of the <code>ucw_dev</code> branch of <a href="http://common-lisp.net/project/ucw/">UnCommon Web</a>. The
+source is nicely documented, but lacked a handy roadmap so I compiled
+a few notes after reading through it.</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">Corinne: this is why we should have designated bath buddies
+Corinne: to get places you cant reach because youre slippery and in
+         case you get a lil tooo slippery and crack your head open
+         someone can call the coast guard and save you
+</p>
+<p class="cke-timestamp">Last Modified:
+    March 13, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/Metaobject Protocols.html b/Metaobject Protocols.html
new file mode 100644 (file)
index 0000000..42d923b
--- /dev/null
@@ -0,0 +1,817 @@
+<?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>Metaobject Protocols</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>Metaobject Protocols</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">Background</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec2">Object Protocols</a>
+</dt>
+<dt>
+<a href="#sec3">CLOS Way of OO</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec4">Classes for scratch data and types</a>
+</dt>
+<dt>
+<a href="#sec5">Generics with methods that implement protocols</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<a href="#sec6">Limitations of Default Language Behavior</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec7">Slot Storage</a>
+</dt>
+<dt>
+<a href="#sec8">Design Patterns</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec9">Metasoftware</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec10">Runtime Generated Classes</a>
+</dt>
+<dt>
+<a href="#sec11">Object Inspection</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec12">Metaobject Protocols</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec13">Limited/Generalized Internals of the Implementation</a>
+</dt>
+<dt>
+<a href="#sec14">Classes of MOPs</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec15">Reflective</a>
+</dt>
+<dt>
+<a href="#sec16">Intercessory</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec17">Violation of Encapsulation?</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec18">MOP Design Principles</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec19">Layered Protocol</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec20">Top level <strong>must</strong> call lower level functions</a>
+</dt>
+<dt>
+<a href="#sec21">Lower level methods are easier to customize</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec22">Functional Where Possible</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec23">Memoization</a>
+</dt>
+<dt>
+<a href="#sec24">Cleaner Code</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec25">Procedural Only Where Neccesary</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec26">Examples</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec27">Object Inspector</a>
+</dt>
+<dt>
+<a href="#sec28">Observer Design Pattern</a>
+</dt>
+<dt>
+<a href="#sec29">Real World</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec30">UCW and Arnesi</a>
+</dt>
+<dt>
+<a href="#sec31">CLSQL</a>
+</dt>
+<dt>
+<a href="#sec32">Elephant</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<a href="#sec33">Sources &amp;amp; Further Reading</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec34">Sources</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec35">The Art of the Metaobject Protocol</a>
+</dt>
+<dt>
+<a href="#sec36">CLOS MOP Specification</a>
+</dt>
+<dt>
+<a href="#sec37">Metaobject Protocols: Why We Want Them and What Else They Can Do</a>
+</dt>
+<dt>
+<a href="#sec38">Why Are Black Boxes so Hard to Reuse?</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec39">Further Reading</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec40">A Metaobject Protocol for C++</a>
+</dt>
+<dt>
+<a href="#sec41">Open Implementations and Metaobject Protocols</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><p>In Fall of 2006 I did a small project on Metaobject Protocols for my
+CS 331 class. Here lie my notes which may perhaps be useful to
+others. I hope to expand them into something more useful over time.</p>
+
+<h2><a name="sec1" id="sec1"></a>
+Background</h2>
+
+<h3><a name="sec2" id="sec2"></a>
+Object Protocols</h3>
+
+<p class="first">An object protocol is a set of methods and specification of the
+interactions between the methods which provide some generic behavior
+(e.g. of a sequence) that are then implemented by classes which
+conform to the protocol (e.g. a vector or list). In most object
+systems a class contains both the methods which implement a protocol
+and the data used by the implementation. The intent is to emulate
+state machines which pass messages between each other.</p>
+
+
+<h3><a name="sec3" id="sec3"></a>
+CLOS Way of OO</h3>
+
+<p class="first">The Common Lisp Object System (CLOS) is different. It separates
+the data and method concepts into classes and generics. A class
+contains data fields only, and a generic has methods specialized for
+certain types attached to it. This seems a bit weird at first, but is
+significantly more powerful as it encourages complete encapsulation
+through its use of classes primarily for method specialization rather
+than for state storage.</p>
+
+
+<h4><a name="sec4" id="sec4"></a>
+Classes for scratch data and types</h4>
+
+<p class="first">In CLOS classes store data in slots (which are the same as data
+members). Encapsulation is not provided; any bit of code can use
+<code>slot-value</code> to access or set the value of a slot. This may seem odd at
+first, but encapsulation is of questionable importance as the slots
+are meant only to be used by the protocol defined around the class.</p>
+
+<p>Classes are defined with defclass</p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">name</span> (superclasses ...)
+  ((slot-name <span style="color: #b0c4de;">:accessor</span> slot-accessor ...)
+   ...)
+  (class-options ...))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">example</span> ()
+  ((foo <span style="color: #b0c4de;">:accessor</span> foo-of <span style="color: #b0c4de;">:initform</span> 5)))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">example-child</span> (example)
+  ((bar <span style="color: #b0c4de;">:accessor</span> bar-of <span style="color: #b0c4de;">:initform</span> (list 1 2 3))))
+</pre>
+
+<p>Slot defintions have several option; the above example shows only the
+<code>:accessor</code> and <code>:initform</code> options which are the most commonly
+used. <code>:accessor</code> generates an accessor for the slot (e.g. if you have
+an instance of <code>example</code> you can <code>(setf (foo-of some-example-instance) 'some-value)</code> to set and <code>(foo-of some-example-instance)</code> to access the
+value). <code>:initform</code> provides a default initial value for the slot as a
+symbolic expression to be evaluated when an instance is created.</p>
+
+
+<h4><a name="sec5" id="sec5"></a>
+Generics with methods that implement protocols</h4>
+
+<p class="first">Generics are like normal functions in Lisp, but they only provide a
+lambda list (parameter list). Methods are added to the generic which
+specialize on the types of their parameters, and provide the actual
+implementation. This allows for rich layered protocols to be developed
+which can enable selective modification of individual facets with
+minimal code.</p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">generic</span> (parameters ...)
+  (options) ...)
+
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">generic-name</span> ((parameter type) parameter ...)
+  <span style="color: #b3b3b3;">"documentation string"</span>
+  body)
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">foo</span> (bar baz quux)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Process the baz with the quux capacitor to make the
+foo widget fly into the sky at warp speed"</span>))
+
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">foo</span> ((bar example) baz (quux capacitor))
+  (launch bar (process-with quux baz)))
+</pre>
+
+<p>A method lambda list differs from a normal lambda list only in that it
+can specify the type of the parameter using the notation <code>(name type)</code>.
+Note also that methods can specialize on the types of every
+argument and not just the first one. This is quite powerful for
+reasons outside of the scope of this presentation.</p>
+
+
+
+
+<h2><a name="sec6" id="sec6"></a>
+Limitations of Default Language Behavior</h2>
+
+<p class="first">The behavior of a language is a compromise between many competing
+issues that attempts to be as generally useful as possible, and most
+applications will have no issue with the default behavior. There are,
+however, certain applications that could be cleanly written with minor
+modifications to the behavior of the language, but would be impossible
+or quite difficult to write otherwise.</p>
+
+<h3><a name="sec7" id="sec7"></a>
+Slot Storage</h3>
+
+<p class="first">Most languages choose to preallocate storage for all of the slots of
+an instance. Imagine a contact database that stored information about
+people as slots of the class. There may be dozens of slots, but often
+many of them will be left blank. If slot storage is preallocated much
+memory will be wasted and the system may not be able to fit into the
+memory of the hardware it must run on (perhaps for financial reasons,
+huge datasets, etc.).</p>
+
+<p>To save memory the author of the contact database must implement his
+own system to store properties and allocate them lazily. This
+represents a fair bit of effort, and would implement a system that
+differed from the existing slot system of classes only in the method
+of data storage.</p>
+
+<p>It would be useful if there were a way to customize instance
+allocation. The customizations would be minor and require overriding
+only the initial allocation behavior and the behavior of the first
+assignment to the slot. It is a a trivial problem in a language that
+allows customization of these.</p>
+
+
+<h3><a name="sec8" id="sec8"></a>
+Design Patterns</h3>
+
+<p class="first">Design Patterns are generalized versions of common patterns found in
+programs. Many of them are merely methods to get around deficiencies
+in the language, and can be quite messy to implement in some
+languages.</p>
+
+
+
+<h2><a name="sec9" id="sec9"></a>
+Metasoftware</h2>
+
+<p class="first">Some types of programs could be written easily if the language were
+customizable, but are nearly impossible to write when it is not.</p>
+
+<h3><a name="sec10" id="sec10"></a>
+Runtime Generated Classes</h3>
+
+<p class="first">Say you wanted to write a video game where players could create their
+own objects, attach behaviors to the objects, and perhaps mix
+different objects together to create new ones. When you abstract the
+problem this looks just like an object system!  Wouldn't it be nice if
+your program could create new objects and methods on the fly portably?</p>
+
+
+<h3><a name="sec11" id="sec11"></a>
+Object Inspection</h3>
+
+<p class="first">Imagine if you were developing a complicated program with many
+different objects that interacted in fairly complex ways. A tool to
+inspect the structure of objects while debugging would be quite
+useful, but in a traditional language would be impossible to implement
+portably. This could force you to purchase a certain compiler
+implementation which provided one, and even then would more than
+likely not be customizable.</p>
+
+<p>This problem can be generalized to apply to most debugging tools; it
+would be useful to write such tools portably because users of the
+<em>language</em> and not the <em>compiler</em> need to debug software. Sharing
+infrastructure would result in better tools (more developers), and
+save man-years of wasted effort that comes with having to rewrite
+non-portable functionality from scratch multiple times.</p>
+
+
+
+<h2><a name="sec12" id="sec12"></a>
+Metaobject Protocols</h2>
+
+<h3><a name="sec13" id="sec13"></a>
+Limited/Generalized Internals of the Implementation</h3>
+
+<p class="first">A Metaobject protocol is a generalized and limited subset of the
+underlying implementation of the language. It is generalized and
+limited in scope to allow for multiple implementation strategies;
+this, along with careful design, is essential because programming
+language research is ever advancing and new techniques for creating
+more reliable and faster implementations are still being discovered.</p>
+
+<p>This subset of the implementation is exported as a set of methods on
+metaobjects. Thus the system is implemented in itself. The system can
+then be customized using the extension and overriding features of the
+system.</p>
+
+
+<h3><a name="sec14" id="sec14"></a>
+Classes of MOPs</h3>
+
+<h4><a name="sec15" id="sec15"></a>
+Reflective</h4>
+
+<p class="first">A reflective MOP provides a functional/procedural interface to
+information about the system. It exposes class relationships, the
+methods are attached to a generic, etc. A reflective MOP often
+provides some functionality for creating new classes at runtime.</p>
+
+<h5>Example: Object Inspector</h5>
+
+
+<h5>Example: Runtime Generated Classes and Methods</h5>
+
+
+
+<h4><a name="sec16" id="sec16"></a>
+Intercessory</h4>
+
+<p class="first">Intercessory MOPs allow the user to customize language behavior by
+implementing methods which override certain aspects of the language
+behavior. This class of MOPs are what make MOPs especially
+powerful. No longer must a problem be restructured to fit the
+implementation language; the underyling language can be reshaped to
+fit the task at hand, and obfuscation of the intended structure of the
+application can be avoided.</p>
+
+<h5>Example: Lazily Allocated Slots</h5>
+
+
+<h5>Example: Observer Design Pattern</h5>
+
+
+
+
+<h3><a name="sec17" id="sec17"></a>
+Violation of Encapsulation?</h3>
+
+<p class="first">A MOP may seem like a violation of encapsulation by revealing some
+implementation details, but in reality a well designed protocol does
+not reveal anything which was not already exposed. Implementation
+decisions affect users, and some of these details do leak through to
+higher levels (e.g. the memory layout of slots). Implicit in the
+protocol specification are these implementation details, and the MOP
+merely makes this limited subset available for customization.</p>
+
+<p>A MOP makes it possible to customize certain implementation decisions
+that do not <strong>radically</strong> alter the behavior of the base language. The
+conceptual vocabulary of the system retains its meaning, and so code
+written in one dialect can interact with code written in another
+without knowing that they speak different ones.</p>
+
+
+
+<h2><a name="sec18" id="sec18"></a>
+MOP Design Principles</h2>
+
+<h3><a name="sec19" id="sec19"></a>
+Layered Protocol</h3>
+
+<p class="first">A layered protocol design is good for both meta and normal object
+protocols, and enables a combinatorial explosion of customizations to
+the protocol.</p>
+
+<h4><a name="sec20" id="sec20"></a>
+Top level <strong>must</strong> call lower level functions</h4>
+
+<p class="first">The top level methods of a layered metaobject protocol are required to
+call certain methods to perform some tasks. This both makes it easier
+to customize the top level methods (which perform very broad tasks) by
+providing some pieces of them for the programmer, and allows more
+customization to be done by opening up the replacement of lower level
+functions as a way to alter a small detail of the high level behavior.</p>
+
+
+<h4><a name="sec21" id="sec21"></a>
+Lower level methods are easier to customize</h4>
+
+<p class="first">The lower level methods of a MOP are limited in scope and can be
+implemented easily. Often the changes to language behavior that are
+wanted are very small, and having methods that perform simple tasks
+which are often customized reduces the effort required to extend the
+system.</p>
+
+
+
+<h3><a name="sec22" id="sec22"></a>
+Functional Where Possible</h3>
+
+<p class="first">Functional protocols are preferred for MOPs (and object protocol in
+general). Functional protocols open up several optimizations for the
+implementation without burdening the user of the protocol.</p>
+
+<h4><a name="sec23" id="sec23"></a>
+Memoization</h4>
+
+<p class="first">Memoization is the process of saving the results of a function call
+for future use. This avoids expensive recomputation of values which
+have not changed (recall that a true function will always return the
+same result when given the same arguments).</p>
+
+<p>A functional MOP can be optimized easily by exploiting this property
+to memoize the return values of calls to expensive operations. A MOP
+must be be very fast to avoid making programs unusably slow, and
+memoization is able to give an appreciable speedup in many cases
+without an insignificant burden on memory usage.</p>
+
+<h5>Constant Shared Return Values</h5>
+
+<p>Disallowing the modification of values returned by protocol methods
+allows the implementation to return large data structures by reference
+to avoid expensive copying without having to do expensive data
+integrity checks.</p>
+
+
+
+<h4><a name="sec24" id="sec24"></a>
+Cleaner Code</h4>
+
+
+
+<h3><a name="sec25" id="sec25"></a>
+Procedural Only Where Neccesary</h3>
+
+<p class="first">Some operations like method invocation are inheretly stateful and so
+must use a procedural protocol. There is no benefit to be gained from
+using a functional protocol, and indeed an attempt would result in
+obtuse code that severely restricted the implementor. Do note that
+only a very small part of method invocation is stateful (the actual
+call), and most of it can be implemented functionally (e.g. computing
+the discriminating function).</p>
+
+
+
+<h2><a name="sec26" id="sec26"></a>
+Examples</h2>
+
+<h3><a name="sec27" id="sec27"></a>
+Object Inspector</h3>
+
+<p class="first">A primitive portable object inspector is presented here.</p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">example-inspect</span> (instance)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Simple object inspector using CLOS MOP"</span>))
+
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">example-inspect</span> ((instance t))
+  (format t <span style="color: #b3b3b3;">"Simple Object~% Value: ~S~%"</span> instance))
+
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">example-inspect</span> ((instance standard-object))
+  (<span style="color: #00ffff;">let</span> ((class (class-of instance)))
+    (format t <span style="color: #b3b3b3;">"Class: ~S, Superclasses: ~S~%"</span>
+            (class-name class)
+            (mapcar #'class-name
+                    (class-precedence-list class)))
+    (<span style="color: #00ffff;">let</span> ((slot-names (mapcar #'slot-definition-name
+                              (class-slots class))))
+      (format t <span style="color: #b3b3b3;">"Slots: ~%~{ ~S~%~}"</span> slot-names)
+      (inspect-loop slot-names instance #'example-inspect))))
+
+(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">inspect-loop</span> (slots instance inspector)
+  (format t <span style="color: #b3b3b3;">"Enter slot to inspect or :pop to go up one level: "</span>)
+  (finish-output)
+  (<span style="color: #00ffff;">let*</span> ((slot (read))
+         (found-slot (member slot slots)))
+    (<span style="color: #00ffff;">cond</span> (found-slot
+           (funcall inspector (slot-value instance slot))
+           (funcall inspector instance))
+          ((eq slot <span style="color: #b0c4de;">:pop</span>) t)
+          (t
+           (format t <span style="color: #b3b3b3;">"~S is invalid. Valid slot names: ~S~%"</span>
+                   slot
+                   slots)
+           (inspect-loop slots instance inspector)))))
+</pre>
+
+
+<h3><a name="sec28" id="sec28"></a>
+Observer Design Pattern</h3>
+
+<p class="first">A simple implementation of the observer pattern is under 100 lines,
+and the user level code requires only a single line of code to make
+any existing class observable.</p>
+
+<p>In a language lacking a MOP, implementing the observer pattern
+requires modifying every accessor of a class to explicitly invoke any
+observers, and neccesitates the addition of a mixin class to the class
+heirarchy. The fact that an object can be observed is a meta property
+of the class, and forcing it to be implemented at the application
+level dirties the inheritance heirarchy and adds uneccesary meta
+details to the program.</p>
+
+<pre class="src">
+<span style="color: #ff7f24;">;;; </span><span style="color: #ff7f24;">This metaclass adds a slot to instances which use it, and so the
+</span><span style="color: #ff7f24;">;;; </span><span style="color: #ff7f24;">system is defined in its own package to avoid name conflicts
+</span>(<span style="color: #00ffff;">defpackage</span> <span style="color: #98fb98;">:observer</span>
+  (<span style="color: #b0c4de;">:use</span> <span style="color: #b0c4de;">:cl</span> #+sbcl <span style="color: #b0c4de;">:sb-mop</span>)
+  (<span style="color: #b0c4de;">:export</span> observable register-observer unregister-observer))
+
+(<span style="color: #00ffff;">in-package</span> <span style="color: #b0c4de;">:observer</span>)
+
+<span style="color: #ff7f24;">;;; </span><span style="color: #ff7f24;">Metaclass
+</span>(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">observable</span> (standard-class)
+  ()
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Metaclass for observable objects"</span>))
+
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">compute-slots</span> ((class observable))
+  <span style="color: #b3b3b3;">"Add a slot for storing observers to observable instances"</span>
+  (cons (make-instance 'standard-effective-slot-definition
+                       <span style="color: #b0c4de;">:name</span> 'observers
+                       <span style="color: #b0c4de;">:initform</span> '(make-hash-table)
+                       <span style="color: #b0c4de;">:initfunction</span> #'(<span style="color: #00ffff;">lambda</span> () (make-hash-table)))
+        (call-next-method)))
+
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">validate-superclass</span> ((class observable)
+                                (super standard-class))
+  t)
+
+(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">register-observer</span> (instance slot-name key closure)
+  (register-observer-with-class (class-of instance)
+                                instance
+                                slot-name
+                                key
+                                closure))
+
+(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">unregister-observer</span> (instance slot-name key)
+  (unregister-observer-with-class (class-of instance)
+                                  instance
+                                  slot-name
+                                  key))
+
+(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">get-observers</span> (instance slot-name)
+  (get-observers-with-class (class-of instance)
+                            instance
+                            slot-name))
+
+(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">add-observer-table</span> (instance slot-name)
+  (setf (gethash slot-name (slot-value instance
+                                       'observers))
+        (make-hash-table)))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">register-observer-with-class</span> (class instance slot-name key closure))
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">unregister-observer-with-class</span> (class
+                                            instance
+                                            slot-name
+                                            key))
+
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">register-observer-with-class</span> ((class observable)
+                                         instance
+                                         slot-name
+                                         key
+                                         closure)
+  (setf (gethash key
+                 (or (gethash slot-name
+                              (slot-value instance 'observers))
+                     <span style="color: #ff7f24;">;; </span><span style="color: #ff7f24;">Lazily add observer hash tables
+</span>                     (add-observer-table instance slot-name)))
+        closure))
+
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">unregister-observer-with-class</span> ((class observable)
+                                           instance
+                                           slot-name
+                                           key)
+  (remhash key (gethash slot-name
+                        (slot-value instance 'observers))))
+
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">get-observers-with-class</span> ((class observable)
+                                     instance
+                                     slot-name)
+  (gethash slot-name (slot-value instance 'observers)))
+
+(<span style="color: #00ffff;">defmethod</span> (<span style="color: #87cefa;">setf slot-value-using-class)</span> <span style="color: #b0c4de;">:before</span> (new-value
+                                                  (class observable)
+                                                  instance
+                                                  slot)
+  (<span style="color: #00ffff;">let</span> ((slot-name (slot-definition-name slot)))
+    (<span style="color: #00ffff;">if</span> (not (eq 'observers slot-name))
+        (<span style="color: #00ffff;">let</span> ((observers
+               (get-observers instance (slot-definition-name slot))))
+          (<span style="color: #00ffff;">if</span> observers
+              (maphash #'(<span style="color: #00ffff;">lambda</span> (key observer)
+                           (funcall observer
+                                    (<span style="color: #00ffff;">if</span> (slot-boundp instance slot-name)
+                                        (slot-value instance slot-name)
+                                      nil)
+                                    new-value))
+                       observers))))))
+</pre>
+
+
+<h3><a name="sec29" id="sec29"></a>
+Real World</h3>
+
+<h4><a name="sec30" id="sec30"></a>
+<a href="http://common-lisp.net/project/ucw/">UCW</a> and <a href="http://common-lisp.net/project/bese/arnesi.html">Arnesi</a></h4>
+
+<p class="first">Arnesi uses the CLOS MOP to implement methods which are transparantly
+rewritten into continuation passing style. This allows their execution
+to be suspended at certain points and resumed later. UCW builds on top
+of this to support a web framework where the statelessness of http is
+hidden from the user; displaying a page suspends the execution of the
+current continuation, and resumes it upon submission. The user level
+code is completely unaware of this.</p>
+
+
+<h4><a name="sec31" id="sec31"></a>
+<a href="http://clsql.b9.com">CLSQL</a></h4>
+
+<p class="first">CLSQL uses the reflective part of the CLOS MOP to map Common Lisp data
+types into SQL types, and the intercessory protocol for slot
+allocation to map slots onto database columns or sql expressions (for
+implementing relational slots).</p>
+
+
+<h4><a name="sec32" id="sec32"></a>
+<a href="http://common-lisp.net/project/elephant/">Elephant</a></h4>
+
+<p class="first">Elephant uses the CLOS MOP to transparantly store any class to disk
+and handle paging between the disk store and memory efficiently and
+with no user intervention.</p>
+
+
+
+
+<h2><a name="sec33" id="sec33"></a>
+Sources &amp;amp; Further Reading</h2>
+
+<h3><a name="sec34" id="sec34"></a>
+Sources</h3>
+
+<h4><a name="sec35" id="sec35"></a>
+The Art of the Metaobject Protocol</h4>
+
+<h5>Kiczales, Gregor et al. MIT Press 1991</h5>
+
+<p>Highly recommended reading even if you plan to never implement a MOP
+or use the CLOS one. The design principles it recommends are quite
+useful.</p>
+
+
+
+<h4><a name="sec36" id="sec36"></a>
+<a href="http://www.lisp.org/mop/contents.html">CLOS MOP Specification</a></h4>
+
+<p class="first">Specification of the MOP for CLOS defined in <em>The Art of the Metaobject Protocol</em>.</p>
+
+
+<h4><a name="sec37" id="sec37"></a>
+<a href="http://citeseer.ist.psu.edu/399658.html">Metaobject Protocols: Why We Want Them and What Else They Can Do</a></h4>
+
+<p class="first">A short overview of MOP design principles followed by three example
+metaobject protocols for Scheme.</p>
+
+
+<h4><a name="sec38" id="sec38"></a>
+<a href="http://www2.parc.com/csl/groups/sda/projects/oi/towards-talk/transcript.html">Why Are Black Boxes so Hard to Reuse?</a></h4>
+
+<p class="first">Transcription of a talk on the benefits of open implementations of
+software. It first discusses several problems that black box software
+implementations pose, and then presents existing solutions. It shows
+how the existing solutions are insufficient, and then provides
+metaobject protocols as a solution to most of the problems.</p>
+
+
+
+<h3><a name="sec39" id="sec39"></a>
+Further Reading</h3>
+
+<h4><a name="sec40" id="sec40"></a>
+<a href="http://citeseer.ist.psu.edu/chiba95metaobject.html">A Metaobject Protocol for C++</a></h4>
+
+<p class="first">Example of a purely compile time MOP. It implements the functionality
+of a code walker and something similar to the Lisp macro system.</p>
+
+
+<h4><a name="sec41" id="sec41"></a>
+<a href="http://www.parc.com/csl/groups/sda/publications/papers/Kiczales-TUT95/for-web.pdf">Open Implementations and Metaobject Protocols</a></h4>
+
+<p class="first">It is a bit long, but it seems to follow a similar structure to AMOP
+in introducing MOPs and their usefulness. The pages are slides with
+notes, and so the 331 pages might not actually take that long to read.</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">                         Ruled by the ebb of my oceans                         
+                        Slaves to the dusk and the dawn                        
+                         Your petri dish civilisations                        
+                             Are buried and born                              
+</p>
+<p class="cke-timestamp">Last Modified:
+    March 13, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/Music I Enjoy.html b/Music I Enjoy.html
new file mode 100644 (file)
index 0000000..dae9fb3
--- /dev/null
@@ -0,0 +1,175 @@
+<?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>Music I Enjoy</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>Music I Enjoy</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">The Bands I Like the Most</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec2">Skyclad</a>
+</dt>
+<dt>
+<a href="#sec3">Kevin Moore</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec4">Chroma Key</a>
+</dt>
+<dt>
+<a href="#sec5">OSI</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><p>I have a <a href="http://www.last.fm/user/unknown_lamer/">last.fm</a> account.</p>
+
+<h2><a name="sec1" id="sec1"></a>
+The Bands I Like the Most</h2>
+
+<h3><a name="sec2" id="sec2"></a>
+Skyclad</h3>
+
+<p class="first">Skyclad is incredible folk metal. The first two albums (<em>Wayward Sons
+of Mother Earth</em> and <em>Burnt Offerings for the Bone Idol</em>) are Testament
+style thrash with a bit of fiddle and keys. The third album, <em>Jonah's
+Ark</em>, blunts the edge of the guitars and adds a lot more fiddle and is
+really where the band goes from making good to incredible
+music.</p>
+
+<p><em>Prince of the Poverty Line</em> is about as 'heavy' as the first two
+albums, but the the song structures are far more worked out and there
+is an interesting infusion of folk and power metal into the sound. The
+songs are mostly scathing social critiques of the state of society at
+the time. The follow up, <em>Silent Whales of Lunar Sea</em>, is a decent album
+but is scarred by terrible recording quality and mixing. It has
+listenable songs (with &quot;The Present Imperfect&quot; and &quot;Another Fine Mess&quot;
+standing out), and the only really noteable aspect is the slight
+change toward a much less thrashy riff structure.</p>
+
+<p><em>Irrational Anthems</em> more than made up for <em>Silent Whales of Lunar
+Sea</em>. The less thrashy and slightly more punkish riffing structure
+takes over here and the songs are all fast paced with guitar and
+fiddle duels taking place often</p>
+
+<p>The next two albums see the electric guitar deemphasized and the band
+making something more like heavy rock than heavy metal. The EP <em>Oui
+Avante Garde a Chance</em> starts out with a fast paced fiddle oriented
+song, moves into a nearly entirely fiddle and acoustic guitar song,
+and then goes into a few slow songs dominated by keys and fiddle. The
+albums picks up in intensity with <em>Bombjour</em>, and then has an acoustic
+version of a song from the previous album. The new material ends with
+the slow and intense <em>Badtime Story</em>. A couple of covers and an
+instrumental version of a song follow to pad the EP to album length.</p>
+
+<p><em>The Answer Machine?</em> is my favorite album in my entire collection. Most
+of the songs have a fuzzy electric guitar and an acoustic guitar going
+at the same time, and the album is music that I have found is
+listenable to people who don't like metal. The fiddle, violin, and
+piano dominate and are backed by interesting bass and just the right
+amount of guitar. The album is a pseudo-concept album; each song is
+about a different quest for the answer to life.</p>
+
+<p>The last two Skyclad album with Martin Walkyier (the original singer)
+see a two step return to a more metal style, but this time something
+resembling <em>Powerslave</em> era Maiden with heavy folk overtones rather than
+Testament. Both albums lack any weak songs, and have a few that are
+among the best Skyclad has ever done: &quot;Cancer of the Heart,&quot; &quot;A Well
+Beside the River,&quot; and &quot;Vintage Whine&quot; on <em>Vintage Whine</em>, and &quot;The
+Antibody Politic,&quot; &quot;The Disenchanted Forest,&quot; and &quot;Think Back and Lie
+of England&quot; on <em>Folkemon</em>.</p>
+
+<p>Alas, after <em>Folkemon</em> Martin left, and the band seems to have lost its
+magic. It is much like At the Gates; the core members meshed quite
+well together and lost some magical chemistry upon a major component
+leaving. Skyclad's first album with the new singer was ok, and perhaps
+the next one will be better. Sadly Martin Walkyier decided to abandon
+music forever.</p>
+
+
+<h3><a name="sec3" id="sec3"></a>
+Kevin Moore</h3>
+
+<p class="first">Kevin Moore is the first keyboardist of Dream Theater who left after
+<em>Awake</em>. His work since then has surpassed the quality of everything
+Dream Theater has produced since then for he posesses a unique
+songwriting style and wonderful artistic ability.</p>
+
+<h4><a name="sec4" id="sec4"></a>
+Chroma Key</h4>
+
+<p class="first">Chroma Key is Kevin Moore's primary project. It is mostly electronic
+and fairly mellow.</p>
+
+
+<h4><a name="sec5" id="sec5"></a>
+OSI</h4>
+
+<p class="first">OSI was originally a collaboration between Kevin Moore, Jim Matheos
+(guitarist of Fates Warning), Mike Portnoy (drummer of Dream Theater),
+and a few other prog rock/metal people. The first album, <em>Office of
+Strategic Influence</em> was a moderately heavy and good album that sounded
+quite similar to <em>Disconnected</em> Fates Warning with Kevin Moore on vocals
+and complicated drumming.</p>
+
+<p><em>Free</em> followed three years later and is completely different from the
+first. This time the album was done with Kevin Moore and Jim Matheos
+alone, and it finds a much nicer balance between keyboard and
+guitar. The first OSI sounded too much like Fates Warning with more
+ambient keyboarding; this one has a sound of its own. My ears have
+heard this album many times, and will listen again many more.</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">emacsen: every copy of Emacs comes with a bag of pot and 5 hits of acid
+emacsen: and a hotel coffee maker
+</p>
+<p class="cke-timestamp">Last Modified:
+    March 13, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/My Bicycle.html b/My Bicycle.html
new file mode 100644 (file)
index 0000000..4272bc7
--- /dev/null
@@ -0,0 +1,269 @@
+<?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>Clinton's Bicycle</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>Clinton's Bicycle</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">The Death of the Internal Combustion Engine</a>
+</dt>
+<dt>
+<a href="#sec2">The Birth of the Organic Oxidization Engine</a>
+</dt>
+<dt>
+<a href="#sec3">A Kind Emacsing Friend</a>
+</dt>
+<dt>
+<a href="#sec4">Metamorphosis</a>
+</dt>
+<dt>
+<a href="#sec5">The Night Is Friendly</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec6">Portable Sun</a>
+</dt>
+<dt>
+<a href="#sec7">I Am the Moon</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec8">North's Son</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<a href="#sec9">In the Name of the Steel</a>
+</dt>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><table class="image" width="100%">
+  <tr><td align="center"><img src="img/photos/bicycle/2006-10-25/front.jpg" alt="Greetings Friend" /></td></tr>
+  <tr><td align="center" class="image-caption">Greetings Friend</td></tr>
+</table>
+
+<h2><a name="sec1" id="sec1"></a>
+The Death of the Internal Combustion Engine</h2>
+
+<p class="first">In May 2006 and Camaro decided it was time to die and cost more than
+it was worth to repair (although in reality it cost more to repair
+than it was worth the first time it broke, but hindsight...). I
+travelled by foot for the remainder of the summer.</p>
+
+
+<h2><a name="sec2" id="sec2"></a>
+The Birth of the Organic Oxidization Engine</h2>
+
+<p class="first">In August I decided that I should get a bicycle as my <a href="http://umbc.edu">university</a> took
+about an hour to walk to on roads which did not have a terribly good
+sidewalk. What was initially meant merely to get me to school in a
+reasonable amount of time has now become a new love.</p>
+
+<table class="image" width="100%">
+  <tr><td align="center"><img src="img/photos/bicycle/2006-10-25/left.jpg" alt="It is good to be a bicycle" /></td></tr>
+  <tr><td align="center" class="image-caption">It is good to be a bicycle</td></tr>
+</table>
+
+
+<h2><a name="sec3" id="sec3"></a>
+A Kind Emacsing Friend</h2>
+
+<p><a href="http://emacsen.net">Emacsen</a> gave me his Spring 2003 Giant Iguana which was hardly ridden
+and merely needed a tiny bit of tuning to get riding again. Soon after
+getting it I added a rear rack with panniers, a tail light, and a
+cheap headlight (which, alas, was smashed to bits in a small crash).</p>
+
+<p>I rode the bike with its knobby and wide mountain bike tires for a
+month as I built strength. There are many hills in Catonsville, and so
+for the first few weeks lazy nerd me was defeated by the terrain. A
+mere two months after starting to ride, however, I achieved a level of
+strength I never thought I would. I could ride thirty miles in a day
+and <em>not feel it the next day</em>! A few months after that, even with a
+long interlude of no riding due to a broken bone, I found myself able
+ride seventy miles with a few thousand feet of elevation change.</p>
+
+
+<h2><a name="sec4" id="sec4"></a>
+Metamorphosis</h2>
+
+<p class="first">In late September I replaced the mountain bike tires with 26x1.75
+<a href="http://www.conti-online.com/generator/www/de/en/continental/bicycle/themes/tires/city/travelcontact/travelcontact_en.html">road tires</a> which nearly doubled my range, and improved the handling of
+the bike on pavement considerably. I chose 1.75 over 1.50 tires
+because I tend to ride with a fairly heavy load (textbooks and other
+type things), and enjoy the freedom of being able to go off road and
+not sink into the ground or get trapped in the grass.</p>
+
+<p>I <a href="http://unknown-lamer.livejournal.com/160217.html">fell</a> in October and bent my straight handlebar. I needed a new
+handlebar so I found a trekking style handlebar on the internet that
+gave me additional spots to put my handle, allowed for a slightly
+lowered position while riding, and was the same diameter as the
+straight bar so I could keep the shifter/brake combo (it being a bit
+expensive to replace). It now has cork tape covered in cloth tape (I'm
+hoping the cloth tape will take the brunt of the wear and I can extend
+the life of the expensive cork tape). I plan to try using heat shrink
+tubing to cover the ends of the tape in place soon (if it works it
+should look neater than duct tape).</p>
+
+<table class="image" width="100%">
+  <tr><td align="center"><img src="img/photos/bicycle/2006-10-25/handlebar.jpg" alt="It would seem that the amount of destructiveness to be found in individuals is proportionate to the amount to which expansiveness of life is curtailed. By this we do not refer to individual frustrations of this or that instinctive desire but to the thwarting of the whole of life, the blockage of spontaneity of the growth and expression of man's sensuous, emotional, and intellectual capacities" /></td></tr>
+  <tr><td align="center" class="image-caption">It would seem that the amount of destructiveness to be found in individuals is proportionate to the amount to which expansiveness of life is curtailed. By this we do not refer to individual frustrations of this or that instinctive desire but to the thwarting of the whole of life, the blockage of spontaneity of the growth and expression of man's sensuous, emotional, and intellectual capacities</td></tr>
+</table>
+
+
+<h2><a name="sec5" id="sec5"></a>
+The Night Is Friendly</h2>
+
+<h3><a name="sec6" id="sec6"></a>
+Portable Sun</h3>
+
+<p class="first">As the end of October 2006 arrived the days became shorter, but my
+desire to explore the world increased. This presented a bit of a
+problem, and so I spent time scouring the Wise Internet for
+information on headlights. After much futile poking around I settled
+on a <a href="http://www.cygolite.com/2-Products/1-DualCross300.htm">Cygolite DualCross 300</a> and was given one as a birthday gift. It
+is as bright as a single car headlight on the top setting and the
+batteries do actually last as long as the website says. I've ridden
+with it in the rain many times, and it even survived a nasty spill
+that broke my collarbone and bent my front rim.</p>
+
+<p>As of March 2008 the light still lasts a good three hours on full
+bright. This is with me using it at least once a week, and very often
+two or three times a week for extended rides (generally draining the
+battery entirely once a week) since late 2006 (excepting that winter
+because of my broken collarbone). I feared for a while that the
+battery strap was going to wear out and break, but it has yet to show
+signs of wear. All in all an <strong>excellent</strong> investment! This thing can
+handle heavy use and rain and all sorts of nasty stuff.</p>
+
+<table class="image" width="100%">
+  <tr><td align="center"><img src="img/photos/bicycle/headlight.jpg" alt="A beacon in the night" /></td></tr>
+  <tr><td align="center" class="image-caption">A beacon in the night</td></tr>
+</table>
+
+<p>The nicest part of the light is that it does seem to get its rated
+life of about four hours on the brightest setting. I'm not sure if it
+really gets nine hours on the dim setting as I've never ridden at the
+lowest setting for an extended period of time (I use it as dusk is
+setting in to make myself visible, and then increase to full
+brightness when night falls). It is about as bright as a single car
+headlight; an entire standard width car lane is illuminated with the
+light set to hit the ground about eight feet from the bike. I find
+this adequate to cycle around full speed at night.</p>
+
+
+
+<h3><a name="sec7" id="sec7"></a>
+I Am the Moon</h3>
+
+<p class="first">One day in late April 2007 I decided to cover my bicycle in reflective
+tape. It is very bright now.</p>
+
+<table class="image" width="100%">
+  <tr><td align="center"><img src="img/photos/bicycle/before_tape_upside_down.jpg" alt="The last time the bike will be naked" /></td></tr>
+  <tr><td align="center" class="image-caption">The last time the bike will be naked</td></tr>
+</table>
+
+<table class="image" width="100%">
+  <tr><td align="center"><img src="img/photos/bicycle/bicycle_post_tape.jpg" alt="Not quite strong enough to cause tides" /></td></tr>
+  <tr><td align="center" class="image-caption">Not quite strong enough to cause tides</td></tr>
+</table>
+
+<table class="image" width="100%">
+  <tr><td align="center"><img src="img/photos/bicycle/post_tape_nighttime_1.jpg" alt="Or perhaps it is a shining star" /></td></tr>
+  <tr><td align="center" class="image-caption">Or perhaps it is a shining star</td></tr>
+</table>
+
+<h4><a name="sec8" id="sec8"></a>
+North's Son</h4>
+
+<p class="first">In Early 2008 I decided to add a few stripes of reflective fabric to
+the rear of my panniers. I am not very good at sewing so I used
+Fabritac, and they have held on reasonably well since then. I wouldn't
+say that the bond was <em>permanent</em> though, but so far they have only
+peeled a tiny but on the edges (fixable with a quick dab of the
+glue).</p>
+
+<p>I am quite a bit more reflective in the rear now thanks to this. I
+also have a rear fender now (more to follow on this once I stop being
+lazy and install the front one too) which has a nice strip of orange
+reflective tape.</p>
+
+<table class="image" width="100%">
+  <tr><td align="center"><img src="img/photos/bicycle/rear-tape-white.jpg" alt="~200ft with my DualCross" /></td></tr>
+  <tr><td align="center" class="image-caption">~200ft with my DualCross</td></tr>
+</table>
+<table class="image" width="100%">
+  <tr><td align="center"><img src="img/photos/bicycle/rear-tape-red.jpg" alt="~200ft with one of my tail lights" /></td></tr>
+  <tr><td align="center" class="image-caption">~200ft with one of my tail lights</td></tr>
+</table>
+
+
+
+
+<h2><a name="sec9" id="sec9"></a>
+In the Name of the Steel</h2>
+
+<p class="first">I got a few patches from friends who were travelling about, and in
+July 2008 finally glued and sewed them to the bike. Now I am more
+metal, clearly.</p>
+
+<table class="image" width="100%">
+  <tr><td align="center"><img src="img/photos/bicycle/2008/bayern-patch.jpg" alt="Freistaadt aus Bäyern" /></td></tr>
+  <tr><td align="center" class="image-caption">Freistaadt aus Bäyern</td></tr>
+</table>
+<table class="image" width="100%">
+  <tr><td align="center"><img src="img/photos/bicycle/2008/blind-guardian-patch.jpg" alt="Blind Guardian is cool" /></td></tr>
+  <tr><td align="center" class="image-caption">Blind Guardian is cool</td></tr>
+</table>
+
+
+  <!-- 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">And did those feet in ancient times
+Walk bare upon these lonely streets like mine?
+Does God watch us from that penthouse high above
+His children down below who live on air and love?
+</p>
+<p class="cke-timestamp">Last Modified:
+    July 22, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/Old Viewpoints.html b/Old Viewpoints.html
new file mode 100644 (file)
index 0000000..4841207
--- /dev/null
@@ -0,0 +1,104 @@
+<?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>The Weak Must Die</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>The Weak Must Die</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">Misc</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec2">Copyright Is Bad for Society</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><p>Intermediate forms of thought which have been refined.</p>
+
+<h2><a name="sec1" id="sec1"></a>
+Misc</h2>
+
+<h3><a name="sec2" id="sec2"></a>
+Copyright Is Bad for Society</h3>
+
+<p class="first">Copyright is a tool used to placate publishers who feel that they will
+make no money if things can be freely copied. Publishers, however,
+contribute <strong>nothing</strong> of worth to our culture; they are mere middlemen
+who print the creative work of others, and so their pleas should be
+ignored.</p>
+
+<p>A short copyright term is acceptable, and worked in most of the world
+for a few hundred years. As it stands now we have perpetual copyrights
+(as in the Old World), and the cultural stagnation that affected
+Europe then is now occurring today in most of the world. There are
+many books published between 1917 and a few years ago that I would
+love to read, but am unable to because they have not been printed (for
+older books often in as long as 40 or 50 years). The albums of a few
+bands I like are out of print now and I will be long dead before I get
+a chance to purchase them (<em>if</em> copyright is not extended again, which
+experience tells me will happen soon) because the record labels have
+no interest in returning the masters to the band!</p>
+
+<p>What point is there to allowing copyright to exist on works which are
+not being published? If their terms had expired there is a chance that
+they would be being published by public domain publishing houses who
+subsist on smaller margins. This would <a href="http://www.ippr.org/publicationsandreports/publication.asp?id=482">create real economic value</a>, and
+more importantly great <strong>social</strong> value. Allowing art to rot is a
+disrespect to human creativity and an immeasurable loss for all future
+humans.</p>
+
+<p>I predict that in two or three hundred years there will be nearly no
+record of any literature or art produced in the twentieth century. As
+it stands today we have lost most of it with the exception of a few
+trashy works which have become popular to the masses.</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">sup4hleet: My mgr had a staff meeting before we hired our first chick
+sup4hleet: he was like "We're diversifying, so no more searching for porn."
+sup4hleet: Then the chick got hired and she browsed porn all the time.
+</p>
+<p class="cke-timestamp">Last Modified:
+    March 13, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/Politics.html b/Politics.html
new file mode 100644 (file)
index 0000000..ac4ba77
--- /dev/null
@@ -0,0 +1,378 @@
+<?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>Do Not Accept the Weak State of Mind in Our Time</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>Do Not Accept the Weak State of Mind in Our Time</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">The Basis of My Philosophy</a>
+</dt>
+<dt>
+<a href="#sec2">The Current Economic and Political Structure Is Broken</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec3">The Government of the Unites States</a>
+</dt>
+<dt>
+<a href="#sec4">Capitalism is Intrinsically Evil</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec5">Misc</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec6">Long Term Copyright Causes Harm to Society (<code>Draft Revision 2</code>)</a>
+</dt>
+<dt>
+<a href="#sec7">Fewer Laws Are Better</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec8">Individuals should not have their actions regulated</a>
+</dt>
+<dt>
+<a href="#sec9">Corporations must have their actions heavily regulated</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<a href="#sec10">Social Ills</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec11">Mass Culture</a>
+</dt>
+<dt>
+<a href="#sec12">The Automobile</a>
+</dt>
+<dt>
+<a href="#sec13">Learned Ignorance and Weakness</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><p>I have views that could perhaps be seen as odd. Do note that I am <strong>not</strong>
+a liberal; nor am I a conservative. I do not buy into the traditional
+socieconomic dipole scale, and I also reject the <em>political compass</em> two
+dimensional scale; my political belief system could best be described
+as anarchism if you must have a label for it. Naturally this is only
+because anarchism isn't an ideology, but rather a broad set of ideas
+centered around the rejection of traditional heriarchial political and
+social structures.</p>
+
+<p>These short essays are continually evolving, and each will be split
+into its own page as the ideas contained within it are fleshed out in
+my mind. Writing things down tends to help me to do this for there are
+limits to how much information the top of my head can hold limiting
+the usefulness of internal thought once an idea becomes complex
+enough. Political and social beliefs are perhaps the most complicated
+ideas a man can have because of our complex intertwined social
+structures.</p>
+
+<h2><a name="sec1" id="sec1"></a>
+<a href="Wisdom.html">The Basis of My Philosophy</a></h2>
+
+<p class="first">It is often helpful to know what someone considers as the basis of his
+philosophy when interpeting what he has written. As such I have
+compiled a page of links and quotations to reveal the inner secrets of
+my mind.</p>
+
+
+<h2><a name="sec2" id="sec2"></a>
+The Current Economic and Political Structure Is Broken</h2>
+
+<h3><a name="sec3" id="sec3"></a>
+The Government of the Unites States</h3>
+
+<p class="first">I feel that the government in the United States is very close to being
+broken beyond repair. As it stands the government above the local
+level ignores the individual citizen and instead is only affected by
+large scale action. As far as the individual is concerned we no longer
+live in a Republic, but rather in an Oligarchy which is quickly
+descending into something far worse.</p>
+
+<p>I do feel that there is still some reform that could be made in the
+near (ten years perhaps) future that could allow the government to
+become tolerable again. We are, however, quite close to the edge where
+there will be no fixing it. If that threshold is passed we are in for
+terrible times.</p>
+
+
+<h3><a name="sec4" id="sec4"></a>
+Capitalism is Intrinsically Evil</h3>
+
+<p class="first">Cooperation is better than exploitation. How can one justify an
+economic system based upon paying others as little as possible in an
+attempt to make the most profit from their labor so as to make some
+profit?</p>
+
+
+
+<h2><a name="sec5" id="sec5"></a>
+Misc</h2>
+
+<h3><a name="sec6" id="sec6"></a>
+Long Term Copyright Causes Harm to Society (<code>Draft Revision 2</code>)</h3>
+
+
+
+
+
+<p>It is straightforward to calculate a fair cost for material goods. The
+material cost follows from the materials, and the labor cost generally
+derives from the complexity of construction. The fixed price for each
+item consists of both of these factors. Thus it is trivial to ensure
+that a craftsman is fairly compensated for his effort.</p>
+
+
+
+
+<p>Creative works must have their value calculated via a more circuitous
+route. The physical form of a creative work is of little importance;
+the ideas it represents are. The material and direct labor costs
+(printing, binding, etc.) are thus so small as to be of negligible
+importance when calculating value. There is effectively no objective
+way to place value on abstract work; all the value judgements we can
+make are subjective. We must then rely on irrational human valuations
+to determine the value on their own.</p>
+
+
+
+
+
+
+
+
+
+<p>Creative works are fundamentally different from concrete works. A
+painting may inspire others start a new stylistic movement, the
+structure of a story may cause the formation of a new literary form,
+an essay may incite a new political movement, etc. Creative works
+weave themselves into the mental fabric of each individual exposed to
+them in a way that material goods cannot. A book may change your life;
+a table will never do that. This suggests that the abstract concepts
+which compose a work have a strange nature and great value. Those who
+control the distribution of creative works wield great power as a
+result of the ability of ideas to change the individual.</p>
+
+<p>After a certain period of time the physical manifestation of a
+creative work loses commercial value. New art is being created
+continually, and no one can be expected to read every important book
+written, see every film, and so on for other areas. When a work ceases
+to be profitable to publish distribution ceases. Allowing abstract
+works to simply drop from the market creates a serious problem. New
+ideas are built upon old ones, and after ideas have assimilated into
+the collective concious it is important to be able to go back to the
+old ideas and analyze them to understand the present culture. If a
+work is no longer available it is impossible to do this. Thus works
+that are no longer being commercially exploited should become the
+property of the public so that any worth preserving will be preserved
+by <em>someone</em> and avoid death.</p>
+
+
+
+
+<p>Copyright manages to work fairly well for ensuring creators are
+compensated for their effort, preventing abuse of creator rights to
+the detriment of society, and ensuring that works will become public
+property after they are commercially unprofitable. Irrational human
+judgements over time often work well, and so giving exclusive right to
+copy a work makes sense for a period of time to allow society to
+determine its monetary value. The fair use provisions of copyright
+give society reasonable leeway in the use of the ideas contained
+within a work while the work is protected, and this allows society to
+continue enriching its creative culture. The limited term of copyright
+and ensuing reversion to the public domain prevents the cultural
+stagnation and the loss of history that would result from works
+becoming unavailable.</p>
+
+
+
+
+
+
+<p>The term of copyright must be finely balanced between the need to
+ensure creators have enough time to receive fair compensation for
+their effort, and the desire to avoid cultural stagnation from
+unavailable works. The term must be short enough that a work will not
+be unavailable for too long after commercial interest dies. Every year
+that passes where the work isn't being published tends to reduce the
+number of copies in existence. It must also be long enough that a
+creator can profit according to the value that society puts upon his
+work.</p>
+
+<p>A term should be just long enough that a work will fall out of
+copyright when physical copies are still likely to exist. A man may
+keep his book collection unto his death, but his children may simply
+sell them off or discard them after he departs the mortal
+coil. Intuitive judgement says that things that are worth entering the
+public domain will be preserved by someone for at least his life. A
+person who has creative works in his posession is often attached to
+them and will keep the ones he likes the most for as long as possible
+(e.g. my music collection is backed up in flac so that I will be able
+to listen to my music forever). After he dies there is a large
+increase in the chance that the works will perish unless he by chance
+made special arrangements to have them preserved.</p>
+
+<p>A generation then seems to be a reasonable term; how many things are
+really commercially viable after thirty years? Some works may be
+relevant to the children of the generation who created them; it seems
+reasonable then that if a work is still commercially viable after a
+generation then the creator deserves to retain copyright for a second
+generation. It is questionable whether more terms would be good
+(issues of supression of information, right to profit, etc. come into
+play), but they can't quite be ruled out. A renewal system with a span
+of roughly thirty years ensures that a work will be out of publication
+for at most a generation's time. This appears to be a good balance
+between the right of the creator and the desire to keep knowledge from
+dying (from my eyes).</p>
+
+<p>The works of the current generation, their parents, their
+grandparents, and their great-grandparents are still copyrighted in
+the US. Works created in the present will be copyrighted for the
+lifetime of the author and seventy years after; a span of roughly six
+generations.</p>
+
+
+<h3><a name="sec7" id="sec7"></a>
+Fewer Laws Are Better</h3>
+
+<h4><a name="sec8" id="sec8"></a>
+Individuals should not have their actions regulated</h4>
+
+
+<h4><a name="sec9" id="sec9"></a>
+Corporations must have their actions heavily regulated</h4>
+
+<p class="first">Corporate power disrupts the functioning of a free society. If the
+power wielded by a corporation were merely the sum of the individuals
+that composed it there would be little issue; the fundamental problem
+is that the benefits of gaining access to mass production facilities
+and a huge workforce that can be forced to cooperate on certain goals
+gives a large corporation much more power than the simple sum of its
+members.</p>
+
+<h5>Corporate Personhood should be revoked</h5>
+
+
+<h5>Corporations should not be allowed to influence politics</h5>
+
+
+
+
+
+<h2><a name="sec10" id="sec10"></a>
+Social Ills</h2>
+
+<h3><a name="sec11" id="sec11"></a>
+Mass Culture</h3>
+
+<p class="first">American culture in the early 1900s began to homogenize, and now there
+is a single massive culture that almost all three hundred million
+people in the country share. This presents problems to those who do
+not fit in; in the days of the self sufficient village one could move
+to another location to find people similar to him, but now there is
+nowhere to go. Everywhere a <em>social deviant</em> goes he will feel alienated
+and have his social options severely limited.</p>
+
+<p>A monoculture reduces the rate of idea formation, and ours is actively
+hostile toward anything not falling in line with the
+mainstream. People are trained to act as a mass instead of as
+individuals; this results in far less creative people. Critical
+thinking is not encouraged; no, it is far worse! Critical thinking is
+discouraged, and those of us who wish to argue our points with logic
+are met with the undefeatable enemy of a closed mind that has been
+exposed to propaganda from birth.</p>
+
+
+<h3><a name="sec12" id="sec12"></a>
+The Automobile</h3>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h3><a name="sec13" id="sec13"></a>
+Learned Ignorance and Weakness</h3>
+
+<p><a href="Old%20Viewpoints.html">obsolete</a></p>
+
+<p><a href="TRUTH.html">TRUTH</a></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">         To set your mind free you must first just listen
+     Don't waste your life on worthless hate and contradiction
+</p>
+<p class="cke-timestamp">Last Modified:
+    March 13, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/Quotations.html b/Quotations.html
new file mode 100644 (file)
index 0000000..98c9889
--- /dev/null
@@ -0,0 +1,86 @@
+<?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>Quotations</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>Quotations</h1>
+   <div class="contents">
+<dl>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><blockquote>
+<p class="quoted">
+There are those who consider that studies in harmony, counterpoint,
+and fugue are the exclusive province of the intended composer. But if
+we reflect that theory must follow practice, rarely preceding it
+except by chance, we must realize that musical theory is not a set of
+directions for composing music. It is rather the collected and
+systematized deductions gathered by observing the practice of
+composers over a long time, and it attempts to set forth what is or
+has been their common practice. It tells not how music will be written
+in the future, but how music has been written in the past.</p>
+<p class="quoted">The results of such a definition of the true nature of musical theory
+are many and important. First of all, it is clear that this knowledge
+is indispensable to musicians in all fields of the art, whether they
+be composers, performers, conductors, critics, teachers, or
+musicologists. Indeed, a secure grounding in theory is even more a
+necessity to the musical scholar than to the composer, since it forms
+the basis for any intelligent appraisal of the individual styles of
+the past or present.</p>
+<p class="quoted">On the other hand, the person gifted for creative musical composition
+is taking a serious risk in assuming that this genius is great enough
+to get along without a deep knowledge of the common practice of
+composers. Mastery of the technical or theoretical aspects of music
+should be carried out by him as a life's work, running parallel to his
+creative activity but quite separate from it. In the one he is
+following common practice, while in the other he is responsible solely
+to the dictates of his own personal tastes and urge for expression.</p>
+
+</blockquote>
+
+<p>Walter Piston (Intro to the first edition of <em>Harmony</em>)</p>
+
+<p>&mdash;</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">clinton: last time I was a bit weak (*sniff* level four and only 18 hp)
+clinton: I had a -1 intelligence modifier for the first three weeks
+emacsen: what about your character?
+</p>
+<p class="cke-timestamp">Last Modified:
+    March 13, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/Reading.html b/Reading.html
new file mode 100644 (file)
index 0000000..3ca4b66
--- /dev/null
@@ -0,0 +1,483 @@
+<?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>The Printed Word Is Stronger Than Nuclear Arms</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>The Printed Word Is Stronger Than Nuclear Arms</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">Authors</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec2">William Blake</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec3">Fiction</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec4">General</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec5">Luke Rhinehardt - The Dice Man</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec6">Philosophical</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec7">Khalil Gibran - The Prophet</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec8">Sci-Fi</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec9">Neal Stephenson</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<a href="#sec10">Non-Fiction</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec11">Education</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec12">John Taylor Gatto - Underground History of American Education</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec13">Philosophy</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec14">Chinese</a>
+</dt>
+<dt>
+<a href="#sec15">Marcus Aurelius - Meditations</a>
+</dt>
+<dt>
+<a href="#sec16">Søren Kierkegaard - The Sickness Unto Death</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec17">Politics</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec18">Thomas More - Utopia</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec19">Religion</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec20">William James - The Varieties of Religious Experience</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec21">Technical</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec22">C J Date - Database in Depth</a>
+</dt>
+<dt>
+<a href="#sec23">Gregor Kiczales - The Art of the Metaobject Protocol</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<a href="#sec24">Reports</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec25">2003 National Assesement of Adult Literacy</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec26">Books That I Cannot Find</a>
+</dt>
+<dt>
+<a href="#sec27">Essays</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec28">Computing</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec29">Design</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><p>I enjoy classical literature and works of philosophy and politics with
+a side of cyberpunk novels for when my brain is tired. When I was in
+High School I read technical books for fun, but now I tend to find
+most of them useless (thank you Internet) excepting a few really well
+written ones (<em>L.i.s.p</em>, <em>TAOCP</em>, ...).</p>
+
+<p>I spend most of my time reading. A full list of things I have read
+would be impossible to compile, but here I am collecting links and
+small summaries of things I have read and find interesting enough to
+mention, but not always recommend, to others.</p>
+
+<h2><a name="sec1" id="sec1"></a>
+Authors</h2>
+
+<h3><a name="sec2" id="sec2"></a>
+William Blake</h3>
+
+<p class="first">His poetry is the result of spending too much time etching copper
+plates and breathing the fumes. Quite wonderful indeed.</p>
+
+
+
+<h2><a name="sec3" id="sec3"></a>
+Fiction</h2>
+
+<h3><a name="sec4" id="sec4"></a>
+General</h3>
+
+<h4><a name="sec5" id="sec5"></a>
+Luke Rhinehardt - The Dice Man</h4>
+
+<blockquote>
+<p class="quoted">
+And it's his illusions about what
+constitutes the real world which are
+inhibiting him...
+His reality, his reason, his society
+...these are what must be destroyed</p>
+
+</blockquote>
+
+<p>A quotation from one of my <a href="http://en.wikipedia.org/wiki/Slaughter_of_the_Soul">favorite metal songs</a> inspired me to grab
+this book; at worst it would be a waste of time. Much reward was found
+in this random stab in the dark. The book is framed as an
+autobiography of the author as a psychoanalyst, and his progression
+through life as a Dice Man after deciding to live his life through
+random chance.</p>
+
+<p>The style, plot, and content are equally neurotic; part comedy, part
+attack on psychoanalysis, and part deep philosophy. It was often
+difficult to put down, and was read in under a week of spare time.</p>
+
+
+
+<h3><a name="sec6" id="sec6"></a>
+Philosophical</h3>
+
+<h4><a name="sec7" id="sec7"></a>
+Khalil Gibran - The Prophet</h4>
+
+
+
+
+<h3><a name="sec8" id="sec8"></a>
+Sci-Fi</h3>
+
+<h4><a name="sec9" id="sec9"></a>
+Neal Stephenson</h4>
+
+<h5>Cryptonomicon</h5>
+
+<p>I read <em>Cryptonomicon</em> when it was new, and at the time I thought it was
+good. It could have lost a hundred or so pages without detracting from
+the plot, but it was easy reading and didn't take very long to
+finish. The story was enganging, and the continual switching between
+the 1940s and present day slowly unravelled the tale in a nice way.</p>
+
+<p>I'd still have to recommend <em>Snow Crash</em> if one wished to read only one
+Stephenson novel.</p>
+
+
+<h5>Snow Crash</h5>
+
+<p>As one must read the <em>Bible</em> to understand English literature, so one
+must read <em>Snow Crash</em> today to be a nerd. In the realm of modern pop
+fiction this is one of the better books I've read; it was devoured in
+a mere four nights. Neal Stepheson may not be Milton, but he does come
+up with enganging tales. <em>Snow Crash</em> has a nice undertone of (quite
+accurate) political and social commentary that makes it worth reading
+as more than mere cyberpunk fiction.</p>
+
+
+
+
+
+<h2><a name="sec10" id="sec10"></a>
+Non-Fiction</h2>
+
+<h3><a name="sec11" id="sec11"></a>
+Education</h3>
+
+<h4><a name="sec12" id="sec12"></a>
+John Taylor Gatto - <a href="http://www.johntaylorgatto.com/underground/toc1.htm">Underground History of American Education</a></h4>
+
+<p class="first">Contained within this book (available online for free, but the printed
+copy sits wonderfully on a shelf) is a detailed and seemingly well
+researched history of American Education with a particular focus on
+the transformation that has occured before our eyes in the last
+century. I am unsure if Gatto is entirely correct and not exaggerating
+anything; I have failed to find any negative criticisms, but it is not
+clear to me if that is because he is entirely correct or if no one
+cares enough to write a counterargument. I am in the process of
+tracking down as many of his sources as possible (a good number of
+them are out of print and not in the public domain yet), and will make
+an attempt to verify his argument over the course of the next year
+(that being 2007).</p>
+
+<p>If he is correct then every one of us has had the first eighteen years
+of our lives stolen from us, and we have collectively suffered massive
+intellectual damage. My intuitions tell me he is correct (which is why
+I am driven to verify; I cannot trust myself because I <em>want</em> to
+believe) for my individuality and intelligence were nearly stolen from
+me. The only reason I survived relatively unscathed is because I
+became completely socially withdrawn for the last half of elementary
+school until late in high school due to the abuse I received at the
+hands of my peers creating a deep fear of social interaction in
+me. The downside is that I had the confidence crushed from my soul,
+but now that I have begun to regain it (the good that bicycling
+enabling me to stand straight and gradual realization of my own worth
+as a human have done) I would never trade the ability to think freely
+for the social skills I lack.</p>
+
+
+
+<h3><a name="sec13" id="sec13"></a>
+Philosophy</h3>
+
+<h4><a name="sec14" id="sec14"></a>
+Chinese</h4>
+
+<h5>Tao Te Ching</h5>
+
+
+<h5>Confucianism</h5>
+
+<h5>The Analects</h5>
+
+
+
+
+<h4><a name="sec15" id="sec15"></a>
+Marcus Aurelius - Meditations</h4>
+
+<p class="first">I enjoyed reading this collection of meditations on Stoic
+philosophy. It is a fairly quick read; I read each of the twelve books
+before sleeping over the course of two weeks. Toward the end of the
+collection things get a bit topically repetetive (e.g. acting
+according to the nature of man is reflected upon over and over), but
+each repetition looks at the topic in a slightly different light. A
+number of passages I found quite inspiring, and scratched them down in
+my notebook to ponder further.</p>
+
+
+<h4><a name="sec16" id="sec16"></a>
+Søren Kierkegaard - The Sickness Unto Death</h4>
+
+<p class="first">I purchased this when I was looking through books at a store after
+being unable to find the book I really wanted, and I must say that it
+was better for me to have found this one.</p>
+
+<p>Contained within is a beautiful analysis of despair in the context of
+Christianity (really theism in general). Even if the argument offends,
+the presentation cannot. The dialectical nature of despair is
+reflected in every aspect of the work, and the method of presentation
+forces reflection.</p>
+
+
+
+<h3><a name="sec17" id="sec17"></a>
+Politics</h3>
+
+<h4><a name="sec18" id="sec18"></a>
+Thomas More - Utopia</h4>
+
+<p class="first">I read most of Utopia in high school with the TI-89 ebook reader, but
+the way the book was split up made it a bit difficult to grasp the
+overall structure. I found a copy at a used book store one day, and so
+I read it again, and found it much more comprehensible. It is a quick
+read, and decent piece of literature. The interesting social system
+espoused resembles resembles state communism (even if perhaps as a
+negative ideal), but with an strange blend of 14th century European
+social customs.</p>
+
+
+
+<h3><a name="sec19" id="sec19"></a>
+Religion</h3>
+
+<h4><a name="sec20" id="sec20"></a>
+<a href="William%20James%20-%20The%20Varieties%20of%20Religious%20Experience.html">William James - The Varieties of Religious Experience</a></h4>
+
+
+
+
+<h3><a name="sec21" id="sec21"></a>
+Technical</h3>
+
+<h4><a name="sec22" id="sec22"></a>
+C J Date - Database in Depth</h4>
+
+<p class="first">This was a complete waste of time. The author rants on for 180 pages
+and presents the information in a disorderly and shallow manner. It
+could be rewritten in about fifty pages and contain the same amount of
+information if it were organized properly and the off topic commentary
+were minimized.</p>
+
+
+<h4><a name="sec23" id="sec23"></a>
+Gregor Kiczales - The Art of the Metaobject Protocol</h4>
+
+<p class="first">AMOP is useful as a reference to the CLOS MOP (although less so with
+the online MOP spec), but the true value of the book lies in the first
+half of the book. It presents the design of the CLOS MOP through a
+series of revisions that fix limitations of earlier implementations
+and gradually work toward a generic and well designed MOP for
+CLOS. Through that process one is made more aware of a few general
+object protocol design skills, and gains insight into how to cleanly
+make mapping decisions customizable.</p>
+
+
+
+
+
+<h2><a name="sec24" id="sec24"></a>
+Reports</h2>
+
+<h3><a name="sec25" id="sec25"></a>
+<a href="http://nces.ed.gov/pubs2006/2006483.pdf">2003 National Assesement of Adult Literacy</a></h3>
+
+<p class="first">A depressing view of American literacy rates. Literacy skills
+decreased across almost every population segment in the US between
+1993 and 2003; a mere 31% of college graduates are considered
+proficient in quantitative literacy (defined as being able to do
+things as terribly complicated as comparing two editorials).</p>
+
+
+
+
+<h2><a name="sec26" id="sec26"></a>
+Books That I Cannot Find</h2>
+
+<p class="first">If you know anyone who has copies I'd appreciate an email. I'm willing
+to buy books for a reasonable cost, and for ones that are more than 25
+years old and out of print I am not opposed to <em>piracy</em> (no one is
+making money from them, and I feel that long copyrights are unethical
+and therefore feel no pangs of moral guilt).</p>
+
+<ul>
+<li><em>Crystallizing Public Opinion</em> by Edward Bernays
+
+<ul>
+<li>A supposed classic in the field of public relations. Curiosity
+demands that I read the writings of the father of the field to
+better understand the way the international media works.</li>
+<li>Another example of out of print books clearly having a market,
+but no publisher due to copyright (used copies go for nearly a
+thousand dollars in poor condition and hit five thousand or so
+for ones in good shape).</li>
+</ul></li>
+</ul>
+
+
+<h2><a name="sec27" id="sec27"></a>
+Essays</h2>
+
+<h3><a name="sec28" id="sec28"></a>
+Computing</h3>
+
+<h4><a name="sec29" id="sec29"></a>
+Design</h4>
+
+<h5><a href="http://deadhobosociety.com/index.php/Essays/ESSAY12">Confucianism and Technical Standards</a></h5>
+
+
+
+
+
+  <!-- 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">unknownlamer: I just asked a girl out to a greek tragedy
+LeebertLaptop: hmm
+LeebertLaptop: you on a date is a geek tragedy
+</p>
+<p class="cke-timestamp">Last Modified:
+    March 13, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/SCWM.html b/SCWM.html
new file mode 100644 (file)
index 0000000..489d9a9
--- /dev/null
+++ b/SCWM.html
@@ -0,0 +1,244 @@
+<?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>Scheme Your Windows</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>Scheme Your Windows</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">Installing SCWM</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec2">Dependencies</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec3">Required</a>
+</dt>
+<dt>
+<a href="#sec4">Optional</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec5">Downloading and Building</a>
+</dt>
+<dt>
+<a href="#sec6">Running</a>
+</dt>
+<dt>
+<a href="#sec7">Hacking</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec8">XNested Setup</a>
+</dt>
+<dt>
+<a href="#sec9">GDS for Interaction</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><h2><a name="sec1" id="sec1"></a>
+Installing SCWM</h2>
+
+<h3><a name="sec2" id="sec2"></a>
+Dependencies</h3>
+
+<h4><a name="sec3" id="sec3"></a>
+Required</h4>
+
+<ul>
+<li><a href="http://www.gnu.org/software/guile">Guile</a> 1.8.0+</li>
+<li>IMLib 1.x (in Debian imlib11-dev)</li>
+</ul>
+
+
+<h4><a name="sec4" id="sec4"></a>
+Optional</h4>
+
+<ul>
+<li><a href="ftp://ftp.gnu.org/gnu/guile-gtk/guile-gtk-0.60.tar.gz">Guile-GTK</a> 0.60 for dialog support. Guile-GTK 2.x and scwm are not
+compatible yet</li>
+</ul>
+
+
+
+<h3><a name="sec5" id="sec5"></a>
+Downloading and Building</h3>
+
+<p class="first">A working version of SCWM can be obtained from
+<a href="http://sourceforge.net/cvs/?group_id=225">sourceforge CVS</a>. Compilation is much more straightforward than one
+would suspect from a project so old (thanks to dsmith for doing the
+painful parts of unbitrotting). The standard autoconf sequence of
+commands should work.</p>
+
+<pre class="example">
+./autogen.sh
+./configure
+make
+sudo make install
+</pre>
+
+
+<h3><a name="sec6" id="sec6"></a>
+Running</h3>
+
+<p class="first">The directory <code>sample.scwmrc</code> has a few sample SCWM
+configurations. <code>system.scwmrc</code> and <code>sample.scwmrc</code> both work fairly well;
+I have yet to test the others. If not using <code>system.scwmrc</code> it is useful
+to at least include the bits that enable debugging.</p>
+
+<pre class="src">
+(<span style="color: #00ffff;">define</span> <span style="color: #87cefa;">debug</span> #t)
+
+(<span style="color: #00ffff;">if</span> debug
+    (<span style="color: #00ffff;">begin</span>
+      (add-hook! module-loaded-hook display-module-loaded)
+      (set! %load-verbosely #t)
+      (debug-enable 'debug 'backtrace)
+      (read-enable 'positions)))
+</pre>
+
+<p>SCWM will attempt to load <code>system.scwmrc</code> by default, but this can be
+overridden with the <code>-f</code> option. The default <code>system.scwmrc</code> loads user
+config from a series of files in <code>~/.scwm/</code>.</p>
+
+
+<h3><a name="sec7" id="sec7"></a>
+Hacking</h3>
+
+<h4><a name="sec8" id="sec8"></a>
+XNested Setup</h4>
+
+<p class="first">The easiest way to hack on SCWM is to run it inside of Xnest.</p>
+
+<pre class="example">
+Xnest :1 &amp;
+scwm --display :1 --debug # --debug makes X requests synchronous
+</pre>
+
+
+<h4><a name="sec9" id="sec9"></a>
+GDS for Interaction</h4>
+
+<p class="first">SCWM has an emacs interaction mode that communicates with the window
+manager using X window properties, but the emacs side of the code
+doesn't quite work, and GDS is featureful enough now to be used to
+interact with scwm. Using GDS makes hacking scwm quite a bit
+easier. <strong>GDS requires a Guile built with threads to work properly
+(the version in Debian is built <em>without</em> threading).</strong></p>
+
+<h5>scwmrc code</h5>
+
+<p>The following code should be in your scwmrc somewhere.</p>
+
+<pre class="src">
+(use-modules (ice-9 gds-client)
+             (ice-9 threads))
+
+<span style="color: #ff7f24;">;;; </span><span style="color: #ff7f24;">GDS thread (in case it must be killed during debugging, ...)
+</span>(<span style="color: #00ffff;">define</span> <span style="color: #87cefa;">cke-gds-thread</span> #f)
+
+(<span style="color: #00ffff;">define</span> (<span style="color: #87cefa;">connect-to-debugging-server</span>)
+  (set! cke-gds-thread
+        (call-with-new-thread (<span style="color: #00ffff;">lambda</span> () (run-utility))))
+  cke-gds-thread)
+</pre>
+
+<p>After defining you can either use <code>scwmrepl</code> to run
+<code>(connect-to-debugging-server)</code> after starting a GDS server, or simply
+add <code>(connect-to-debugging-server)</code> to the config if one will always be
+running.</p>
+
+
+<h5>Emacs config</h5>
+
+<p>I wrote <a href="http://darcs.unknownlamer.org/site-emacs/init.d/guile-debug.el">a bit of elisp</a> to simplify setting up a scratch buffer for
+interaction with guile.</p>
+
+<pre class="src">
+(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">gds</span>)
+(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">gds-server</span>)
+(<span style="color: #00ffff;">require</span> '<span style="color: #7fffd4;">gds-scheme</span>)
+
+(<span style="color: #00ffff;">defvar</span> <span style="color: #eedd82;">guile-scratch-buffer-name</span> <span style="color: #b3b3b3;">"*guile-scratch*"</span>
+  <span style="color: #b3b3b3;">"Name of the Guile evaluation scratch buffer"</span>)
+
+(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">make-guile-scratch-buffer</span> ()
+  (interactive)
+  (<span style="color: #00ffff;">let</span> ((scratch-buf (generate-new-buffer guile-scratch-buffer-name)))
+    (switch-to-buffer scratch-buf)
+    (scheme-mode)
+    (gds-auto-associate-buffer)))
+</pre>
+
+<p>If you were already running a debugging client process you will need
+to choose the process to associate the buffer with; <code>ps</code> will tell you
+the PID of scwm.</p>
+
+
+<h5>Known Issues</h5>
+
+<p>Occasionally evaluating an expression or viewing a backtrace will make
+scwm lockup. My understanding is that scwm is not threadsafe, and
+there are some evil issues that will take a while to solve. GDS works
+well enough for now; if I can't make GDS completely reliable I shall
+unbitrot the scwm emacs interaction mode (unless someone else beats me
+to it, <em>hint hint</em>).</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">Danielle: well road signs were pissing me off
+Danielle: I took one of them out, but the other haven't followed as
+          planned
+</p>
+<p class="cke-timestamp">Last Modified:
+    March 13, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/TRUTH.html b/TRUTH.html
new file mode 100644 (file)
index 0000000..1d255f3
--- /dev/null
@@ -0,0 +1,93 @@
+<?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>Absolute Truths Which Cannot Be Denied</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>Absolute Truths Which Cannot Be Denied</h1>
+   <div class="contents">
+<dl>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><ul>
+<li>Everyone is depressed. It is a normal state of being. Take your
+pills.</li>
+<li>Most children have ADHD. Give them their pills; if you don't they
+will never learn anything.</li>
+<li>You must have a career
+
+<ul>
+<li>Not being employed will make you poor</li>
+<li>The point of the University is to attain job skills</li>
+</ul></li>
+<li>Not owning a car will make you a social pariah</li>
+<li>Music is background noise and nothing more
+
+<ul>
+<li>Songs which discuss topics other than love, lust, and loneliness
+are not good</li>
+<li>Heavy metal contains the message of Satan and will corrupt your
+children</li>
+</ul></li>
+<li>The NYTimes best seller list consists of the best books written today
+
+<ul>
+<li>Literature produced today is better than any ever written before
+
+<ul>
+<li>Therefore literature written before 1900 is a waste of time</li>
+</ul></li>
+</ul></li>
+<li>Logic is for cold and unfeeling people
+
+<ul>
+<li>Good arguments are based on emotion</li>
+<li>The axioms of logic cannot be proven, and we must therefore
+abandon logic as an anachronism of times long past</li>
+</ul></li>
+<li>The individual should serve the state</li>
+<li>Average people are incapable of teaching themselves much</li>
+<li>Ethanol will enable us to continue consuming energy as we do now</li>
+</ul>
+  <!-- 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">Patrick Miles: there goes clinton ebadi
+               he loves to party,
+               he'll load you down with knowledge cause hes such a smarty
+</p>
+<p class="cke-timestamp">Last Modified:
+    March 13, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/UCWNotes.html b/UCWNotes.html
new file mode 100644 (file)
index 0000000..588489b
--- /dev/null
@@ -0,0 +1,1359 @@
+<?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>Roadmap to UCW Codebase</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>Roadmap to UCW Codebase</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">Abstract</a>
+</dt>
+<dt>
+<a href="#sec2">Roadmap</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec3">Applications</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec4">Cookie</a>
+</dt>
+<dt>
+<a href="#sec5">L10n</a>
+</dt>
+<dt>
+<a href="#sec6">Secure</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec7">Components</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec8">Windows</a>
+</dt>
+<dt>
+<a href="#sec9">Containers</a>
+</dt>
+<dt>
+<a href="#sec10">Dialogs</a>
+</dt>
+<dt>
+<a href="#sec11">Forms</a>
+</dt>
+<dt>
+<a href="#sec12">Templates</a>
+</dt>
+<dt>
+<a href="#sec13">Utility Mixin Components</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec14">Control Flow</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec15">Calling</a>
+</dt>
+<dt>
+<a href="#sec16">Actions</a>
+</dt>
+<dt>
+<a href="#sec17">Entry Points</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec18">Dispatching</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec19">Simple Dispatcher</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec20">Server</a>
+</dt>
+<dt>
+<a href="#sec21">Debugging</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec22">Inspector</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<a href="#sec23">Tips</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec24">Getting dojo to load</a>
+</dt>
+<dt>
+<a href="#sec25">Specials Bound During Rendering</a>
+</dt>
+<dt>
+<a href="#sec26">Printing to the yaclml stream</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><h2><a name="sec1" id="sec1"></a>
+Abstract</h2>
+
+<p><a href="http://common-lisp.net/project/ucw/">UnCommon Web</a> is a very powerful and mature web framework for Common
+Lisp, but is a bit difficult to learn. It is documented
+extensively&mdash;in the form of docstrings. These are extremely helpful
+once you've figured out the rough structure of UCW, but they are of no
+help when first learning unless you just read most of the source. I
+ended up having to do that, and after some urging along by folks in
+<code>#ucw</code> I decided to clean up my planner notes and publish them for
+public consumption.</p>
+
+<p>The roadmap is presented with major sections ordered in a logical
+order for learning the framework. The sections are ordered internally
+in order of most immediately useful to least, but it may be worth
+hopping between major sections before reading all of the details. I
+have used abridged class definitions and docstrings with occasional
+commentary to clarify things.</p>
+
+
+<h2><a name="sec2" id="sec2"></a>
+Roadmap</h2>
+
+<h3><a name="sec3" id="sec3"></a>
+Applications</h3>
+
+<p class="first">Applications are a bundle of entry points. The base class is,
+naturally, <code>standard-application</code>, but you should instead derive your
+application class from <code>modular-application</code> and any standard or custom
+application mixins you find useful.</p>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/rerl/standard-classes.lisp">src/rerl/standard-classes.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">standard-application</span> (application)
+  ((url-prefix <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:url-prefix</span>
+               <span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"A string specifying the
+start (prefix) of all the urls this app should handle.
+
+This value is used by the standard-server to decide what app a
+particular request is aimed at and for generating links to
+actions within the app. "</span>)
+   (www-roots <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:www-roots</span>
+              <span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"A list of directories (pathname
+specifiers) or cons-cell (URL-subdir . pathname) to use when looking for static files."</span>)
+   (dispatchers <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:dispatchers</span>
+                <span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"A list of request
+dispatchers. The user supplied list of dispatchers is extended
+with other dispatchers that are required for UCW to function
+properly (action-dispatcher, a parenscript-dispatcher, etc). If
+you want full control over the active dispatchers use the (setf
+application.dispatchers) accessor or, if you want control over
+the order of the dispathcers, (slot-value instance
+'dispatchers)."</span>))
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"The default UCW application class."</span>))
+</pre>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/rerl/modular-application/modular-application.lisp">src/rerl/modular-application/modular-application.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">modular-application-mixin</span> ()
+  ()
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Superclass for all application mixins."</span>))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">modular-application</span> (standard-application modular-application-mixin)
+  ...)
+</pre>
+
+<h4><a name="sec4" id="sec4"></a>
+Cookie</h4>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/rerl/modular-application/cookie-module.lisp">src/rerl/modular-application/cookie-module.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">cookie-session-application-module</span> (modular-application-mixin)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Class for applications which use cookies for sesion tracking.
+
+Cookie session applications work exactly like
+standard-applications except that when the session is not found
+using the standard mechanisms the id is looked for in a cookie."</span>))
+</pre>
+
+<p>This is the most useful of the application components. It makes your
+application urls readable by stashing the session id into a cookie
+rather than as a set of long and ugly GET parameters.</p>
+
+
+<h4><a name="sec5" id="sec5"></a>
+L10n</h4>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/rerl/modular-application/l10n-module.lisp">src/rerl/modular-application/l10n-module.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">l10n-application-module</span> (modular-application-mixin)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Application class which can handle l10n requests."</span>))
+</pre>
+
+
+<h4><a name="sec6" id="sec6"></a>
+Secure</h4>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/rerl/modular-application/security-module.lisp">src/rerl/modular-application/security-module.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">secure-application-module</span> (modular-application-mixin)
+  (<span style="color: #b0c4de;">:documentation</span>
+    <span style="color: #b3b3b3;">"Mixin class for applications which require authorized access.
+Concrete application must specialize the following methods:
+APPLICATION-FIND-USER (APPLICATION USERNAME)
+APPLICATION-CHECK-PASSWORD (APPLICATION USER PASSWORD)
+APPLICATION-AUTHORIZE-CALLZE-CALL (APPLICATION USER FROM-COMPONENT TO-COMPONENT)."</span>))
+</pre>
+
+
+
+<h3><a name="sec7" id="sec7"></a>
+Components</h3>
+
+<p class="first">A component is a special class that handles the complexities of
+continuation suspension and such for you. New components are derived
+from the existing ones by using <code>defcomponent</code> instead of <code>defclass</code>. This
+adds a few extra slot and class options, and ensures that the proper
+metaclass is set.</p>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/rerl/standard-component/standard-component.lisp">src/rerl/standard-component/standard-component.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">defcomponent</span> (name supers slots <span style="color: #98fb98;">&amp;rest</span> options)
+  <span style="color: #b3b3b3;">"Macro for defining a component class.
+
+This macro is used to create component classes and provides
+options for easily creating the methods which often accompany a
+component definition.
+
+NAME, SUPERS and SLOTS as treated as per defclass. The following
+extra options are allowed:
+
+ (:ENTRY-POINT url (&amp;key application class)) - Define an
+ entry-point on the url URL which simply calls an instance of
+ this component. Any request parameters passed to the entry-point
+ are used to initialize the slots in the component. This option
+ may appear multiple times.
+
+ (:DEFAULT-BACKTRACK function-designator) - Unless the slots
+ already have a :backtrack option FUNCTION-DESIGNATOR is
+ added. As with the 'regular' :backtrack options if you pass T
+ here it is assumed to mean #'IDENTITY.
+
+ (:RENDER (&amp;optional COMPONENT) &amp;body BODY) - Generate a render
+ method specialized to COMPONENT. COMPONENT may be a symbol, in
+ which case the method will be specialized on the componnet
+ class. If COMPONNET is omited the component is bound to a
+ variable with the same name as the class.
+
+ (:ACTION &amp;optional NAME) - Generate a defaction form named
+ NAME (which defaults to the name of the component) which simply
+ CALL's this component class passing all the arguments passed to
+ the action as initargs."</span>)
+
+<span style="color: #ff7f24;">;;; </span><span style="color: #ff7f24;">Extra Slot Options
+</span><span style="color: #b3b3b3;">"Other than the initargs for standard slots the following
+options can be passed to component slots:
+
+:backtrack [ T | NIL | FUNCTION-NAME ] - Specify that this slot
+should be backtracked (or not if NIL is passed as the value). If
+the value is neither T nor NIL then it must be a function which
+will be used as the copyer.
+
+:component [ TYPE | ( TYPE &amp;rest INITARGS ) ] - Specify that this
+slot is actually a nested component of type TYPE. When instances
+of the class are created this slot will be set to an instance of
+type TYPE and it's place will be set to this slot. If a list is
+passed to :component then TYPE (which isn't evaluated) will be
+passed as the first argument to make-instance. The INITARGS will
+be eval'd and apply'd to make-instance. The result of this call
+to make-instance will be used as the effective component
+object."</span>
+</pre>
+
+<h4><a name="sec8" id="sec8"></a>
+Windows</h4>
+
+<p class="first">A window-component represents a top level browser window, naturally.</p>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/window.lisp">src/components/window.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">window-component</span> ()
+  ((content-type)))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">simple-window-component</span> (window-component)
+  ((title)
+   (stylesheet)
+   (javascript <span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"List of javascript includes.
+
+Each element must be a list whose first value is either the
+symbol :SRC or :JS.
+
+ (:SRC url) - writes &lt;script src=\"URL\"&gt;&lt;/script&gt; tag.
+ (:JS form) - equivalent to (:SCRIPT (js:js* form))
+ (:SCRIPT string) - write &lt;script&gt;STRING&lt;/script&gt;.
+
+The elements will be rendered in order."</span>)
+   ...))
+</pre>
+
+<p><code>window-component</code> could be useful for doing things like dumping binary
+data to the user, or just deriving your own funky top level window
+type.</p>
+
+<p><code>simple-window-component</code> is the easiest for displaying standard
+webpage. It provides a wrapping method on render that displays the
+html boilerplate based on your component slot values which is what one
+wants most of the time. The initargs to <code>simple-window-component</code> have
+the same names as the slots.</p>
+
+<h5>Status Bar</h5>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/status-bar.lisp">src/components/status-bar.lisp</a></p>
+
+<p>There is a generic status bar interface. Messages severity is one of
+<code>(:error :warn :info)</code>. Note that the default status bar render method
+just shows a div with status messages. A derivative could be defined
+to insert messages into the browser status bar.</p>
+
+<pre class="src">
+(defcomponent status-bar ()
+  ((messages <span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"An ALIST of the messages to
+show. Each element is a cons of the form (SEVERITY .
+MESSAGE). SEVERITY is one of :ERROR, :WARN, :INFO and MESSAGE is
+a string which will be html-escaped."</span>)
+   ...)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Stateless status bar to display messages."</span>))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">add-message</span> (status-bar msg <span style="color: #98fb98;">&amp;key</span> severity <span style="color: #98fb98;">&amp;allow-other-keys</span>)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Add the message text MSG to STATUS-BAR with
+severity SEVERITY."</span>))
+</pre>
+
+<pre class="src">
+(defcomponent status-bar-mixin ()
+  ((status-bar <span style="color: #b0c4de;">:accessor</span> status-bar
+               <span style="color: #b0c4de;">:initarg</span> status-bar
+               <span style="color: #b0c4de;">:component</span> (status-bar))))
+
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">show-status-bar</span> ((win status-bar-mixin))
+  (render (status-bar win)))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">show-message</span> (msg <span style="color: #98fb98;">&amp;key</span> severity <span style="color: #98fb98;">&amp;allow-other-keys</span>)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Show a message in the status bar. Only works if
+  current window is a status-bar-mixin"</span>))
+</pre>
+
+
+<h5>Redirect</h5>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/redirect.lisp">src/components/redirect.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">redirect-component</span> ()
+  ((target <span style="color: #b0c4de;">:accessor</span> target <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:target</span>))
+  (<span style="color: #b0c4de;">:metaclass</span> standard-component-class)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Send a client redirect.
+
+This component, which must be used as a window-component,
+redirects the client to the url specified in the target slot. A
+302 (as opposed to 303) response code is sent to ensure
+compatability with older browsers.
+
+The redirect component never answers."</span>))
+</pre>
+
+<p>There is also a <code>meta-refresh</code> procedure.</p>
+
+<pre class="src">
+(defun/cc meta-refresh ()
+  <span style="color: #b3b3b3;">"Cause a meta-refresh (a freshly got (GET) url) at this point.
+This is useful in order to have a GET url after a form POST's
+actions have completed running. The user can then refresh to his
+heart's content."</span>)
+</pre>
+
+
+
+<h4><a name="sec9" id="sec9"></a>
+Containers</h4>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/container.lisp">src/components/container.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">container</span> ()
+  (...)
+  (<span style="color: #b0c4de;">:metaclass</span> standard-component-class)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Allow multiple components to share the same place.
+
+The container component serves to manage a set of components.
+It does not provide any render impementation, which is the
+resposibility of the subclasses (e.g. switching-container or
+list-container).
+
+Each contained component has a \"key\" associated with it which
+is used to retrieve a particular component. Keys are compared with
+container.key-test.
+
+The :contents inintarg, if provided, must be either a list of (key .
+component) or a list of components. In the latter case it will
+be converted into (component . component) form."</span>))
+</pre>
+
+<h5>Protocol</h5>
+
+<ul>
+<li><code>child-components</code></li>
+<li><code>find-component CONTAINER KEY</code></li>
+<li><code>remove-component</code></li>
+<li><code>(setf find-component CONTAINER KEY) COMPONENT</code> -&gt;
+<code>add-component CONTAINER COMPONENT KEY</code></li>
+</ul>
+
+
+<h5>Switching Container</h5>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/container.lisp">src/components/container.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">switching-container</span> ...
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"A simple renderable container component.
+
+This component is like the regular CONTAINER but serves to manage a set
+of components which share the same place in the UI. Therefore it provides
+an implementation of RENDER which simply renders its current component.
+
+The switching-container component class is generally used as the super
+class for navigatation components and tabbed-pane like
+components."</span>))
+</pre>
+
+<p>Subclass and <code>(defmethod render :around ...)</code> to render navigation using
+<code>(call-next-method)</code> to render the selected component.</p>
+
+<h5>Protocol</h5>
+
+<ul>
+<li><code>container.current-component COMPONENT</code></li>
+<li><code>(setf container.current-component CONTAINER) COMPONENT</code></li>
+</ul>
+
+
+
+<h5>Tabbed Pane</h5>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/tabbed-pane.lisp">src/components/tabbed-pane.lisp</a></p>
+
+<pre class="src">
+(defcomponent tabbed-pane (switching-container)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Component for providing the user with a standard \"tabbed pane\" GUI widget."</span>))
+</pre>
+
+<p>Provides a generic tabbed pane that renders a nested div split into a
+naviation and content box. The navigation box is a set of styled divs
+containing the navigation links.</p>
+
+
+
+<h4><a name="sec10" id="sec10"></a>
+Dialogs</h4>
+
+<p class="first">A few convenience dialogs are provided for grabbing data from the
+user.</p>
+
+<h5>login</h5>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/login.lisp">src/components/login.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">login</span> ()
+  ((username) (password) (message))
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Generic login (input username and password) component.
+
+This component, which must be embedded in another component,
+presents the user with a simple two fielded login form.
+
+When the user attempts a login the action try-login is called,
+try-login calls the generic function check-credentials passing it
+the login component. If check-credentials returns true then the
+login-successful action is called, otherwise the message slot of
+the login component is set (to a generic \"bad username\"
+message).
+
+The default implementaion of login-successful simply answers t,
+no default implementation of check-credentials is
+provided. Developers should use sub-classes of login for which
+all the required methods have been definined."</span>)
+  (<span style="color: #b0c4de;">:metaclass</span> standard-component-class))
+</pre>
+
+<pre class="src">
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">check-credentials</span> (login)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Returns T if LOGIN is valid."</span>))
+
+(defaction login-successful ((l login))
+  (answer t))
+</pre>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/user-login.lisp">src/components/user-login.lisp</a></p>
+
+<pre class="src">
+(defcomponent user-login (simple-window-component status-bar-mixin)
+  ((username string-field) (password password-field)))
+</pre>
+
+<p>Used by <code>secure-application-module</code> to provide a user login. Relevant
+protocol details follow.</p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">check-credentials</span> ((self user-login))
+  (<span style="color: #00ffff;">let*</span> ((username (value (username self)))
+         (password (value (password self)))
+         (user (find-application-user username)))
+    (<span style="color: #00ffff;">when</span> (and user (check-user-password user password))
+      user)))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">application-find-user</span> (application username)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Find USER by USERNAME for APPLICATION."</span>))
+</pre>
+
+
+<h5>error</h5>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/error.lisp">src/components/error.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">error-message</span> (simple-window-component)
+  ((message <span style="color: #b0c4de;">:accessor</span> message <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:message</span> <span style="color: #b0c4de;">:initform</span> <span style="color: #b3b3b3;">"ERROR [no message specified]"</span>))
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Generic component for showing server side
+ error messages."</span>)
+  (<span style="color: #b0c4de;">:metaclass</span> standard-component-class))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">error-component</span> (error-message)
+  ((condition <span style="color: #b0c4de;">:accessor</span> error.condition <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:condition</span> <span style="color: #b0c4de;">:initform</span> nil)
+   (backtrace <span style="color: #b0c4de;">:accessor</span> error.backtrace <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:backtrace</span>))
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Generic component for showing server side
+ error conditions. Unlike ERROR-MESSAGE this component also
+ attempts to display a backtrace."</span>)
+  (<span style="color: #b0c4de;">:metaclass</span> standard-component-class))
+</pre>
+
+
+<h5>message</h5>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/message.lisp">src/components/message.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">info-message</span> ()
+  ((message <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:message</span> <span style="color: #b0c4de;">:accessor</span> message)
+   (ok-text <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:ok-text</span> <span style="color: #b0c4de;">:accessor</span> ok-text <span style="color: #b0c4de;">:initform</span> <span style="color: #b3b3b3;">"Ok."</span>))
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Component for showing a message to the user.
+
+If the OK-TEXT slot is non-NIL component will use that as the
+text for a link which, when clicked, causes the component to
+answer. It follows that if OK-TEXT is NIL this component will
+never answer."</span>)
+  (<span style="color: #b0c4de;">:metaclass</span> standard-component-class))
+</pre>
+
+
+<h5>option-dialog</h5>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/option-dialog.lisp">src/components/option-dialog.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">option-dialog</span> (template-component)
+  ((message) (options) (confirm))
+  (<span style="color: #b0c4de;">:default-initargs</span> <span style="color: #b0c4de;">:template-name</span> <span style="color: #b3b3b3;">"ucw/option-dialog.tal"</span>)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Component for querying the user.
+
+The value of the slot MESSAGE is used as a general heading.
+
+The OPTIONS slot must be an alist of (VALUE . LABEL). LABEL (a
+string) will be used as the text of a link which, when clikced,
+will answer VALUE.
+
+If the CONFIRM slot is T the user will be presented with a second
+OPTION-DIALOG asking the user if they are sure they want to
+submit that value."</span>)
+  (<span style="color: #b0c4de;">:metaclass</span> standard-component-class))
+</pre>
+
+<p>A macro to present an option dialog is provided.</p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">option-dialog</span> ((message-spec <span style="color: #98fb98;">&amp;rest</span> message-args) <span style="color: #98fb98;">&amp;body</span> options)
+  ...)
+</pre>
+
+<p><code>message-spec</code> is passed to <code>format</code> if <code>message-args</code> are supplied, and
+used as a string literal otherwise. This does not provide a way to set
+the confirm property which makes the macro not so generally useful.</p>
+
+
+
+<h4><a name="sec11" id="sec11"></a>
+Forms</h4>
+
+<p class="first">Reasonably useful forms library that integrates easily with TAL.</p>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/form.lisp">src/components/form.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">form-field</span> ()
+  ((validators <span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"List of validators which will be
+               applied to this field."</span>)
+   (initially-validate <span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"When non-NIL the
+                       validators will be run as soon as the page
+                       is rendered."</span>)))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">value</span> (form-field)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"The lispish translated value that represents the form-field."</span>))
+
+(<span style="color: #00ffff;">defgeneric</span> (<span style="color: #87cefa;">setf value)</span> (new-value form-field)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Set the value of a form-field with translation to client."</span>))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">generic-html-input</span> (form-field html-element)
+  ((client-value <span style="color: #b0c4de;">:accessor</span> client-value <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:client-value</span>
+                 <span style="color: #b0c4de;">:initform</span> <span style="color: #b3b3b3;">""</span>
+                 <span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"The string the client submitted along with this field."</span>)
+   (name <span style="color: #b0c4de;">:accessor</span> name <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:name</span> <span style="color: #b0c4de;">:initform</span> nil)
+   (accesskey <span style="color: #b0c4de;">:accessor</span> accesskey <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:accesskey</span> <span style="color: #b0c4de;">:initform</span> nil)
+   (tooltip <span style="color: #b0c4de;">:accessor</span> tooltip <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:tooltip</span> <span style="color: #b0c4de;">:initform</span> nil)
+   (tabindex <span style="color: #b0c4de;">:accessor</span> tabindex <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:tabindex</span> <span style="color: #b0c4de;">:initform</span> nil))
+  (<span style="color: #b0c4de;">:default-initargs</span> <span style="color: #b0c4de;">:dom-id</span> (js:gen-js-name-string <span style="color: #b0c4de;">:prefix</span> <span style="color: #b3b3b3;">"_ucw_"</span>)))
+</pre>
+
+<p>Fields are rendered into the extended <code>&lt;ucw:input</code> yaclml tag which
+supports a few fancy features. The <code>:accessor</code> for all form elements is
+set to <code>(client-value FIELD)</code>, and you should use <code>value</code> to access the
+Lisp value associated with it.</p>
+
+<pre class="src">
+(deftag-macro &lt;ucw:input (<span style="color: #98fb98;">&amp;attribute</span> accessor action reader writer name id (default nil)
+                          <span style="color: #98fb98;">&amp;allow-other-attributes</span> others)
+  <span style="color: #b3b3b3;">"Generic INPUT tag replacement.
+
+If the ACCESSOR attribute is specified then it must be a PLACE
+and it's value will be used to fill the input, when the form is
+submitted it will be set to the new value.
+
+If ACTION is specefied then when the form is submitted via this
+input type=\"submit\" tag the form will be eval'd. when the
+submit (or image) is clicked. DEFAULT means that the ACTION
+provided for this input tag will be the default action of the
+form when pressing enter in a form field. If more then one, then
+the latest wins."</span>)
+</pre>
+
+<p>Validation of form fields are supported by adding to the validators
+list.</p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">validator</span> ()
+  ((message <span style="color: #b0c4de;">:accessor</span> message <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:message</span> <span style="color: #b0c4de;">:initform</span> nil)))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">validate</span> (field validator)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Validate a form-field with a validator."</span>))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">javascript-check</span> (field validator)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Generate javascript code for checking FIELD against VALIDATOR.
+
+This is the convenience entry point to generate-javascript-check,
+methods defined on this generic funcition should return a list of
+javascript code (as per parenscript) which tests against the
+javascript variable value."</span>))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">javascript-invalid-handler</span> (field validator)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"The javascript code body for when a field is invalid."</span>))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">javascript-valid-handler</span> (field validator)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Generate the javascript body for when a field is valid."</span>))
+</pre>
+
+<h5>Standard Form Fields</h5>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">string-field</span> (generic-html-input)
+  ((input-size) (maxlength)))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">password-field</span> (string-field))
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">number-field</span> (string-field))
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">integer-field</span> (number-field))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">in-field-string-field</span> (string-field)
+  ((in-field-label <span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"This slot, if non-NIL, will be
+                   used as an initial field label. An initial
+                   field label is a block of text which is placed
+                   inside the input element and removed as soon
+                   as the user edits the field. Obviously this
+                   field is overidden by an initial :client-value
+                   argument."</span>)))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">textarea-field</span> (generic-html-input)
+  ((rows) (cols)))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">date-field</span> (form-field widget-component)
+  ((year) (month) (day)))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">dmy-date-field</span> (date-field)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Date fields which orders the inputs day/month/year"</span>))
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">mdy-date-field</span> (date-field))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">select-field</span> (generic-html-input)
+  ((data-set <span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"The values this select chooses
+             from."</span>))
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Form field used for selecting one value from a
+  list of available options."</span>))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">render-value</span> (select-field value)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"This function will be passed each value in the field's
+   data-set and must produce the body of the corresponding
+   &lt;ucw:option tag."</span>))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">mapping-select-field</span> (select-field)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Class used when we want to chose the values of
+  a certain mapping based on the keys. We render the keys in the
+  select and return the corresponding value from the VALUE
+  method."</span>))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">hash-table-select-field</span> (mapping-select-field))
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">alist-select-field</span> (mapping-select-field))
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">plist-select-field</span> (mapping-select-field))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">radio-group</span> (generic-html-input)
+  ((value-widgets)))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">radio-button</span> (generic-html-input)
+  ((value)
+   (group <span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"The RADIO-GROUP this button is a part
+          of."</span>))
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"A widget representing a single radio
+  button. Should be used in conjunction with a RADIO-GROUP."</span>))
+
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">add-value</span> ((group radio-group) value)
+  <span style="color: #b3b3b3;">"Adds radio-button with value to group"</span>)
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">checkbox-field</span> (generic-html-input))
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">file-upload-field</span> (generic-html-input))
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">submit-button</span> (generic-html-input)
+  ((label)))
+</pre>
+
+<h5>File Upload Field</h5>
+
+<p>Calling <code>value</code> on a <code>file-upload-field</code> returns a mime encoded body
+part. <code>(mime-part-body (value FIELD))</code> will return a <strong>binary stream</strong>
+attached to the contents of the file. The <code>Content-Type</code> header should
+be set to the MIME type of the file being uploaded.</p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">mime-part-headers</span> (mime-part)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Returns an alist of the headers of MIME-PART.
+
+The alist must be of the form (NAME . VALUE) where both NAME and
+VALUE are strings."</span>))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">mime-part-body</span> (mime-part)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Returns the body of MIME-PART."</span>))
+</pre>
+
+
+
+<h5>Standard Validators</h5>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">not-empty-validator</span> (validator))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">value-validator</span> (validator)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Validators that should only be applied if there is a value.
+That is, they always succeed on nil."</span>))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">length-validator</span> (value-validator)
+  ((min-length <span style="color: #b0c4de;">:accessor</span> min-length <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:min-length</span>
+               <span style="color: #b0c4de;">:initform</span> nil)
+   (max-length <span style="color: #b0c4de;">:accessor</span> max-length <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:max-length</span>
+               <span style="color: #b0c4de;">:initform</span> nil)))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">string=-validator</span> (validator)
+  ((other-field <span style="color: #b0c4de;">:accessor</span> other-field <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:other-field</span>))
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Ensures that a field is string= to another one."</span>))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">regex-validator</span> (value-validator)
+  ((regex <span style="color: #b0c4de;">:accessor</span> regex <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:regex</span> <span style="color: #b0c4de;">:initform</span> nil)))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">e-mail-address-validator</span> (regex-validator))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">phone-number-validator</span> (regex-validator))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">is-a-number-validator</span> (value-validator))
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">is-an-integer-validator</span> (is-a-number-validator))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">number-range-validator</span> (is-a-number-validator)
+  ((min-value <span style="color: #b0c4de;">:accessor</span> min-value <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:min-value</span> <span style="color: #b0c4de;">:initform</span> nil)
+   (max-value <span style="color: #b0c4de;">:accessor</span> max-value <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:max-value</span> <span style="color: #b0c4de;">:initform</span> nil)))
+</pre>
+
+
+<h5>Simple Form Helper</h5>
+
+<p>UCW provides a helper class for developing forms. Subclass and add the
+elements you wish to include in the form. A <code>:wrapping</code> method renders
+the form boilerplate and then calls your <code>render</code>.</p>
+
+<pre class="src">
+(defcomponent simple-form (html-element)
+  ((submit-method <span style="color: #b0c4de;">:accessor</span> submit-method
+                  <span style="color: #b0c4de;">:initform</span> <span style="color: #b3b3b3;">"post"</span>
+                  <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:submit-method</span>)
+   (dom-id <span style="color: #b0c4de;">:accessor</span> dom-id
+           <span style="color: #b0c4de;">:initform</span> (js:gen-js-name-string <span style="color: #b0c4de;">:prefix</span> <span style="color: #b3b3b3;">"_ucw_simple_form_"</span>)
+           <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:dom-id</span>))
+  (<span style="color: #b0c4de;">:default-initargs</span> <span style="color: #b0c4de;">:dom-id</span> <span style="color: #b3b3b3;">"ucw-simple-form"</span>))
+</pre>
+
+
+
+<h4><a name="sec12" id="sec12"></a>
+Templates</h4>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/template.lisp">src/components/template.lisp</a></p>
+
+<p>Infrastructure for loading TAL templates as a view of a component.</p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">template-component</span> (component))
+(defcomponent simple-template-component (template-component)
+  ((environment <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:environment</span> <span style="color: #b0c4de;">:initform</span> nil)))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">template-component-environment</span> (component)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Create the TAL environment for rendering COMPONENT's template.
+
+Methods defined on this generic function must return a TAL
+environment: a list of TAL binding sets (see the documentation
+for YACLML:MAKE-STANDARD-ENVIRONMENT for details on TAL
+environments.)"</span>)
+  (<span style="color: #b0c4de;">:method-combination</span> nconc))
+
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">template-component-environment</span> nconc ((component template-component))
+  <span style="color: #b3b3b3;">"Create the basic TAL environment.
+
+Binds the symbol ucw:component to the component object itself,
+also puts the object COMPONENT on the environment (after the
+binding of ucw:component) so that slots are, by default,
+visable."</span>
+  (make-standard-environment `((component . ,component)) component))
+
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">render</span> ((component template-component))
+  <span style="color: #b3b3b3;">"Render a template based component.
+
+Calls the component's template. The name of the template is the
+value returned by the generic function
+template-component.template-name, the template will be rendered
+in the environment returned by the generic function
+template-component-environment."</span>
+  (render-template *context*
+                   (template-component.template-name component)
+                   (template-component-environment component)))
+
+</pre>
+
+<p>Subclass and override methods. <code>simple-template-component</code> only provides
+the ability to set environment variables in initarg. Subclass to
+provide automagic template file name generation and such.</p>
+
+
+<h4><a name="sec13" id="sec13"></a>
+Utility Mixin Components</h4>
+
+<h5>Range View</h5>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/range-view.lisp">src/components/range-view.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">range-view</span> (template-component)
+  (<span style="color: #b0c4de;">:default-initargs</span> <span style="color: #b0c4de;">:template-name</span> <span style="color: #b3b3b3;">"ucw/range-view.tal"</span>)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Component for showing the user a set of data one \"window\" at a time.
+
+The data set is presented one \"window\" at a time with links to
+the the first, previous, next and last window. Each window shows
+at most WINDOW-SIZE elements of the data. The data is passed to
+the range-view at instance creation time via the :DATA initarg.
+
+The generic function RENDER-RANGE-VIEW-ITEM is used to render
+each item of DATA.
+
+In order to change the rendering of the single elements of a
+range view developer's should create a sub class of RANGE-VIEW
+and define their RENDER-RANGE-VIEW-ITEM methods on that."</span>)
+  (<span style="color: #b0c4de;">:metaclass</span> standard-component-class))
+</pre>
+
+<pre class="src">
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">render-range-view-item</span> (range-view item)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Render a single element of a range-view."</span>)
+  (<span style="color: #b0c4de;">:method</span> ((range-view range-view) (item t))
+    <span style="color: #b3b3b3;">"Standard implementation of RENDER-RANGE-VIEW-ITEM. Simply
+applies ITEM to princ (via &lt;:as-html)."</span>
+    (<span style="color: #00ffff;">declare</span> (ignore range-view))
+    (&lt;:as-html item)))
+</pre>
+
+
+<h5>Widget</h5>
+
+<p>Mixin with existing component to wrap in a div or span. This is handy
+for defining lightweight widgets embedded within other components.</p>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/html-element.lisp">src/components/html-element.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">html-element</span> (component)
+  ((css-class)
+   (dom-id)
+   (css-style)
+   (extra-tags)
+   (events))
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"An HTML element.
+
+HTML elements control aspects that are relevant to almost all tags.
+
+Firstly they provide a place to store the class, id, and style of the
+component. The specific render methods of the components themselves
+must pass these values to whatever code is used to render the actual
+tag.
+
+Secondly, they allow javascript event handlers to be registered for a
+tag. The events slot can be filled with a list of lists in the form
+
+ (event parenscript-statement*)
+
+For example (\"onclick\" (alert \"You clicked!\") (return nil)). If
+the element has a dom-id, these event handlers are automatically
+added."</span>))
+</pre>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/widget.lisp">src/components/widget.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">widget-component</span> (html-element)
+  ()
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"A widget which should be wrapped in a &lt;div&gt;."</span>))
+
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">inline-widget-component</span> (html-element)
+  ()
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"A widget which should be wrapped in &lt;span&gt; and not &lt;div&gt;"</span>))
+
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">render</span> <span style="color: #b0c4de;">:wrap-around</span> ((widget widget-component)))
+(<span style="color: #00ffff;">defmethod</span> <span style="color: #87cefa;">render</span> <span style="color: #b0c4de;">:wrap-around</span> ((widget inline-widget-component)))
+</pre>
+
+
+<h5>Transactions</h5>
+
+<p>A mixin to provide transactions. <code>(open-transaction component)</code> and
+<code>(close-transaction component)</code> open and closed nested
+transactions. After a transaction has been closed an attempt to
+backtrack into a step inside the transaction will result in jumping up
+one level of transactions (or out of the transaction entirely if at
+the top level). This ensures that the transaction is only run once,
+naturally.</p>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/transaction-mixin.lisp">src/components/transaction-mixin.lisp</a></p>
+
+<pre class="src">
+(defcomponent transaction-mixin ()
+  (...))
+
+(defmethod/cc open-transaction ((comp transaction-mixin)))
+(defmethod/cc close-transaction ((comp transaction-mixin)))
+</pre>
+
+
+<h5>Task</h5>
+
+<p><code>(defaction start ...)</code> on subclass to run a series of actions bundled
+into a task.</p>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/task.lisp">src/components/task.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">task-component</span> (standard-component)
+  (...)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"A controller for a single task or operation to
+  be performed by the user.
+
+  A task component's START action is called as soon as the
+component is instantiated. Task components do not have their own
+RENDER method, in fact they have no graphical representation but
+serve only to order a sequence of other components."</span>))
+
+(defgeneric/cc start (task)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"action which gets called automatically when
+task-component is active. Use defaction to define your own
+\"start\" action"</span>))
+</pre>
+
+
+<h5>Cached</h5>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/components/cached.lisp">src/components/cached.lisp</a></p>
+
+<pre class="src">
+(defcomponent cached-component ()
+  ((cached-output <span style="color: #b0c4de;">:accessor</span> cached-output <span style="color: #b0c4de;">:initform</span> nil
+                  <span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"A string holding the output to
+                  use for this component. This string will be
+                  written directly to the html stream and is
+                  changed by the REFRESH-COMPONENT-OUTPUT
+                  method."</span> )
+   (timeout <span style="color: #b0c4de;">:accessor</span> timeout <span style="color: #b0c4de;">:initarg</span> <span style="color: #b0c4de;">:timeout</span>
+            <span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"An value specifying how often this
+            component needs to be refreshed. The exact
+            interpretation of the value depends on the type of
+            caching used class."</span>))
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Component which caches its output.
+
+The component caching API is built around the generic functions
+COMPONENT-DIRTY-P and REFRESH-COMPONENT-OUTPUT and a method on
+RENDER, see the respective docstrings for more details.
+
+Do not use CACHED-COMPONENT directly, use one its subclasses."</span>))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">component-dirty-p</span> (component)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Returns T is COMPONENT's cache is invalid."</span>))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">update-cache</span> (component)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Update COMPONENT's cache variables after a refresh."</span>))
+
+(defcomponent timeout-cache-component (cached-component)
+  ((last-refresh <span style="color: #b0c4de;">:accessor</span> last-refresh <span style="color: #b0c4de;">:initform</span> nil
+                 <span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"The time, exrpessed as a
+                 universal time, when the component was last rendered."</span>))
+  (<span style="color: #b0c4de;">:default-initargs</span>
+   <span style="color: #b0c4de;">:timeout</span> (* 30 60 60))
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Render the component at most every TIMEOUT seconds."</span>))
+
+(defcomponent num-hits-cache-component (cached-component)
+  ((hits-since-refresh <span style="color: #b0c4de;">:accessor</span> hits-since-refresh
+                       <span style="color: #b0c4de;">:initform</span> nil
+                       <span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Number of views since last refresh."</span>))
+  (<span style="color: #b0c4de;">:default-initargs</span> <span style="color: #b0c4de;">:timeout</span> 10)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Render the component every TIMEOUT views."</span>))
+</pre>
+
+<p>Subclass and override <code>component-dirty-p</code> to do something useful
+(e.g. flip mark bit when object being presented changes).</p>
+
+
+
+
+<h3><a name="sec14" id="sec14"></a>
+Control Flow</h3>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/rerl/standard-component/control-flow.lisp">src/rerl/standard-component/control-flow.lisp</a></p>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/rerl/standard-action.lisp">src/rerl/standard-action.lisp</a></p>
+
+<h4><a name="sec15" id="sec15"></a>
+Calling</h4>
+
+<p class="first">Most of what you do in UCW will be calling components so this is a bit
+important. Note that calling interrupts the current control flow so if
+you want to render a component in place as part of another component
+just call <code>render</code> on it instead.</p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defmacro</span> <span style="color: #87cefa;">call</span> (component-type <span style="color: #98fb98;">&amp;rest</span> component-init-args)
+  <span style="color: #b3b3b3;">"Stop the execution of the current action and pass control to
+a freshly created component of type COMPONENT-TYPE.
+
+COMPONENT-INIT-ARGS are passed directly to the underlying
+make-instance call. This form will return if and when the call'd
+component calls answer, the value returned by this form is
+whatever the call'd component passed to answer.
+
+Notes:
+
+This macro assumes that the lexcial variable UCW:SELF is bound to
+the calling component."</span>)
+
+(answer VAL) <span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">answer parent component ONLY IN ACTIONS
+</span>
+(ok SELF VAL) <span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">Used to answer a component anywhere and what answer
+</span>              <span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">expands into
+</span>
+(jump COMPONENT-NAME <span style="color: #98fb98;">&amp;REST</span> ARGS) <span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">is similar to call, but replaces
+</span>                                 <span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">the current component with the new
+</span>                                 <span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">one and drops any backtracks (back
+</span>                                 <span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">button will no longer work)
+</span></pre>
+
+<p><code>(call COMPONENT-NAME &amp;ARGS INIT-ARGS)</code> calls <code>COMPONENT-NAME</code> and returns
+the value returned by <code>(ok SELF RETURN-VALUE)</code> called from within
+<code>COMPONENT-NAME</code></p>
+
+
+<h4><a name="sec16" id="sec16"></a>
+Actions</h4>
+
+<p class="first">Actions are methods on components. The first argument <strong>must</strong> be a
+component for most of UCW to work.</p>
+
+<pre class="src">
+(defaction NAME (first ...) ...)
+ <span style="color: #ff7f24;">;  </span><span style="color: #ff7f24;">(roughly) expands into
+</span>(defmethod/cc NAME (first ...)
+  (<span style="color: #00ffff;">let</span> ((self first))
+    ...))
+</pre>
+
+<p><code>Self</code> being bound in the current lexical environment is required for
+most UCW control flow things to work. <code>defaction</code> hides this from you,
+and was a big source of confusion for me early on (mostly &quot;hmm, why is
+this not working ... where did that come from in the
+macroexpansion!&quot;).</p>
+
+
+<h4><a name="sec17" id="sec17"></a>
+Entry Points</h4>
+
+<pre class="src">
+(defentry-point url (<span style="color: #b0c4de;">:application</span> APPLICATION
+                     <span style="color: #b0c4de;">:class</span> DISPATCHER-CLASS)
+   (PARAM1 ... PARAMN) <span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">GET / POST vars, bound in body
+</span>  body)
+</pre>
+
+<p>An entry point is what it sounds like: a static URL matched using the
+mater of <code>DISPATCHER-CLASS</code> that enters into <code>APPLICATION</code> running the
+code in <code>body</code>. An example from a test program I have written
+follows. The entry point allows files to be streamed to user when the
+url audio.ucw?file=FOO is used.</p>
+
+<pre class="src">
+(defentry-point <span style="color: #b3b3b3;">"^(audio.ucw|)$"</span> (<span style="color: #b0c4de;">:application</span> *golf-test-app*
+                                  <span style="color: #b0c4de;">:class</span> regexp-dispatcher)
+    (file)
+  (call 'audio-file-window
+   <span style="color: #b0c4de;">:audio-file</span> (make-instance 'audio-file
+                <span style="color: #b0c4de;">:type</span> <span style="color: #b0c4de;">:vorbis</span>
+                <span style="color: #b0c4de;">:data</span> (file-&gt;bytes (open
+                                    file
+                                    <span style="color: #b0c4de;">:element-type</span> 'unsigned-byte)))))
+</pre>
+
+
+
+<h3><a name="sec18" id="sec18"></a>
+Dispatching</h3>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/rerl/standard-dispatcher.lisp">src/rerl/standard-dispatcher.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">matcher-match</span> (matcher application context)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Abstract method for subclasses to implement a
+matcher.  This method would return multiple-values according to
+matcher internal nature.
+
+No methods defined on this function may rebind *context*, nor
+change CONTEXT's application. Only if the method matches the
+request, it is allowed to modify CONTEXT or APPLICATION, even in
+that case methods defined on this function must not modify
+CONTEXT's application nor rebind *context*."</span>))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">handler-handle</span> (handler application context matcher-result)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Abstract function for handler classes to
+implement in order to handle a request matched by relevant
+matcher.
+
+These methods may modify context as they wish since they'r
+matched, request will be closed after this method is run."</span>))
+
+(<span style="color: #00ffff;">defgeneric</span> <span style="color: #87cefa;">dispatch</span> (dispatcher application context)
+  (<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"Entry point into a dispatcher. Must return T
+  if the context has been handled or NIL if it hasn't.
+
+No methods defined on this function may rebind *context*, nor
+change CONTEXT's application. Only if the method returns T is it
+allowed to modify CONTEXT or APPLICATION, even in that case
+methods defined on this function must not modify CONTEXT's
+application nor rebind *context*."</span>))
+</pre>
+
+<pre class="src">
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">my-matcher</span>    (abstract-matcher)    ...)
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">my-handler</span>    (abstract-handler)    ...)
+(<span style="color: #00ffff;">defclass</span> <span style="color: #98fb98;">my-dispatcher</span> (abstract-dispatcher my-matcher my-handler)
+  ...)
+</pre>
+
+<h4><a name="sec19" id="sec19"></a>
+Simple Dispatcher</h4>
+
+<pre class="src">
+(<span style="color: #b0c4de;">:documentation</span> <span style="color: #b3b3b3;">"This class of dispatchers avoids all of UCW's
+  standard call/cc (and therefore frame/backtracking/component)
+  mechanism.
+
+Unlike all other UCW dispatchers a simple-dispatcher must not use
+CALL, and must perform the rendering directly within the handler."</span>)
+</pre>
+
+
+
+<h3><a name="sec20" id="sec20"></a>
+Server</h3>
+
+<p><a href="http://www.uncommon-web.com/darcsweb/darcsweb.cgi?r=ucw_dev;a=headblob;f=/src/control.lisp">src/control.lisp</a></p>
+
+<pre class="src">
+(<span style="color: #00ffff;">defun</span> <span style="color: #87cefa;">create-server</span> (<span style="color: #98fb98;">&amp;key</span>
+                      (backend `(,*ucw-backend-type* <span style="color: #b0c4de;">:host</span> ,*ucw-backend-host*
+                                 <span style="color: #b0c4de;">:port</span> ,*ucw-backend-port*))
+                      (applications *ucw-applications*)
+                      (start-p t)
+                      (server-class *ucw-server-class*)
+                      (log-root-directory (truename *ucw-log-root-directory*))
+                      (log-level *ucw-log-level*))
+  <span style="color: #b3b3b3;">"Creates and returns a UCW server according to SERVER-CLASS, HOST and
+PORT. Affects *DEFAULT-SERVER*.
+
+BACKEND is a list of (BACKEND-TYPE &amp;rest INITARGS). BACKEND-TYPE
+may be :HTTPD, :MOD-LISP, :ASERVE, :ARANEIDA, an existing
+backend, an existing UCW server backend or :DEFAULT in which case
+it attempts to return a sane default from the UCW backends loaded
+and available, or any other value for which a valid MAKE-BACKEND
+method has been defined. INITARGS will be passed, unmodified, to
+MAKE-BACKEND.
+
+APPLICATIONS is a list of defined applications to be loaded into the
+server.
+
+Logs are generated in verbosity defined by LOG-LEVEL and directed to
+LOG-ROOT-DIRECTORY if defined."</span>
+  ...
+  server) <span style="color: #ff7f24;">; </span><span style="color: #ff7f24;">return server, naturally
+</span></pre>
+
+
+<h3><a name="sec21" id="sec21"></a>
+Debugging</h3>
+
+<h4><a name="sec22" id="sec22"></a>
+Inspector</h4>
+
+<p><a href="/home/clinton/src/ucw/darcs/ucw_dev/src/components/ucw-inspector.lisp">/home/clinton/src/ucw/darcs/ucw_dev/src/components/ucw-inspector.lisp</a></p>
+
+<pre class="src">
+(defaction call-inspector ((component component) datum)
+  <span style="color: #b3b3b3;">"Call an inspector for DATUM on the component COMPONENT."</span>
+  (call 'ucw-inspector <span style="color: #b0c4de;">:datum</span> datum))
+</pre>
+
+
+
+
+<h2><a name="sec23" id="sec23"></a>
+Tips</h2>
+
+<h3><a name="sec24" id="sec24"></a>
+Getting dojo to load</h3>
+
+<p class="first">I had some trouble getting dojo to work properly with UCW. The way
+that the <code>:www-roots</code> option for an application works is a bit
+confusing, and it is unforgiving if you mess the pathname up. A
+directory <strong>must</strong> have a <code>/</code> at the end, and the directory you are serving
+must also have the <code>/</code> (which is counterintuitive given the behavior of
+most unix things that don't want the <code>/</code> at the end of the name).</p>
+
+<pre class="src">
+<span style="color: #b0c4de;">:www-roots</span> (list '(<span style="color: #b3b3b3;">"dojo/"</span> .
+                   #P<span style="color: #b3b3b3;">"/home/clinton/src/ucw/darcs/ucw_dev/wwwroot/dojo/"</span>))
+</pre>
+
+
+<h3><a name="sec25" id="sec25"></a>
+Specials Bound During Rendering</h3>
+
+<p class="first">The current request context is bound to <code>ucw:*context*</code>, and the current
+component is bound to <code>ucw:*current-component*</code> in the dynamic extent of
+<code>render</code>.</p>
+
+
+<h3><a name="sec26" id="sec26"></a>
+Printing to the yaclml stream</h3>
+
+<p class="first">Occasionally it can be useful to do something like write a byte array
+as an ascii string to the client. Inside of <code>render</code> the variable
+<code>yaclml:*yaclml-stream*</code> is bound to the stream that you can write to if
+you wish to have content interspersed with yaclml tags.</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">unknownlamer: I just asked a girl out to a greek tragedy
+LeebertLaptop: hmm
+LeebertLaptop: you on a date is a geek tragedy
+</p>
+<p class="cke-timestamp">Last Modified:
+    March 13, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/William James - The Varieties of Religious Experience.html b/William James - The Varieties of Religious Experience.html
new file mode 100644 (file)
index 0000000..4a7fc00
--- /dev/null
@@ -0,0 +1,875 @@
+<?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>William James - The Varieties of Religious Experience</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>William James - The Varieties of Religious Experience</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">William James - Varieties of Religious Experience (<code>In progress</code>)</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec2">Lectures I and II</a>
+</dt>
+<dt>
+<a href="#sec3">Lecture III: &amp;quot;The Reality of the Unseen&amp;quot;</a>
+</dt>
+<dt>
+<a href="#sec4">Lectures IV and V: &amp;quot;The Religion of Healthy Mindedness&amp;quot;</a>
+</dt>
+<dt>
+<a href="#sec5">Lectures VI and VII: &amp;quot;The Sick Soul&amp;quot;</a>
+</dt>
+<dt>
+<a href="#sec6">Lecture VIII: &amp;quot;The Divided Self, and the Process of Its Unificiation&amp;quot;</a>
+</dt>
+<dt>
+<a href="#sec7">Lectures IX and X: &amp;quot;Conversion&amp;quot;</a>
+</dt>
+<dt>
+<a href="#sec8">Lectures XI - XIII: Saintliness</a>
+</dt>
+<dt>
+<a href="#sec9">Lectures XIV-XV: The Value of Saintliness</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><h2><a name="sec1" id="sec1"></a>
+William James - <a href="http://www.gutenberg.org/etext/621">Varieties of Religious Experience</a> (<code>In progress</code>)</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<p>The <em>Varieties of Religious Experience</em> is a set of twenty lectures on
+religious experience from a psychological perspective. The quality of
+the method used is a bit suspect, but my understanding is that it was
+one of the first pyschological surveys of religion, and so could
+perhaps be forgiven of a few flaws.</p>
+
+<p>I found parts to be boring, and others to have flawed reasoning, but
+with a few lectures that were interesting. At the very least the
+lectures give a reasonable glimpse into the religous fashion of the
+late 1800s. There is a small bit of social commentary thrown in that
+is cited by John Gatto in his <em>Underground History of American
+Education</em>, which is why I chose to read this.</p>
+
+<h3><a name="sec2" id="sec2"></a>
+Lectures I and II</h3>
+
+<p class="first">The first two lectures lay the groundwork for the lecture series. The
+first covers a few views on what religious experience is, and gives
+refutations (although not terribly good ones now, perhaps they were
+seen as fine in the early 1900s) to a few deterministic theories. The
+second lecture defines the scope of the topic to be covered, and
+limits the definitions of religion and spirituality.</p>
+
+
+<blockquote>
+<p class="quoted">
+Religion, therefore, as I now ask you arbitrarily to take it, shall
+mean for us <em>the feelings, acts, and experiences of individual men in
+their solitude, so far as they apprehend themselves to stand in
+relation to whatever they may consider the divine</em>.  Since the
+relation may be either moral, physical, or ritual, it is evident that
+out of religion in the sense in which we take it, theologies,
+philosophies, and ecclesiastical organizations may secondarily grow.
+In these lectures, however, as I have already said, the immediate
+personal experiences will amply fill our time, and we shall hardly
+consider theology or ecclesiasticism at all.</p>
+
+</blockquote>
+
+<p>In the second lecture James's first extremely arbitrary distinction is
+made; he compares the stoicism espoused by Marcus Aurelius to
+Christian writings and draws what I think is a nonexistent difference
+between the two. It is my opinion that the Stoic is just as religious
+by James's definition as the Christian; the stoic merely sees the
+Universe as his god and makes conformance to the natural order his
+ideal. The Stoic actively embraces the natural order just as the
+Christian actively loves his god; the difference is merely in whether
+God is seen as a definite individual or not.</p>
+
+<blockquote>
+<p class="quoted">
+If we compare stoic with Christian ejaculations we see much more
+than a difference of doctrine; rather is it a difference of
+emotional mood that parts them.  When Marcus Aurelius reflects on
+the eternal reason that has ordered things, there is a frosty
+chill about his words which you rarely find in a Jewish, and
+never in a Christian piece of religious writing.  The universe is
+&quot;accepted&quot; by all these writers; but how devoid of passion or
+exultation the spirit of the Roman Emperor is!  Compare his fine
+sentence:  &quot;If gods care not for me or my children, here is a
+reason for it,&quot; with Job's cry:  &quot;Though he slay me, yet will I
+trust in him!&quot; and you immediately see the difference I mean.
+The anima mundi, to whose disposal of his own personal destiny
+the Stoic consents, is there to be respected and submitted to,
+but the Christian God is there to be loved; and the difference of
+emotional atmosphere is like that between an arctic climate and
+the tropics, though the outcome in the way of accepting actual
+conditions uncomplainingly may seem in abstract terms to be much
+the same.</p>
+
+</blockquote>
+
+
+<h3><a name="sec3" id="sec3"></a>
+Lecture III: &amp;quot;The Reality of the Unseen&amp;quot;</h3>
+
+<p class="first">The third lecture consists of a brief overview of various
+interpretations of the structure of the unseen world. An argument for
+a dualistic universe is then given using a few passages on spiritual
+encounters as supposed proof. James criticizes strict rationalism as
+well.</p>
+
+<blockquote>
+<p class="quoted">
+Nevertheless, if we look on man's whole mental life as it exists, on
+the life of men that lies in them apart from their learning and
+science, and that they inwardly and privately follow, we have to
+confess that the part of it of which rationalism can give an account
+is relatively superficial.  It is the part that has the prestige
+undoubtedly, for it has the loquacity, it can challenge you for
+proofs, and chop logic, and put you down with words.  But it will fail
+to convince or convert you all the same, if your dumb intuitions are
+opposed to its conclusions.  If you have intuitions at all, they come
+from a deeper level of your nature than the loquacious level which
+rationalism inhabits.  Your whole subconscious life, your impulses,
+your faiths, your needs, your divinations, have prepared the premises,
+of which your consciousness now feels the weight of the result; and
+something in you absolutely <em>knows</em> that that result must be truer than
+any logic-chopping rationalistic talk, however clever, that may
+contradict it.  This inferiority of the rationalistic level in
+founding belief is just as manifest when rationalism argues for
+religion as when it argues against it.  That vast literature of proofs
+of God's existence drawn from the order of nature, which a century ago
+seemed so overwhelmingly convincing, to-day does little more than
+gather dust in libraries, for the simple reason that our generation
+has ceased to believe in the kind of God it argued for.  Whatever sort
+of a being God may be, we <em>know</em> to-day that he is nevermore that mere
+external inventor of &quot;contrivances&quot; intended to make manifest his
+&quot;glory&quot; in which our great-grandfathers took such satisfaction, though
+just how we know this we cannot possibly make clear by words either to
+others or to ourselves.  I defy any of you here fully to account for
+your persuasion that if a God exist he must be a more cosmic and
+tragic personage than that Being.</p>
+
+</blockquote>
+
+
+<h3><a name="sec4" id="sec4"></a>
+Lectures IV and V: &amp;quot;The Religion of Healthy Mindedness&amp;quot;</h3>
+
+<p class="first">Lecture IV is an interesting read and surveys a few positive minded
+philosophies, but Lecture V focuses entirely on the <em>mind-cure</em>
+movement. William James then gives a terrible argument for the
+validity of <em>mind-cure</em>, and compares it to science while neglecting the
+complete lack of objectivity in the methods of test the effects of
+<em>mind-cure</em>.</p>
+
+<blockquote>
+<p class="quoted">
+It is a deliberately optimistic scheme of life, with both a
+speculative and a practical side.  In its gradual development during
+the last quarter of a century, it has taken up into itself a number
+of contributory elements, and it must now be reckoned with as a
+genuine religious power.  It has reached the stage, for example, when
+the demand for its literature is great enough for insincere stuff,
+mechanically produced for the market, to be to a certain extent
+supplied by publishers&mdash;a phenomenon never observed, I imagine, until
+a religion has got well past its earliest insecure beginnings.</p>
+<p class="quoted">...</p>
+<p class="quoted">The plain fact remains that the spread of the movement has been
+due to practical fruits, and the extremely practical turn of
+character of the American people has never been better shown than
+by the fact that this, their only decidedly original contribution
+to the systematic philosophy of life, should be so intimately
+knit up with concrete therapeutics.  To the importance of
+mind-cure the medical and clerical professions in the United
+States are beginning, though with much recalcitrancy and
+protesting, to open their eyes.  It is evidently bound to develop
+still farther, both speculatively and practically, and its latest
+writers are far and away the ablest of the group. It matters
+nothing that, just as there are hosts of persons who cannot pray,
+so there are greater hosts who cannot by any possibility be
+influenced by the mind-curers' ideas.  For our immediate purpose,
+the important point is that so large a number should exist who
+<em>can</em> be so influenced.  They form a psychic type to be studied
+with respect.</p>
+
+</blockquote>
+
+<p>The lectures are ended with an argument for the validity of <em>mind-cure</em>
+that compares it directly to science with a clear anti-science bias.</p>
+
+<blockquote>
+<p class="quoted">
+These are exceedingly trivial instances [<em>the first-hand accounts of
+mind-cure working given in the lecture</em>], but in them, if we
+have anything at all, we have the method of experiment and
+verification.  For the point I am driving at now, it makes no
+difference whether you consider the patients to be deluded
+victims of their imagination or not.  That they seemed to
+<em>themselves</em> to have been cured by the experiments tried was enough
+to make them converts to the system.  And although it is evident
+that one must be of a certain mental mould to get such results
+(for not every one can get thus cured to his own satisfaction any
+more than every one can be cured by the first regular
+practitioner whom he calls in), yet it would surely be pedantic
+and over-scrupulous for those who <em>can</em> get their savage and
+primitive philosophy of mental healing verified in such
+experimental ways as this, to give them up at word of command for
+more scientific therapeutics.</p>
+<p class="quoted">What are we to think of all this?  Has science made too wide a
+claim?</p>
+<p class="quoted">I believe that the claims of the sectarian scientist are, to say
+the least, premature.  The experiences which we have been
+studying during this hour (and a great many other kinds of
+religious experiences are like them) plainly show the universe to
+be a more many-sided affair than any sect, even the scientific
+sect, allows for.  What, in the end, are all our verifications
+but experiences that agree with more or less isolated systems of
+ideas (conceptual systems) that our minds have framed?  But why
+in the name of common sense need we assume that only one such
+system of ideas can be true?  The obvious outcome of our total
+experience is that the world can be handled according to many
+systems of ideas, and is so handled by different men, and will
+each time give some characteristic kind of profit, for which he
+cares, to the handler, while at the same time some other kind of
+profit has to be omitted or postponed.  Science gives to all of
+us telegraphy, electric lighting, and diagnosis, and succeeds in
+preventing and curing a certain amount of disease. Religion in
+the shape of mind-cure gives to some of us serenity, moral poise,
+and happiness, and prevents certain forms of disease as well as
+science does, or even better in a certain class of persons.
+Evidently, then, the science and the religion are both of them
+genuine keys for unlocking the world's treasure-house to him who
+can use either of them practically.  Just as evidently neither is
+exhaustive or exclusive of the other's simultaneous use.  And
+why, after all, may not the world be so complex as to consist of
+many interpenetrating spheres of reality, which we can thus
+approach in alternation by using different conceptions and
+assuming different attitudes, just as mathematicians handle the
+same numerical and spatial facts by geometry, by analytical
+geometry, by algebra, by the calculus, or by quaternions, and
+each time come out right?  On this view religion and science,
+each verified in its own way from hour to hour and from life to
+life, would be co-eternal.  Primitive thought, with its belief in
+individualized personal forces, seems at any rate as far as ever
+from being driven by science from the field to-day.  Numbers of
+educated people still find it the directest experimental channel
+by which to carry on their intercourse with reality</p>
+
+</blockquote>
+
+<p>He draws a very strong conclusion that would be difficult to draw from
+even quality evidence and objective trials; this drawn from subjective
+personal accounts with no controlled testing method. A representative
+example follows of his evidence follows.</p>
+
+<blockquote>
+<p class="quoted">
+&quot;One of my first experiences in applying my teaching was two
+months after I first saw the healer.  I fell, spraining my right
+ankle, which I had done once four years before, having then had
+to use a crutch and elastic anklet for some months, and carefully
+guarding it ever since.  As soon as I was on my feet I made the
+positive suggestion (and felt it through all my being):  'There
+is nothing but God, and all life comes from him perfectly.  I
+cannot be sprained or hurt, I will let him take care of it.'
+Well, I never had a sensation in it, and I walked two miles that
+day.&quot;</p>
+
+</blockquote>
+
+<p>Ignoring any other problems in William James's argument, it is clear
+that his conclusion is far too heavy to rest upon the evidence he has
+chosen to use.</p>
+
+
+<h3><a name="sec5" id="sec5"></a>
+Lectures VI and VII: &amp;quot;The Sick Soul&amp;quot;</h3>
+
+<p class="first">The lectures on the Sick Soul are filled with rather weak quotations
+(excepting a few short passages of Tolstoy). The reader is reminded
+over and over how terrible and painful it is to be working through
+these horrid expressions of melancholy which aren't really so
+terrible.</p>
+
+<p>James's view is that a state of melancholy is merely a transitional
+stage that comes before a second mental birth occurs, and allows for a
+deep religious belief to set in. Most of the remainder of the lecture
+series is dedicated to analyzing the mind of the Second Born which he
+sees are far deeper spiritually than the simple positive Once Born
+type (depsite his previous praise of <em>mind-cure</em>).</p>
+
+
+<h3><a name="sec6" id="sec6"></a>
+Lecture VIII: &amp;quot;The Divided Self, and the Process of Its Unificiation&amp;quot;</h3>
+
+<p class="first">Here the lectures return to things mildly interesting with an overview
+of heterogenous personalities and a few passages on unificiation of
+conflicting desires. James splits unificiations into gradual and
+sudden ones giving examples of each. This lecture is the bridge
+between lectures V through VII and the material on conversion.</p>
+
+
+<h3><a name="sec7" id="sec7"></a>
+Lectures IX and X: &amp;quot;Conversion&amp;quot;</h3>
+
+
+<ul>
+<li>conversion allows for unification of divided self</li>
+<li>Definition of Association</li>
+<li>Conversion is sudden change of <em>the habitual center of  personal energy</em></li>
+<li>Examples of conversion
+
+<ul>
+<li>Common people, stereotypical conversion types</li>
+<li>Seemingly of suspect quality</li>
+</ul></li>
+<li>Note of the trouble of not being able to be religious
+
+<ul>
+<li>Painted in a negative light!</li>
+</ul></li>
+
+<li>Focus on instantaneous conversion
+
+<ul>
+<li>Give prototypical example</li>
+</ul></li>
+</ul>
+
+<blockquote>
+<p class="quoted">
+&quot;Coming out of the cafe I met the carriage of Monsieur B. [the
+proselyting friend].  He stopped and invited me in for a drive,
+but first asked me to wait for a few minutes whilst he attended
+to some duty at the church of San Andrea delle Fratte.  Instead
+of waiting in the carriage, I entered the church myself to look
+at it.  The church of San Andrea was poor, small, and empty; I
+believe that I found myself there almost alone.  No work of art
+attracted my attention; and I passed my eyes mechanically over
+its interior without being arrested by any particular thought.  I
+can only remember an entirely black dog which went trotting and
+turning before me as I mused.  In an instant the dog had
+disappeared, the whole church had vanished, I no longer saw
+anything, . . . or more truly I saw, O my God, one thing alone.
+&quot;Heavens, how can I speak of it?  Oh no! human words cannot
+attain to expressing the inexpressible.  Any description, however
+sublime it might be, could be but a profanation of the
+unspeakable truth.</p>
+<p class="quoted">&quot;I was there prostrate on the ground, bathed in my tears, with my
+heart beside itself, when M. B. called me back to life.  I could
+not reply to the questions which followed from him one upon the
+other.  But finally I took the medal which I had on my breast,
+and with all the effusion of my soul I kissed the image of the
+Virgin, radiant with grace, which it bore.  Oh, indeed, it was
+She! It was indeed She! [What he had seen had been a vision of
+the Virgin.]</p>
+<p class="quoted">&quot;I did not know where I was:  I did not know whether I was
+Alphonse or another.  I only felt myself changed and believed
+myself another me; I looked for myself in myself and did not find
+myself.  In the bottom of my soul I felt an explosion of the most
+ardent joy; I could not speak; I had no wish to reveal what had
+happened.  But I felt something solemn and sacred within me which
+made me ask for a priest.  I was led to one; and there alone,
+after he had given me the positive order, I spoke as best I
+could, kneeling, and with my heart still trembling.  I could give
+no account to myself of the truth of which I had acquired a
+knowledge and a faith.  All that I can say is that in an instant
+the bandage had fallen from my eyes, and not one bandage only,
+but the whole manifold of bandages in which I had been brought
+up.  One after another they rapidly disappeared, even as the mud
+and ice disappear under the rays of the burning sun.&quot;</p>
+
+</blockquote>
+
+<ul>
+<li>Notes recent protestant phenomemon of instantaneous conversion</li>
+<li>Gives psychological explanation for instant conversion
+
+<ul>
+<li>Field of conciousness</li>
+<li>Subconcious on margin
+
+<ul>
+<li>Subconcious life can affect concious existance</li>
+<li>Note: cites Freud &amp; friends as reliable</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<blockquote>
+<p class="quoted">
+In the wonderful explorations by Binet, Janet, Breuer, Freud,
+Mason, Prince, and others, of the subliminal consciousness of
+patients with hysteria, we have revealed to us whole systems of
+underground life, in the shape of memories of a painful sort
+which lead a parasitic existence, buried outside of the primary
+fields of consciousness, and making irruptions thereinto with
+hallucinations, pains, convulsions, paralyses of feeling and of
+motion, and the whole procession of symptoms of hysteric disease
+of body and of mind.  Alter or abolish by suggestion these
+subconscious memories, and the patient immediately gets well.
+His symptoms were automatisms, in Mr. Myers's sense of the word.
+These clinical records sound like fairy-tales when one first
+reads them, yet it is impossible to doubt their accuracy; and,
+the path having been once opened by these first observers,
+similar observations have been made elsewhere.  They throw, as I
+said, a wholly new light upon our natural constitution.</p>
+
+</blockquote>
+
+<ul>
+<li>Conversion is a transfer of energies from the subconcious
+
+<ul>
+<li>Changes center of focus in the field of conciousness
+
+<ul>
+<li>Disproves religious nature of instant conversion argument</li>
+</ul></li>
+</ul></li>
+<li>Notes that there are no discernable differences between instant
+converts and slow converts</li>
+</ul>
+
+<blockquote>
+<p class="quoted">
+The believers in the non-natural character of sudden conversion
+have had practically to admit that there is no unmistakable
+class-mark distinctive of all true converts.  The super-normal
+incidents, such as voices and visions and overpowering
+impressions of the meaning of suddenly presented scripture texts,
+the melting emotions and tumultuous affections connected with the
+crisis of change, may all come by way of nature, or worse still,
+be counterfeited by Satan.  The real witness of the spirit to the
+second birth is to be found only in the disposition of the
+genuine child of God, the permanently patient heart, the love of
+self eradicated.  And this, it has to be admitted, is also found
+in those who pass no crisis, and may even be found outside of
+Christianity altogether.</p>
+
+</blockquote>
+
+<ul>
+<li>Instant conversion is a natural result of exposing a person with a
+rich subconcious existence to religion and is merely one type of
+conversion</li>
+</ul>
+
+<blockquote>
+<p class="quoted">
+Sharp distinctions are difficult in these regions, and Professor Coe's
+numbers are small.  But his methods were careful, and the results
+tally with what one might expect; and they seem, on the whole, to
+justify his practical conclusion, which is that if you should expose
+to a converting influence a subject in whom three factors unite:
+first, pronounced emotional sensibility; second, tendency to
+automatisms; and third, suggestibility of the passive type; you might
+then safely predict the result: there would be a sudden conversion, a
+transformation of the striking kind.</p>
+
+</blockquote>
+
+<ul>
+<li>Finishes with discussion of pre-conversion emotion
+
+<ul>
+<li>Usually melancholy</li>
+<li>Disguist at sin</li>
+</ul></li>
+<li>Post Conversion feeling
+
+<ul>
+<li>New self</li>
+<li>Clean</li>
+</ul></li>
+</ul>
+
+
+<h3><a name="sec8" id="sec8"></a>
+Lectures XI - XIII: Saintliness</h3>
+
+<ul>
+<li>Descriptive assement of fruits of conversion
+
+<ul>
+<li>general discussion of what causes differing character
+
+<ul>
+<li>Impulse vs Inhibition
+
+<ul>
+<li>Strong emotions shut down inhibition</li>
+</ul></li>
+</ul></li>
+<li>Application of general principles to the results of conversion
+
+<ul>
+<li>Top over point -&gt; God works through Subliminal</li>
+<li>Ignore how the Subliminal works
+
+<ul>
+<li>[It seems that this is done to avoid concluding that there is
+no god]</li>
+<li>[Minimization of importance of natural processes in
+post-convesion]</li>
+</ul></li>
+<li>Saintliness
+
+<ul>
+<li>Four universal inner conditions</li>
+<li>Four results of the inner conditions</li>
+<li>EXAMPLES
+
+<ul>
+<li>Prescence of a higher &amp; friendly power</li>
+<li>Charity (agape) love
+
+<ul>
+<li>Charity not unique to theistic religions, therefore it
+should be seen as coordinate rather than subordinate to
+the topic of the lecture series (page 296)</li>
+</ul></li>
+<li>Inward Tranquillity
+
+<ul>
+<li>Sombre constitution results in resignation and submission</li>
+<li>Cheerful constitution results in joyous consent</li>
+</ul></li>
+<li>Purity
+
+<ul>
+<li>Internal discord leads to suffering</li>
+</ul></li>
+<li>Ascetecism
+
+<ul>
+<li>result of extreme pursuit of purity</li>
+<li>List of sources of ascetic behavior</li>
+<li>Ascetecism in monks
+
+<ul>
+<li>Obedience
+
+<ul>
+<li>Low reasons
+
+<ul>
+<li>Obedience expedient in ecclesiastical organizations</li>
+<li>External counsel at certain times is better than
+internal</li>
+</ul></li>
+<li>High Reason
+
+<ul>
+<li>Inner softening</li>
+</ul></li>
+<li>Catholic view as sacrifice
+
+<ul>
+<li>[quote p.274 &quot;sacrifice which man offers to God...&quot;]</li>
+<li>passages by member of the order of St Ignatius</li>
+</ul></li>
+</ul></li>
+<li>Poverty
+
+<ul>
+<li>Things steal freedom, therefore a life of doing/being
+is superior</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul>
+
+
+<h3><a name="sec9" id="sec9"></a>
+Lectures XIV-XV: The Value of Saintliness</h3>
+
+<ul>
+<li>Critique of Saintliness
+
+<ul>
+<li>Using empirical methods (unlike Catholics)
+
+<ul>
+<li>Humans cannot differentiate between natural and supernatural
+effects</li>
+</ul></li>
+<li>(Defense of Methodology)
+
+<ul>
+<li>Current religious views result of empiricism
+
+<ul>
+<li>Rejection of former gods over time as they cease to serve our
+needs</li>
+</ul></li>
+<li>Must be skeptical (not unreasonably so however) of current
+beliefs
+
+<ul>
+<li>Humans are fallible; admitting this brings us closer to truth
+by enabling discussion of flaws in beliefs</li>
+<li>Quite probably that no one religion is entirely correct</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Concerned with personal religious experiences, and not with
+instutitional religion [reiteration from second lecture]
+
+<ul>
+<li>Ideas of a prophet -&gt; heterodoxy -&gt; heresy (if accepted by
+others) -&gt; orthodxy (if survives persection)
+
+<ul>
+<li>Cycle then begins anew</li>
+</ul></li>
+<li>Religion itself cannot be blamed for evils committed</li>
+</ul></li>
+<li>Extreme Saintliness due to excess
+
+<ul>
+<li>In men, excess is due to lack of balance, or excessively strong
+personality elements mixed with weak ones
+
+<ul>
+<li>If all faculities are strong and cooperate one has a strong
+character rather than one plagued by excess</li>
+<li>Extremely saintly people have strong spiritual faculities, but
+deficient ability to perceive extravagane
+
+<ul>
+<li>Leads to excessie self-denial</li>
+<li>Still useful as archetypes</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Four Virtues &amp; Unbalanced Forms
+
+<ul>
+<li>Devoutness
+
+<ul>
+<li>Fanatacism
+
+<ul>
+<li>Strong character mixed with narrow mind</li>
+</ul></li>
+<li>Theopathy (cointed by WJ to describe excess devoutness)
+
+<ul>
+<li>Excess of devotion with feeble mind</li>
+<li>Person becomes absorbed in inward love of/from God</li>
+</ul></li>
+</ul></li>
+<li>Purity
+
+<ul>
+<li>Narrow mindedness results on love of God replacing all other
+love</li>
+<li>In aggressive types stamps external disorder from existence</li>
+<li>In passive types disorder is eliminated internall by secluding
+self
+
+<ul>
+<li>Example: Lous of Gonzaga</li>
+<li>Such a life was seen as good in the 16th century, but in the
+early 20th was seen as repulsive due to secular changes (more
+value being placed on helping society than merely saving
+oneself)</li>
+</ul></li>
+</ul></li>
+<li>Charity / Tenderness
+
+<ul>
+<li>Saintly 'Resist No Evil' versus Worldy Pragmatic Standpoint
+
+<ul>
+<li>No simple answer</li>
+</ul></li>
+<li>Perfect conduct relation between actor, objects acted upon, and
+recipients of the action
+
+<ul>
+<li>Best intentions fail when executed incorrectly or addressed
+to the wrong recipient</li>
+<li>Thus cannot judge charity by actor alone</li>
+</ul></li>
+<li>Saintly charity works in a perfect world
+
+<ul>
+<li>Excessive in the World That Is</li>
+<li>Evil takes advantage of charity</li>
+<li>However, the world would be far worse without charitable
+people
+
+<ul>
+<li>Treating others charitably inspires others to become
+better</li>
+<li>Exposure to an excessively charitable person softens a
+person</li>
+<li>Without this type all would lie in spiritual stagnation</li>
+</ul></li>
+<li>Therefore even excessive charity has value
+
+<ul>
+<li>Force destroys enemies</li>
+<li>Prudence at best resists enemies</li>
+<li>Non-resistance / Charity turns enemies into friends</li>
+</ul></li>
+<li>Though excessive, the saint makes the world a better place
+
+<ul>
+<li>Compare to Utopianists and Anarchists</li>
+</ul></li>
+</ul></li>
+</ul></li>
+<li>Ascetecism
+
+<ul>
+<li>Virtue most prone to excess</li>
+<li>It seems at first those wo are excessively ascetic are still
+inwardly attached to the world
+
+<ul>
+<li>If one were truly liberated he would not need excessive
+moritification</li>
+</ul></li>
+<li>Different view: Ascetic sees wrongs in the world, and rather
+than ignore them he conquers them internally
+
+<ul>
+<li>One who does not fear Death seems strong</li>
+</ul></li>
+<li>Ascetecism is a profounder way of handling excistence than
+simple optimistic naturalism
+
+<ul>
+<li>In the modern time, people should throw away useless
+asceticism and embrace useful aspects</li>
+<li>Attributes of early 20th century life and weakened churching
+breed weaker character
+
+<ul>
+<li>Militarism used as a subtitute for religious ascetecism
+
+<ul>
+<li>Poor subtitute
+
+<ul>
+<li>Speaks to the base and brutish aspects of human nature</li>
+</ul></li>
+</ul></li>
+<li>Ascetic poverty much superior to militarism/war
+
+<ul>
+<li>WJ believes it <strong>must</strong> be embraced to fight evils of the
+time [quote page 319-320]</li>
+<li>Desire to gain wealth breeds cowardice and corruption
+
+<ul>
+<li>Wealthy man enslaved to riches</li>
+<li>Poor man lacks chains
+- Single attributes of saintliness are found in the non-religious
+- Combination of all forms is religious in nature
+- Flows from sense of divine order
+- Saintly person palces happiness internally rather than deriving
+from comfort
+- Saintly attributes mixed with narrow mind results in terrible
+excessive forms
+- We should not, however, place blame for narrow mindedness
+entirely on the individual
+- Essentials vs Accidents of saintliness
+- Dislike of Saintly character
+- Man traditionally worships strong leaders
+- Saints are weak and passive
+- Male vs Female nature [think Yin vs Yang]
+- Many suppose there is one ideal type of character
+- Empiricism rejects this as foolish
+- On the one hande the saintly character is better than the
+strongman becaue he is adapted to life in a perfect society
+- On the other in the real world he would be ill adapted
+- Mixture of the two characters useful [think Nietzsche's
+uebermensch or Taoist]
+- Saintly character has real value</li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul></li>
+</ul>
+
+
+
+  <!-- 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">          Who will tend the garden when the snake swallows the light?          
+         Who will eat the decay when the worms have lost their sight?          
+           Who will rape the weak when there's nothing left to gain?           
+             Who will till the soil of these barren black remains?             
+</p>
+<p class="cke-timestamp">Last Modified:
+    March 13, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/Wisdom.html b/Wisdom.html
new file mode 100644 (file)
index 0000000..61701e3
--- /dev/null
@@ -0,0 +1,215 @@
+<?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>The Wisdom of the Ancients</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>The Wisdom of the Ancients</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">Mencius</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec2">III.B.1</a>
+</dt>
+<dt>
+<a href="#sec3">VI.A.10</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec4">Qohelet</a>
+</dt>
+<dt>
+<a href="#sec5">One</a>
+</dt>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><h2><a name="sec1" id="sec1"></a>
+Mencius</h2>
+
+<h3><a name="sec2" id="sec2"></a>
+III.B.1</h3>
+
+<blockquote>
+<p class="quoted">
+Ch'en Tai said, &quot;When you refused even to see them, the feudal lords
+appeared insignificant to you. Now that you have seen them, they are
+either kings, or, at least, leaders of the feudal lords. Moreover,
+it is said in the <em>Records</em>, 'Bend the foot in order to straighten
+the yard.' That seems worth doing.&quot;</p>
+<p class="quoted">&quot;Once,&quot; said Mencius, &quot;Duke Ching of Ch'i went hunting and summoned
+his gamekeeper with a pennon. The gamekeeper did not come, and the
+Duke was going to have him put to death. 'A man whose mind is set on
+high ideals never forgets that he may end in a ditch; a man of valor
+never forgets that he may forfeit his head.' What did Conficius find
+praiseworthy in the gamekeeper? His refusal to answer to a form of
+summons to which he was not entitled. What can one do about those
+who go without even being summoned? Moreover, the saying, 'Bend the
+foot in order to straighten the yard' refers to profit. If it is for
+profit, I suppose one might just as well bend the yard to straighten
+the foot.</p>
+<p class="quoted">&quot;Once, Viscount Chien of Chao sent Wang Liang to drive the chariot
+for his favorite, Hsi. In the whole day they failed to catch one
+single bird. Hsi reported to his master, 'He is the worst charioteer
+in the world.' Someone told Wang Liang of this. Liang asked, 'May I
+have another chance?' It was with difficulty that Hsi was persuaded,
+but in one morning they caught ten birds. Hsi reported to his
+master, 'He is the best charioteer in the world.' 'I shall make him
+drive for you,' said Viscount Chien. He asked Wang Liang, but
+Wang Liang refused. 'I drove for him according to the proper rules,'
+said he, 'and we did not catch a single bird all day. Then I used
+underhand methods, and we caught ten birds in one morning. The <em>Book
+of Odes</em> says,</p>
+
+<p class="verse">
+He never failed to drive correctly,<br />
+And his arrows went straight for the target<br />
+</p>
+I am not used to driving for small men. May I be excused?'</p>
+<p class="quoted">&quot;Even a charioteer is ashamed to be in league with an archer. When
+doing so means catching enough birds to pile up like a mountain, he
+would still rather not do it. What can one do about those who bend
+the Way in order to please others? You are futher mistaken. There
+has never been a man who could straighten others by bending
+himself.&quot;</p>
+
+</blockquote>
+
+
+<h3><a name="sec3" id="sec3"></a>
+VI.A.10</h3>
+
+<blockquote>
+<p class="quoted">
+Mencius said, &quot;Fish is what I want; bear's palm is also what I
+want. If I cannot have both, I would rather take bear's palm than
+fish. Life is what I want; dutifulness is also what I want. If I
+cannot have both, I would rather take dutifulness than life. On the
+one hand, though life is what I want, there is something I want more
+than life. That is why I do not cling to life at all costs. On the
+other hand, though death is what I loathe, there is something I
+loathe more than death. That is why there are troubles I do not
+avoid. If there is nothing a man wants more than life, then why
+should he have scruples about any means, so long as it will serve to
+keep him alive? if there is nothing a man loathes more than death,
+then why should have have scruples about any means, so long as it
+helps him to avoid trouble? Yet there are ways of remaining alive
+and ways of avoiding death to which a man will not resort. In other
+words, there are things a man wants more than life and there are
+also things he loathes more than death. This is an attitude not
+confined to the moral man but common to all men. The moral man simply
+never loses it.</p>
+<p class="quoted">&quot;Here is a basketful of rice and a bowful of soup. Getting them will
+mean life; not getting them will mean death. When these are given
+with abuse, even a wayfarer would not accept them; when these are
+given after being trampled upon, even a beggar would not accept
+them. Yet when it comes to ten thousand bushels of grain one is
+supposed to accept without asking if it is in accordance with the
+rites or if it is right to do so. What benefit are then thousand
+bushels of grain to me? [Do I accept them] for the sake of beautiful
+houses, the enjoyment of wives and concubines, or for the sake of
+the gratitude my needy acquaintances will show? What I would not
+accept in the first instance when it was a matter of life and death
+I now accept for the sake of beautiful houses; what I would not
+accept when it was a matter of life and death I now accept for the
+enjoyment of wives and concubines; what I would not accept when it
+was a matter of life and death I now accept for the sake of the
+gratitude my needy acquaintances will show me. Is there no way of
+putting a stop to this? This way of thinking is known as losing
+one's original heart.&quot;</p>
+
+</blockquote>
+
+
+
+<h2><a name="sec4" id="sec4"></a>
+Qohelet</h2>
+
+
+<h2><a name="sec5" id="sec5"></a>
+One</h2>
+
+<p class="verse">
+&nbsp;&nbsp;1 The words of the Preacher, the son of David, king in Jerusalem.<br />
+&nbsp;&nbsp;2 Vanity of vanities, saith the Preacher, vanity of vanities; all is vanity.<br />
+&nbsp;&nbsp;3 What profit hath a man of all his labour which he taketh under the sun?<br />
+&nbsp;&nbsp;4 One generation passeth away, and another generation cometh: but the earth<br />
+abideth for ever.<br />
+&nbsp;&nbsp;5 The sun also ariseth, and the sun goeth down, and hasteth to his place<br />
+where he arose.<br />
+&nbsp;&nbsp;6 The wind goeth toward the south, and turneth about unto the north; it<br />
+whirleth about continually, and the wind returneth again according to his<br />
+circuits.<br />
+&nbsp;&nbsp;7 All the rivers run into the sea; yet the sea is not full; unto the place<br />
+from whence the rivers come, thither they return again.<br />
+&nbsp;&nbsp;8 All things are full of labour; man cannot utter it: the eye is not<br />
+satisfied with seeing, nor the ear filled with hearing.<br />
+&nbsp;&nbsp;9 The thing that hath been, it is that which shall be; and that which is done<br />
+is that which shall be done: and there is no new thing under the sun.<br />
+&nbsp;&nbsp;10 Is there any thing whereof it may be said, See, this is new? it hath been<br />
+already of old time, which was before us.<br />
+&nbsp;&nbsp;11 There is no remembrance of former things; neither shall there be any<br />
+remembrance of things that are to come with those that shall come after.<br />
+&nbsp;&nbsp;12 I the Preacher was king over Israel in Jerusalem.<br />
+&nbsp;&nbsp;13 And I gave my heart to seek and search out by wisdom concerning all things<br />
+that are done under heaven: this sore travail hath God given to the sons of man<br />
+to be exercised therewith.<br />
+&nbsp;&nbsp;14 I have seen all the works that are done under the sun; and, behold, all is<br />
+vanity and vexation of spirit.<br />
+&nbsp;&nbsp;15 That which is crooked cannot be made straight: and that which is wanting<br />
+cannot be numbered.<br />
+&nbsp;&nbsp;16 I communed with mine own heart, saying, Lo, I am come to great estate, and<br />
+have gotten more wisdom than all they that have been before me in Jerusalem:<br />
+yea, my heart had great experience of wisdom and knowledge.<br />
+&nbsp;&nbsp;17 And I gave my heart to know wisdom, and to know madness and folly: I<br />
+perceived that this also is vexation of spirit.<br />
+&nbsp;&nbsp;18 For in much wisdom is much grief: and he that increaseth knowledge<br />
+increaseth sorrow.<br />
+</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">emacsen: every copy of Emacs comes with a bag of pot and 5 hits of acid
+emacsen: and a hotel coffee maker
+</p>
+<p class="cke-timestamp">Last Modified:
+    March 13, 2008</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644 (file)
index 0000000..03ab5ab
--- /dev/null
@@ -0,0 +1,178 @@
+<?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>The Home of Your Friendly Neighborhood Terrorist</title>
+    <meta name="generator" content="muse.el" />
+    <meta http-equiv="Content-Type"
+          content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="default.css" media="screen" />
+  </head>
+  <body>
+    <h1>The Home of Your Friendly Neighborhood Terrorist</h1>
+   <div class="contents">
+<dl>
+<dt>
+<a href="#sec1">Sections</a>
+</dt>
+<dt>
+<a href="#sec2">Journal</a>
+</dt>
+<dt>
+<a href="#sec3">About Me / Contact</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec4">Email</a>
+</dt>
+<dt>
+<a href="#sec5">Jabber</a>
+</dt>
+<dt>
+<a href="#sec6">IRC</a>
+</dt>
+<dt>
+<a href="#sec7">Résumé</a>
+</dt>
+<dt>
+<a href="#sec8">A Picture</a>
+</dt>
+<dt>
+<a href="#sec9">Site Software</a>
+</dt>
+</dl>
+</dd>
+</dl>
+</div>
+
+
+<!-- Page published by Emacs Muse begins here --><p>Greetings, my name is Clinton and you have stumbled upon my personal
+website. This is a continually evolving project as most things on the
+web are.</p>
+
+<h2><a name="sec1" id="sec1"></a>
+Sections</h2>
+
+<ul>
+<li><a href="Bicycle.html">Bicycle</a></li>
+<li><a href="Reading.html">Things I Have Read</a></li>
+<li><a href="Code.html">Code</a>
+
+<ul>
+<li><a href="Lisp.html">Lisp</a></li>
+</ul></li>
+<li><a href="Politics.html">Political and Social Views</a></li>
+<li><a href="Music%20I%20Enjoy.html">Music I Enjoy</a></li>
+</ul>
+
+
+<h2><a name="sec2" id="sec2"></a>
+Journal</h2>
+
+<p class="first">I keep a <a href="http://journal.unknownlamer.org/">journal</a> which is where I tend to send ideas out into the
+Ether before reformulating them into coherent essays for the site
+sitting before you, occasionally interspersed with commentary on my
+mundane daily existence.</p>
+
+<p><a href="http://unknownlamer.org/index.1999_2006.html">The Old Site</a> is still available. Links to pages there will remain
+stable indefinitely so as to not break the Holy Command of Our Sovran
+Hypertextia.</p>
+
+
+<h2><a name="sec3" id="sec3"></a>
+About Me / Contact</h2>
+
+<p class="first">I am a mild mannered hacker and metalhead.</p>
+
+<p>I welcome criticism and suggestions to improve anything I have
+written here.</p>
+
+<h3><a name="sec4" id="sec4"></a>
+Email</h3>
+
+<p><code>clinton at unknownlamer dot gro</code> (a simple puzzle)</p>
+
+
+<h3><a name="sec5" id="sec5"></a>
+Jabber</h3>
+
+<p><code>clinton at hcoop dot net</code> (this also works as an email address and must
+be protected as a result)</p>
+
+
+<h3><a name="sec6" id="sec6"></a>
+IRC</h3>
+
+<p class="first">I hang out on Freenode and oftc as <code>unknown_lamer</code> in various
+channels. <code>/whois</code> will guide you to me.</p>
+
+
+<h3><a name="sec7" id="sec7"></a>
+Résumé</h3>
+
+<p class="first">I am a programmer by trade, and as such have a (potentially) fancy
+<a href="files/resume.pdf">Résumé</a>. I am quite familiar with <a href="http://common-lisp.net/project/ucw/">UnCommon Web</a> and Common Lisp in
+general. This, naturally, makes me unemployable.</p>
+
+
+<h3><a name="sec8" id="sec8"></a>
+A Picture</h3>
+
+<table class="image" width="100%">
+  <tr><td align="center"><img src="img/photos/me/2008-03-09.jpg" alt="An Adventurous Young Lad" /></td></tr>
+  <tr><td align="center" class="image-caption">An Adventurous Young Lad</td></tr>
+</table>
+
+
+<h3><a name="sec9" id="sec9"></a>
+Site Software</h3>
+
+<p class="first">I use <a href="http://www.mwolson.org/projects/MuseMode.html">muse-mode</a> to author the site because <a href="http://emacswiki.org">Emacs</a> is all powerful, and
+the closest approximation to a good user interface available on any
+modern computer system. Muse allows me to simply write with very low
+overhead (I spend most of my time in Emacs, and having hyperlinks and
+a reasonable preview in the file buffer is quite useful). The file
+format is quite hairy, but luckily the code is Free Software and, if
+needed, I could easily write a publishing backend that transcoded my
+site to an easier to parse format. There are advantages to being a
+programmer.</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">Corinne: this is why we should have designated bath buddies
+Corinne: to get places you cant reach because youre slippery and in
+         case you get a lil tooo slippery and crack your head open
+         someone can call the coast guard and save you
+</p>
+<p class="cke-timestamp">Last Modified:
+    July 22, 2008</p>
+  </body>
+</html>
\ No newline at end of file