Name: Andreas Rottmann
Member since: 2004-03-10 01:52:38
Last Login: 2009-08-15 23:10:53



I'm a Debian> maintainer; see the state of my packages>.

I also do quite some upstream work. See the Software section> of my home page for details.


Articles Posted by rotty

Recent blog entries by rotty

Docs, features and babbling

sbank Tutorial

There's now a tutorial for sbank; this is work-in-progress, but I'd be happy about any suggestions on how to expand it and what to focus on.

New IRClogs features

Also, I've been brushing up my IRClogs webapp recently; it now features:

  • Showing a configurable amount of context around search hits, so you can make more sense of search results without having to go back to the page for that day.

  • Matching phrases in the search results are now highlighted.

  • Each search result entry now links directly to the corresponding day-page entry.

See this link for an example that shows off the features listed above. On the non-user-visible side, there's now support for gzipped logs, which saves a considerable amount of space, just gzip -9 the older log files — this should also work while the IRClogs server is running.

Ruby babbling

I'm using feed2imap to get all those RSS and Atom feeds into my beloved MUA. As I run spam filtering, and split incoming email into Maildir folders on a small server at home (in a setup involving SpamAssassin, Postfix and scmail) and serve those folders over IMAP (using Dovecot), I've decided to add Maildir support to feed2imap, so I no longer have to place my IMAP password in feed2imap's plain-text configuration file.

As feed2imap is implemented in Ruby, this has provided me the opportunity to get my feet wet (or rather moist) in this language. Having a good grip on Python and Scheme, my one-word summary so far would be: Unsurprising!.

If you're interested in the patch, have a watch on the bug report — I'll attach it there once it's in a reasonable shape.

Syndicated 2009-08-12 15:13:36 from rotty > Blog

Shiny New Blog

While I had a WordPress-based blog quite some time ago (which I rarely made use of), I was never quite content with it; I wanted something more simple, something that does not need a whole LAMP stack, doesn't require tinkering with mod_rewrite, and ideally has a codebase that I'd want to hack on (which definitely rules out WordPress, which is written in PHP).

Tekuti in R6RS clothing

Well, meet Tekuti. It's a lean blogging engine using Git as storage (so you get hot-backup and versioning for free), and, best of all, it's written in Scheme. Since I already have a Scheme HTTP server running for IRClogs, I decided to hack Tekuti so it could run in the same process; this involved porting Tekuti to R6RS and adding code to interface with the web-server (the original Tekuti only provides its services via the mod_lisp protocol). I must say that working with the Tekuti code was a joy; after getting it running using the mod_lisp protocol under Ikarus and Ypsilon, I could add the HTTP integration without touching the rest of the code at all. Kudos to Andy Wingo for writing this nice piece of code.

Yet another Scheme Web server

To avoid code duplication, I re-factored the ad-hoc libsoup-based web server that drove the IRClogs application into its own library. The interface provided by the library is very much inspired by the SUnet Web Server and hides libsoup entirely.

So, how does my script for running IRClogs and Tekuti inside the SPEnet HTTPd look like? Well, leaving out the customization and library imports, like this:

