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