b8fc5f83 |
1 | #title Programming Projects |
2 | |
b8fc5f83 |
3 | All of my current, and some not so current, projects are browsable via |
15f77882 |
4 | [[http://unknownlamer.org/darcsweb/browse][my darcsweb]]. You might want to take a look at my [[Lisp][Lisp related projects]] |
5 | page. |
0ae05a7e |
6 | |
5fac9f16 |
7 | * Common Lisp |
0ae05a7e |
8 | |
5fac9f16 |
9 | ** UnCommon Web Related |
10 | |
11 | *** [[darcsweb::golgonooza][Golgonooza]] |
0ae05a7e |
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 | |
28b623b6 |
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 |
5fac9f16 |
27 | [[http://bees-kneesfilms.com][one production site online]] (darcsweb::beesknees for source). |
0426bc8a |
28 | |
5fac9f16 |
29 | *** [[darcsweb::ucw-forms][ucw-forms]] |
0426bc8a |
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 | |
5fac9f16 |
34 | *** [[darcsweb::ucw-core_clinton][ucw-core branch]] |
0426bc8a |
35 | |
36 | I maintain a personal branch of ucw-core with various work in progress |
ab9bb3eb |
37 | patches that are intended to go upstream. My primary task is filling |
38 | in the ucw-standard library which was removed in the ucw-core fork. |
0426bc8a |
39 | |
5fac9f16 |
40 | ** [[darcsweb::trivial-timers][Trivial-Timers]] |
41 | |
42 | [[http://retes.hu/~mega/git/?p=clon.git;a=summary][Clon]] is a nice library for scheduling tasks within a Lisp image, but |
43 | it used the SBCL timer extension. I wanted to run something using Clon |
a6b655d9 |
44 | on [[http://trac.clozure.com/openmcl][Clozure CL]] and so I looked at the SBCL source and found that, after |
45 | a bit of fairly straightforward editing, it was possible to write a |
46 | portable version for any compiler supporting [[http://common-lisp.net/project/bordeaux-threads/][Bordeaux Threads]]. The |
47 | SBCL timers internally use =sb-unix:setittimer=; Rather than using |
48 | [[http://common-lisp.net/project/osicat/][Osicat]] to emulate this I chose to rework the scheduling loop to run in |
49 | a dedicated thread that sleeps on a condition variable with a |
50 | timeout. This seems *cleaner* to me than using POSIX lib calls, but |
51 | requires a threaded Lisp. |
5fac9f16 |
52 | |
ab9bb3eb |
53 | [[http://releases.unknownlamer.org/trivial-timers/][Releases are available]] with the usual [[darcsweb::trivial-timers][darcs repo]]. Currently there is a |
5fac9f16 |
54 | native SBCL implementation and a portable implementation relying upon |
55 | [[http://common-lisp.net/project/bordeaux-threads/][Bordeaux Threads]]. Patches to export other Lisp implementations' timer |
56 | interface are welcome. |
57 | |
58 | |
0ae05a7e |
59 | * Old Projects |
60 | |
61 | I used to work on some programs in terrible languages like =C++= when I |
62 | was a poor misguided youth. I still attempt to respond to bug reports |
63 | and patches for any that are still in use (*Bobot++* appears to be the |
64 | only one), but they are otherwise not being worked upon. |
65 | |
66 | ** [[../code/bobot.html][Bobot++]] |
67 | |
68 | A fancy little IRC bot that is extensible with Scheme. If you can |
69 | figure out the scripting interface (which is [[../code/bobotpp-manual.html#SEC35][partially documented]]) it |
70 | is fairly powerful. =dsmith= from =#guile= has a nicely featured bot |
71 | written on top of Bobot++; if I find time I shall attempt to post the |
72 | source. |
73 | |
a6b655d9 |
74 | There is now a [[darcsweb::bobot%2B%2B][darcs repo]] available with a few minor changes. I am |
b5f9a491 |
75 | sporadically working to make the internals of the bot fully threadsafe |
76 | so that multithreaded Scheme extensions don't run into issues. I may |
77 | potentially clean up the Scheme interface as well (as it was clearly |
78 | not designed by a Schemer and I was not so well versed in proper style |
79 | in 2002 when I did most of my work on Bobot++). |
80 | |
f075352b |
81 | ** [[../code/guile-web.html][Guile-Web]] |
0ae05a7e |
82 | |
83 | A perhaps still useful library of web related utilities for |
84 | [[http://www.gnu.org/software/guile/guile.html][Guile Scheme]]. Be warned that the serializer is inefficient, consy, and |
85 | hacky as Hell, but the [[../code/guile-web-manual.html#SEC6][XHTML generation library]] might be useful. |