(define (rforge-request-handler irclogs)
   `(("blog" . ,(tekuti-handler))
     ("irclogs" . ,(lambda (path request)
                     (irclogs 'dispatch path request))))
   (rooted-file-handler *static-dir*)))

(let ((irclogs (make-irclogs *irclogs-config*)))
   (httpd (make-httpd-options
           with-port *port*
           with-request-handler (rforge-request-handler irclogs))
          (lambda (httpd)
            (irclogs 'update-state)
            (httpd/add-timeout httpd 60 (lambda ()
                                          (irclogs 'update-state)
Running the above code, with *port*, *static-dir* and *irclogs-config* appropriatly defined, will launch a completely stand-alone web server that will serve IRC logs, run a Tekuti blog instance, and provide static content from *static-dir*.


You can fetch the R6RS port of Tekuti via git:

git clone git://
git checkout t/r6rs/do-port

Syndicated 2009-07-03 18:18:47 from rotty > Blog

My blog is now wordpress-powered, please adjust URL.

A Guile rant

I began to program in Scheme using the Guile interpreter. While I knew that its not blazingly fast, its the official GNU extension language, and as feeling quite close to the goals of the GNU project and the FSF, I felt confident it was the right choice, also considering the supreme quality of other GNU software, such as the GNU toolchain (GCC, binutils, gas) and the Gimp, to name just a few.

So, feeling confident with my choice, I started to crank out code and eventually even took over maintainership over a Guile application, namely G-Wrap, after giving it a complete brush-up code-wise. When Tom Lord, of GNU Arch fame (and coincidently a former Guile maintainer), announced the Pika project (a from-scratch Scheme implementation, with ambitous goals), I decided to get on the mailing list and lurk, and later got opportunities to contribute a bit. Unfortunatly that project stalled due to time constraints on Tom's side. Anyway it was a very valuable experience, as it opened my eyes to other Scheme implementations, foremost Scheme 48. Looking at its code base was a real eye-opener: as opposed to Guile, it was, except for a tiny amount of glue code, written in Scheme; its virtual machine is written in a subset of Scheme called Pre-Scheme that can be compiled to efficient C code, so you get most of the benefits of Scheme and the speed of C.

Around the same time I discovered Scheme 48, I got involved in conjure, a make replacement being written in portable Scheme. I split off the library code from it to form a separate project, spells. As spells is basically a layer above the individual Scheme implementations which hides away their differences and presents their features (foremost the module system, but also hash tables, file system access, ...) in a portable way, I gained some experience regarding the different module systems and how they compare, and I honstly must say that Guile's is basically unusable with macros. Here's why:

A decent module system allows for macro code to refer to bindings in the module they are defined in, without requiring these bindings to be also exported; imagine a macro that expands to a call to some helper procedure that should itself should not be visible from outside the module. A real-life example are the reference implementations of SRFI-34 and SRFI-35, which define the helper procedures guard-aux and type-field-alist->condition, respectively. This deficiency (which is not present in Scheme 48, PLT Scheme, Gauche and probably most other Schemes) is really unfortunate, as it makes modules, when used with macros, a lot less usable. This, besides the total orientation toward interpretation and the codebase that is mostly in C are reasons why I'd recommend Scheme newbies also looking at other options before settling on Guile because it's the "official GNU extension language", as I did ;).

30 Jun 2005 (updated 30 Jun 2005 at 09:30 UTC) »
Getting paid for OSS work!

I'm going to get paid for open source developement! Wooha! More specifically, the company I work for since 2 months is going to switch away from CVS as SCM tool.

We had a look several SCM systems, among them Subversion, GNU Arch and several commercial offerings, including BitKeeper :-0. The final contestants were GNU Arch and AccuRev. Subversion fell flat for its missing features (mediocre merging support, no distribution), and BitKeeper was not considered seriously because they don't even list prices at their site (which indicates a fairly high price tag, normally ;) and due to opposition from myself (for the obvious political reasons).

Well, finally the case was made for GNU Arch, and since it lacks a decent GUI (currently the GUIish guys here use WinCVS), it was decided to develop the GUI in-house, and as an open source project!. It will probably be developed using Python and GTK+, so it will run also on Windows (which is a requirement). Expect more news, including project announcement soonish.

3 older entries...


rotty certified others as follows:

  • rotty certified weasel as Journeyer
  • rotty certified wichert as Master
  • rotty certified branden as Master
  • rotty certified alfie as Journeyer
  • rotty certified Joy as Journeyer
  • rotty certified ak as Journeyer
  • rotty certified miguel as Master
  • rotty certified wingo as Journeyer

Others have certified rotty as follows:

  • ffrederick certified rotty as Master
  • wingo certified rotty as Journeyer
  • chalst certified rotty as Journeyer
  • dlc certified rotty as Journeyer
  • puneet certified rotty as Master
  • janneke certified rotty as Journeyer

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page