Older blog entries for pesco (starting at number 10)

I've been toying around with the idea of creating a structural markup language (like XML) with LaTeX-like syntax and a simple semantics. My idea is to let what are macros in (La)TeX become functions. Then the available functions and their types form the analogue to, say, XML Schemas. Giving a concrete implementation for the functions provides an interpretation to the document, for example transforming it into some other format (like XSLT). I wonder if people think this is a good idea; or would even like to help with its development. I have produced an initial scratch implementation of a parser in Haskell. There is also a function to transform the parsed document into a Haskell expression.

As a next step, I should add a little main routine for reading in a document and spitting out a simple Haskell module which

  • imports some given module as an interpretation and
  • exports the source document under that interpretation (through the conversion to an expression, as described).
The obvious proof-of-concept toy, then, is of course an Advogato-exporter.
Another amazing discovery!

Have you ever wondered what it's like in hyperspace? I remember that Space Gothic explained the experience of "looking out the window in hyperspace" as instantly turning everyone insane, which I quite liked. Then, according to Event Horizon, as many will remember, there's just Hell in hyperspace, an also somewhat enjoyable theory. However, as anyone who was paying attention in the early nineties will instantly confirm, in the modern world of today, we know that there is disco music in hyperspace!

The scientific device by which the above revelation was established is called Star Control II and nowadays it is freely available for every skeptic to confirm this earth-shaking discovery.

15 Dec 2005 (updated 15 Dec 2005 at 14:14 UTC) »

Wow, I just found bitlbee! Now I can finally get rid of Gaim. For those who don't know, bitlbee is a Jabber,ICQ,MSN,etc. to IRC gateway. It runs as an IRC server on localhost, maintaining a channel which all your buddies from the different IM networks just join when they come on-line. So nice! Then you can either /msg them or just talk to them in the customary IRC way ("nick: blah") from the control channel.

Oh by the way, setup is really simple, just apt-get install bitlbee, /connect localhost, and follow the instructions of the bee.

I did nothing today. Except run Windows Update, read mail, and jerk off (just kidding of course (of course)). Shit day. But wait, I cooked! This is an accomplishment. And it tasted pretty good. Amazes me every time.

Well, okay, I'm also thinking about ways to extend Haddock to better support my prefered style of writing code. I write literate programs and obviously I don't want the interface documentation comments to show up as part of the code in the typeset output. Other comments, however, can be very useful, so I don't want to throw out "non-literate" comments alltogether. So far, I have resorted to typesetting seperate reference manuals in roff (sic!), which has actually worked quite well -- and I love the feeling of typing man haskellfunction.

So I have two options: Either write something to strip doc comments out of the code before typesetting or invent some way to add them to the literate comments. I have been trying to investigate the latter way, because it appears "cleaner" to my belly-brain. This way could also make it easy to put the reference docs in some place slightly different from the usual "right next to the thing". Of course completely seperating the two goes directly against the idea of putting reference docs next to code, but well. I haven't thought this through yet, but must wash my dishes now. More thoughts later.

Wah yeah, I finished the paper! But I really should start this stuff early enough next time. I got a bad stress-headache last night, which luckily vanished as soon as the hard work was done. :) I was afraid to not get my paper into the conference proceedings because I'm two days late, but luckily the CCC people are reachable via IRC, very friendly and helpful, and best of all, not overly picky about deadlines. ;)

So anyway, as you can see, I've put the paper on the web before the actual lecture; surely won't hurt. If the "logical language" Lojban is of any interest to you, please have a look and tell me what you think! I'm a tiny bit afraid still to ask for opinions on #lojban, because I'm actually quite a newbie at the language and have had to submit the paper without review of an expert due to the time constraint. But actually I'm kind of confident I haven't made any serious mistakes, so I'll post the link to #lojban in a minute...

Also of course, if you have any way/interest to attend the lecture (or any of the other great ones) at the 22nd. Chaos Communication Congress (Berlin, Dec. 27-30), please come! I'm confident it will be an exciting four days.

