html update
[clinton/website/site/unknownlamer.org.git] / Code.html
index 9406d31..87f81fc 100644 (file)
--- a/Code.html
+++ b/Code.html
@@ -7,35 +7,71 @@
     <meta name="generator" content="muse.el" />
     <meta http-equiv="Content-Type"
           content="text/html; charset=utf-8" />
-<link rel="stylesheet" href="default.css" media="screen" />
+    <link href="https://feeds.unknownlamer.org/rss/site-updates" 
+          rel="alternate" type="application/rss+xml" title="Updates Feed" />
+
+<link rel="stylesheet" href="default.css" />
   </head>
   <body>
     <h1>Programming Projects</h1>
    <div class="contents">
 <dl>
 <dt>
-<a href="#sec1">Nothing Much to See Here</a>
+<a href="#sec1">Common Lisp</a>
 </dt>
+<dd>
+<dl>
 <dt>
-<a href="#sec2">The Future</a>
+<a href="#sec2">UnCommon Web Related</a>
 </dt>
 <dd>
 <dl>
 <dt>
 <a href="#sec3">Golgonooza</a>
 </dt>
+<dt>
+<a href="#sec4">ucw-forms</a>
+</dt>
+<dt>
+<a href="#sec5">ucw-core branch</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec6">Trivial-Timers</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec7">Scheme</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec8">Guile XOSD2</a>
+</dt>
+</dl>
+</dd>
+<dt>
+<a href="#sec9">Standard ML</a>
+</dt>
+<dd>
+<dl>
+<dt>
+<a href="#sec10">Domtool</a>
+</dt>
 </dl>
 </dd>
 <dt>
-<a href="#sec4">Old Projects</a>
+<a href="#sec11">Old Projects</a>
 </dt>
 <dd>
 <dl>
 <dt>
-<a href="#sec5">Bobot++</a>
+<a href="#sec12">Bobot++</a>
 </dt>
 <dt>
-<a href="#sec6">Guile-Web</a>
+<a href="#sec13">Guile-Web</a>
 </dt>
 </dl>
 </dd>
 </div>
 
 
-<!-- Page published by Emacs Muse begins here --><h2><a name="sec1" id="sec1"></a>
-Nothing Much to See Here</h2>
+<!-- Page published by Emacs Muse begins here --><p>All of my current, and mostly not so current, projects are browsable in
+a few places:</p>
 
-<p class="first">All of my current, and some not so current, projects are browsable via
-<a href="http://unknownlamer.org/darcsweb/browse">my darcsweb</a>. You might want to take a look at my <a href="Lisp.html">Lisp projects</a> page.</p>
+<ul>
+<li><a href="http://unknownlamer.org/darcsweb/browse">my darcsweb</a></li>
+<li><a href="http://git.hcoop.net/?a=project_list;pf=clinton">my gitweb</a>, and the <a href="http://git.hcoop.net/?a=project_list;o=age;pf=hcoop">HCoop projects gitweb</a></li>
+</ul>
 
+<p>You might want to take a look at my <a href="Lisp.html">Lisp related projects</a> page too.</p>
 
-<h2><a name="sec2" id="sec2"></a>
-The Future</h2>
+<h2><a name="sec1" id="sec1"></a>
+Common Lisp</h2>
 
-<h3><a name="sec3" id="sec3"></a>
-<a href="/darcsweb/browse?r=golgonooza;a=summary">Golgonooza</a></h3>
+<h3><a name="sec2" id="sec2"></a>
+UnCommon Web Related</h3>
+
+<h4><a name="sec3" id="sec3"></a>
+<a href="http://unknownlamer.org/darcsweb/browse?r=golgonooza;a=summary">Golgonooza</a></h4>
 
 <p class="verse">
 Fourfold the Sons of Los in their divisions: and fourfold.<br />
@@ -68,9 +110,74 @@ But that toward Eden is walled up. till time of renovation:<br />
 Yet it is perfect in its building. ornaments &amp; perfection.<br />
 </p>
 
