<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -6,12 +6,12 @@
 
 (provide save-uploaded-file-and-return-filename!)
 
-(declare-setting *PATH_TO_FILEDATA* (build-path (current-directory) &quot;uploaded-files&quot;))
+(declare-setting *PATH_TO_UPLOADED_FILES* (build-path (current-directory) &quot;uploaded-files&quot;))
 
 (define (save-uploaded-file-and-return-filename! file-data)
   (let* ((filename (fresh-filename-id (binding/string:file-filename file-data)))
          (raw-file-bytes (binding/string:file-content file-data))
-         (fport (open-output-file (build-path (setting *PATH_TO_FILEDATA*) filename)
+         (fport (open-output-file (build-path (setting *PATH_TO_UPLOADED_FILES*) filename)
                                   #:exists 'error)))
     (write-bytes raw-file-bytes fport)
     (close-output-port fport)
@@ -19,6 +19,6 @@
 
 (define (fresh-filename-id filename #:id-length (id-length 5))
   (let ((try (string-append (random-key-string id-length) &quot;-&quot; filename)))
-    (if (file-exists? (build-path (setting *PATH_TO_FILEDATA*) try))
+    (if (file-exists? (build-path (setting *PATH_TO_UPLOADED_FILES*) try))
         (fresh-filename-id filename #:id-length id-length)
         try)))</diff>
      <filename>files.scm</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 &lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text-html; charset=utf-8&quot; /&gt;&lt;title&gt;LeftParen 0.4 Documentation&lt;/title&gt;&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;scribble.css&quot; title=&quot;default&quot; /&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;scribble-common.js&quot;&gt;&lt;/script&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;tocset&quot;&gt;&lt;div class=&quot;tocview&quot;&gt;&lt;div class=&quot;tocviewlist&quot; style=&quot;margin-bottom: 1em;&quot;&gt;&lt;div class=&quot;tocviewtitle&quot;&gt;&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;width: 1em;&quot;&gt;&lt;a href=&quot;javascript:void(0);&quot; title=&quot;Expand/Collapse&quot; class=&quot;tocviewtoggle&quot; onclick=&quot;TocviewToggle(this,&amp;quot;tocview_0&amp;quot;);&quot;&gt;&amp;#9658;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;file:///Users/rob/Documents/git-leftparen/scribblings/leftparen.html&quot; class=&quot;tocviewselflink&quot;&gt;Left&lt;span class=&quot;mywbr&quot;&gt; &lt;/span&gt;Paren 0.4 Documentation&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class=&quot;tocviewsublistonly&quot; style=&quot;display: none;&quot; id=&quot;tocview_0&quot;&gt;&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;1&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;file:///Users/rob/Documents/git-leftparen/scribblings/leftparen.html#(part._.Installing_.Left.Paren)&quot; class=&quot;tocviewlink&quot;&gt;Installing Left&lt;span class=&quot;mywbr&quot;&gt; &lt;/span&gt;Paren&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;2&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;file:///Users/rob/Documents/git-leftparen/scribblings/leftparen.html#(part._tutorials)&quot; class=&quot;tocviewlink&quot;&gt;Tutorials&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;3&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;file:///Users/rob/Documents/git-leftparen/scribblings/leftparen.html#(part._.More_.Documentation_to_.Come)&quot; class=&quot;tocviewlink&quot;&gt;More Documentation to Come&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;4&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;file:///Users/rob/Documents/git-leftparen/scribblings/leftparen.html#(part._.Reference)&quot; class=&quot;tocviewlink&quot;&gt;Reference&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;5&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;file:///Users/rob/Documents/git-leftparen/scribblings/leftparen.html#(part._.About_.Acknowledgements)&quot; class=&quot;tocviewlink&quot;&gt;About/&lt;span class=&quot;mywbr&quot;&gt; &lt;/span&gt;Acknowledgements&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;tocsub&quot;&gt;&lt;table class=&quot;tocsublist&quot; cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Installing_.Left.Paren)&quot; class=&quot;tocsubseclink&quot;&gt;Installing Left&lt;span class=&quot;mywbr&quot;&gt; &lt;/span&gt;Paren&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._tutorials)&quot; class=&quot;tocsubseclink&quot;&gt;Tutorials&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;2.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Hello__.World)&quot; class=&quot;tocsubseclink&quot;&gt;Hello, World&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;2.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Blogerton_the_.Blog)&quot; class=&quot;tocsubseclink&quot;&gt;Blogerton the Blog&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;2.2.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Changes_to_app_scm)&quot; class=&quot;tocsubseclink&quot;&gt;Changes to &lt;span class=&quot;stt&quot;&gt;app.scm&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;2.2.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Changes_to_main_scm)&quot; class=&quot;tocsubseclink&quot;&gt;Changes to &lt;span class=&quot;stt&quot;&gt;main.scm&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;2.2.3&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Launch_.Blogerton)&quot; class=&quot;tocsubseclink&quot;&gt;Launch Blogerton&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;3&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.More_.Documentation_to_.Come)&quot; class=&quot;tocsubseclink&quot;&gt;More Documentation to Come&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;4&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Reference)&quot; class=&quot;tocsubseclink&quot;&gt;Reference&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;4.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Forms)&quot; class=&quot;tocsubseclink&quot;&gt;Forms&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;4.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Sessions)&quot; class=&quot;tocsubseclink&quot;&gt;Sessions&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;4.2.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Creating_sessions)&quot; class=&quot;tocsubseclink&quot;&gt;Creating sessions&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;4.2.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Accessing_sessions)&quot; class=&quot;tocsubseclink&quot;&gt;Accessing sessions&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;5&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.About_.Acknowledgements)&quot; class=&quot;tocsubseclink&quot;&gt;About/&lt;span class=&quot;mywbr&quot;&gt; &lt;/span&gt;Acknowledgements&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;5.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Contributors)&quot; class=&quot;tocsubseclink&quot;&gt;Contributors&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;maincolumn&quot;&gt;&lt;div class=&quot;main&quot;&gt;&lt;div class=&quot;versionbox&quot;&gt;&lt;span class=&quot;version&quot;&gt;Version: 4.1.0.3&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;navset&quot; style=&quot;margin-bottom: 2em; border-bottom: 2px solid #e0e0c0;&quot;&gt;&lt;span class=&quot;navleft&quot;&gt;&lt;input style=&quot;width: 16em; margin: 0px; padding: 0px; background-color: #eee; color: #888; border: 1px solid #ddd; text-align: center; vertical-align: middle;&quot; type=&quot;text&quot; value=&quot;...search manuals...&quot; title=&quot;Enter a search string to search the manuals&quot; onkeypress=&quot;return DoSearchKey(event, this, &amp;quot;4.1.0.3&amp;quot;, &amp;quot;&amp;quot;);&quot; onfocus=&quot;this.style.color=&amp;quot;black&amp;quot;; this.style.textAlign=&amp;quot;left&amp;quot;; if (this.value == &amp;quot;...search manuals...&amp;quot;) this.value=&amp;quot;&amp;quot;;&quot; onblur=&quot;if (this.value.match(/^ *$/)) { this.style.color=&amp;quot;#888&amp;quot;; this.style.textAlign=&amp;quot;center&amp;quot;; this.value=&amp;quot;...search manuals...&amp;quot;; }&quot; /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;h2&gt;&lt;a name=&quot;(part._.Left.Paren_0_4_.Documentation)&quot;&gt;&lt;/a&gt;LeftParen 0.4 Documentation&lt;/h2&gt;&lt;p&gt;Website: &lt;a href=&quot;http://leftparen.com&quot;&gt;http://leftparen.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;LeftParen is a framework for quickly creating web apps.  It runs on
+&lt;html&gt;&lt;head&gt;&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text-html; charset=utf-8&quot; /&gt;&lt;title&gt;LeftParen 0.4 Documentation&lt;/title&gt;&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;scribble.css&quot; title=&quot;default&quot; /&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;scribble-common.js&quot;&gt;&lt;/script&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;tocset&quot;&gt;&lt;div class=&quot;tocview&quot;&gt;&lt;div class=&quot;tocviewlist&quot; style=&quot;margin-bottom: 1em;&quot;&gt;&lt;div class=&quot;tocviewtitle&quot;&gt;&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tr&gt;&lt;td style=&quot;width: 1em;&quot;&gt;&lt;a href=&quot;javascript:void(0);&quot; title=&quot;Expand/Collapse&quot; class=&quot;tocviewtoggle&quot; onclick=&quot;TocviewToggle(this,&amp;quot;tocview_0&amp;quot;);&quot;&gt;&amp;#9658;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;file:///Users/rob/Documents/git-leftparen/scribblings/leftparen.html&quot; class=&quot;tocviewselflink&quot;&gt;Left&lt;span class=&quot;mywbr&quot;&gt; &lt;/span&gt;Paren 0.4 Documentation&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class=&quot;tocviewsublistonly&quot; style=&quot;display: none;&quot; id=&quot;tocview_0&quot;&gt;&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;1&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;file:///Users/rob/Documents/git-leftparen/scribblings/leftparen.html#(part._.Installing_.Left.Paren)&quot; class=&quot;tocviewlink&quot;&gt;Installing Left&lt;span class=&quot;mywbr&quot;&gt; &lt;/span&gt;Paren&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;2&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;file:///Users/rob/Documents/git-leftparen/scribblings/leftparen.html#(part._tutorials)&quot; class=&quot;tocviewlink&quot;&gt;Tutorials&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;3&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;file:///Users/rob/Documents/git-leftparen/scribblings/leftparen.html#(part._.Reference)&quot; class=&quot;tocviewlink&quot;&gt;Reference&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;4&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;file:///Users/rob/Documents/git-leftparen/scribblings/leftparen.html#(part._.About_.Acknowledgements)&quot; class=&quot;tocviewlink&quot;&gt;About/&lt;span class=&quot;mywbr&quot;&gt; &lt;/span&gt;Acknowledgements&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;tocsub&quot;&gt;&lt;table class=&quot;tocsublist&quot; cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Installing_.Left.Paren)&quot; class=&quot;tocsubseclink&quot;&gt;Installing Left&lt;span class=&quot;mywbr&quot;&gt; &lt;/span&gt;Paren&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._tutorials)&quot; class=&quot;tocsubseclink&quot;&gt;Tutorials&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;2.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Hello__.World)&quot; class=&quot;tocsubseclink&quot;&gt;Hello, World&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;2.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Blogerton_the_.Blog)&quot; class=&quot;tocsubseclink&quot;&gt;Blogerton the Blog&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;2.2.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Changes_to_app_scm)&quot; class=&quot;tocsubseclink&quot;&gt;Changes to &lt;span class=&quot;stt&quot;&gt;app.scm&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;2.2.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Changes_to_main_scm)&quot; class=&quot;tocsubseclink&quot;&gt;Changes to &lt;span class=&quot;stt&quot;&gt;main.scm&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;2.2.3&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Launch_.Blogerton)&quot; class=&quot;tocsubseclink&quot;&gt;Launch Blogerton&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;3&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Reference)&quot; class=&quot;tocsubseclink&quot;&gt;Reference&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;3.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Forms)&quot; class=&quot;tocsubseclink&quot;&gt;Forms&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;3.1.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Image_uploads)&quot; class=&quot;tocsubseclink&quot;&gt;Image uploads&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;3.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Sessions)&quot; class=&quot;tocsubseclink&quot;&gt;Sessions&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;3.2.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Creating_sessions)&quot; class=&quot;tocsubseclink&quot;&gt;Creating sessions&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;3.2.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Accessing_sessions)&quot; class=&quot;tocsubseclink&quot;&gt;Accessing sessions&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;4&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.About_.Acknowledgements)&quot; class=&quot;tocsubseclink&quot;&gt;About/&lt;span class=&quot;mywbr&quot;&gt; &lt;/span&gt;Acknowledgements&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class=&quot;tocsublinknumber&quot;&gt;4.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/span&gt;&lt;a href=&quot;#(part._.Contributors)&quot; class=&quot;tocsubseclink&quot;&gt;Contributors&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;maincolumn&quot;&gt;&lt;div class=&quot;main&quot;&gt;&lt;div class=&quot;versionbox&quot;&gt;&lt;span class=&quot;version&quot;&gt;Version: 4.1.0.3&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;navset&quot; style=&quot;margin-bottom: 2em; border-bottom: 2px solid #e0e0c0;&quot;&gt;&lt;span class=&quot;navleft&quot;&gt;&lt;input style=&quot;width: 16em; margin: 0px; padding: 0px; background-color: #eee; color: #888; border: 1px solid #ddd; text-align: center; vertical-align: middle;&quot; type=&quot;text&quot; value=&quot;...search manuals...&quot; title=&quot;Enter a search string to search the manuals&quot; onkeypress=&quot;return DoSearchKey(event, this, &amp;quot;4.1.0.3&amp;quot;, &amp;quot;&amp;quot;);&quot; onfocus=&quot;this.style.color=&amp;quot;black&amp;quot;; this.style.textAlign=&amp;quot;left&amp;quot;; if (this.value == &amp;quot;...search manuals...&amp;quot;) this.value=&amp;quot;&amp;quot;;&quot; onblur=&quot;if (this.value.match(/^ *$/)) { this.style.color=&amp;quot;#888&amp;quot;; this.style.textAlign=&amp;quot;center&amp;quot;; this.value=&amp;quot;...search manuals...&amp;quot;; }&quot; /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;h2&gt;&lt;a name=&quot;(part._.Left.Paren_0_4_.Documentation)&quot;&gt;&lt;/a&gt;LeftParen 0.4 Documentation&lt;/h2&gt;&lt;p&gt;Website: &lt;a href=&quot;http://leftparen.com&quot;&gt;http://leftparen.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;LeftParen is a framework for quickly creating web apps.  It runs on
 PLT Scheme v4.1 or greater.  LeftParen is released under an &lt;a href=&quot;http://github.com/vegashacker/leftparen/tree/master/MIT-LICENSE.txt&quot;&gt;MIT License&lt;/a&gt;.  The source is available on &lt;a href=&quot;http://github.com/vegashacker/leftparen/tree/master&quot;&gt;github&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Installing_.Left.Paren)&quot;&gt;&lt;/a&gt;Installing LeftParen&lt;/h3&gt;&lt;p&gt;You&amp;rsquo;ll need PLT Scheme v4.1 or greater installed.&lt;/p&gt;&lt;p&gt;Make sure that &lt;span class=&quot;schemesymbol&quot;&gt;mzscheme&lt;/span&gt; is in your path.  You should be ready
 to go if you can do this:&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% mzscheme&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;Welcome to MzScheme v4.1...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;Installing LeftParen is done behind the scenes with a &lt;a href=&quot;http://planet.plt-scheme.org/&quot;&gt;PLaneT&lt;/a&gt; &lt;span class=&quot;schemesymbol&quot;&gt;require&lt;/span&gt;.  See &lt;a href=&quot;file:///Users/rob/Documents/git-leftparen/scribblings/leftparen.html#(part._tutorials)&quot;&gt;Tutorials&lt;/a&gt; for an example of this.  When you
-first issue one of these &lt;span class=&quot;schemesymbol&quot;&gt;require&lt;/span&gt; commands, you&amp;rsquo;ll automatically download the LeftParen files to your local PLaneT cache.  This can sometimes take a few moments, so be prepared to wait a bit.&lt;/p&gt;&lt;h3&gt;2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._tutorials)&quot;&gt;&lt;/a&gt;Tutorials&lt;/h3&gt;&lt;h4&gt;2.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Hello__.World)&quot;&gt;&lt;/a&gt;Hello, World&lt;/h4&gt;&lt;p&gt;We&amp;rsquo;re going to make a project called &lt;span class=&quot;stt&quot;&gt;hello-world&lt;/span&gt;.  Change to the directory that you&amp;rsquo;d like to make the project in.  Then issue&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% mzscheme -e '(require (planet &quot;bootstrap.scm&quot; (&quot;vegashacker&quot; &quot;leftparen.plt&quot; 3 0)))' project hello-world&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;This will create a &lt;span class=&quot;stt&quot;&gt;hello-world&lt;/span&gt; project directory for you.  In this directory you&amp;rsquo;ll find the &lt;span class=&quot;stt&quot;&gt;script&lt;/span&gt; directory, which contains some useful scripts.  All paths are relative to this project directory, so when calling scripts, you always want to be at the project root.&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% cd hello-world&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;We need to make the scripts executable:&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% chmod u+x script/*&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;LeftParen has automatically generated everything we need to run our web app &amp;ndash; we just need to start the server (again, you should be at the project root directory):&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% ./script/server&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;Web server started on port 8765&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;Listening on IP address: 127.0.0.1&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;Type stop to stop the server and exit&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;Type restart to restart the server&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;Point your browser to &lt;a href=&quot;http://localhost:8765&quot;&gt;http://localhost:8765&lt;/a&gt; and you should see a familiar greeting:&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;Hello, World!&lt;/span&gt;&lt;/p&gt;&lt;h4&gt;2.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Blogerton_the_.Blog)&quot;&gt;&lt;/a&gt;Blogerton the Blog&lt;/h4&gt;&lt;p&gt;Now let&amp;rsquo;s try implementing the true &quot;hello world&quot; of web apps &amp;ndash; a blog.  First, execute the following commands from the directory in which you want to create your project directory:&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% mzscheme -e '(require (planet &quot;bootstrap.scm&quot; (&quot;vegashacker&quot; &quot;leftparen.plt&quot; 3 0)))' project blogerton&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% cd blogerton&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% chmod u+x script/*&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;h5&gt;2.2.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Changes_to_app_scm)&quot;&gt;&lt;/a&gt;Changes to &lt;span class=&quot;stt&quot;&gt;app.scm&lt;/span&gt;&lt;/h5&gt;&lt;p&gt;We need to register a couple of pages in our app.  The &lt;span class=&quot;schemesymbol&quot;&gt;index-page&lt;/span&gt; was already set up for you, but you&amp;rsquo;ll need to add a page to create new posts, and one to view them.  Make the &lt;span class=&quot;schemesymbol&quot;&gt;define-app&lt;/span&gt; call look like this:&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;schemeblock&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;define-app&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;my-app&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;index-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;/&quot;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;create-post-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;/post&quot;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;view-post-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;/view/&quot;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;string-arg&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;h5&gt;2.2.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Changes_to_main_scm)&quot;&gt;&lt;/a&gt;Changes to &lt;span class=&quot;stt&quot;&gt;main.scm&lt;/span&gt;&lt;/h5&gt;&lt;p&gt;Now we need to define those pages that we declared in &lt;span class=&quot;stt&quot;&gt;app.scm&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;schemeblock&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;define-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;index-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;h1&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;Blogerton&quot;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemereader&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;web-link&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;Create a new post&quot;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;page-url&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;create-post-page&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;ul&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemereader&quot;&gt;,@&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;lambda&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemereader&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;paint-blog-post&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;load-where&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;. &lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;blog-post&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;#:sort-by&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;created-at&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;#:compare&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;define-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;create-post-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;form&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;Title&quot;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;Body&quot;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;long-text&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;#:init&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;. &lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;blog-post&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;#:on-done&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;lambda&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;redirect-to-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;view-post-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;rec-id&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;define-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;view-post-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;post-id&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;paint-blog-post&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;load-rec&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;post-id&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;#:ensure&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;. &lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;blog-post&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;define&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;paint-blog-post&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;h2&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemereader&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;rec-prop&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemereader&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;rec-prop&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;h5&gt;2.2.3&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Launch_.Blogerton)&quot;&gt;&lt;/a&gt;Launch Blogerton&lt;/h5&gt;&lt;p&gt;You&amp;rsquo;re ready for launch.  Start the server with&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% ./script/server&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;and you should have a basic blogging app, with persistent data, in 19 lines of code.&lt;/p&gt;&lt;h3&gt;3&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.More_.Documentation_to_.Come)&quot;&gt;&lt;/a&gt;More Documentation to Come&lt;/h3&gt;&lt;p&gt;We need to get a full LeftParen reference up (not just simple tutorials).  There&amp;rsquo;s lots more cool stuff in LeftParen that this document doesn&amp;rsquo;t yet address.&lt;/p&gt;&lt;h3&gt;4&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Reference)&quot;&gt;&lt;/a&gt;Reference&lt;/h3&gt;&lt;h4&gt;4.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Forms)&quot;&gt;&lt;/a&gt;Forms&lt;/h4&gt;&lt;p&gt;Wouldn&amp;rsquo;t forms documentation be nice?&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;boxed&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;mystery&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;int&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;string-dude&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;h4&gt;4.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Sessions)&quot;&gt;&lt;/a&gt;Sessions&lt;/h4&gt;&lt;p&gt;A session is an object that allows you to easily store state about individual visitors to your web app.  Sessions are stored on the server as a record with a virtually impossible-to-guess id.  A cookie is left in the user&amp;rsquo;s web browser, which contains a pointer to a particular session id.  These cookies expire one month after creation and, currently, this can&amp;rsquo;t be changed.&lt;/p&gt;&lt;h5&gt;4.2.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Creating_sessions)&quot;&gt;&lt;/a&gt;Creating sessions&lt;/h5&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;boxed&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;schemeblock&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;define-session-page&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;page-name&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;request-iden&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session-iden&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;page-args&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schememeta&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schememeta&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;This is an alternate to &lt;span class=&quot;schemesymbol&quot;&gt;define-page&lt;/span&gt;, most commonly used in &lt;span class=&quot;schemesymbol&quot;&gt;main.scm&lt;/span&gt;.  The only difference is that after the request identifier, you must provide a session identifier.  For example, to keep a counter (unique to each user), you could write:&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;schemeblock&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;define-session-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;foo-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;sesh&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;let&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;session-get-val&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;sesh&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;counter&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;session-put-val!&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;sesh&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;counter&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;number-&amp;gt;string&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;When you define a session page, the session is automatically fetched for you (and created if necessary), and bound to the session identifier you provided.&lt;/p&gt;&lt;h5&gt;4.2.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Accessing_sessions)&quot;&gt;&lt;/a&gt;Accessing sessions&lt;/h5&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;boxed&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;session-get-val&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;[&lt;span class=&quot;schemevariable&quot;&gt;missing-val&lt;/span&gt;]&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;any&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;symbol&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;missing-val&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;any&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;=&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;#f&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;boxed&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;session-put-val!&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;val&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;symbol&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;val&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;any&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;h3&gt;5&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.About_.Acknowledgements)&quot;&gt;&lt;/a&gt;About/Acknowledgements&lt;/h3&gt;&lt;p&gt;LeftParen was written by &lt;a href=&quot;http://robhunter.org&quot;&gt;Rob Hunter&lt;/a&gt;, but it builds heavily on (and, in fact, often directly incorporates) the work of &lt;a href=&quot;http://untyped.com/&quot;&gt;Untyped&lt;/a&gt; (&lt;a href=&quot;http://planet.plt-scheme.org/display.ss?package=instaservlet.plt&amp;amp;owner=untyped&quot;&gt;instaservlet&lt;/a&gt; and &lt;a href=&quot;http://planet.plt-scheme.org/display.ss?package=dispatch.plt&amp;amp;owner=untyped&quot;&gt;dispatch&lt;/a&gt;), &lt;a href=&quot;http://scheme.dk/blog/&quot;&gt;Jens Axel Soegaard&lt;/a&gt; (&lt;a href=&quot;http://planet.plt-scheme.org/display.ss?package=web.plt&amp;amp;owner=soegaard&quot;&gt;web.plt&lt;/a&gt;), and of course, &lt;a href=&quot;http://www.plt-scheme.org/&quot;&gt;PLT Scheme&lt;/a&gt;.&lt;/p&gt;&lt;h4&gt;5.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Contributors)&quot;&gt;&lt;/a&gt;Contributors&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Bill Hager&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Joshua Herman&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;navset&quot; style=&quot;margin-top: 2em; border-top: 2px solid #e0e0c0;&quot;&gt;&lt;span class=&quot;navleft&quot;&gt;&lt;input style=&quot;width: 16em; margin: 0px; padding: 0px; background-color: #eee; color: #888; border: 1px solid #ddd; text-align: center; vertical-align: middle;&quot; type=&quot;text&quot; value=&quot;...search manuals...&quot; title=&quot;Enter a search string to search the manuals&quot; onkeypress=&quot;return DoSearchKey(event, this, &amp;quot;4.1.0.3&amp;quot;, &amp;quot;&amp;quot;);&quot; onfocus=&quot;this.style.color=&amp;quot;black&amp;quot;; this.style.textAlign=&amp;quot;left&amp;quot;; if (this.value == &amp;quot;...search manuals...&amp;quot;) this.value=&amp;quot;&amp;quot;;&quot; onblur=&quot;if (this.value.match(/^ *$/)) { this.style.color=&amp;quot;#888&amp;quot;; this.style.textAlign=&amp;quot;center&amp;quot;; this.value=&amp;quot;...search manuals...&amp;quot;; }&quot; /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;
\ No newline at end of file
+first issue one of these &lt;span class=&quot;schemesymbol&quot;&gt;require&lt;/span&gt; commands, you&amp;rsquo;ll automatically download the LeftParen files to your local PLaneT cache.  This can sometimes take a few moments, so be prepared to wait a bit.&lt;/p&gt;&lt;h3&gt;2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._tutorials)&quot;&gt;&lt;/a&gt;Tutorials&lt;/h3&gt;&lt;h4&gt;2.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Hello__.World)&quot;&gt;&lt;/a&gt;Hello, World&lt;/h4&gt;&lt;p&gt;We&amp;rsquo;re going to make a project called &lt;span class=&quot;stt&quot;&gt;hello-world&lt;/span&gt;.  Change to the directory that you&amp;rsquo;d like to make the project in.  Then issue&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% mzscheme -e '(require (planet &quot;bootstrap.scm&quot; (&quot;vegashacker&quot; &quot;leftparen.plt&quot; 3 0)))' project hello-world&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;This will create a &lt;span class=&quot;stt&quot;&gt;hello-world&lt;/span&gt; project directory for you.  In this directory you&amp;rsquo;ll find the &lt;span class=&quot;stt&quot;&gt;script&lt;/span&gt; directory, which contains some useful scripts.  All paths are relative to this project directory, so when calling scripts, you always want to be at the project root.&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% cd hello-world&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;We need to make the scripts executable:&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% chmod u+x script/*&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;LeftParen has automatically generated everything we need to run our web app &amp;ndash; we just need to start the server (again, you should be at the project root directory):&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% ./script/server&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;Web server started on port 8765&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;Listening on IP address: 127.0.0.1&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;Type stop to stop the server and exit&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;Type restart to restart the server&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;Point your browser to &lt;a href=&quot;http://localhost:8765&quot;&gt;http://localhost:8765&lt;/a&gt; and you should see a familiar greeting:&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;Hello, World!&lt;/span&gt;&lt;/p&gt;&lt;h4&gt;2.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Blogerton_the_.Blog)&quot;&gt;&lt;/a&gt;Blogerton the Blog&lt;/h4&gt;&lt;p&gt;Now let&amp;rsquo;s try implementing the true &quot;hello world&quot; of web apps &amp;ndash; a blog.  First, execute the following commands from the directory in which you want to create your project directory:&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% mzscheme -e '(require (planet &quot;bootstrap.scm&quot; (&quot;vegashacker&quot; &quot;leftparen.plt&quot; 3 0)))' project blogerton&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% cd blogerton&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% chmod u+x script/*&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;h5&gt;2.2.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Changes_to_app_scm)&quot;&gt;&lt;/a&gt;Changes to &lt;span class=&quot;stt&quot;&gt;app.scm&lt;/span&gt;&lt;/h5&gt;&lt;p&gt;We need to register a couple of pages in our app.  The &lt;span class=&quot;schemesymbol&quot;&gt;index-page&lt;/span&gt; was already set up for you, but you&amp;rsquo;ll need to add a page to create new posts, and one to view them.  Make the &lt;span class=&quot;schemesymbol&quot;&gt;define-app&lt;/span&gt; call look like this:&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;schemeblock&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;define-app&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;my-app&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;index-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;/&quot;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;create-post-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;/post&quot;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;view-post-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;/view/&quot;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;string-arg&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;h5&gt;2.2.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Changes_to_main_scm)&quot;&gt;&lt;/a&gt;Changes to &lt;span class=&quot;stt&quot;&gt;main.scm&lt;/span&gt;&lt;/h5&gt;&lt;p&gt;Now we need to define those pages that we declared in &lt;span class=&quot;stt&quot;&gt;app.scm&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;schemeblock&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;define-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;index-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;h1&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;Blogerton&quot;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemereader&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;web-link&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;Create a new post&quot;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;page-url&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;create-post-page&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;ul&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemereader&quot;&gt;,@&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;lambda&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemereader&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;paint-blog-post&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;load-where&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;. &lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;blog-post&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;#:sort-by&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;created-at&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;#:compare&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;define-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;create-post-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;form&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;Title&quot;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;Body&quot;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;long-text&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;#:init&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;. &lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;blog-post&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;#:on-done&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;lambda&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;redirect-to-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;view-post-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;rec-id&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;define-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;view-post-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;post-id&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;paint-blog-post&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;load-rec&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;post-id&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;#:ensure&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;. &lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;blog-post&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;define&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;paint-blog-post&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;h2&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemereader&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;rec-prop&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemereader&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;rec-prop&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;h5&gt;2.2.3&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Launch_.Blogerton)&quot;&gt;&lt;/a&gt;Launch Blogerton&lt;/h5&gt;&lt;p&gt;You&amp;rsquo;re ready for launch.  Start the server with&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;stt&quot;&gt;&lt;span class=&quot;stt&quot;&gt;% ./script/server&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;and you should have a basic blogging app, with persistent data, in 19 lines of code.&lt;/p&gt;&lt;h3&gt;3&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Reference)&quot;&gt;&lt;/a&gt;Reference&lt;/h3&gt;&lt;h4&gt;3.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Forms)&quot;&gt;&lt;/a&gt;Forms&lt;/h4&gt;&lt;p&gt;Most web applications make some use of web forms.  The &lt;span class=&quot;schemesymbol&quot;&gt;form&lt;/span&gt; function lets easily you get and process input from your users.&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;boxed&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;form&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;field-specs&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;xexpr?&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;field-specs&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;listof&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;field-spec?&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;boxed&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemesymbol&quot;&gt;field-spec?&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;symbol?&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;string?&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;field-type?&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;boxed&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;argcontract&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemesymbol&quot;&gt;field-type?&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;schemeblock&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;or/c&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;long-text&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;number&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;password&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;image&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;checkbox&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;radio&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;drop-down&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;You create a form by listing, in order, &quot;field specifications&quot;.  For example, you might want a title field, followed by a description text box, followed by a photo upload field.  Note that the many keyword arguments available to the &lt;span class=&quot;schemesymbol&quot;&gt;form&lt;/span&gt; function aren&amp;rsquo;t documented yet.&lt;/p&gt;&lt;p&gt;Each field spec is of the form &lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;field-name&lt;/span&gt;&lt;span class=&quot;stt&quot;&gt; &lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;label&lt;/span&gt;&lt;span class=&quot;stt&quot;&gt; &lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;field-type&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;.  For example, you create a title field, you might use the spec &lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;stt&quot;&gt; &lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;Enter a title&quot;&lt;/span&gt;&lt;span class=&quot;stt&quot;&gt; &lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;.  The entire example metioned above might look like this:&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;schemeblock&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;form&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;Title&quot;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;Description&quot;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;long-text&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;photo&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;&quot;Your photo&quot;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;image&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;h5&gt;3.1.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Image_uploads)&quot;&gt;&lt;/a&gt;Image uploads&lt;/h5&gt;&lt;p&gt;By default, uploaded images are stored in the &lt;span class=&quot;stt&quot;&gt;uploaded-files&lt;/span&gt; directory in your project directory.  You can customize this with the &lt;span class=&quot;schemesymbol&quot;&gt;*PATH_TO_UPLOADED_FILES*&lt;/span&gt; setting.  When images are saved, their original filenames are used with a 5-character code pre-pended to make filenames unique.&lt;/p&gt;&lt;h4&gt;3.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Sessions)&quot;&gt;&lt;/a&gt;Sessions&lt;/h4&gt;&lt;p&gt;A session is an object that allows you to easily store state about individual visitors to your web app.  Sessions are stored on the server as a record with a virtually impossible-to-guess id.  A cookie is left in the user&amp;rsquo;s web browser, which contains a pointer to a particular session id.  These cookies expire one month after creation and, currently, this can&amp;rsquo;t be changed.&lt;/p&gt;&lt;h5&gt;3.2.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Creating_sessions)&quot;&gt;&lt;/a&gt;Creating sessions&lt;/h5&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;boxed&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;schemeblock&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;define-session-page&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;page-name&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;request-iden&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session-iden&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;page-args&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schememeta&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schememeta&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;This is an alternate to &lt;span class=&quot;schemesymbol&quot;&gt;define-page&lt;/span&gt;, most commonly used in &lt;span class=&quot;schemesymbol&quot;&gt;main.scm&lt;/span&gt;.  The only difference is that after the request identifier, you must provide a session identifier.  For example, to keep a counter (unique to each user), you could write:&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;schemeblock&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;define-session-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;foo-page&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;sesh&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;let&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;session-get-val&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;sesh&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;counter&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;session-put-val!&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;sesh&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;counter&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeplain&quot;&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;number-&amp;gt;string&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;When you define a session page, the session is automatically fetched for you (and created if necessary), and bound to the session identifier you provided.&lt;/p&gt;&lt;h5&gt;3.2.2&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Accessing_sessions)&quot;&gt;&lt;/a&gt;Accessing sessions&lt;/h5&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;boxed&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;session-get-val&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;[&lt;span class=&quot;schemevariable&quot;&gt;missing-val&lt;/span&gt;]&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;any&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;symbol&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;missing-val&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;any&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;=&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevalue&quot;&gt;#f&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;table cellspacing=&quot;0&quot; class=&quot;boxed&quot;&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;schemeparen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;session-put-val!&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;val&lt;/span&gt;&lt;span class=&quot;schemeparen&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;session&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;symbol&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemevariable&quot;&gt;val&lt;/span&gt;&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;:&lt;span class=&quot;hspace&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;schemesymbol&quot;&gt;any&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;h3&gt;4&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.About_.Acknowledgements)&quot;&gt;&lt;/a&gt;About/Acknowledgements&lt;/h3&gt;&lt;p&gt;LeftParen was written by &lt;a href=&quot;http://robhunter.org&quot;&gt;Rob Hunter&lt;/a&gt;, but it builds heavily on (and, in fact, often directly incorporates) the work of &lt;a href=&quot;http://untyped.com/&quot;&gt;Untyped&lt;/a&gt; (&lt;a href=&quot;http://planet.plt-scheme.org/display.ss?package=instaservlet.plt&amp;amp;owner=untyped&quot;&gt;instaservlet&lt;/a&gt; and &lt;a href=&quot;http://planet.plt-scheme.org/display.ss?package=dispatch.plt&amp;amp;owner=untyped&quot;&gt;dispatch&lt;/a&gt;), &lt;a href=&quot;http://scheme.dk/blog/&quot;&gt;Jens Axel Soegaard&lt;/a&gt; (&lt;a href=&quot;http://planet.plt-scheme.org/display.ss?package=web.plt&amp;amp;owner=soegaard&quot;&gt;web.plt&lt;/a&gt;), and of course, &lt;a href=&quot;http://www.plt-scheme.org/&quot;&gt;PLT Scheme&lt;/a&gt;.&lt;/p&gt;&lt;h4&gt;4.1&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;a name=&quot;(part._.Contributors)&quot;&gt;&lt;/a&gt;Contributors&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Bill Hager&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Joshua Herman&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;navset&quot; style=&quot;margin-top: 2em; border-top: 2px solid #e0e0c0;&quot;&gt;&lt;span class=&quot;navleft&quot;&gt;&lt;input style=&quot;width: 16em; margin: 0px; padding: 0px; background-color: #eee; color: #888; border: 1px solid #ddd; text-align: center; vertical-align: middle;&quot; type=&quot;text&quot; value=&quot;...search manuals...&quot; title=&quot;Enter a search string to search the manuals&quot; onkeypress=&quot;return DoSearchKey(event, this, &amp;quot;4.1.0.3&amp;quot;, &amp;quot;&amp;quot;);&quot; onfocus=&quot;this.style.color=&amp;quot;black&amp;quot;; this.style.textAlign=&amp;quot;left&amp;quot;; if (this.value == &amp;quot;...search manuals...&amp;quot;) this.value=&amp;quot;&amp;quot;;&quot; onblur=&quot;if (this.value.match(/^ *$/)) { this.style.color=&amp;quot;#888&amp;quot;; this.style.textAlign=&amp;quot;center&amp;quot;; this.value=&amp;quot;...search manuals...&amp;quot;; }&quot; /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;
\ No newline at end of file</diff>
      <filename>scribblings/leftparen.html</filename>
    </modified>
    <modified>
      <diff>@@ -108,17 +108,31 @@ You're ready for launch.  Start the server with
 
 and you should have a basic blogging app, with persistent data, in 19 lines of code.
 
-@section{More Documentation to Come}
-
-We need to get a full LeftParen reference up (not just simple tutorials).  There's lots more cool stuff in LeftParen that this document doesn't yet address.
-
 @section{Reference}
 
 @subsection{Forms}
 
-Wouldn't forms documentation be nice?
+Most web applications make some use of web forms.  The @scheme[form] function lets easily you get and process input from your users.
+
+@defproc[(form (field-specs (listof field-spec?))) xexpr?]
+@defthing[field-spec? (list symbol? string? field-type?)]
+@defthing[field-type? (or/c 'text 'long-text 'number 'password 'image 'checkbox
+		            'radio 'drop-down)]
+
+You create a form by listing, in order, &quot;field specifications&quot;.  For example, you might want a title field, followed by a description text box, followed by a photo upload field.  Note that the many keyword arguments available to the @scheme[form] function aren't documented yet.
+
+Each field spec is of the form @scheme[(field-name label field-type)].  For example, you create a title field, you might use the spec @scheme[(title &quot;Enter a title&quot; text)].  The entire example metioned above might look like this:
+
+@schemeblock[
+(form '((title &quot;Title&quot; text) 
+        (description &quot;Description&quot; long-text)
+        (photo &quot;Your photo&quot; image)))
+]
+
+
+@subsubsection{Image uploads}
 
-@defproc[(mystery (a string-dude)) int]
+By default, uploaded images are stored in the @tt{uploaded-files} directory in your project directory.  You can customize this with the @scheme[*PATH_TO_UPLOADED_FILES*] setting.  When images are saved, their original filenames are used with a 5-character code pre-pended to make filenames unique.
 
 @subsection{Sessions}
 </diff>
      <filename>scribblings/leftparen.scrbl</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>1819cb29a0799dc77d86b38d26da456dd9588605</id>
    </parent>
  </parents>
  <author>
    <name>Rob Hunter</name>
    <email>rob.hunter@gmail.com</email>
  </author>
  <url>http://github.com/vegashacker/leftparen/commit/9221a858d42a0625b625cb6eaa2dc1b222430111</url>
  <id>9221a858d42a0625b625cb6eaa2dc1b222430111</id>
  <committed-date>2008-11-10T09:29:43-08:00</committed-date>
  <authored-date>2008-11-10T09:29:43-08:00</authored-date>
  <message>changed name of file upload setting; added documention for some parts of the 'form' functionality</message>
  <tree>189a2515522d0f2c054ccaa489b57f773e8dffe1</tree>
  <committer>
    <name>Rob Hunter</name>
    <email>rob.hunter@gmail.com</email>
  </committer>
</commit>