29 Nov 2005 (updated 29 Nov 2005 at 20:57 UTC) »

Yay, I retrieved my passwort. :)

During my absence, I've written a bunch of useful Haskell stuff (to be found at my website). But most importantly I've co-founded the KHJK, basically a society for mad scientists and futurist engineers (*g*). I hope to shell out some great stuff for/with this organization.

My current task is to develop a metadata-centric filesystem that should be able to serve both as a long-term archival facility and a backend system for an automated website, i.e. an istant publishing tool. Incidentally, it should also be suitable for email message posting in the style of IM2000. Oh, and for blogging. ;)

I think I would like a predicate logic metadata-base, and a query language like Prolog. I think I should define some common predicates ("title", "created", "modified", etc.), rules (reflexivity, transitivity, etc.) and some kind of textual representation for these relations first. Then I will think about the best way to query this system from Haskell. Via an interpreter, this will also yield an immediate command-line interface to the database. I've been wishing for a Haskell command shell environment for some time. Maybe this can be combined. All the basic functions are in the standard library, one just has to build a specific Prelude that imports them all, possibly with shorter or more mnemonic names.

But for now, I need to prepare my lecture at this year's Chaos Communication Congress, which is going to be about Lojban, another topic which I am pretty excited about. For those who don't know, it's a constructed (spoken!) language based on predicate logic. Everything is very clear an clean. I like! :)

Interesting. I'm done with the (graph-theoretical) shortest path algorithm. And by the way, guess what, it's an instance of a breadth-first fold (no shit). That function almost twisted my brain out of my head, though. Fuckin' thing. But judging by how convoluted it started, it turned out pretty nice. 14 siginficant lines of code. OK?

Annotating each node in the graph with its shortest path to a given root node is done in three significant lines of code. Oh, and by the way, of course I ended up using (basically) the same data structure as FGL. Well, at least now I know.

As I was saying... Interesting. My distance to raph is four for both Apprentice and Journeyer level. So the maxflow algorithm is next...

Oh, and thanks Akira, for certifying me. :)

Well, well, well. It turns out the memory leak was not in the graph processing at all. The function to extract the certs from HTML (via regexes) was holding on to stuff, appearently. Forcing evaluation of the extracted certs makes the program run on full CPU power with a maximum residency of eight megabytes. It took around 80 seconds to process all users.

But by the way, my self-made graph module was still very useful. Most importantly, it allows arbitrary node types, as long as they are ordered. Amazingly, this generalization makes the code hugely prettier. I will have to see how the algorithms work out.

Hah! I got a much better idea about the thrashing of my program. I've always thought 512 megabytes were a bit slim for my PowerBook... just kidding.

Dear Diary! I got certificied as Journeyer by my friend shapr. Cool, but my global level is still Observer. I must be too far away from the seeds.

So I've extracted Advogato's certification database. (At least the component reachable from raph, miguel, federico, and alan.) The graph has 4482 nodes (=users), and 45826 edges (=certificates).

Unfortunately, the graph library I used (FGL) feels kind of strange. My "naive" program quickly exhausted my 512 megabytes of memory, throwing the machine into thrash mode. (I've always found it amusing to see people wearing "Thrasher" T-shirts, by the way.) However, because I like "naive" programming, I've just decided to make my own graph library. Finding my distance to the nearest seed will have to wait until it's finished. ;-P

It's funny how quickly I can completely lose interest in practical problems ("What's my distance to the seeds?") in the light of solving something more abstract ("Write a graph library kind of like FGL but cooler, and with which my program works better.").

Anyway, I fully expect the following events to happen next (in any order):

  • The graph library will fail.
  • I will get certified at Journeyer level.
  • Someone will add the seed distance and all other interesting output to mod_virgule.
  • I will abandon my Advogato program.
But hey, it will be an experience. Right.

1 older entry...

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!