Search Results: "nate"

20 March 2006

Matthew Palmer: The Curse of the Podcast

Over the past week or so, I've decided to get around to listening to some of the "amateur" (in the same way that Open Source software is "amateur") podcasts that I've collected in the past couple of months (primarily so I can either archive them, or delete them and free up a bit of HDD space). As a great fan of radio, I've been pretty disappointed at the quality of the podcasts I've listened to. While I hadn't expected the BBC world service, there are a number of quite common mistakes I've noticed across several of the podcasts I've listened to. In the spirit of kaizen, I've noted down the really bad things that I've noticed, in the hope that someone who does a podcast, or is considering doing a podcast, might keep these simple mistakes in the back of their mind and avoid them. No podcast I've listened to so far has exhibited all of these symptoms (there's no way I would have gotten to the end of that hypothetical nightmare audio file) but most have exhibited at least one of these flaws. For a better general idea of how a good podcast might sound, listen to professional radio for a bit -- a lot of good shows are podcast themselves these days -- and get an idea of what a good show looks like. I'm also prepared to go further than just bitching about podcasts. If you do a podcast, and would like my (unprofessional but oh-so-opinionated) assessment of your podcast, please e-mail me at mpalmer@hezmatt.org with a link to your podcast, and I'll try to give it a listen and honest critique.

19 March 2006

Uwe Hermann: Help: How do I boot Debian on a Sun Sparc Ultra 10?

Dear Lazyweb, I was trying to boot Debian on a Sun Sparc Ultra 10 box yesterday, without success. I got myself this Sparc box from eBay many months ago, but until yesterday it was merely standing around here and taking up valuable space (just like the other dozen or so computers standing around in my room). So I thought I should really make some use of it, finally... I booted it up and noticed that it came with SunOS 5.8 pre-installed. It boots quite fine into the graphical login prompt, but I don't have the root password (or the password for any other account). So my first task was to reset the root password. But I failed so far. Out of curiosity I connected the machine to my laptop and ran nmap on it. It has several ports open (e.g. ntp, ssh, X11, nfs, ...), so I could probably try to find a remote root exploit (or run an ssh brute-force attack) and crack it open that way ;) While I might try that later just for the fun of it, I wanted to simply boot a Debian first and change the root password manually. That sounded simpler at first... Anyways, here's what I tried so far: Boot into single-user mode As I had no experience whatsoever with Sparcs, it took me some time to read up all the stuff I needed... After a bit of googling, I found out that I need to press STOP+A to get into the boot prompt (the box has OpenBoot 3.19). There, I can type boot -s to boot into single user mode. Unfortunately, you still need the root password to boot into single-user mode. Argh! Boot from CD-ROM Next, I found out how to boot from CD-ROM. Typing boot cdrom in the boot prompt should do the trick. So I downloaded and burned a the current Debian "businesscard" image for Sparc:

wget http://cdimage.debian.org/debian-cd/3.1_r1/sparc/iso-cd/debian-31r1a-sparc-businesscard.iso
cdrecord -eject -v speed=2 dev=/dev/hdc -data -pad debian-31r1a-sparc-businesscard.iso
Booting seems to work partially. SILO seems to start fine, and I get to the "boot:" prompt. When I press Enter I get to the point where it says "Loading Linux..." but then the screen turns black and nothing happens anymore (hangup). The same happens when I type "linux" or "rescue" on the "boot:" prompt. The monitor works fine, SunOS 5.8 can display graphics etc., so it's probably not a hardware problem. Netboot After that, I tried to perform a network boot. This was fun and I learned a lot about RARP and TFTP, as I have never played with this stuff before. While the netboot part itself worked, it didn't solve my real problem, unfortunately... First, I installed rarpd and tftpd on my laptop:

apt-get install rarpd tftpd
In /etc/ethers I added a line which tells rarpd which MAC address should be assigned to which IP address. I looked up the MAC address of the Sparc box (it's displayed when you boot) and then added "xx:xx:xx:xx:xx:xx 192.168.0.20" to /etc/ethers. I configured my laptop to have the IP address 192.168.0.19: ifconfig eth0 192.168.0.19 broadcast 192.168.0.255 netmask 255.255.255.0. Of course, I plugged an ethernet cable in the Sparc box and in my laptop so they can talk to each other. Then, I created /etc/xinetd.d/foobar which contained:

service tftp

disable = no
socket_type = dgram
protocol = udp
user = nobody
wait = no
server = /usr/sbin/in.tftpd
# server_args = /tftp

This should tell tftpd to serve the Debian netinst boot image from /tftp, but that didn't work for me. So I commented out the "server_args = /tftp" and let tftpd fall back to the default location /tftpboot. You need to reload xinetd after any change: /etc/init.d/xinetd reload. Also, tftpd is compiled with TCP wrapper support, so you have to temporarily allow the respective connections, e.g. by adding "ALL: 192.168.0.20" to /etc/hosts.allow. Don't forget to remove that line again later on! Now I downloaded the Debian netinst boot image for Sparc (hopefully the correct one):

wget http://http.us.debian.org/debian/dists/stable/main/installer-sparc/current/images/sparc64/netboot/boot.img
mkdir /tftpboot
mv boot.img /tftpboot/XXXXXXX
You need to place that image into /tftpboot using the name under which the Sparc box requests it. I found that name by net-booting the Sparc machine and watching the network traffic with Ethereal on my laptop... The final steps: boot the Sparc box, type STOP+A, type boot net. The Sparc machine gets the boot image from my laptop just fine (it seems), and I get to the "Loading Linux..." part again. But then I have the same problem as with the CD-ROM boot: the screen turns black, nothing happens anymore... Help?

Erich Schubert: DPL elections

This year was the first time I think I watched the debate live, and didn't just read the logs. We had some fun in the discussion channel, and one question of mine was actually posted to the candidates. Unfortunately, I didn't manage to get my point across (the "size barrier" question, it wasn't about Debian not growing any more, but about wether we could need some structural changes - e.g. bugmasters, first-level supporters with some privileges, but not the full DD requirements - to use our resources (that is mostly the time of our developers, i.e. us) more effectively. E.g. by preventing flamewars somehow. I hadn't really made up my mind yet. But some trends are there:

18 March 2006

Daniel Burrows: Windows stupidities

As I've had to use Windows on a daily basis, I've found that I am no longer able to maintain my air of detached tolerance for the foibles of the system. In fact, I'm starting to get really infuriated with the utter boneheadedness of so many facets of it. Not so much things that are broken, as things that are done badly, and done so in the face of widespread examples of how to do it right.

Here are two simple examples that are emblematic of what Windows users have to suffer through.

(a) Mandatory file locks.

On Windows, every access to a file, by default, acquires a mandatory lock on it. Want to recompile the program you're working on? Sorry, you have to track down and kill all its running instances. Want to read that file on the network server? Sorry, you'll have to run around the office and ask all the people using it to close it.

Last week I got an email asking me to unlock a directory on our local fileserver so it could be renamed. It turned out that I was running an acroread process to view a PDF file...and that locked the directory from being renamed. Because, of course, the universe would implode if someone were to rename a file I had already loaded into memory. This is, however, better than how shared libraries are treated; trying to register a new version of a shared library with the system (the Windows version of ldconfig) will silently fail if programs have the old version mapped into memory. WTF? No, really, WTF?

Windows users get around this by having tools to find out which processes have a file open so they can terminate them with extreme prejudice. This is considered normal and acceptable behavior for a computer in the Windows universe. After all, in the real world two people can't use the same document at once, so why should they be able to do so on a computer?

(b) C# events.

They've been invented many times. Signals, events, hooks, whatever you want to call them, they're collections of function objects that are invoked when some particular condition occurs. It's a great way to make it easy to connect together objects that don't know about each other, they're simple enough that your average CS sophomore could implement them in a half hour, and the concept is so obvious (besides having dozens of examples of working and deployed implementations) that there's no way to screw it up, right?

Wrong.

Now, C# is generally a somewhat clunky language, but this is nothing to do with that (I am not, for instance, surprised that it's cumbersome to bind extra parameters to an event in a language that has little support for higher-order programming anyway). No, this is one of those utter idiocies that just make you scratch your head and go what the *@&# were they on when they did that? You see, when you call an event with no attached listeners, C# throws an exception. Just, you know, as a friendly way of letting you know that you didn't connect to that event.

But wait! It gets better! In order to test whether the event has any connected delegates (the Microsoft term for a function object), you ... compare it to the null pointer. Yes, that's right. Every time you call an event, you have to do this:

if(Event != null)
    Event();


...because, of course, an empty collection of events is clearly the same thing as a nonexistant object.

I really wish I could be a fly on the wall at the meeting where this was decided. My imagination supplies a scene along these lines:


Scene: A smoke-free office somewhere deep in the sterile labyrinth of the Microsoft campus

Programmer 1: "...and we call this bold new innovation 'events'! It's a way for you to perform method calls without knowing which method you're calling. We've found that it's amazingly useful when doing UI programming. I'm sure that introducing this new idea to the world will be yet another chapter in the Microsoft story of advancing technology!"

Programmer 2: "Have you checked the corner cases? What happens if there is no method available to call?"

Programmer 1: "Oh, of course! In that case, the list of methods is null, so we throw a NullPointerException. We thought about adding an IsEmpty property, but who would want to look up properties on the null pointer? Besides, hardly anyone will ever want to create an event that might not get connected to."

Programmer 2: "Uhhh, sure, that makes sense to me."


...!!!?!?!?!

Martin F. Krafft: Explaining Debian at parties

Josh isn't quite sure how to answer questions about Debian at parties without being stamped nerd. I have often met this challenge. And I think I got good at it. Rule number one: stay away from opinions, comparisons, and technical details (at least in the beginning). Give them the humanly-comprehensible facts and do not mention Windows or OS X unless asked. For me, Debian is "an operating system ("computer system") that is completely free, which lets me do a lot of cool stuff with the computer." I don't mention that I am a developer so as to not scare people off. After this 20 second introduction, you can usually tell whether your peers are interested. If they are, give them a little more: "It is developed by thousands of volunteers who all help out without getting paid, because they all use the system and want to make it better." By now, the first questions should come, and usually they mention other operating systems. A great line is "well, I've found XYZ to be inadequate for my needs, but to each their own". Don't go confrontational. And don't grow over-enthusiastic, that's what nerds do. At other times, the first question will be about how anything can be free (as in beer) these days. Be careful not to answer with too much idealism. Also, I've found few to care about "free as in speech" at this point of the conversation. If your audience is still with you at this point, now is the time to dive into depth. Now you can talk about idealism, technical superiority, security, whatever, but always keep in mind that you don't want to compare (laymen don't care about comparisons too much) and that you want to draw from metaphors as much as possible to make them understand. I usually take the opportunity to touch upon privacy issues and trojans, faked email senders and that kind of stuff. My audience usually grows quite pensive after some time, and I have yet to meet some layman who didn't ask "just why would anyone care about my data". Explain "pwned" computers and distributed denial of service attacks, or the scenario where someone impersonates you can does bad stuff. Finally, I've often found it to be fun to play somewhere along the lines of "do you really want to know" and exciting their interest by being somewhat discrete about it all. I've also had success with the direct approach: "ah, but I'm a geek, you couldn't care less about my stuff." People usually ask for more infos. After all, you are at a party and not in front of your machine; anyone with something else but mush between the ears will put two and two together and suspect that you aren't actually a geek, at least not at the moment. Those are the people worth talking to. Anyone else (including drunkbolds) is a waste of time, IMHO. It helps to have some Knoppix or Ubuntu CDs in your pocket and just hand them out. People really get excited about free stuff. And a live CD can work wonders. Do not try to convince people to try it out or you will become a support hotline. Instead, tell them about LUGs and mailing lists (and how cool it can be) and put the challenge on them: "if you try it, those are your support channels. Are you up for it?"

Daniel Burrows: So close, yet so far away...

So, thanks to Marc's helpful advice yesterday, I took another look at my power supply, and lo and behold, there was a second four-pin power cord that I hadn't seen!

Allow me to explain. In my previous post, I mentioned that I had been doing something "wrong" with the power cable. You see, the case we picked out (an Antec Sonata) has a 24-pin power cable of which 4 pins can detach for older systems. At first, I misread the manual and thought this was for newer systems, so I detached it and plugged it into the handy 4-pin plug next to the CPU. Doh. Having corrected that (without the extra 4 pins in the main plug, not even the fans turned on), I was under the further mistaken impression that the 4-pin plug on the motherboard was the backwards-compatibility plug. I did actually check for an extra 4-pin PSU connector, but I must have overlooked the one that existed.

In my defense, here's what the manual states about the power connector:


This motherboard provides two power connectors to connect ATX12V power supplier.

NOTE: This 24-pin power connector "ATXPWR1" is compliant to the former 20-pin type. Pay attention to the orientation when attaching the power cord. (Pin-11, 12, 23, and 24 should be left un-connected).

Note: It is recommended to connect to a power with 350W, 20A +5VDC capacity at least for heavily loaded system, and a 2A +5VSB capacity for supporting wake-up features.


Not exactly crystal-clear on what needs to be connected under what circumstances. The case manual is at least correct if you follow along carefully, and they even found someone who can speak the language. Unfortunately, this section is phrased in a way that's highly prone to misunderstandings, particularly if you have an incorrect idea lodged in your head to start with:

Connect the 24-pin Main Power Connector and the 4-pin +12V connector to your motherboard as needed. If your motherboard uses a 20-pin connector, detach the 4-pin attachment on the 24-pin power connector.


You have to read that quite closely to realize that there are two 4-pin connectors involved!


Anyway, so I can actually get the machine to post and boot. Unfortunately, it's highly unstable once it does boot. It runs for up to several minutes, but then exhibits various sorts of erratic behavior: freezing, spontaneous reboots, random error messages, that sort of thing. I've made sure all the cords are plugged in tightly and reseated a couple components (particularly the memory); about the only thing I haven't checked is the CPU+heatsink mess, which would be a real pain to disassemble and re-assemble.

Still, it's nice to make some progress. Maybe tomorrow I'll discover some other cable I forgot to plug in that will make everything work (hey, I can dream).

17 March 2006

Kai Hendry: Testing distributions

My home/office setup Lately I’ve been testing a few distributions. A few comments. Redhat (or CentOS) make it real easy to re-compile their sources, so you can basically create your own Enterprise distribution with your own company’s branding very easily. Redhat Nahant EL4 “nahant” type distributions must have quite a high percentage of the server market. I see it time and time again. I find it quite an “average” platform, though I also find it difficult to argue why Debian is all that much better. One policy that interests me is that EL4 updates out the box. Is it a good thing for a box to update itself? I guess so, though with Debian that’s not as usual I find. I hate how all the distributions I’ve tried use screensavers that hog resources. Whatever happened to the screen just blanking ffs? Making the screen actually power down gets bonus points. Extra bonus points: do not power down while I am watching a movie. Xandros is quite an interesting distribution. Debian based. It has this LDAP centric xDMS (desktop management system) for aiding deployment. It also had crossover linux (for photoshop and M$ office) by default, also video works out the box and CD burning. I has quite a bit of spit and polish. It’s a pity they don’t seem to work as closely with Debian as Ubuntu seem to. I’ve got my sister using Ubuntu dapper and she is bitching that she can’t play multimedia files. I found this awful post on the ubuntu forums where it suggests installed j2re. FS, no. I’ve managed to download the win32 codecs and get that going for her over ssh, but I’ve no idea how get mp3 playback working still on her (sic) “desktop”. My sister is also struggling with copy and paste in Gnome (compared to win32). I feel her pain in ion3 and Firefox’s textarea. Ubuntu’s launchpad is painful. I remember some dude raved about it on -devel. WTF. I won’t rant about that. In Ubuntu I am still trying to understand the way the disb is formed and a release is made. The scripts are quite odd. Seed and Germinate ? I am getting confused with preseed.
I also don’t like the MoinMoin Wiki (same tech behind Debian’s Wiki ). Compared to MediaWiki, information doesn’t look as nice, editing isn’t as easy and the searching sucks. Someone has got to write some nice Web interface to these Ubuntu patches. They’re a nightmare for my brain to parse. When I was installing and re-installing different distributions, it would have been nice if the /home directory was left alone. I managed to save it once with the debian-installer, but the other installers were into blanking the drive. I also played about with LVM in the debian installer and somehow caused a strange error. I’m not confident about using LVM. I would like to test disbs without burning ISOs and nuking the HD. I remember QEMU being really slow and VMWARE being non-free and only working properly on Windows. I don’t think you can boot an ISO with Xen. Any tips people? Update: See comments. Or VM Player with Ubuntu samples are OK for testing.

16 March 2006

Adam Rosi-Kessel: In Defense of the Statute of Limitations

There’s a big push in Massachusetts to eliminate the 15 year statute of limitations on child sexual abuse (that runs from the child’s sixteenth birthday)—for example, this Boston Globe article and editorial. Eliminating a criminal statute of limitations is generally a popular cause—after all, the only people negatively impacted would be criminals, and they don’t form much of a lobbying constituency, right? These articles rarely provide the full reasoning behind statutes of limitations, however. If they address the issue at all, they cite the difficulty of getting a fair trial many years after the events at issue occurred, as in the Globe editorial. There is a more compelling reason, I think, to preserve the statute of limitations: scarce resources. As with my position on the death penalty, I believe this issue should ultimately be decided pragmatically based on real experience. Prosecutors are terribly overworked. When I represented some indigent criminal defendants, the prosecutors were uniformly younger than me and had no idea what their cases were about until about 30 seconds before they were called to argue (especially in bail hearings). It was all they could do to not drop their two-foot-high stack of files (each representing a criminal case) on their way in and out of the courtroom. Every case requires resources. Police resources to investigate; prosecutorial and judicial resources to try; and ultimately prison resources if the defendant is convicted. While I understand the need to address past injustices, it seems to me far more important to address current injustices. For every trial relating to sex abuse that may have occurred 25 years ago, there are certainly as many abusers commiting crimes today. If the sex abuser from 25 years ago is still dangerous, he has likely committed more recent crimes for which he could be convicted. With current funding levels, it is absolutely impossible to pursue every crime committed. Even if we quadrupled funding for the criminal justice system, we are still going to be unable to do a good job catching and convicted all the bad guys. There are at least 250 recent unsolved murders in Boston currently. Necessarily, a choice to pursue sex crimes from 20 years ago is a choice not to pursue something else. All policy decisions involve trade-offs. Just about everyone is in favor of reducing or eliminating crime and child sex crimes in particular. We can agree on that, but it doesn’t answer the key question of how you do it. Despite the injustice in letting people get away with crimes committed many years ago, it’s a worse injustice to have inadequate resources to deal with crimes committed today.

Martin Michlmayr: debian-installer beta2 supports the Linksys NSLU2 (ARM)

While ARM is a very important platform, support for it in Debian has faced a number of problems recently: there was no developer accessible machine for a long time (they're two now), buildds sometimes have a hard time keeping up, etc. Most importantly, there are not enough people actively involved in the ARM port. We need more people doing debian-installer and kernel work, and track other ARM related issues. One reason why few people are working on ARM is probably the lack of a cheap platform that can be used for development. Fortunately, this problem has now been addressed. Over the last few months, I worked (in collaboration of the NSLU2-Linux project) on debian-installer support for the Linksys NSLU2, a sub $100 device with 32 MB RAM, Ethernet (which unfortunately needs a non-free driver) and two USB ports. You can attach a USB disk and run a full Debian system on this device. While there have been some instructions on the web about how to get Debian going on the NSLU2, basic support for the device is now included in debian-installer. In other words, you can do a user-friendly installation and it will just work. Here are instructions. Future work In the future, the NSLU2-Linux people and I will add more support for other ARM based consumer devices, such as Network Attached Storage (NAS) devices (basically a hard drive with a CPU/RAM and Ethernet, sometimes also including wireless; in other words, a perfect platform for Debian). On a related note, I'm also working on getting debian-installer going on a number of MIPS based consumer devices, such as the Netgear WGT634U wireless router. However, this work has not reached the maturity of NSLU2 support yet. There is a status overview and TODO list. Acknowledgements

15 March 2006

Ross Burton: Herd Like Behavior

Last week on the magnificent (for people with puppies at least) It's Me Or The Dog they featured a battery-powered bacon-flavoured bubble machine. Wow! we thought, and ordered one over the weekend. And so, it appears, did the rest of the nation:
Dear Customer
Thank you for ordering Fetch Pet Bubble products from Seapets. Due to the unprecedented demand following the Channel Four television program, all stocks of these products, that were in this country were gone within hours of the broadcast. Fortunately we work very closely with Fetch Pet and have been assured that we will be the first to receive supplies as the next batch is flown in from the USA. We expect this to clear customs within a few days and we should be able to resume deliveries next week.
Poor Henry has to wait for bacon flavoured bubble goodness. In other news my 28-135mm IS USM lens arrived today, and it's lovely. Shots online later. NP: Out Of Season, Beth Gibbons and Rustin Man

Martin F. Krafft: udev and grey hair

It won't be long before I grow grey hair if udev keeps pulling tricks on me. Yesterday, an upgrade to 0.087-1 hosed one of my systems. The system is sarge-based, but it is connected a to a cable modem needing the cdc_ether driver, which 2.6.8 does not have. Since I don't expect backports of 2.6.15 to sarge (Update: backports.org has a 2.6.15 backport, but it won't solve my problem it seems), but also don't want to migrate my system to testing, I simply decided to pin linux-image-2.6.15-1-686 and all its dependencies to unstable with APT:
Package: linux-image-2.6.15-1-686
Pin: release a=unstable
Pin-Priority: 600
Package: initramfs-tools
Pin: release a=unstable
Pin-Priority: 600
Package: udev
[...]
The install worked, and off I went to reboot... but the machine did not come back up, and booting 2.6.8 with the new udev also failed. Great. At first, I thought I knew the problem, but at closer inspection, it was something else: udev's ide.agent hung itself up and timed out. It turns out it was looking for hd141 instead of hda, and once I found that out, it didn't take long to put two and two together: 141 is ASCII 97 is 'a'. And if you echo hd\141 just like that, the shell will swallow the backslash. Marco, the udev maintainer blamed a broken shell, and I identified busybox-cvs-static to be the problem; Replacing it with busybox from unstable fixed the issue. Now all that remains is to convince Marco that the bug has nothing to do with initramfs-tools when it occurs in a script provided by udev. initramfs-tools depends on busybox-cvs-static busybox since it works with either. If udev doesn't work with busybox-cvs-static, it has to conflict, which is not really an option though, due to a libc6 upgrade loop. Fortunately, the 2.6.16 kernel will make ide.agent obsolete, so the problem shall vanish in smoke. With one problem solved, I woke up this morning to find another. I use udev's network interface renaming feature to ensure that my interfaces always have the names I expect, and that their names give me a hint as to what they're connected to. Sure, using /etc/modules to ensure a defined load order would work fine, but I have too many machines under my control to want to remember that eth2 on this machine is the wireless LAN. So I use the following udev rules:
wall:~# cat /etc/udev/rules.d/local-interfaces.rules
KERNEL="eth*", SYSFS address ="00:02:8a:80:21:31", NAME="internet"
KERNEL="eth*", SYSFS address ="08:00:46:b1:2d:ee", NAME="lan"
KERNEL="eth*", SYSFS address ="00:50:04:5b:ec:b3", NAME="wlan"
KERNEL="eth*", SYSFS address ="00:04:23:72:4e:6c", NAME="wifibackup"
Update: Bas Zoetekouw suggested to match against something else than MAC addresses, for testing. Thus, I tried PCI IDs (using the topmost SYSFS device entry in the udevinfo output):
KERNEL="eth*", SYSFS device ="0x24c4", NAME="internet"
KERNEL="eth*", SYSFS device ="0x103d", NAME="lan"
KERNEL="eth*", SYSFS device ="0x5157", NAME="wlan"
KERNEL="eth*", SYSFS device ="0x1043", NAME="wifibackup"
The problem remains the exact same. It also remains the same if I completely remove wlan and wifibackup. When I woke up this morning, I found the following mess:
wall:~# ip addr
2: internet: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 08:00:46:b1:2d:ee brd ff:ff:ff:ff:ff:ff
3: eth0_ifrename: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
    link/ether 00:02:8a:80:21:31 brd ff:ff:ff:ff:ff:ff
4: wifibackup: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
    link/ether 00:04:23:72:4e:6c brd ff:ff:ff:ff:ff:ff
5: wlan: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:50:04:5b:ec:b3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.14.129/25 brd 192.168.14.255 scope global wlan
    inet6 fe80::250:4ff:fe5b:ecb3/64 scope link
      valid_lft forever preferred_lft forever
The wlan and wifibackup interfaces are configured correctly (I use wifibackup to hook into the various open WLANs around, when my provider goes down, or I need more bandwidth). But internet was assigned to the LAN interface, and eth0_ifrename, well... that's just whacked. Looking at the udev code, this seems to be due to a patch Marco pulled from Ubuntu, which is to guard against race conditions in the renaming. For instance, if eth0 needs to become eth1 and vice versa, udev renames the first to eth0_ifrename and waits until the other has finished its identity change. The patch, however, is a hack: it tries endlessly to rename the interface to its final target name, which, in my case, obviously goes on forever.
10:18  * Md just copied it from the Ubuntu package
10:18 < madduck> why???
10:19 < Md> because it worked in my artificial setup
Unfortunately, this isn't the first time that Ubuntu's "giving back to Debian" (which requires Debian to go out and fetch) is two steps back rather than one forward. I would hope that maintainers of criticial packages (such as udev) would exercise more care when pulling from Ubuntu. And that Ubuntu would please stop adding hacks to packages and instead concentrate on fixing issues at the root the Debian way. So my problem still persists, and even given Ubuntu's ifrename patch problems, I can't figure out what is actually going on. It does not help that udev also suddenly stopped logging interface name changes. Yes, just like that.
KERNEL="eth*", SYSFS address ="00:02:8a:80:21:31", NAME="internet"
KERNEL="eth*", SYSFS address ="08:00:46:b1:2d:ee", NAME="lan"
How can these two rules actually trigger the rename conflict? The only way I could imagine is that udev gets confused and falsely renames 08:00:46:b1:2d:ee to internet. Then, when it gets to the other card, a name collision occurs, udev chooses eth0_ifrename as temporary workaround, and then tries forever to rename eth0_ifrename to internet, which will never succeed. So why does udev get confused in the first place? Why would it ever name the interface 08:00:46:b1:2d:ee internet? Beats me. But I better end here because the world surely doesn't need just anoAther udev rant. Update: I forgot to mention that the renaming works just fine when I unload/load modules from the command line. It's only during the boot process that things go wild. Update 2: I should not that it does not work fine some of the time if the modules are loaded in quick succession.

David Pashley: Comment Form Attack

<p>Came back from a nice walk on the seafront, including a 30 minute professional firework display from a boat 20 meters offshore and about 50 people watching, to find that someone had attempted to attack my blog comment to send spam. Fortunately according to my mail logs, nothing went out, but it did make me go through and read the comment plugin code. I did wonder if every suitable field had been cleaned and have now made sure that it is. Looks like it came from several IP addresses over a 5 minute period and got past my (admittedly very) simple turing test, so I don't think it was an automated script. For an example of the attacks, check out this <a href="http://www.davidpashley.com/cgi/pyblosxom.cgi/general/fists-of-fury.html">old posting</a>.</p>

14 March 2006

Matt Brown: SSC - Open Source Legal Guidelines

The State Services Commission (SSC) (the NZ government body that oversees NZ government departments) released a guide to legal issues in using Open Source Software recently. The publication of this guide has caused a certain amount of consternation in the open source community and even manged to make it to Slashdot and Groklaw as well as spawning a fairly active thread on the NZ Open Source Society’s openchat mailing list. Through all of this I’ve found myself very much on the opposite side of opinion to most other people commenting on it. My initial thoughts on the document are quite nicely summarised by the Groklaw comment that Stuart points out. While the document uses some unfortunate language, there is nothing in it that is actually untrue. In fact my initial feelings towards the document (without having read it thoroughly) were that it was good to see the SSC taking enough notice of open source to feel the need to advise departments on the particular issues that it can bring up. Particularly dissapointing to me are the conspiracy theories that have been flying around. Groklaw surmises that the paper is a Microsoft hatchet job simply because it was authored by Chapman Tripp (a large NZ law firm) who happen to also represent Microsoft NZ on a range of intellectual property issues. I’ve yet to hear a single shred of evidence to back up this assertion and I find it quite ridiculous. Large firms working in a small market such as NZ will often run into conflict of interest issues and have well established procedures for dealing with them. Without seeing evidence to the contrary I cannot accept that a reputable firm like Chapman Tripp would risk their reputation by trying to intentionally mislead the goverment in a report like this. A far more like scenario, to my mind, is simply that the author(s) of the report are not very familiar with open source issues and didn’t do quite as much research as they should have to bring themselves up to speed with the unique IP features of open source licenses. Having read the document more thoroughly now, I can agree that it is far from perfect. I think the single most glaring problem is that it focusses only on open source software and doesn’t mention that many of the risks also exist when using proprietary software. This could leave an uneducated reader completely scared off open source due to a mistaken belief that it is far too risky. On the other hand we shouldn’t completely dismiss the document either as it does raise a number of clear risks that a department will face in adding open source software to their IT environment. We’re not going to do ourselves any favours by pretending that open source is a panacea to all the worlds software ills and can just be dropped in to any IT environment to make things better! It’s worth pointing out at this point that previous evidence from the SSC indicates that they are open source friendly. They have a very clear policy stating that Departments are encouraged to consider open source software alongside proprietary software and use it in cases where it wins on the basis of cost, functionality, interoperability, and security. Given this history, I am alarmed at the hostile reactions many participants on the NZOSS open-chat mailing list had to the document. Quite frankly I think some people are responding far too emotively to the language in the document (which is problematic - but not that bad) and missing the chance to evaluate the rest of it in an objective manner. We have a SSC that has indicated a friendliness towards open source in the past, and I don’t think that they would turn around and reverse their position in this manner. This report is intended to support their overall policy after all. Rather than jumping down their throats and shouting about how poor the document is we need to engage in a civil dialog, point out the issues with the document and offer constructive suggestions for how the document can be improved. To that end, Peter Harrisson has started some pages on the NZOSS wiki where we are going to co-ordinate our impressions and responses to the document so we can present a consistent NZOSS position to the SSC in response. I’d encourage everyone with an interest in the document to read and contribute to those pages. As for exactly what I form our response should take and what it should consist of? I’ll follow up with another post on that later in the weekend when I’ve had a bit more time to reflect.
What I do know (if you haven’t guessed already) is that I think we should be very careful not to respond in a hostile and emotive manner that will result in our relationship with the SSC becoming worse. That means we should take time to consider the document objectively, evaluate its propositions and provide a well researched and substantiated list of suggested improvements to the SSC.

13 March 2006

Martin F. Krafft: Keeping the disk spun down with squid?

I am trying to set up an older laptop for use as a router in my flat. I chose this approach over a stand-alone device (such as this one) because I want to have fuller control over my router, such as the ability to add a transparent caching proxy (squid). A main concern with setting up this machine is noise. Ideally, I want it to be completely silent, but I do need a hard drive. Thus, I am trying to configure the drive to spin down when not in use. Thanks to the laptop-mode-tools package, and syslog-ng's caching functionality, this works like a charm... ... until I start squid. For some reason, squid likes to read blocks on /var every few seconds, even if it is not being used at all. I imagine this is some cache replacement/maintenance stuff. So now I need to find out how to disable it, or how to control the interval. Ideally, I would like squid to doze when it's not in use. Only when it serves requests is it allowed to do cache maintenance. If you know how I could accomplish this, please let me know! Unfortunately, I do not have enough RAM to put my entire cache onto a shmfs.

Eric Dorland: watch files considered helpful

I spent some time yesterday putting watch files in most of my packages. Watch files have been around for a long time in Debian, but hasn't reached the exposure it perhaps deserve. They're used by uscan to check for newer upstream versions of the source. What's even more useful than running uscan is the Debian Watch Health Status pages (which are also helpfully linked from the QA developer's page, but that functionality appears to be broken at the moment) which parse the watch files as well and provide a nice web interface to look up your packages and others and see where upstream is at. Unfortunately, for this to work properly the package needs a watch file, and according to the statistics, only 1/3 of all packages have watch files. So here's a quick tutorial, just plop a suitably modified version of these examples into the debian/watch file in your package and you're off to the races. If you're packaging foo and the source tarballs are on ftp.foo.org your watch file will look something like this:
version=3
ftp://ftp.foo.org/pub/foo/foo-(.*)\.tar\.gz
Some things to note: the version line is just there to allow for future enhancements without breaking backwards compatibility. For the location specifier, the last part after the final / is a regular expression (notice the .'s are escaped). The pattern inside the parentheses is what gets parsed as the upstream version number. For HTTP the syntax is almost identical:
version=3
http://www.foo.org/files/foo-(.*)\.tar\.gz
This snippet will download http://www.foo.org/files/ and look for href's corresponding to the rest of the pattern. For projects hosted on Sourceforge, there's a handy syntax for that, and uscan will take care of figuring out its annoying mirror system. If it's project bar, and the source is called libbar:
version=3
http://sf.net/bar/libbar-(.*)\.tar\.gz
There are many more details in the uscan man page. I think it would be great if more maintainers put watch files in their packages. It's one of those touches that really sets Debian apart from the rest.

12 March 2006

Erich Schubert: Meld to the rescue

I officially hate CVS now. And I really really love meld. I had been working on a project for a company. The sourcecode we got from a different company (for a wireless access point) was in a rather bad shape, so I just started hacking on it to get it working for us. The long-term plan was always to "dismantle" the source into proper upstream tarballs and diffs with the changes, to allow for easier upgrades. But it never got that far. Sometime after I left the project (for my research stay at Berkeley), the source was checked in into CVS without the -kb flag. So when I now recently wanted to do a diff to the CVS checkout I got, in order to see what was changed in the meantime I got tons of changes, all as boring as changed $Id$ and $Header$ statements. Aaargh. Fortunately, meld has an option to hide these changes. I love it.

11 March 2006

Jordi Mallach: Quant a Ubuntutu

Embarrasing enough, Ubuntu has shipped a Catalan translation for the very prominent About Ubuntu GNOME Panel menu entry which read Quant a Ubuntutu . It s been there for so long that irazuzta and I really considered not fixing it at all for hysterical raisins . Anyway, seb128 now has a patch to correct this at long last in Ubuntu s gnome-panel. He promised to include it in monday's 2.14.0 upload seb: DON T FORGET! In the meanwhile, Jordi Irazuzta and I just finished setting up the Ubuntu Catalan Translators team, with the mailing of some detailed instructions on how we want to get work done in the team. It's been months of planning and designing a workflow to make a Ubuntu translation team and the openness that Rosetta offers to all the members of a team fit in Softcatal s high standards for the quality of the translations made by the organisation. As soon as people start mailing back and get subscribed to the team s mailing list, they'll get tasks assigned and we'll get the team kickstarted, with lots of work to be done before the Dapper release. The key for this team s success is that we educate our volunteers to contribute their Ubuntu translations to the upstream projects or relevant Catalan teams, and that this is somehow coordinated. The experience will be quite good for me to identify some of the social problems with Rosetta, as many times people ask if their translations for Ubuntu will appear in other distributions as well. The team is led, for now, by Jordi Irazuzta, lo noi de l'Ebre, and me. If you're a Catalan Ubuntu user and want to lend a hand, you're more than welcome to join the mailing list to help, and become a Ubuntaire!

Axel Beckert: Tagging with Technorati style in pure Blosxom

Short summary: I can’t stay away from coding Blosxom plugins. Perl rules. PHP sucks. ;-) Supporting Technorati style tag URLs After releasing the last version of my Blosxom plugin tagging, I noticed that Technorati only seems to like URLs ending in “/tagname” but not ending in “=tagname” (as they do if you use classic query strings instead of the path info), even if the a tag has a rel="tag" attribute. And not only I noticed this but also some other users of the plugin. (Although I do wonder how Furl made it to a Technorati partner with URLs like http://www.furl.net/furled.jsp?topic=tags…) So I somehow had to change the syntax style for my tags. This wasn’t very hard for the links, but I wanted them to still link to my blog and not to Technorati, Flickr, Wikipedia or any other external resource. Implementing Technorati style tag URLs The obviously easiest solution for someone who’s using and administrating Apache web servers for nearly ten years now was to use some mod_voodoo—eh—mod_rewrite:
RewriteEngine On
RewriteRule ^/cgi-bin/blosxom.cgi/tags/(.*)$ /cgi-bin/blosxom.cgi?-tags=$1 [PT]
That way I could use Technorati style tags and had a well performing solution. But somehow this solution wasn’t that satisfying since it wasn’t pure Blosxom and therefore had some dependency including access to some Apache config file. (Even if the config file was called .htaccess. ;-) A pure Blosxom solution A few days ago I somehow noticed that in general a special behaviour on some URLs could also be implemented using Blosxom’s API. Using the entries function to modify the Blosxom internal path itself before Blosxom or e.g. the entries_index runs but not returning any hashes, allows to have some path like URLs not being treated as a path by Blosxom. Unfortunately this couldn’t be incorporated into the tagging plugin itself, since plugins doing such path interpreting voodoo needs to be ran before any plugin supplying an entries function runs. But the tagging plugin must run after such a plugin. So I created the small add-on plugin pathbasedtagging which is solely thought for use together with the tagging plugin (but may have other, yet unknown purposes). And since I got asked if they could use the tagging plugin to link to external tag URLs instead of the own blog, I included a ready to use list of more or less popular external tag URLs including Technorati, Flickr, del.icio.us, de.lirio.us and Wikipedia. from the slashdot dept. Since I’ve always liked the often sarcastic or even evil comments inside Slashdot’s subtitle alike dept. lines and since I’m also used to use them at Symlink, I wanted them in my blog, too. Time for a new plugin. The basic work of parsing out the data from the text files the posts reside in was already written for the tagging plugin. So I just had to use that code, simplify it and add some little more code to get the dept plugin whose results you can see in my blog directly beneath the title of a posting since a few days now. Update 02:52h Hey, see my Technorati profile: It worked! Technorati recognised the tags! Yeah!

Axel Beckert: Blosxom like alternatives to Blosxom

I really like the simplicity of Blosxom as blogging framework and I also like Perl very much. But somehow this Perl 4 alike global variables madness of Blosxom v2 sucks in several ways: It effectively prevents Blosxom from being used with mod_perl and it’s just not what I would call an API. I would like to have a more object-oriented plugin API and it should be save for use with FastCGI, mod_perl or similar possibilities to cache the parsed script code instead of reparsing with each request. Another thing should be a tagging facility. Had to write that by myself for Blosxom v2. (Wasn’t that hard though.) But since Blosxom v3 development seemed to have stopped in May 2004, I have been thinking about and looking for alternatives. First thought was to write a Blosxom clone by myself using Embperl as framework (as I did with web galleries after not finding any web gallery software fitting all my needs). But since I got infected with Ruby recently, I also thought about writting a Blosxom clone in Ruby, which would give me quite a lot of Ruby experience and would make a good fit since Ruby as well as Blosxom have some kind of Zen (or KISS) philosophy. The next thought was: I can’t be the first to come up with that idea and googled a little bit. First thing I digged up was Rage, some kind of Blosxom on Rails. But I didn’t find any source code although the author seems to prefer open source software. Seems as if it is seems to be ready for production but not ready for public release. The next thing I found was hint to some Blosxom clones in the Ruby Application Archive (RAA). Unfortunately two of them (sakura and lily) seem to have Japanese only web pages. :-( But for luck the third Ruby based Blosxom clone found in the RAA, Blosxonomy, seems to be quite well featured, under actual development, has a english written web page and one of if its main concepts is taggability. And also the other core concepts sound fine: simplicity, extensibility and compatibility. Sounds really perfect and I’ll probably give it a try, but not on my current blog host: There is no Ruby installed and it’s not my own box.

Now playing: Rolling Stones — Ruby Tuesday

Clint Adams: Snakeback in Angora

Somewhere in the vast and unspoiled natural beauty that is New Jersey, right around the corner from K-Mart, lived a man named Stellan Andrews. He lived with his wife, his enormous children, and a host of psychotic delusions. Stellan had always known that he was special. From a very early age, it was clear to him that he was superior to the other children, and as he aged, he discovered that he could employ his above-average intellect and cunning to manipulate social systems to his advantage. By the time he was 18, he thought himself invincible. His ambitious and power-hungry nature was tempered by a fair amount of social ineptitude and an utter lack of empathy for anyone who was not similarly power-hungry and evil as he. This led to a perception of him as bright and eccentric at best, or more frequently as one of them there smartypants weirdos who thought that he was too good for his neighbors in the mobile home park. His friends were few and tended to be outcasts with sociopathic tendencies. These friendships were intense and codependent until abrupt ends; one person would demand too much, the other would demur, the first would stand firm and uncompromising as this would now become a significant issue about loyalty and value and importance, and after a short-lived blowup, they would never speak again. Throughout, extreme amounts of jealousy would rage in both directions, and so Stellan never had more than one friend at a time. In between friendships, though also during them, Stellan spent much of his time tinkering with technology. He dissected and rebuilt radios, televisions, computers, and anything else he could get his hands on. He played with model rockets and explosives of many types, though without fail it was his friends who were more interested in these types of activities. With them, he also played with guns, but he never had any interest in doing so on his own. After high school, Stellan enlisted in the Army, despite a fundamental distrust of government and a lack of passion for most of the various relevant interests of his now-forgotten friends: guns, history, tanks, U.S. Cavalry catalogs, and dolls that were called action figures . However, he did enjoy strategy- and war-games, which never had any relevance to his military career. The only aspect which appealed to him was the power hierarchy, and this seemed more natural to him than any other social structure he had experienced. He was stationed in Laos for a time, and that is where he met his wife. She was a Chinese rabbi, and since she spoke no English, they hit it off smashingly. With not much to go on about her personality, he romanticized her into his perfect woman, and by the time his delusions were shattered, they were raising children in New Jersey. Neither was particularly happy. She sublimated nearly all of herself into her work at the local pan-Asian synagogue, and he, now more social than he had ever been in his life, entered into a sinister and twisted game. It was called Perfidy, and there were a couple hundred participants across the entire country. These players had a few things in common: they were moderately sociopathic; they harbored great contempt and resentment for the average citizen, whom they characterized as a stupid sheep or cow; and they believed that they, as superior creatures, were entitled to control the proletariat for entertainment purposes. The game, to boil it down to some sort of boiled-down nutshell, was the structured use of random and unwitting people as pawns in a giant and complex strategy game. The players who excelled were accomplished manipulators and liars, or, as they preferred to call themselves, social engineers. They were also cold and dispassionate. Stellan lost his head. He had just been outman uvred by Jack Breig from Delaware, and he was livid. As the bile rushed into his mouth, he lost his firm grasp on strategery, and succumbed to vengeful instincts. Within days, he and Jack were getting far too personal. His rage abided when he succeeded in triggering Jack's divorce. In response, Jack proved once again that he was Stellan's better. The next day, Stellan was arrested for a crime that he did not commit. He was sentenced to eighteen months in prison. His family was not pleased. He returned home a felon. No longer able to get credit or a job, he reacted in the most natural way possible: he joined the local Plan 9 Users' Group. [To be continued...]

Next.

Previous.