Search Results: "bap"

26 June 2006

Roland Mas: Gforge in Debian, June 2006

…or, “Bits from a Gforge maintainer", if you’d like. After being neglected for way too long, the Gforge packages have finally started moving again. Packages for the most recent upstream release (4.5.14) are available in experimental, with quite a few improvements over the version currently in unstable: From a Debian maintainer’s point of view, my Gforge-related TODO list now mainly sports three items. I suppose I could also try and migrate to the webapps-common framework, but I’ll keep that for later. Of course, any help is welcome. Remember: the sooner I get the Gforge packages into a reasonable shape, the sooner they’ll go to unstable, then testing, and the sooner I’ll be backporting them to sarge, which means Alioth can be upgraded. But since I’ve heard a few complaints about Alioth being too damn slow or broken or whatever, I expect I’ll get lots of patches (in bug reports, please) from disgruntled users eager to help.

5 June 2006

MJ Ray: Debian-Legal Package List May 2006

May 2006 traffic discussed bacula cdbs cxxtools db3 db4.2 EiffelStudio ipv6calc ircd-irc2 java*-runtime/compiler libapache-mod-proxy-html libfaad* libx264* libjlha-java maxdb-doc opensaml postgresql sharpmusique sork-* sun-java5-jre tetex tremulous wget xfonts-utils [link to my index]

16 May 2006

Norbert Tretkowski: Updated libapache2-mod-python package

Last night I worked on an updated package of libapache2-mod-python, which is a bit outdated in Debian currently. It's based on the work of Robert Edmonds (see #360653), and I'm already in contact with Peter Hawkins, the current maintainer. If you're interested in the package, please test it and send me feedback. It's available from here, see the changes file in the same directory for a changelog.

10 May 2006

Wouter Verhelst: Kerberos II

So about two weeks ago I started playing with Kerberos. And I'm still not finished with it, kerberizing one service after the other. Really fun, that. Kerberizing a network protocol involves somehow sending the Kerberos ticket in-band with the rest of the conversation. This is not entirely defined by the Kerberos protocol, and indeed, different network protocols have come up with different ways of sending the Kerberos ticket to the service. So far, I've encountered SPNEGO for HTTP, GSSAPI for IMAP and SSH, and SASL for LDAP. It sounds like a complex mess, but it really isn't; in general, kerberizing a service involves three steps:
  1. Installing the Kerberos plugin (if any) for both the server and the client;
  2. Generating the service principal, and adding it to a/the keytab;
  3. Configuring the service so that it knows it can do Kerberos, and so that it knows how to act when a Kerberos request is sent
Yes, in the cases I've seen it's really that simple. Although I'm skipping step 0 here–reading the documentation. But I've done that for you already ;-) The hardest part is the initial setup. But even that isn't very hard, because the process is very well documented. For starters, install the krb5-doc package, and read the excellent /usr/share/doc/krb5-doc/README.KDC which explains just enough of the system to get you started. The rest will be explained to you through debconf and the like; and if you want more, the krb5-doc package also contains three info files which explain concepts and usage very well. There's an alternative implentation called heimdal, which I presume works similar; but I haven't tried it, so I don't have much details on that one. The process of installing krb5 is very straightforward; the only thing I'll let you know is that you should ensure that any host you're going to kerberize should have reverse name lookups configured and working correctly; otherwise, you're going to run into a bunch of serious problems. After the initial setup, you'll have a Kerberos realm, usually your domain name in upper case (GREP.BE in my case). You'll now want to set up principals for your users and principals for your hosts. Now, let me show you how to configure Kerberos for LDAP, PAM, HTTP, IMAP, and SSH:
PAM
By installing and using the libpam-krb5 package, you'll log in to kerberos and receive your TGT immediately at login time; the alternative would be having to use kinit (in the krb5-user package) afterwards. pam_krb5.so also takes care of destroying your tickets when you log out, so that you don't have to worry about that. This is very handy, but not really required; you could just use kinit all the time. Of course, using pam_krb5.so also means you have only one password for everything—and that is a very good argument to use it.
Anyway; our three steps:
  1. Installing the plugin
  2. As you've guessed, libpam-krb5 is the package you'll need. That, or the heimdal implementation.
  3. Generating and installing the service principal
  4. In the case of any service such as PAM that will give you a shell (thus, as we'll see later on, also SSH), the principal is supposed to be host/<hostname>@<REALM>. For instance, on rock.grep.be, the principal PAM will use is host/rock.grep.be@GREP.BE. We'll create it with kadmin (which can be done on any kerberized host):
    wouter@rock:~$ sudo kadmin
    Password for root/admin@GREP.BE:
    kadmin:  addprinc -randkey host/rock.grep.be@GREP.BE
    WARNING: no policy specified for host/rock.grep.be@GREP.BE; defaulting to no policy
    Principal "host/rock.grep.be@GREP.BE" created.
    kadmin:  ktadd host/rock.grep.be@GREP.BE
    Entry for principal host/rock.grep.be@GREP.BE with kvno 3, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab.
    Entry for principal host/rock.grep.be@GREP.BE with kvno 3, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/etc/krb5.keytab.
    kadmin:  q
    
    Generating the principal can really be done as any /admin user; but as the same isn't true for writing the keytab, I'm using sudo in the above example to become root.
  5. Configuring
  6. account	required	pam_krb5.so ignore_root
    auth	sufficient	pam_krb5.so ignore_root forwardable
    password optional	pam_krb5.so ignore_root
    session	optional	pam_krb5.so ignore_root
    
    After adding the above lines to the relevant files in /etc/pam.d, you should log off, then log on again, run 'klist', and marvel. If you add the lines to your passwd file as shown above, and don't remove the pam_unix.so lines, then local passwd-based authentication will still work. This can be nice if, for example, the Kerberos server is down, or you're working on a laptop that isn't always within reach of the Kerberos server. It doesn't do any harm; the worst that can happen is that at some point you happen to be on a network where there's a firewall which drops packets on the floor rather than sending you an ICMP port unreachable; in that case, you need to wait for the Kerberos login to time out, which takes half a minute or so (I haven't timed).
