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