Typo fixes
[clinton/website/src/unknownlamer.org.git] / Code.muse
1 #title Programming Projects
2
3 All of my current, and some not so current, projects are browsable via
4 [[http://unknownlamer.org/darcsweb/browse][my darcsweb]]. You might want to take a look at my [[Lisp][Lisp related projects]]
5 page.
6
7 * Common Lisp
8
9 ** UnCommon Web Related
10
11 *** [[darcsweb::golgonooza][Golgonooza]]
12
13 <verse>
14 Fourfold the Sons of Los in their divisions: and fourfold.
15 The great City of Golgonooza: fourfold toward the north
16 And toward the south fourfold, & fourfold toward the east & west
17 Each within other toward the four points: that toward
18 Eden. and that toward the World of Generation.
19 And that toward Beulah. and that toward Ulro;
20 Ulro is the space of the terrible starry wheels of Albions sons:
21 But that toward Eden is walled up. till time of renovation:
22 Yet it is perfect in its building. ornaments & perfection.
23 </verse>
24
25 Golgonooza is a set of utility components for [[http://common-lisp.net/projects/ucw/repos/ucw-core/][ucw-core]]. As of December
26 2008 it is nearing a releasable state and is in use on
27 [[http://bees-kneesfilms.com][one production site online]] (darcsweb::beesknees for source).
28
29 *** [[darcsweb::ucw-forms][ucw-forms]]
30
31 ucw-forms is a slightly enhanced and de-javascripted version of the
32 forms library from ucw_ajax updated for use with ucw-core.
33
34 *** [[darcsweb::ucw-core_clinton][ucw-core branch]]
35
36 I maintain a personal branch of ucw-core with various work in progress
37 patches that are intended to go into upstream. My primary task is
38 filling in the ucw-standard library which was removed in the ucw-core
39 fork.
40
41 ** [[darcsweb::trivial-timers][Trivial-Timers]]
42
43 [[http://retes.hu/~mega/git/?p=clon.git;a=summary][Clon]] is a nice library for scheduling tasks within a Lisp image, but
44 it used the SBCL timer extension. I wanted to run something using Clon
45 on [[http://trac.clozure.com/openmcl][Clozure CL]] and so I looked at the SBCL source and found that, after
46 a bit of fairly straightforward editing, it was possible to write a
47 portable version for any compiler supporting [[http://common-lisp.net/project/bordeaux-threads/][Bordeaux Threads]]. The
48 SBCL timers internally use =sb-unix:setittimer=; Rather than using
49 [[http://common-lisp.net/project/osicat/][Osicat]] to emulate this I chose to rework the scheduling loop to run in
50 a dedicated thread that sleeps on a condition variable with a
51 timeout. This seems *cleaner* to me than using POSIX lib calls, but
52 requires a threaded Lisp.
53
54 [[http://release.unknownlamer.org/trivial-timers/][Releases are available]] with the usual [[darcsweb::trivial-timers][darcs repo]]. Currently there is a
55 native SBCL implementation and a portable implementation relying upon
56 [[http://common-lisp.net/project/bordeaux-threads/][Bordeaux Threads]]. Patches to export other Lisp implementations' timer
57 interface are welcome.
58
59
60 * Old Projects
61
62 I used to work on some programs in terrible languages like =C++= when I
63 was a poor misguided youth. I still attempt to respond to bug reports
64 and patches for any that are still in use (*Bobot++* appears to be the
65 only one), but they are otherwise not being worked upon.
66
67 ** [[../code/bobot.html][Bobot++]]
68
69 A fancy little IRC bot that is extensible with Scheme. If you can
70 figure out the scripting interface (which is [[../code/bobotpp-manual.html#SEC35][partially documented]]) it
71 is fairly powerful. =dsmith= from =#guile= has a nicely featured bot
72 written on top of Bobot++; if I find time I shall attempt to post the
73 source.
74
75 There is now a [[darcsweb::bobot%2B%2B][darcs repo]] available with a few minor changes. I am
76 sporadically working to make the internals of the bot fully threadsafe
77 so that multithreaded Scheme extensions don't run into issues. I may
78 potentially clean up the Scheme interface as well (as it was clearly
79 not designed by a Schemer and I was not so well versed in proper style
80 in 2002 when I did most of my work on Bobot++).
81
82 ** [[../code/guile-web.html][Guile-Web]]
83
84 A perhaps still useful library of web related utilities for
85 [[http://www.gnu.org/software/guile/guile.html][Guile Scheme]]. Be warned that the serializer is inefficient, consy, and
86 hacky as Hell, but the [[../code/guile-web-manual.html#SEC6][XHTML generation library]] might be useful.