SSH
  1. Installation
  2. If you're running unstable, you don't need to do anything. The OpenSSH packages in unstable are all set to understand Kerberos. If, however, you're running stable, you'll want to replace your ssh package by the ssh-krb5 package, which is the regular SSH package plus some patches to enable GSSAPI (read: Kerberos) authentication.
  3. Service principal
  4. If you've done the PAM setup above, you're all set; SSH, being a service which gives you a shell, also uses the host/ service principal.
  5. Configuration
  6. Make sure both the server and the client have the GSSAPIAuthentication option enabled. After you've done so, restart the server.
IMAP
I'm using dovecot as my IMAP server, which has builtin support for GSSAPI authentication (at least in unstable; haven't checked stable in this regard).
  1. Installation
  2. As dovecot comes with everything compiled in, there is no need for installing extra packages.
  3. Service principal
  4. You'll need the imap/ principal (e.g., imap/rock.grep.be@GREP.BE). Note that the host name which is found by doing a reverse lookup on the ip of the server is what counts, not the name of the server as you're using it (so not, e.g., imap/imap.grep.be@GREP.BE)
  5. Configuration
  6. Edit your dovecot.conf, and find the line that starts with "mechanisms" in the auth default stanza. Make sure it contains at least the word gssapi. Restart dovecot. I haven't found a Free (as in speech) IMAP client that supports GSSAPI authentication. My client of choice, offlineimap, doesn't seem to support it; mutt doesn't either (unless I'm missing something); and while thunderbird in unstable is supposed to support it, I haven't been able to configure it correctly yet. Probably me. I have, however, been able to verify that it works by using a non-free software package. Obviously, this isn't good enough. In addition, I found that horde and imp don't like an IMAP server that has GSSAPI enabled if they don't, while enabling GSSAPI in horde requires a PHP extension that isn't packaged in Debian. So I've disabled it for the time being. Stay tuned.
LDAP
  1. Installation
  2. LDAP requires uses SASL for authentication, which doesn't have GSSAPI modules in the default package; for those, you need the libsasl2-modules-gssapi-heimdal package. Attentive readers will have noticed that this package contains the string heimdal in it, rather than krb5, and that this is not the same implementation that I've been using previously. Yes, true. But since there's no libsasl2-modules-gssapi-krb5, and since Kerberos is, after all, a well-defined protocol, this is not an issue—except in that you need a bit more diskspace for the additional libraries. Note that the modules have to be installed on both the client and the server.
  3. Service principal
  4. You need a service principal that starts with ldap/, obviously followed by the hostname and the realm.
  5. Configuration
  6. For those people whom you want to allow to authenticate themselves using Kerberos, make sure they have ' SASL <principal>' in their userPassword attribute set (e.g., I have userPassword: SASL wouter@GREP.BE). You can have that in addition to a regular encrypted password; the userPassword attribute is a multi-value attribute. Now if you use ldapsearch or anything similar, it will try to negotiate GSSAPI authentication as the SASL mechanism. If it doesn't do so, you can force it by adding -Y GSSAPI to the command line.
HTTP
  1. Installation
  2. You need the libapache-mod-auth-kerb or libapache2-mod-auth-kerb modules on the server. For the client, you need a browser which has SPNEGO support; Konqueror and Firefox are two examples of browsers that do.
  3. Service principal.
  4. The prefix here should be HTTP/. That's right, in upper case, contrary to previous examples where this wasn't the case. HTTP is also different in that apache usually isn't running as root. This is a good thing; however, it does mean that the kerberos authentication module is unable to read /etc/krb5.keytab. You'll have to write the service principal to a different keytab for apache; I've used the -k option to the ktadd command in kadmin to specify the keytab as /etc/apache2/keytab; I'll assume you do the same.
  5. Configuration
  6. Something like this, on the server:
    <Location /some/URL>
    	AuthType Kerberos
    	KrbMethodNegotiate on
    	Require valid-user
    	Krb5Keytab /etc/apache2/keytab
    </Location>
    
    This will enable SPNEGO authentication; and if SPNEGO authentication fails for some reason (for example, because the used browser doesn't support SPNEGO, or because the user isn't logged in to Kerberos), it will fall back to Basic Authentication. While the latter is usually a good idea, it's less of a good idea if you're not using SSL, since then your password would be sent over the wire in cleartext. Luckily, the basic authentication can be switched off, by using KrbMethodK5Passwd off. If you go to my webserver logs, you'll see that you'll get a 401 right away, while the HTTPS version of the same allows you to try to log in by using basic authentication. On the client side, if you're using Firefox, you need to go to about:config, and set the option network.negotiate-auth.trusted-uris to a string that will identify the servers that may do SPNEGO authentication in your realm. In my case, I've set it to grep.be. For konqueror, doing something similar is not required—it'll do SPNEGO authentication out of the box.
