In 2003 a drunk programming team was sent to the rector by an academic tutor for a coursework they didn't complete. They promptly escaped from a maximum security lecture hall to the London underground.
Today, still wanted by the department, they survive as coders of fortune. If you need a program, if no one else can write it, and if they can be bothered, maybe you can hire...

Coders of Fortune

website pyblosxom r40 python rants anime untagged cwiki ctools literacy

ctools 1.1.0 is now out! It now comes with the funky new caching algorithm, and its own sourceforge page (actually, the sourceforge page was up with 1.0.0, I just forget to post it). - see here

No changes to cdoc this time (but then again, cdoc is essentially complete), but a few new additions to libcdecode - images and external links being the main two.

Additionally, if you want to change the sites configuration, funnelweb is now a must as several of the main config variables are now funnelweb macros rather than simple #defines. Why? Basically because you can't really nest #defines, and by moving wiki_urlbase up, it drastically reduces the number of #defines needed.

Finally, no progress on getting version control access - I suspect I may run it from git.orz or similar. We are not sure we want to try and run subversion as a base for the code when we all use git.

As of 1.1.x, a number of the configuration options for ctools have been moved from #defines to funnelweb macros. As a result, if you want to change any of these defaults, the use of funnelweb is now required.

The caching algorithm in cwiki 1.0 is somewhat simple - it stores in its database the html'isd version of the body text of every revision of every page.

When you request a page for viewing, it will load the details for that page from its database, generate the header, load the correct version of the html and generate the footer and finally dump the lot out to the system.

cwiki 1.1 is somewhat more intelligent, and equally somewhat less:

  • We nowonly store the saved html for the most recent revision of a page (mostly due to concerns about space usage vs. the benefit of having it).
  • The header for the current revision of each page is also cached - this requires slightly more complex logic on the saving of edited pages, as a page edit may affect the header of other pages, but its a reasonably complicated task, and worth caching.
  • (optionally) the current version of the page is saved out to disk as a normal html file. As a result, non-historical page views do not involve the cgi script at all, and are served directly by the webserver.



more...

A collection of lightweight libraries and programs written in C released under the MIT license:

  • libclog: provides a syslog-style interface which can log to either syslog or to stdout.
  • libcdecode: render a subset (currently) of asciidoc markup into various formats.
  • cwiki: wiki program using a sqlite3 based backend, supporting standard cgi and fastcgi.
  • cdoc: document generation program to create docbook files from plain text.

Currently we are working on getting a repository up and availiable, but a tar.bz2 of the source is availiable here. (md5sum). See the INSTALL text file for instructions. You will need to have the cook build tool installed (unless you like compiling/linking C files by hand), and having the funnelweb literate programming tool will be handy.

Firstly, though, I need to get mod_rewrite happy with the RSS feed...
Well, its that time again - time to rewrite Cof This time, We've got a plan for it, so you never know...

Spam is a pain. For email we have a number of fairly sophisticated solutions involving various heuristics, algorithms and even ML. Comment spam on the other hand, is lagging slightly behind in this respect.
We are currently experimenting with a number of different, cooperating solutions for use here at coders. The first one is (initially) a fairly simple captcha, based around Steven Armstrongs nospam.py code.



more...

Pyblosxom is, at its core a python port of blosxom.
If you are reading this, then you are reading hte new version of coders, which has switched its underlying engine from blosxom to pyblosxom.
There are several reasons for this.

  • Language choice - Here at coders, we like python. and are better at it on the whole than we are at perl, which makes things like modifying / creating plugins a lot easier.
  • Active development - development on blosxom has somewhat stagnated. Although not on fire, pyblosxom is still being worked on by a number of people.
  • Feature set - although blosxom (and pyblosxom) are by design rather lightweight, there are still a couple of features that work better under pyblosxom than under previous versions - notably ease of plugin creation, incremental static rendering and division of data files on the hard drive.
  • Strong blosxom compatability - inevitably minor tweaks were required, but fundamentally, the existing set of entries and flavour files from the old site could be dropped into the new site and just work.

So actually, its really business as usual here.

Right, well although we have a nice base system, its still missing a couple of things.... like a kernel, logger, bootloader and all those other things we need to boot...



more...

Bootstrapping



more...