f628de201a30d86c537da011f66e7e197b305cbf
[clinton/website/site/unknownlamer.org.git] / Code.html
1 <?xml version="1.0" encoding="utf-8" ?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml">
5 <head>
6 <title>Programming Projects</title>
7 <meta name="generator" content="muse.el" />
8 <meta http-equiv="Content-Type"
9 content="text/html; charset=utf-8" />
10 <link href="http://feeds.unknownlamer.org/rss/site-updates"
11 rel="alternate" type="application/rss+xml" title="Updates Feed" />
12
13 <link rel="stylesheet" href="default.css" />
14 </head>
15 <body>
16 <h1>Programming Projects</h1>
17 <div class="contents">
18 <dl>
19 <dt>
20 <a href="#sec1">Common Lisp</a>
21 </dt>
22 <dd>
23 <dl>
24 <dt>
25 <a href="#sec2">UnCommon Web Related</a>
26 </dt>
27 <dd>
28 <dl>
29 <dt>
30 <a href="#sec3">Golgonooza</a>
31 </dt>
32 <dt>
33 <a href="#sec4">ucw-forms</a>
34 </dt>
35 <dt>
36 <a href="#sec5">ucw-core branch</a>
37 </dt>
38 </dl>
39 </dd>
40 <dt>
41 <a href="#sec6">Trivial-Timers</a>
42 </dt>
43 </dl>
44 </dd>
45 <dt>
46 <a href="#sec7">Scheme</a>
47 </dt>
48 <dd>
49 <dl>
50 <dt>
51 <a href="#sec8">Guile XOSD2</a>
52 </dt>
53 </dl>
54 </dd>
55 <dt>
56 <a href="#sec9">Standard ML</a>
57 </dt>
58 <dd>
59 <dl>
60 <dt>
61 <a href="#sec10">Domtool</a>
62 </dt>
63 </dl>
64 </dd>
65 <dt>
66 <a href="#sec11">Old Projects</a>
67 </dt>
68 <dd>
69 <dl>
70 <dt>
71 <a href="#sec12">Bobot++</a>
72 </dt>
73 <dt>
74 <a href="#sec13">Guile-Web</a>
75 </dt>
76 </dl>
77 </dd>
78 </dl>
79 </div>
80
81
82 <!-- Page published by Emacs Muse begins here --><p>All of my current, and some not so current, projects are browsable via
83 <a href="http://unknownlamer.org/darcsweb/browse">my darcsweb</a>. You might want to take a look at my <a href="Lisp.html">Lisp related projects</a>
84 page. I have a few things available on <a href="http://git&#44;hcoop.net">HCoop's gitweb</a> prefixed with
85 <code>clinton/</code>.</p>
86
87 <h2><a name="sec1" id="sec1"></a>
88 Common Lisp</h2>
89
90 <h3><a name="sec2" id="sec2"></a>
91 UnCommon Web Related</h3>
92
93 <h4><a name="sec3" id="sec3"></a>
94 <a href="http://unknownlamer.org/darcsweb/browse?r=golgonooza;a=summary">Golgonooza</a></h4>
95
96 <p class="verse">
97 Fourfold the Sons of Los in their divisions: and fourfold.<br />
98 The great City of Golgonooza: fourfold toward the north<br />
99 And toward the south fourfold, &amp; fourfold toward the east &amp; west<br />
100 Each within other toward the four points: that toward<br />
101 Eden. and that toward the World of Generation.<br />
102 And that toward Beulah. and that toward Ulro;<br />
103 Ulro is the space of the terrible starry wheels of Albions sons:<br />
104 But that toward Eden is walled up. till time of renovation:<br />
105 Yet it is perfect in its building. ornaments &amp; perfection.<br />
106 </p>
107
108 <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
109 2008 it is nearing a releasable state and is in use on
110 <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>
111
112
113 <h4><a name="sec4" id="sec4"></a>
114 <a href="http://unknownlamer.org/darcsweb/browse?r=ucw-forms;a=summary">ucw-forms</a></h4>
115
116 <p class="first">ucw-forms is a slightly enhanced and de-javascripted version of the
117 forms library from ucw_ajax updated for use with ucw-core.</p>
118
119
120 <h4><a name="sec5" id="sec5"></a>
121 <a href="http://unknownlamer.org/darcsweb/browse?r=ucw-core_clinton;a=summary">ucw-core branch</a></h4>
122
123 <p class="first">I maintain a personal branch of ucw-core with various work in progress
124 patches that are intended to go upstream. My primary task is filling
125 in the ucw-standard library which was removed in the ucw-core fork.</p>
126
127
128
129 <h3><a name="sec6" id="sec6"></a>
130 <a href="http://unknownlamer.org/darcsweb/browse?r=trivial-timers;a=summary">Trivial-Timers</a></h3>
131
132 <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
133 it used the SBCL timer extension. I wanted to run something using Clon
134 on <a href="http://trac.clozure.com/openmcl">Clozure CL</a> and so I looked at the SBCL source and found that, after
135 a bit of fairly straightforward editing, it was possible to write a
136 portable version for any compiler supporting <a href="http://common-lisp.net/project/bordeaux-threads/">Bordeaux Threads</a>. The
137 SBCL timers internally use <code>sb-unix:setittimer</code>; Rather than using
138 <a href="http://common-lisp.net/project/osicat/">Osicat</a> to emulate this I chose to rework the scheduling loop to run in
139 a dedicated thread that sleeps on a condition variable with a
140 timeout. This seems <em>cleaner</em> to me than using POSIX lib calls, but
141 requires a threaded Lisp.</p>
142
143 <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
144 native SBCL implementation and a portable implementation relying upon
145 <a href="http://common-lisp.net/project/bordeaux-threads/">Bordeaux Threads</a>. Patches to export other Lisp implementations' timer
146 interface are welcome.</p>
147
148
149
150 <h2><a name="sec7" id="sec7"></a>
151 Scheme</h2>
152
153 <h3><a name="sec8" id="sec8"></a>
154 <a href="http://unknownlamer.org/darcsweb/browse?r=guile-xosd2;a=summary">Guile XOSD2</a></h3>
155
156 <p class="first">A simple SWIG based wrapper for <a href="http://www.ignavus.net/software.html">libxosd2</a>. I forked this from
157 <a href="https://gna.org/projects/guile-xosd">guile-xosd</a> after the maintainer did not respond to an email with a
158 small patch to make the interface nicer. Guile-XOSD2 requires SWIG
159 1.3.x and has been tested against the VM branch of Guile. I renamed
160 most of the functions to have properly Scheme names.</p>
161
162
163
164 <h2><a name="sec9" id="sec9"></a>
165 Standard ML</h2>
166
167 <h3><a name="sec10" id="sec10"></a>
168 <a href="http://wiki.hcoop.net/DomTool">Domtool</a></h3>
169
170 <p class="first">Originally authored by <a href="http://www.schizomaniac.net/">Adam Chlipala</a>, as of late 2010 I have been
171 tasked with keeping it up to date for <a href="http://hcoop.net">HCoop</a>.</p>
172
173
174
175 <h2><a name="sec11" id="sec11"></a>
176 Old Projects</h2>
177
178 <p class="first">I used to work on some programs in terrible languages like <code>C++</code> when I
179 was a poor misguided youth. I still attempt to respond to bug reports
180 and patches for any that are still in use (<em>Bobot++</em> appears to be the
181 only one), but they are otherwise not being worked upon.</p>
182
183 <h3><a name="sec12" id="sec12"></a>
184 <a href="../code/bobot.html">Bobot++</a></h3>
185
186 <p class="first">A fancy little IRC bot that is extensible with Scheme. If you can
187 figure out the scripting interface (which is <a href="../code/bobotpp-manual.html#SEC35">partially documented</a>) it
188 is fairly powerful. <code>dsmith</code> from <code>#guile</code> has a nicely featured bot
189 written on top of Bobot++; if I find time I shall attempt to post the
190 source.</p>
191
192 <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
193 sporadically working to make the internals of the bot fully threadsafe
194 so that multithreaded Scheme extensions don't run into issues. I may
195 potentially clean up the Scheme interface as well (as it was clearly
196 not designed by a Schemer and I was not so well versed in proper style
197 in 2002 when I did most of my work on Bobot++).</p>
198
199
200 <h3><a name="sec13" id="sec13"></a>
201 <a href="../code/guile-web.html">Guile-Web</a></h3>
202
203 <p class="first">A perhaps still useful library of web related utilities for
204 <a href="http://www.gnu.org/software/guile/guile.html">Guile Scheme</a>. Be warned that the serializer is inefficient, consy, and
205 hacky as Hell, but the <a href="../code/guile-web-manual.html#SEC6">XHTML generation library</a> might be useful.</p>
206
207
208
209 <!-- Page published by Emacs Muse ends here -->
210
211 <p class="cke-buttons">
212 <!-- validating badges, any browser, etc -->
213 <a href="http://validator.w3.org/check/referer"><img
214 src="http://www.w3.org/Icons/valid-xhtml10"
215 alt="Valid XHTML 1.0!" /></a>
216
217 <a href="http://www.anybrowser.org/campaign/"><img
218 src="img/buttons/w3c_ab.png" alt="[ Viewable With Any Browser
219 ]" /></a>
220
221 <a href="http://www.debian.org/"><img
222 src="img/buttons/debian.png" alt="[ Powered by Debian ]" /></a>
223
224 <a href="http://hcoop.net/">
225 <img src="img/buttons/hcoop.png"
226 alt="[ Hosted by HCoop]" />
227 </a>
228
229 <a href="http://www.fsf.org/register_form?referrer=114">
230 <img src="img/buttons/fsf_member.png"
231 alt="[ FSF Associate Member ]" />
232 </a>
233 </p>
234
235 <p class="cke-footer">The body bags and little rags of children torn in two,
236 And the jellied brains of those who remain to put the finger right on you
237 As the madmen play on words and make us all dance to their song
238 To the tune of starving millions to make a better kind of gun.
239 </p>
240 <p class="cke-timestamp">Last Modified:
241 March 3, 2011</p>
242 </body>
243 </html>