+<p>Golgonooza is a set of utility components for <a href="http://common-lisp.net/projects/ucw/repos/ucw-core/">ucw-core</a>. As of December
+2008 it is nearing a releasable state and is in use on
+<a href="http://bees-kneesfilms.com">one production site online</a> (<a href="http://unknownlamer.org/darcsweb/browse?r=beesknees;a=summary">darcsweb::beesknees</a> for source).</p>
+
+
+<h4><a name="sec4" id="sec4"></a>
+<a href="http://unknownlamer.org/darcsweb/browse?r=ucw-forms;a=summary">ucw-forms</a></h4>
+
+<p class="first">ucw-forms is a slightly enhanced and de-javascripted version of the
+forms library from ucw_ajax updated for use with ucw-core.</p>
+
+
+<h4><a name="sec5" id="sec5"></a>
+<a href="http://unknownlamer.org/darcsweb/browse?r=ucw-core_clinton;a=summary">ucw-core branch</a></h4>
+
+<p class="first">I maintain a personal branch of ucw-core with various work in progress
+patches that are intended to go upstream. My primary task is filling
+in the ucw-standard library which was removed in the ucw-core fork.</p>
+
+
+
+<h3><a name="sec6" id="sec6"></a>
+<a href="http://unknownlamer.org/darcsweb/browse?r=trivial-timers;a=summary">Trivial-Timers</a></h3>
+
+<p><a href="http://retes.hu/~mega/git/?p=clon.git;a=summary">Clon</a> is a nice library for scheduling tasks within a Lisp image, but
+it used the SBCL timer extension. I wanted to run something using Clon
+on <a href="http://trac.clozure.com/openmcl">Clozure CL</a> and so I looked at the SBCL source and found that, after
+a bit of fairly straightforward editing, it was possible to write a
+portable version for any compiler supporting <a href="http://common-lisp.net/project/bordeaux-threads/">Bordeaux Threads</a>. The
+SBCL timers internally use <code>sb-unix:setittimer</code>; Rather than using
+<a href="http://common-lisp.net/project/osicat/">Osicat</a> to emulate this I chose to rework the scheduling loop to run in
+a dedicated thread that sleeps on a condition variable with a
+timeout. This seems <em>cleaner</em> to me than using POSIX lib calls, but
+requires a threaded Lisp.</p>
+
+<p><a href="http://releases.unknownlamer.org/trivial-timers/">Releases are available</a> with the usual <a href="http://unknownlamer.org/darcsweb/browse?r=trivial-timers;a=summary">darcs repo</a>. Currently there is a
+native SBCL implementation and a portable implementation relying upon
+<a href="http://common-lisp.net/project/bordeaux-threads/">Bordeaux Threads</a>. Patches to export other Lisp implementations' timer
+interface are welcome.</p>
 
 
-<h2><a name="sec4" id="sec4"></a>
+
+<h2><a name="sec7" id="sec7"></a>
+Scheme</h2>
+
+<h3><a name="sec8" id="sec8"></a>
+<a href="http://unknownlamer.org/darcsweb/browse?r=guile-xosd2;a=summary">Guile XOSD2</a></h3>
+
+<p class="first">A simple SWIG based wrapper for <a href="http://www.ignavus.net/software.html">libxosd2</a>. I forked this from
+<a href="https://gna.org/projects/guile-xosd">guile-xosd</a> after the maintainer did not respond to an email with a
+small patch to make the interface nicer. Guile-XOSD2 requires SWIG
+1.3.x and has been tested against the VM branch of Guile. I renamed
+most of the functions to have properly Scheme names.</p>
+
+
+
+<h2><a name="sec9" id="sec9"></a>
+Standard ML</h2>
+
+<h3><a name="sec10" id="sec10"></a>
+<a href="http://wiki.hcoop.net/DomTool">Domtool</a></h3>
+
+<p class="first">Originally authored by <a href="http://www.schizomaniac.net/">Adam Chlipala</a>, as of late 2010 I have been
+tasked with keeping it up to date for <a href="http://hcoop.net">HCoop</a>.</p>
+
+
+
+<h2><a name="sec11" id="sec11"></a>
 Old Projects</h2>
 
 <p class="first">I used to work on some programs in terrible languages like <code>C++</code> when I
@@ -78,7 +185,7 @@ was a poor misguided youth. I still attempt to respond to bug reports
 and patches for any that are still in use (<em>Bobot++</em> appears to be the
 only one), but they are otherwise not being worked upon.</p>
 
-<h3><a name="sec5" id="sec5"></a>
+<h3><a name="sec12" id="sec12"></a>
 <a href="../code/bobot.html">Bobot++</a></h3>
 
 <p class="first">A fancy little IRC bot that is extensible with Scheme. If you can
@@ -87,8 +194,15 @@ is fairly powerful. <code>dsmith</code> from <code>#guile</code> has a nicely fe
 written on top of Bobot++; if I find time I shall attempt to post the
 source.</p>
 
+<p>There is now a <a href="http://unknownlamer.org/darcsweb/browse?r=bobot%2B%2B;a=summary">darcs repo</a> available with a few minor changes. I am
+sporadically working to make the internals of the bot fully threadsafe
+so that multithreaded Scheme extensions don't run into issues. I may
+potentially clean up the Scheme interface as well (as it was clearly
+not designed by a Schemer and I was not so well versed in proper style
+in 2002 when I did most of my work on Bobot++).</p>
 
-<h3><a name="sec6" id="sec6"></a>
+
+<h3><a name="sec13" id="sec13"></a>
 <a href="../code/guile-web.html">Guile-Web</a></h3>
 
 <p class="first">A perhaps still useful library of web related utilities for
@@ -101,34 +215,31 @@ hacky as Hell, but the <a href="../code/guile-web-manual.html#SEC6">XHTML genera
 
   <p class="cke-buttons">
     <!-- validating badges, any browser, etc -->
-    <a href="http://validator.w3.org/check/referer"><img
-       src="http://www.w3.org/Icons/valid-xhtml10"
+    <a href="https://validator.w3.org/check/referer"><img
+       src="https://www.w3.org/Icons/valid-xhtml10"
        alt="Valid XHTML 1.0!" /></a>
     
-    <a href="http://www.anybrowser.org/campaign/"><img
+    <a href="https://www.anybrowser.org/campaign/"><img
        src="img/buttons/w3c_ab.png" alt="[ Viewable With Any Browser
        ]" /></a>
 
-    <a href="http://www.debian.org/"><img
+    <a href="https://www.debian.org/"><img
        src="img/buttons/debian.png" alt="[ Powered by Debian ]" /></a>
     
-    <a href="http://hcoop.net/">
+    <a href="https://hcoop.net/">
       <img src="img/buttons/hcoop.png" 
        alt="[ Hosted by HCoop]" />
     </a>
 
-    <a href="http://www.fsf.org/register_form?referrer=114">
+    <a href="https://www.fsf.org/register_form?referrer=114">
       <img src="img/buttons/fsf_member.png"
        alt="[ FSF Associate Member ]" />
     </a>
   </p>
 
-<p class="cke-footer">                         Ruled by the ebb of my oceans                         
-                        Slaves to the dusk and the dawn                        
-                         Your petri dish civilisations                        
-                             Are buried and born                              
+<p class="cke-footer">No, there's nothing here about X, so be quiet.
 </p>
 <p class="cke-timestamp">Last Modified:
-    July 29, 2008</p>
+    May  9, 2019</p>
   </body>
 </html>
\ No newline at end of file