So, that's what I've got set up on my network currently. Next on the list: NFS4 kerberos auth (requires updated nfs utilities, which aren't in Debian yet because of issues with NFS2, IIRC), PostgreSQL (it does seem to support it), and finding out if or how I can create principals can't be used for one authentication scheme or the other. Phew, that was a long post. I'll stop now.

10 April 2006

Joey Hess: libacpi

Hmm, is there still no good general-purpose C library for pulling info out of /proc/acpi easily? I'd have thought we'd have one by now, but currently the closest thing I know of is my own acpi.c not-quite-a-library. Seems weird that there's a libapm, but no libacpi when the acpi info in /proc is so much harder to parse than /proc/apm (especially if you want to be somewhat efficient about doing so). My acpi.c kinda wants to turn into libacpi, but I kinda don't want it to. (Maybe something like HAL is how we're supposed to deal with this stuff these days?)

4 April 2006

Matthew Palmer: Rewriting in Rails -- A Practical Examination

[Note: this article was mostly written some weeks ago; I left it in my "to be edited" box and then promptly forgot about it. So any and all temporal references are way out of whack. Since originally writing this article, I have commenced an incremental rewrite of an in-house business management application from crazy-PHP (a common -- some may say overwhelmingly so -- dialect of the language noted for it's complete lack of any sort of good software development practices, such as the creation and use of functions (!)) into Rails. Articles on this effort will be appearing presently.] Almost immediately after I'd finished writing my previous discussion on why rewriting software is evil, I decided to make a little experiment. What I did was take a fairly well factored PHP application, and rewite (a portion of) it in Rails. My intent in this was not to produce a production-quality rewrite. I have no interest in proliferating yet more functionally equivalent clones on the world. Instead, I undertook the work simply to get a feel for (a) writing a whole, traditional, Rails app in a short space of time, (b) how quick Rails really was to produce an application, and (c) whether wholesale rewrites really are as boring and life-sucking as I imagined them to be. My methodology was this: with a small amount of knowledge of the target application (SysCP), the existing database schema and templates, and a weekend, rewrite as much of SysCP as I could in a close-as-possible reproduction of critical SysCP functionality. My summary results are: rewrites are as boring as I thought they would be, Rails is powerful but fairly complex and slightly buggy when you get down into it (especially if you're working from an existing -- possibly suboptimal -- database schema), but overall, Rails is Way Good Stuff. On the boredom aspect -- I had two days to write code. I had some domestic duties to attend to (walk the dog, visit the hardware store, help my wife with attaching a new bag rack to her bike, mow the lawn, etc) but on the whole, it was dedicated to programming. I've spent whole days (hell, 40 hour marathon stretches) cutting code before. I knew this wasn't a six-month deathmarch, but only a weekend experiment. Despite that, I feel that my motivation levels were lower than they normally are when coding. I can only imagine what it must feel like, two weeks into several months of hard core coding, knowing that you'll end up with what you had before, functionally speaking. If you are going to do the rewrite thing (and may the Flying Spaghetti Monster have mercy on your soul if you do), then pick the right project. SysCP is large masses of tangled PHP (is there any other kind?) but it has a fair amount of local and global structure once you get down to it -- for instance, it's quite well factored into business logic and display, and the code is broken down fairly logically by action handler, so you get entire source files that look like this:
  if ($action == 'edit')
   
    // 150 lines of twisty passage PHP
   
  else if ($action == 'new')
   
    // Another 150 lines
   
  // repeat for another few actions
and so on. The nice thing about this is that, if you have to look for how something works, you can almost certainly find it in one place in the source. Deciphering it might be another matter, but at least you've got something to start from. As I mentioned, the display in SysCP is pretty nicely split off from the logic -- a large number of templates, with common header/footer files, with some small parts in common templatettes. Some HTML is still generated within the actions, but due to the above action-based structure, it's usually fairly easy to identify all of the HTML that will be associated with a particular action and turn it into a coherent Rails template. I would dread doing a rewrite of the presentation layer of, say, IRM. It's idea of well-factored presentation is to separate print statements from logic by a blank line. To my great shame, I've had the reins of IRM for a year, and it's still this bad. I claim it's because I hate HTML coding with a vengeance, but I think I'm actually just scared to try and tame that particular monster. (Update: Martin Stevens has been doing some good work turning IRM's HTML into Savant templates. The only downside is that I can hear his manic laughter -- caused by IRM's insanity slowly infecting him -- all the way from England, and it's keeping me awake at night). I also had to re-learn that most hated but most important of lessons -- that, no matter how much reading you may have done, until you've cut chunks of code in a language or environment, you have no idea how it actually behaves in your brain. Specifically, I spent a fair amount of my alloted rewrite time learning a few little lessons in how Rails actually behaves, and all of it's cool little features. Of course, everyone is going to have this pain, and I've suffered it in every language that I've done any appreciable amount of programming in, but it's always a shock to the system that -- after all this time programming -- a new language still makes my brane tingle curiously for a while. Luckily, I'd read and digested all of both the Pickaxe (Programming Ruby) and AWDWR (Agile Web Development with Rails) so I knew what was possible, I just usually wasn't sure how exactly, so I spent a lot of time with my head in the books. Rails' little foibles also bit me in the bum more than once. For example, I spent over an hour (a no foolin' hour) trying to hunt down what I was doing stupid in my code to make Rails completely forget about the value of a couple of my fields. The answer turned out to be to restart Webrick (Rails' internal webserver for development testing), and the problem cleared right up. You could hear my screams of anguish from the moon (even through the vacuum of space -- it was a lot of anguish). Rails isn't the Final And Ultimate Solution To The Webapp Problem, but it's a good start. There is near-zero administrative bumf when you're writing a Rails app. Rails is fairly intelligent about working out what you want done from the world around it. Code generators (which produces sensible, minimalist templates -- not the ugly, unmaintainable behemoths produced by Visigoth Studio, which has given the whole code generation world a bad name) handle a lot of the low-level "oh bugger, I have to add a new file" feeling. It's very, very anal about project structure, but (in contrast to many other bondage-and-discipline frameworks I've looked at in the past) this structure seems almost comforting (maybe I'm just getting old and turning into a satisficer). What all this means is that you (a) don't write much code unless it moves you toward your goal, and (b) Common structure means that any Rails app will be fairly familiar to an incoming programmer. Unfortunately it also means that cunning wankers will, sooner or later, work out a whole pile of ugly tricks and contortions to get themselves out of Rails' comfortable-but-no-doubt-incompatible-with-many-people's-ways-of-thinking straitjacket, which I will (sooner or later) end up maintaining. Like many of Rails' (and Ruby's) features, though, I don't see them being any more abusable than most features of any programming language or environment -- and at least they're powerful and useful (unlike, say, register_globals, magic_quotes_gpc, magic single-character variables, mandatory indenting, or banning tabs as indent characters -- I thought I'd spread the slagging amongst lots of languages). Productivity-wise, although I was only just kicking off my Rails webapp knowledge, I felt I was doing fairly well. From experience, what I produced in my weekend was roughly on par with what I could produce in PHP in the same amount of time, had the situation been reversed. Considering that I have about 3 weeks of Ruby/Rails knowledge, and about 5 years of PHP experience, I think that's a big win. (Update: I've since produced a DNS management applet for work in about 6 hours billable time, and a virtual mail account application in about 12 hours, both using Rails. There isn't a hope in hell that I could have performed a similar feat in PHP, especially with the same amount of inherent flexibility that the Rails solutions contain). Overall, my impression of wholesale rewrites as being soul-sucking experiences stands. I suggest they be approached with the greatest of care, and only be permitted after an appropriate period of psychological counselling. There is plenty of code that needs rewriting (but why do I always have to find it?) but replacing it by doing an rm -rf on the source tree and starting again is not the answer.

30 March 2006

Wouter Verhelst: ColdFire arrived!

The coldfire development kit of which I made mention in a somewhat recent -devel-announce post has arrived about a week ago. Mine was the last one to arrive; the other four have already arrived. It took a while, because mine apparently got lost in shipping, so they had to ship me a second one. That, and the fact that I said I'd ask around in my neighbourhood whether it'd been delivered at the wrong address (but then eventually forgot to tell the Freescale folks that I had done so and that, no, it wasn't) meant it took a bit over two months to arrive here. But it finally has. Whee! The box contains a number of things I do not and will not likely ever need (the CodeWarrior Development Studio, for example, or power cables for other places of the world, like the US, the UK, and Japan), but, well—that's not important. It also contains some things that are interesting, such as a serial cable—even if I already have a few of those. The box contents also smells funny. Oh well. In the mean time, however, I've come across a bit of a problem: I can't seem to boot the thing. Well—I can, except it seems to be mangling the serial output it's sending for some reason. I can see that some output is being sent to the serial console, but it's not readable. And I can also see that it doesn't find it's root file system—I'm doing NFS root currently, and there's no network activity. Not sure what the problem is, though. Update: someone suggested that it is the baud rate. Yes, obviously it's something like that; however, I did try every baud rate between 9600 and 115200, but none of them worked. Besides, I have my command line say "console=ttyS0,19200n8", and it's still not working. I suspect a driver problem at this point...

29 March 2006

John Goerzen: I've chosen Serendipity

I wrote the other day that I was considering Serendipity, and had a few concerns about it.

Those concerns have now been pretty well resolved.

I also looked at WordPress. It looked like it had more features, but the whole lack of a central plugin store bothered me. I'd have to scour all over the net to find plugins, and half of them are just on a random person's blog. Very few mentioned support for WordPress 2.0; most were for 1.5.

Then I looked at anti-spam options in both. The major anti-spam plugin for Wordpress had two big strikes against it, in my mind: it's not Free software, and it doesn't work with PostgreSQL.

I am really ticked off by webapps that only support MySQL. There is no reason not to support PostgreSQL (especially when WordPress itself does).

So I am going with Serendipity.

Now, I have to write a Drupal to Serendipity conversion tool.

Wouter Verhelst: ColdFire arrived!

The coldfire development kit of which I made mention in a somewhat recent -devel-announce post has arrived about a week ago. Mine was the last one to arrive; the other four have already arrived. It took a while, because mine apparently got lost in shipping, so they had to ship me a second one. That, and the fact that I said I'd ask around in my neighbourhood whether it'd been delivered at the wrong address (but then eventually forgot to tell the Freescale folks that I had done so and that, no, it wasn't) meant it took a bit over two months to arrive here. But it finally has. Whee! The box contains a number of things I do not and will not likely ever need (the CodeWarrior Development Studio, for example, or power cables for other places of the world, like the US, the UK, and Japan), but, well—that's not important. It also contains some things that are interesting, such as a serial cable—even if I already have a few of those. The box contents also smells funny. Oh well. In the mean, however, I've come across a bit of a problem: I can't seem to boot the thing. Well—I can, except it seems to be mangling the serial output it's sending for some reason. I can see that some output is being sent to the serial console, but it's not readable. And I can also see that it doesn't find it's root file system—I'm doing NFS root currently, and there's no network activity. Not sure what the problem is, though. Update: someone suggested that it is the baud rate. Yes, obviously it's something like that; however, I did try every baud rate between 9600 and 115200, but none of them worked. Besides, I have my command line say "console=ttyS0,19200n8", and it's still not working. I suspect a driver problem at this point...

28 March 2006

John Goerzen: I've chosen Serendipity

I wrote the other day that I was considering Serendipity, and had a few concerns about it. Those concerns have now been pretty well resolved. I also looked at WordPress. It looked like it had more features, but the whole lack of a central plugin store bothered me. I'd have to scour all over the net to find plugins, and half of them are just on a random person's blog. Very few mentioned support for WordPress 2.0; most were for 1.5. Then I looked at anti-spam options in both. The major anti-spam plugin for Wordpress had two big strikes against it, in my mind: it's not Free software, and it doesn't work with PostgreSQL. I am really ticked off by webapps that only support MySQL. There is no reason not to support PostgreSQL (especially when WordPress itself does). So I am going with Serendipity. Now, I have to write a Drupal to Serendipity conversion tool.

19 March 2006

Clint Adams: This report is flawed, but it sure is fun

91D63469DFdnusinow1243
63DEB0EC31eloy
55A965818Fvela1243
4658510B5Amyon2143
399B7C328Dluk31-2
391880283Canibal2134
370FE53DD9opal4213
322B0920C0lool1342
29788A3F4Cjoeyh
270F932C9Cdoko
258768B1D2sjoerd
23F1BCDB73aurel3213-2
19E02FEF11jordens1243
18AB963370schizo1243
186E74A7D1jdassen(Ks)1243
1868FD549Ftbm3142
186783ED5Efpeters1--2
1791B0D3B7edd-213
16E07F1CF9rousseau321-
16248AEB73rene1243
158E635A5Erafl
14C0143D2Dbubulle4123
13D87C6781krooger(P)4213
13A436AD25jfs(P)
133D08B612msp
131E880A84fjp4213
130F7A8D01nobse
12F1968D1Bdecklin1234
12E7075A54mhatta
12D75F8533joss1342
12BF24424Csrivasta1342
12B8C1FA69sto
127F961564kobold
122A30D729pere4213
1216D970C6eric12--
115E0577F2mpitt
11307D56EDnoel3241
112BE16D01moray1342
10BC7D020Aformorer-1--
10A7D91602apollock4213
10A51A4FDDgcs
10917A225Ejordi
104B729625pvaneynd3123
10497A176Dloic
962F1A57Fpa3aba
954FD2A58glandium1342
94A5D72FErafael
913FEFC40fenio-1--
90AFC7476rra1243
890267086duck31-2
886A118E6ch321-
8801EA932joey1243
87F4E0E11waldi-123
8514B3E7Cflorian21--
841954920fs12--
82A385C57mckinstry21-3
825BFB848rleigh1243
7BC70A6FFpape1---
7B70E403Bari1243
78E2D213Ajochen(Ks)
785FEC17Fkilian
784FB46D6lwall1342
7800969EFsmimram-1--
779CC6586haas
75BFA90ECkohda
752B7487Esesse2341
729499F61sho1342
71E161AFBbarbier12--
6FC05DA69wildfire(P)
6EEB6B4C2avdyk-12-
6EDF008C5blade1243
6E25F2102mejo1342
6D1C41882adeodato(Ks)3142
6D0B433DFross12-3
6B0EBC777piman1233
69D309C3Brobert4213
6882A6C4Bkov
66BBA3C84zugschlus4213
65662C734mvo
6554FB4C6petere-1-2
637155778stratus
62D9ACC8Elars1243
62809E61Ajosem
62252FA1Afrank2143
61CF2D62Amicah
610FA4CD1cjwatson2143
5EE6DC66Ajaldhar2143
5EA59038Esgran4123
5E1EE3FB1md4312
5E0B8B2DEjaybonci
5C9A5B54Esesse(Ps,Gs) 2341
5C4CF8EC3twerner
5C2FEE5CDacid213-
5C09FD35Atille
5C03C56DFrfrancoise---1
5B7CDA2DCxam213-
5A20EBC50cavok4214
5808D0FD0don1342
5797EBFABenrico1243
55230514Asjackman
549A5F855otavio-123
53DC29B41pdm
529982E5Avorlon1243
52763483Bmkoch213-
521DB31C5smr2143
51BF8DE0Fstigge312-
512CADFA5csmall3214
50A0AC927lamont
4F2CF01A8bdale
4F095E5E4mnencia
4E9F2C747frankie
4E9ABFCD2devin2143
4E81E55C1dancer2143
4E38E7ACFhmh(Gs)1243
4E298966Djrv(P)
4DF5CE2B4huggie12-3
4DD982A75speedblue
4C671257Ddamog-1-2
4C4A3823Ekmr4213
4C0B10A5Bdexter
4C02440B8js1342
4BE9F70EAtb1342
4B7D2F063varenet-213
4A3F9E30Eschultmc1243
4A3D7B9BClawrencc2143
4A1EE761Cmadcoder21--
49DE1EEB1he3142
49D928C9Bguillem1---
49B726B71racke
490788E11jsogo2143
4864826C3gotom4321
47244970Bkroeckx2143
45B48FFAEmarga2143
454E672DEisaac1243
44B3A135Cerich1243
44597A593agmartin4213
43FCC2A90amaya1243
43F3E6426agx-1-2
43EF23CD6sanvila1342
432C9C8BDwerner(K)
4204DDF1Baquette
400D8CD16tolimar12--
3FEC23FB2bap34-1
3F972BE03tmancill4213
3F801A743nduboc1---
3EBEDB32Bchrsmrtn4123
3EA291785taggart2314
3E4D47EC1tv(P)
3E19F188Etroyh1244
3DF6807BEsrk4213
3D2A913A1psg(P)
3D097A261chrisb
3C6CEA0C9adconrad1243
3C20DF273ondrej
3B5444815ballombe1342
3B1DF9A57cate2143
3AFA44BDDweasel(Ps,Gs) 1342
3AA6541EEbrlink1442
3A824B93Fasac3144
3A71C1E00turbo
3A2D7D292seb128
39ED101BFmbanck3132
3969457F0joostvb2143
389BF7E2Bkobras1--2
386946D69mooch12-3
374886B63nathans
36F222F1Fedelhard
36D67F790foka
360B6B958geiger
3607559E6mako
35C33C1B8dirson
35921B5D8ajmitch
34C1A5BE5sjq
3431B38BApxt312-
33E7B4B73lmamane2143
327572C47ucko1342
320021490schepler1342
31DEB8EAEgoedson
31BF2305Akrala(Gs)3142
319A42D19dannf21-4
3174FEE35wookey3124
3124B26F3mfurr21-3
30A327652tschmidt312-
3090DD8D5ingo3123
30813569Fjeroen1141
30644FAB7bas1332
30123F2F2gareuselesinge1243
300530C24bam1234
2FD6645ABrmurray-1-2
2F95C2F6Dchrism(P)
2F9138496graham(Gs)3142
2F5D65169jblache1332
2F28CD102absurd
2F2597E04samu
2F0B27113patrick
2EFA6B9D5hamish(P)3142
2EE0A35C7risko4213
2E91CD250daigo
2D688E0A7qjb-21-
2D4BE1450prudhomm
2D2A6B810joussen
2CFD42F26dilinger
2CEE44978dburrows1243
2CD4C0D9Dskx4213
2BFB880A3zeevon
2BD8B050Droland3214
2B74952A9alee
2B4D6DE13paul
2B345BDD3neilm1243
2B28C5995bod4213
2B0FA4F49schoepf
2B0DDAF42awoodland
2A8061F32osamu4213
2A21AD4F9tviehmann1342
299E81DA0kaplan
2964199E2fabbe3142
28DBFEC2Fpelle
28B8D7663ametzler1342
28B143975martignlo
288C7C1F793sam2134
283E5110Fovek
2817A996Atfheen
2807CAC25abi4123
2798DD95Cpiefel
278D621B4uwe-1--
26FF0ABF2rcw2143
26E8169D2hertzog3124
26C0084FCchrisvdb
26B79D401filippo-1--
267756F5Dfrn2341
25E2EB5B4nveber123-
25C6153ADbroonie1243
25B713DF0djpig1243
250ECFB98ccontavalli(Gs)
250064181paulvt
24F71955Adajobe21-3
24E2ECA5Ajmm4213
2496A1827srittau
23E8DCCC0maxx1342
23D97C149mstone(P)2143
22DB65596dz321-
229F19BD1meskes
21F41B907marillat1---
21EB2DE66boll
21557BC10kraai1342
2144843F5lolando1243
210656584voc
20D7CA701steinm
205410E97horms
1FC992520tpo-14-
1FB0DFE9Bgildor
1FAEEB4A9neil1342
1F7E8BC63cedric21--
1F2C423BCzack1332
1F0199162kreckel4214
1ECA94FA8ishikawa2143
1EAAC62DFcyb---1
1EA2D2C41malattia-312
1E77AC835bcwhite(P)
1E66C9BB0tach
1E145F334mquinson2143
1E0BA04C1treinen321-
1DFE80FB2tali
1DE054F69azekulic(P)
1DC814B09jfs
1CB467E27kalfa
1C9132DDByoush-21-
1C87FFC2Fstevenk-1--
1C2CE8099knok321-
1BED37FD2henning(Ks)1342
1BA0A7EB5treacy(P)
1B7D86E0Fcmb4213
1B62849B3smarenka2143
1B3C281F4alain2143
1B25A5CF1omote
1ABA0E8B2sasa
1AB474598baruch2143
1AB2A91F5troup1--2
1A827CEDEafayolle(Gs)
1A6C805B9zorglub2134
1A674A359maehara
1A57D8BF7drew2143
1A269D927sharky
1A1696D2Blfousse1232
19BF42B07zinoviev--12
19057B5D3vanicat2143
18E950E00mechanix
18BB527AFgwolf1132
18A1D9A1Fjgoerzen
18807529Bultrotter2134
1872EB4E5rcardenes
185EE3E0Eangdraug12-3
1835EB2FFbossekr
180C83E8Eigloo1243
17B8357E5andreas212-
17B80220Dsjr(Gs)1342
17796A60Bsfllaw1342
175CB1AD2toni1---
1746C51F4klindsay
172D03CB1kmuto4231
171473F66ttroxell13-4
16E76D81Dseanius1243
16C63746Dhector
16C5F196Bmalex4213
16A9F3C38rkrishnan
168021CE4ron---1
166F24521pyro-123
1631B4819anfra
162EEAD8Bfalk1342
161326D40jamessan13-4
1609CD2C0berin--1-
15D8CDA7Bguus1243
15D8C12EArganesan
15D64F870zobel
159EF5DBCbs
157F045DCcamm
1564EE4B6hazelsct
15623FC45moronito4213
1551BE447torsten
154AD21B5warmenhoven
153BBA490sjg
1532005DAseamus
150973B91pjb2143
14F83C751kmccarty12-3
14DB97694khkim
14CD6E3D2wjl4213
14A8854E6weinholt1243
14950EAA6ajkessel
14298C761robertc(Ks)
142955682kamop
13FD29468bengen-213
13FD25C84roktas3142
13B047084madhack
139CCF0C7tagoh3142
139A8CCE2eugen31-2
138015E7Ethb1234
136B861C1bab2143
133FC40A4mennucc13214
12C0FCD1Awdg4312
12B05B73Arjs
1258D8781grisu31-2
1206C5AFDchewie-1-1
1200D1596joy2143
11C74E0B7alfs
119D03486francois4123
118EA3457rvr
1176015EDevo
116BD77C6alfie
112AA1DB8jh
1128287E8daf
109FC015Cgodisch
106468DEBfog--12
105792F34rla-21-
1028AF63Cforcer3142
1004DA6B4bg66
0.zufus-1--
0.zoso-123
0.ykomatsu-123
0.xtifr1243
0.xavier-312
0.wouter2143
0.will-132
0.warp1342
0.voss1342
0.vlm2314
0.vleeuwen4312
0.vince2134
0.ukai4123
0.tytso-12-
0.tjrc14213
0.tats-1-2
0.tao1--2
0.stone2134
0.stevegr1243
0.smig-1-2
0.siggi1-44
0.shaul4213
0.sharpone1243
0.sfrost1342
0.seb-21-
0.salve4213
0.ruoso1243
0.rover--12
0.rmayr-213
0.riku4123
0.rdonald12-3
0.radu-1--
0.pzn112-
0.pronovic1243
0.profeta321-
0.portnoy12-3
0.porridge1342
0.pmhahn4123
0.pmachard1--2
0.pkern3124
0.pik1--2
0.phil4213
0.pfrauenf4213
0.pfaffben2143
0.p21243
0.ossk1243
0.oohara1234
0.ohura-213
0.nwp1342
0.noshiro4312
0.noodles2134
0.nomeata2143
0.noahm3124
0.nils3132
0.nico-213
0.ms3124
0.mpalmer2143
0.moth3241
0.mlang2134
0.mjr1342
0.mjg591342
0.merker2--1
0.mbuck2143
0.mbrubeck1243
0.madduck4123
0.mace-1-2
0.luther1243
0.luigi4213
0.lss-112
0.lightsey1--2
0.ley-1-2
0.ldrolez--1-
0.lange4124
0.kirk1342
0.killer1243
0.kelbert-214
0.juanma2134
0.jtarrio1342
0.jonas4312
0.joerg1342
0.jmintha-21-
0.jimmy1243
0.jerome21--
0.jaqque1342
0.jaq4123
0.jamuraa4123
0.iwj1243
0.ivan2341
0.hsteoh3142
0.hilliard4123
0.helen1243
0.hecker3142
0.hartmans1342
0.guterm312-
0.gniibe4213
0.glaweh4213
0.gemorin4213
0.gaudenz3142
0.fw2134
0.fmw12-3
0.evan1--2
0.ender4213
0.elonen4123
0.eevans13-4
0.ean-1--
0.dwhedon4213
0.duncf2133
0.ds1342
0.dparsons1342
0.dlehn1243
0.dfrey-123
0.deek1--2
0.davidw4132
0.davidc1342
0.dave4113
0.daenzer1243
0.cupis1---
0.cts-213
0.cph4312
0.cmc2143
0.clebars2143
0.chaton-21-
0.cgb-12-
0.calvin-1-2
0.branden1342
0.brad4213
0.bnelson1342
0.blarson1342
0.benj3132
0.bayle-213
0.baran1342
0.az2134
0.awm3124
0.atterer4132
0.andressh1---
0.amu1--2
0.akumria-312
0.ajt1144
0.ajk1342
0.agi2143
0.adric2143
0.adejong1243
0.adamm12--
0.aba1143

15 March 2006

Martin F. Krafft: Discovering MPD

I have a server with libapache2-mod-musicindex serving several hundreds of gigabytes. I also have a headless router at home with a soundcard. My desire was to figure out how to make the router stream music from that server before I went to sleep. Just short of coming up with a quick'n'ugly hack, Decklin Foster saved my day by pointing me to mpd. It runs as a daemon and accepts network commands. It wasn't until I found out that you can pipe the playlists served by libapache2-mod-musicindex to mpc add that I completely fell in love. Now I hacked together a script, playstream, which I can integrate with mailcap:
$ cat <<_eof >> ~/.mailcap
audio/mpegurl;     ~/bin/playstream -q '%s'; nametemplate=%s.m3u
audio/x-mpegurl;   ~/bin/playstream -q '%s'; nametemplate=%s.m3u
audio/x-scpls;     ~/bin/playstream -q '%s'; nametemplate=%s.pls
The -q option queues the playlist up next. Other options I've added are -a for append (the default), and -r for replace. I know I should have this in version control, but that's all under construction right now. I have asked the mpc maintainer to include it. Update: Firefox is once again really annoying. I appreciate the fact that it tries to honour the mailcap standard. However, if I say that the handler if playstream -q %s, I really mean that, including the -q; Firefox apparently just reads the first word and appends the downloaded file. Argh.

10 March 2006

Ross Burton: Detox

Nice to see that Cecil considers detox diets to be bunk. People, we have two kidneys and a liver for a reason. NP: Return Of The Boom Bap, KRS-One

14 February 2006

Martin F. Krafft: Gripes with Firefox

Mozilla Firefox has done some good to the Web as a whole. I still wonder why, for $DEITY's sake, it does everything different from a normal application. To be precise, Firefox sucks just a little too much for my taste. Today's gripe: I have two machines here, my laptop and my workstation. The workstation is headless due to a broken monitor, but it's connected to the stereo. My music collection is served by libapache2-mod-musicindex over HTTP, and I have not yet figured out how to configure mocp to actually play remote playlists (any ideas?). Thus, these days I X-forward Firefox to my laptop to surf the list and select the songs. But try this: start Firefox locally, then start an instance through an X-enabled SSH session: it will open a new window of the running local session, which is really not what I want nor expect. It seems like the requirement to surf from somewhere else is an out of bounds concept for the Firefox developers. Thanks for trying (and failing) to be smart, Mr. Firefox. Why don't you rather concentrate on processing clicks and keystrokes when you should, rather than ignoring them from time to time? Update: Matt Brubeck tells me that MOZ_NO_REMOTE=1 in the environment does what I want. Future versions will have a -no-remote command-line argument. I think it should become default. Please see #352809 if you have an opinion on this. PS: Firefox and OpenOffice.org seem to be two flagship products of the F/OSS world. At the same time, they are probably the two best examples of programmes orthogonal to the Unix philosophy. Does that mean that the Unix philosophy is the wrong way? Holy Shit!

24 January 2006

John Goerzen: Visiting cliffmorrow.blogspot.com in person!

This weekend, Terah and I drove up to Nebraska to visit Cliff and Marilyn. We have never met them before, or even talked to them on the phone. We just know them from blogs -- Marty (Cliff's nephew) introduced us to them. We really had a blast -- quite a fun weekend, and we met lots of interesting Morrows. I supose there's always something unexpected that happens when you visit people you've never met. With this visit, it was singing in a Baptist choir. Terah said, "Well, we've never even been to a Baptist service in English, but sure, sounds like fun!" I think it took Cliff about 2 seconds to decide we should both sing in the choir once he realized we're in our church choir back in Kansas. I suppose that's risk you run when you go and visit a choir director. Off course it's all fun with Cliff. We really enjoyed it, and Cliff & Marilyn's daughter did a fantastic job on the piano. When we first arrived at Cliff & Marilyn's place, the first thing Terah noticed was that Marilyn had set out a giant Hershey's kiss and a Dr. Pepper for her! This was great. Terah's still talking about it, and is very impressed with a solid piece of chocolate that large. At dinner on Saturday, I think Cliff and Terah were having a bit of a competition to see who could have the driest sense of humor and the most sarcasm. Maybe it was just a little Kansas bias, but I think Terah gave him quite the run for his money, and even edged him out by a bit. Terah was also something of a celebrity around the Morrows, in one way anyway. It seems that, one way or another, almost everyone had heard about her carefully-planned underwear rotation scheme. And had gotten quite a good chuckle about it -- as well they should. Cliff asked us to bring some photos of our home and family with us. I think he might be regretting that now. I downloaded as many as I could fit onto a laptop -- about 3000 -- to give us plenty to look at. Of course, we didn't look at 3000 photos, but you just never know what might come up. Cliff and Marilyn did a wonderful job of not falling asleep anyway. We also got to see their photos, and they have some spectacular ones. Marilyn enjoys stereo photography and has some incredible stereo photos. I especially enjoyed the pictures of Germany. Marty's parents were also around this weekend and were full of interesting stories. His mom makes a wonderful cheese spread. I think I need to have a putty knife to spread it on nice and thick. It's the sort of cheese spread that's good enough to layer on about twice as thick as the cracker. The cracker is just sort of a cheese delivery device. I kept hearing that Marty had told the Morrows all about me. They all claimed that Marty said only good things about me. But we all know how the Morrows like to tell stories. So I made sure to get a few about Marty before we left, just in case. Don't worry, they're all good, Marty. After church Sunday, there was a carry-in meal. We knew about this in advance, and Terah brought some of her famous chocolate-cherry cookies along from Kansas. Cliff later admitted to stealing "no more than one" during the sermon. But he couldn't quite say it with a straight face. Terah's cookies were a hit, though -- it seemed that lots of people were trying to figure out who brought them. A few enterprising people pulled out the lid from the pan, but of course seeing Terah's name there didn't really help all that much. I think she promised recipes to about half a dozen people. We went geocaching Sunday afternoon. Cliff, Marilyn, and their grandson came along. We found the Summit Lake #1 cache with their grandson -- it was his first time geocaching, and I think he enjoyed it. Well, that was a long post. I'll probably remember more to write about later in the week, and stay tuned for photos!

16 January 2006

Alexander Schmehl: OpenSolaris at DebConf

Lars Wirzenius answered one of my last blogs about OpenSolaris being at the upcoming DebConf. I would like to give a short (and long overdue) answer, might be interesting for others, too. Yes, you are right. Silence does indeed not necessarily signify consent; let me rephrase that: As long as you don't answer again, we did our job and you have the token ;) However I want to clarify the accepted session a bit: No, we did not accept an OpenSolaris talk. I agree that such a talk would with high probapility be just an advertising session (perhaps even leaving out the important points where the two communities disagree). What we accepted was an OpenSolaris Round Table. A panel discussion in our political track. I don't see a high potential of Solaris advertisement there, but a big chance to get together, talk and solve problems. I would like to see it as a chance for a new start: When the two communities first got in contact (I'm too lazy to search the list archives right now, but I'm sure you remember the discussion, both sides made mistakes (them, when they ignored our requests/questions/principles; us, when we weren't as cooperative and polite as we could have been). I would like to ask everyone attending this session to forget the last flamewar. If it doesn't work out and the problems can't be solved, we can honestly say that we really tried it. If it works out, we might get a nice, new, interesting port - as soon as they worked out the license issue.

Matthew Palmer: Work it out yourself, dammit!

My pet peeve of the day -- web apps which require you to specify, in advance, what the URL of the source of the webapp is. The app *can* work this out for itself, you know. The fact that you're too brain-fuckingly stupid to do so does not mean that you should proceed to screw over anyone who needs to use your program in a "non-standard" environment, it means that you should step away from the goddamn keyboard and stop infecting people with your stupid.

10 January 2006

Christian Perrier: Proud dad

This: ...is my newly born son Jean-Baptiste.... ...back in 1988. So, yes my son turns out 18 today, getting the right to vote, to say me "merde" as he wants and officially becoming a grown up adult...which he already his by several aspects. So, yes, I'm a proud dad. This, far more than my contribution to free software, makes me feel that I will at least leave one good thing on earth (actually, I will leave et least *three* good things on earth).

7 January 2006

Julien Danjou: apt-build bug squashing

Tonight I just tried to kill some bugs on apt-build. I find quickly that there was mainly two bugs in all this mess of bug reports. The first one (#317734) is still open because it's a bug of libapt-pkg-perl (#317058).
The other one (#328170) is now squished, it was just an error in the PATH filtering function, in the gcc/make wrapper.

26 December 2005

Matthew Palmer: Language Is Not Just Syntax

My current long-term learning project is Ruby on Rails, the ultra-hyped web application framework from David Heinemeier Hansson and friends. I like it (primarily because I can see a lot of my own abortive ideas from a web app framework for PHP I used to develop), but there is one big thing about it (or, rather, it's surrounding hype) that irritates me. Throughout the Rails literature (webpages, magazine and webzine articles, and the book Agile Web Development With Rails), there is a consistent message -- that, because everything is written in Ruby, you don't have to learn any new programming languages to write Rails applications. This is a wonderful theory -- no large XML config files to define my database schemas, and no castrated and irritating HTML template system to learn. From defining table relationships to printing a select tag, It's All Ruby, All The Time. Sweet, right? Sort of. The problem is that you won't find the language primitive to declare a one-to-many relationship in the Pickaxe (the definitive Ruby language reference book -- like "the Camel" for Perl, "the Bat" for Sendmail, or "the Turkey" for PHP). Defining a separate namespace in Rails for all of these operations is, of course, necessary, since the language didn't already define these operations. But, once you've defined a whole new set of methods to do all of these operations, you can look back on your hard work and see -- what? A new language -- one specifically designed to describe webapps. Don't get me wrong -- domain-specific languages are teh r0x0r. If everyone had to do all of their HTML manipulation by hand, programmers would be even more insane than they are. But, when you're writing your application in Rails, you're not speaking "pure Ruby". Your syntax and basic structure is Ruby, but your methods and attributes are new, different, and All Rails. It may not be a separate programming language in the usual sense, but by the time you've added a whole new pile of classes, methods, and attributes (not to mention whole new ways of structuring your application), how much importance is the use of the @ symbol to signify an instance variable, compared to the whole new set of methods to learn? Natural languages, of course, have similar issues. Most western european languages share a lot of common characteristics -- similar character sets, punctuation sets, and they read left-to-right. So I can look at a page of German or French, and identify most-to-all of the salient features (hey look, an 'a'!), and even grok the meaning of a few of the words (familiar to me, probably, because English misappropriated them from wherever they came from) but I still have no hope whatsoever of understanding the meaning of the passage as a whole. The language syntax looks familiar, but those nouns and verbs don't have any meaning to me. You can't plonk a Rails app in front of even a seasoned Ruby developer and expect them to immediately jump in and start hacking on it like they've been writing it all their life. The language syntax looks familiar, but those methods and attributes don't have any meaning to them. This is nothing peculiar to Rails, of course. If you want someone to hack on your Hibernate or Spring app, you'll get better results if you advertise for a Hibernate or Spring programmer than a Java programmer. But Rails advocates regularly say "it's all just Ruby, so there's nothing new to learn!", and that's Just Wrong, in my opinion. As an aside, if you're looking around for something a bit different, do seriously consider Rails (or just Ruby, if you don't need a webapp framework). It's different from the "usual" suspects (C, C++, and "the Ps" -- PHP, Perl, and Python), and pleasantly so. If you judge your programming languages by the old adage "a programming language that doesn't change the way you think about programming isn't worth learning", Ruby will score well. I know it's helped me think about my programming differently already, especially my Python programming (and thanks to Anthony Baxter for answering all of my esoteric python questions at OSDC a couple of weeks ago).

Next.

Previous.