Latest articles

  • Type fascism..

    26 August 2011, by Toots

    I used to think of me as a libertarian.. Maybe it is because I am getting old and grumpy but I’ve found myself lately being more of a totalitarian rigid conservative.. concerning typing and APIs.. :-) Liquidsoap being a stream-oriented software, we had felt the need for a long time to be able to manipulate mp3 id3 tags without them being attached to an actual file.. This is certainly possible in theory: id3 tags are not part of the mpeg I/II audio layer 3 format but an addition in the form (...)

  • The times etc...

    30 July 2011, by Toots
  • Moving out of the 70s...

    26 July 2011, by Toots

    Dear OCamlers, The seventies were a cool time.. Progressive rock, pacifist movements and, of course, free love. However, the seventies were also the dark ages for modern computing.. and the time of POSIX.. On this note, I am sick and tired of fixing over and over the same bugs caused by corner cases and shitty aspects of the POSIX norm. The top two is the following: SIGPIPE A sigpipe, depending on some obscur run-time considerations, may silently terminate your program or raise an (...)

  • Dynlink as dlopen..

    14 May 2011, by Toots

    Dear Lazyweb, One big issue we constantly face with liquidsoap is that most of our users have to recompile the whole software just to have support for mp3 encoding using liblame and ocaml-lame. We have been devising two different approaches with Samuel to address this issue. I would like to expose mine here, both for documentation purposes — finding documentation and examples of how to use the dynlink module is not easy — and to maybe get some feedback.. The whole issue with dynlink is (...)

  • A Monad for OCaml Duppy

    7 May 2011, by Toots

    The context Duppy is the OCaml module that we have developped with the Savonet Team as a solution for all scheduling tasks in Liquidsoap. Duppy was initially intended as a nice way to create a simple scheduler that supports the following: Delayed tasks, that is tasks to be exectued after a given delay Reading and writing on Unix.fd file descriptors without blocking the calling thread Custom priority system whith a pool of threads running concurrent queues processing tasks according to (...)

0 | 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | ...