Search Results: "spa"

28 August 2006

Simon Richter: T-Online sucks, again.

Our server has not been reachable from inside T-Online today. The reason is that they seem to inflate TTL on DNS entries to reduce load on their servers. This field is there for a reason. People might decide to tune it when they expect changes, for example when moving services to another machine, like I did today. And will do again next week for some of the domains, as this is only a temporary home (in fact, it is a dd'ed image from the old machine running as a Xen instance on a spare IP now, to make the migration easier.

27 August 2006

Bastian Blank: T2000 perfomance

I did some performance tests with the T2000. The CPU is too slow to beat any current one from IBM (Power), AMD or Intel. My first test was building kernels. With -j32, a complete build needs about 9 minutes. For comparison, a 4-way UltraSparc 2 with 450MHz needs 30 minutes. So each core compares to an UltraSparc 2 with 700MHz. This numbers are not that phenomenal, so I added another test with ccache, to realy use the io system. With empty cache, it needs 10 minutes, with filled cache it needs 2.5 minutes. As application server, it is not that usable; they are cpu bound. Especially zope, which is known to not scale well on more cpus because of the python global interpreter lock, is not able to use this. A comparision with an Opteron 242 with 1.6GHz shows a factor of 5 in the computing power on virtual cpu.

Uwe Hermann: Testing stuff with QEMU - Part 1: SELinux support in Debian unstable [Update]

Here's a quick HOWTO to get you started with the QEMU emulator, the Debian installer (etch beta 3), and SELinux. If you execute the following steps you'll be left with an SELinux-enabled Debian unstable QEMU image, but not with a complete working and perfectly configured SELinux system. A more detailed article about SELinux will probably follow... Basic Debian unstable install in QEMU:
  1. Install QEMU:
    apt-get install qemu
  2. Download the latest Debian etch installer ISO image (etch beta 3, currently):
    wget http://cdimage.debian.org/cdimage/etch_di_beta3/i386/iso-cd/debian-testing-i386-binary-1.iso
  3. Create a QEMU image which will hold the Debian installation:
    qemu-img create -f qcow /path/to/debian.img 5000M
  4. Boot directly from the ISO image and install Debian into the QEMU image (I won't go into the details of the installation itself; Wolfang Lonien has nice HOWTOs for that: part 1, part 2, video):
    qemu -hda /path/to/debian.img -boot d -cdrom debian-testing-i386-binary-1.iso
  5. After the installation is done, configure the system, tweak /etc/apt/sources.list if needed, and then dist-upgrade to the latest stuff:
    apt-get update && apt-get dist-upgrade
  6. That's about it for the basic Debian install, you can now shutdown the OS and QEMU (type "halt" in the emulated Debian, wait for the shutdown to complete, press CTRL+ALT+2 to switch to the QEMU console, and type "quit").
Creating a QEMU overlay image: QEMU has a nice feature called overlay images which allows you to "clone" an image, where the new (overlay) image will only store the "diffs" to the original one, thus saving lots of space. This also allows you to remove the overlay image at any time and restart from the original image (which is nice for testing stuff which may break).
  1. Create an overlay image based on the previously installed Debian image:
    qemu-img create -b /path/to/debian.img -f qcow /path/to/debian_selinux_overlay.img
  2. Now boot into the new overlay image:
    qemu -hda /path/to/debian_selinux_overlay.img
Basic SELinux setup: SELinux / sestatus screenshot
  1. SELinux wants to label all the files on your system (all inodes actually), so your filesystem(s) need the so-called extended attributes (xattr) and "security labels" (both are kernel options) which most modern file systems now support. For ext3 (for example) you need these config options:
    CONFIG_EXT3_FS=y
    CONFIG_EXT3_FS_XATTR=y
    CONFIG_EXT3_FS_SECURITY=y
    Luckily the Debian kernels are xattr-enabled by default so we don't have to do anything at all here.
  2. Install the basic SELinux packages and the source package of the SELinux reference policy:
    apt-get install checkpolicy policycoreutils selinux-policy-refpolicy-src
  3. I noticed a bug in the current Debian packages (the setfiles utility is in the wrong place, see #384850), but there's a simple workaround:
    ln -s /sbin/setfiles /usr/sbin/setfiles
  4. Now we can (re-)label the file system:
    cd /etc/selinux/refpolicy/src/policy
    make relabel
    This will build the reference policy from source and relabel your file system (this will take a while).
    There might be some warnings (and maybe you'll notice further bugs), but they seem not to be critical.
  5. We can now (almost) enable SELinux, but before we can reboot we need to work around another bug (#384852), otherwise SELinux will not be enabled when we reboot:
    ln -s /etc/selinux/refpolicy/src /etc/selinux/targeted
  6. Now reboot the emulated Debian system, and at the GRUB console add the kernel option selinux=1 to enable SELinux in the kernel (press "e" to edit the boot options).
  7. You'll get tons of SELinux log messages while the system boots, that's normal at this point, don't worry.
    Then you can type "sestatus", which should print some information on the running SELinux system. If it says "SELinux status: disabled" something went wrong.
Congratulations! You now have a QEMU image with minimal SELinux support and you can start playing with it, tweaking the policy, finding and reporting bugs, reading tons of documentation on how SELinux actually works etc. etc. As SELinux is (half?) a release-goal for Debian etch, it would be nice if many people could test it before the release, and this is one method to do so without breaking your production systems. Update: You don't really need user_xattr support for SELinux, only xattr support (for security.selinux xattrs) for the filesystem you use, which is available per default in Debian kernels (thanks Russell Coker).

Russell Coker: Linux on the Desktop

I started using Linux in 1993. I initially used it only in text-mode as I didn't have enough RAM to run XFree86 on my Linux machine. I ran text-mode Linux server machines from 1993 to 1998. In 1998 I purchased my first laptop and installed Linux with KDE on it. I chose KDE because it had the greatest similarity to OS/2 which I had used as my desktop OS prior to that time. At the same time I purchased an identical laptop for my sister and gave her an identical configuration of Linux and KDE.<br /><br />Running a Linux laptop in 1998 was a lot harder for a non-technical person than it is today. There was little compatability with MS file formats and few options for support for Internet connections and third-party hardware and software (most things worked but you needed to know what to do). One advantage of using Linux in this regard is that the remote support options have always been good, I was able to fix my sister's laptop no matter which country she was in and which country I was in. Her laptop kept working for more than 5 years without the need for a reinstall (try that on Windows).<br /><br />It was when VMWare first became available (maybe 2000) that I converted my parents to using Linux. At first they complained a bit about it being different and found VMWare less convenient than the OS/2 <span style="font-style: italic;">Dos box</span> for running their old DOS programs. But eventually they broke their dependence on DOS programs and things ran fairly smoothly. There were occasions when they complained about not having perceived benefits of Windows (such as the supposed ability to plug in random pieces of hardware and have things all work perfectly). The fact that using OS/2 and then Linux has given them 14 years of computer use with no viruses and no trojans tends to get overlooked.<br /><br />Of recent times the only problem that my parents have experienced is when they bought a random cheap printer without asking my advice. The printer in question turned out to not work with Fedora Core 4, but when Fedora Core 5 came out the printer worked. Waiting 6 months for a printer upgrade isn't really a serious problem (the old printer which had worked 6+ years was still going strong).<br /><br />My parents and my sister now have second-hand P3 desktop machines running Fedora. P3 CPUs dissipate significantly less heat than P4 and Athlon CPUs, this significantly reduces the risk of hard drives dying when machines are left on in unairconditioned rooms as well as saving money on electricity. For the typical home user who doesn't play 3D games there is no real need for a CPU that's more powerful than a 1GHz P3. This of course means that there is less need for me to reinstall on newer hardware which also means more reliability.<br /><br />I always find it strange when people claim that Linux isn't ready for the desktop. I provide all the support for three non-technical users of Linux on the desktop and it really doesn't take much work because things just work. Corporate desktops are even easier, in a company you install what people need for their work and don't permit them to do anything different.<br /><br />It seems to me that Linux has been ready for the desktop since 1998.

26 August 2006

Andrew Pollock: [debian] Mirror, mirror...

What feels like an eternity ago, at linux.conf.au 2005 in Canberra, AJ floated the idea of me being the Debian mirror coordination guy. I expressed interest in this, but somewhere along the line, I think there were some crossed-wires over whether I was interested or not, and nothing came of it. The other day, I pinged AJ on a few things, and the mirror coordination role came up again. I re-expressed my interest in doing it, and so here I am. So I'm now in the process of getting my head around exactly what the job entails, whilst I wade through 12 months of mail to mirrors@debian.org, that so far (for August 2005) appears to be about 95% spam. Yay. I'll also go through all of the current bugs assigned to the mirrors pseudo-package, and try to validate them, and either act on or close them, depending on the current state of affairs and contactability of the submitters. So I envisage it'll take a while to just get on top of the backlog, and then I'll look at any areas where we can automate mirror verification (I've got to look at what's currently in place). Helping run mirror.linux.org.au has been educational. I quite like the system that the Linux Kernel Archive Mirror System has in place, and wouldn't mind having something similar for Debian, if it's feasible. But that sort of stuff is a little while down the track, I have to get on top of the backlog first.

Scott James Remnant: Upstart in Universe

upstart is a replacement for the init daemon, the process spawned by the kernel that is responsible for starting, supervising and stopping all other processes on the system. The existing daemon is based on the one found in UNIX System V, and is thus known as sysvinit. It separates jobs into different “run levels” and can either run a job when particular run levels are entered (e.g. /etc/init.d/rc 2) or continually during a particular run level (e.g. /sbin/getty). The /etc/init.d/rc script is also based on the System V one (and is in the sysv-rc package), it simply executes the stop then start scripts found in /etc/rcN.d (where N is the run level) in numerical order. Why change it? Running a fixed set of scripts, one after the other, in a particular order has served us reasonably well until now. However as Linux has got better and better at dealing with modern computing (arguably Linux’s removable device support is better than Windows’ now) this approach has begun to have problems. The old approach works as long as you can guarantee when in the boot sequence things are available, so you can place your init script after that point and know that it will work. Typical ordering requirements are: This worked ten years ago, why doesn’t it work now? The simple answer is that our computer has become far more flexible: We’ve been able to hack the existing system to make much of this possible, however the result is chock-full of race conditions and bugs. It was time to design a new system that can cope with all of these things without any problems. What we needed was an init system that could dynamically order the start up sequence based on the configuration and hardware found as it went along. Design of upstart upstart is an event-based init daemon; events generated by the system cause jobs to be started and running jobs to be stopped. Events can include things such as: In fact, any process on the system may send events to the init daemon over its control socket (subject to security restrictions, of course) so there is no limit. Each job has a life-cycle which is shown in the graph below: The two states shown in red (“waiting” and “running”) are rest states, normally we expect the job to remain in these states until an event comes in, at which point we need to take actual to get the job into the next state. The other states are temporary states; these allow a job to run shell script to prepare for the job itself to be run (“starting”) and clean up afterwards (“stopping”). For services that should be respawned if they terminate before an event that stops them is received, they may run shell script before the process is started again (“respawning”). Jobs leave a state because the process associated with them terminates (or gets killed) and move to the next appropriate state, following the green arrow if the job is to be started or the red arrow if it is to be stopped. When a script returns a non-zero exit status, or is killed, the job will always be stoped. When the main process terminates and the job should not be respawned, the job will also always be stopped. As already covered, events generated by the init daemon or received from other processes cause jobs to be started or stopped; also manual requests to start or stop a job may be received. The communication between the init daemon and other processes is bi-directional, so the status of jobs may be queries and even changes of state to all jobs be received. How does it differ from launchd? launchd is the replacement init system used in MacOS X developed as an “Open Source” project by Apple. For much of its life so far, the licence has actually been entirely non-free and thus it has only become recently interesting with the licence change. Much of the goal of both systems appears initially to be the same; they both start jobs based on system events, however the launchd system severly limits the events to only the following: Therefore it does not actually allow us to directly solve the problems we currently have; we couldn’t mount filesystems once the “filesystem checked” event has been recived, we couldn’t check filesystems when the block device is added and we certainly couldn’t start daemons once the complete filesystem (as described by /etc/fstab) is available and writable. The launchd model expects the job to “sit and wait” if it is unable to start, rather than provide a mechanism for the job to only be started when it doesn’t need to wait. Jobs that need /usr to be mounted would need to spin in a loop waiting for /usr to be available before continuing (or use a file in a tmpfs to indicate it’s available, and use that modification as the event). This is not especially surprising given that Apple have a high degree of control over both their hardware and the actual underlying operating system; they don’t need to deal with the wide array of different configurations that we have in the Linux world. Had the licence been sufficiently free at the point we began development of our own system, we would probably have extended launchd rather than implement our own. At the point Apple changed the licence, our own system was already more suitable for our purposes. How does it differ from initng? Initng by Jimmy Wennlund is another replacement init daemon intended to replace the sysvinit system used by Linux. It is a dependency-based system, where upstart is an event-based system. The notion of a dependency-based system is interesting to talk about at this point. Jobs declare dependencies on other jobs that need to happen before the job itself can be started. Starting the job causes its dependencies to be started first, and their dependencies, and so on. When jobs are stopped, if running jobs have no dependencies, they themselves can be stopped. It’s a neat solution to the problem of ordering a fixed boot sequence and the problem of keeping the number of running processes to a minimum needed. However this means that you need to have goals in mind when you boot the system, you need to have decided that you want gdm to be started in order for it, and its dependencies, to be started. Initng uses run levels to ensure this happens, where a run level is a list of goal jobs that should be running in that run level. It’s also not clear how the dependencies interact with the different types of job, a dependency on Apache would need the daemon to be running where a dependency on “checkroot” would need the script to have finished running. Upstart handles this by using different events (“apache running” vs. “checkroot stopping”). Again while interesting, Initng does not solve the problems that we wanted to solve. It can reorder a fixed set of jobs, but cannot dynamically determine the set of jobs needed for that particular boot. A typical example would be that if the only dependency on the job that configures networking is the mount network filesystems job, then should that job fail or notbe a goal (e.g. because there are no network filesystems to be mounted) the result is that network devices themselves will not be configured. You could make everything a goal, and just use the dependencies to determine the order, however this is less efficient than just ordering the existing sysv-rc scripts (which
can be done at install time). Another example is that often you simply don’t know whether something is a dependency or not without reading other configuration, for example the mount network filesystems may be a dependency of everything under /usr or may just be a dependency of anything allowing the user to login if it just mounts /home. The difference in model can be summed up as “initng starts with a list of goals and works out how to get there, upstart starts with nothing and finds out where it gets to.” How does it differ from Solaris SMF? SMF is another approach to replacing init developed by Sun for the Solaris operating system. Like initng it’s a dependency-based system, so see above for the differences between those systems and upstart. SMF’s main focus is serive management; making sure that once services are running, they stay running, and allowing the system administrator to query and modify the states of jobs on the system. Upstart provides the same set of functionality in this regard, services are respawned when they fail and system administrators can at any time query the state of running services and adjust the state to their liking. Will it replace cron, inetd, etc? The goal of upstart is to replace those daemons, so that there is only one place (/etc/event.d) where system administrators need to configure when and how jobs should be run. In fact, the goal is that upstart should also replace the “run event scripts” functionality of any daemon on the system. Daemons such as acpid, apmd and Network Manager would send events to init instead of running scripts themselves with their own perculiar configuration and semantics. A system administrator who only wanted a particular daemon to be run while the computer was on AC power would simply need to edit /etc/event.d/daemon and change “on startup” to “on ac power”. What about compatibility? There’s a lot of systems administrators out there who have learned how Linux works already and will not want to learn again immediately, there’s also a large number of books that cover the existing software and won’t cover upstart for at least a couple of years. For this reason, compatibility is very important. upstart will continue to run the existing scripts for the forseeable future so that packages will not need to be updated until the author wants. Compatibility command-line tools that behave like their existing equivalents will also be implemented, a system administrator would never need to know that crontab -e is actually changing upstart jobs. Does it use D-BUS?
“To D-BUS people, every problem seems like a D-BUS problem.”
—Erik Troan
The UNIX philosophy is that something should do just one job, and do it very well. upstart’s one job is starting, supervising and stopping other jobs; D-BUS’s one job is passing messages between other jobs. D-BUS does provide a mechanism for services to be activated when the first message is sent to them, thereby starting other jobs. Some people have taken this idea and extended it to suggest that all a replacement init system need do is register jobs with D-BUS and turn booting into a simple matter of message parsing. This seems wrong to me, D-BUS would need to be extended to supervise these services, provide means for them to be restarted and stopped; as well as deal with being process #1 which means cleaning up after children whose parent’s have died, etc. It seems far simpler to arrange for D-BUS to send an event to init when it needs a service to be started, and focus on being a very good message passing system. The IPC mechanism used by upstart is not currently D-BUS because of various problems, however it’s always been expected that even if init itself doesn’t communicate with D-BUS directly, there would be a D-BUS proxy that would ensure messages about all init jobs and events would be given to D-BUS and D-BUS clients could send messages to init to query and change the state of jobs. What is the implementation plan? Because this is process #1 we are changing, we want to make sure that we get it right. Therefore instead of releasing a fully-featured daemon and configuration to the world, we’re developing it in the following stages:
  1. Principal development; at the end of this stage the daemon has been implemented and can manage jobs as described.
  2. Replacement of /sbin/init while running the existing sysv-rc scripts. This is the shake-down test of the daemon, can it perform the same job as the existing sysvinit daemon without any regressions?
  3. /etc/rcS.d scripts replaced by upstart jobs. These consitute the majority of tasks for booting the system into at least single-user mode, and contain many of the current ordering problems and race conditions. If the daemon solves the problems here, it will be a success.
  4. Other daemon’s scripts replaced by upstart jobs on a package-by-package basis; this will be an ongoing effort during which upstart will continue running the existing sysv-rc scripts as well as its own jobs. During this time the event system may be tweaked to ensure it truly solves the problems we need.
  5. Replcement of cron, atd, anacron and inetd. This will happen alongside the above and result in a single place to configure system jobs.
  6. Modification of other daemons and processes to send events to init instead of trying to run things themselves.
The current plan is that we will be at least part of the way into stage #3 by the time edgy is released, with that release shipping with upstart as the init daemon and the most critical rcS scripts being run by it to correct the major problems For edgy+1 we hope to have completed stage #5 and be at least part of the way into the implementation of stage #6. From the start of development of edgy+2, no new packages will be accepted unless they provide upstart jobs instead of init scripts and init scripts will be considered deprecated. What state is it in now? The init daemon has been written and is able to manage jobs as described above, receiving events on the control socket to start and stop them. This has now been uploaded to the Ubuntu universe component in the upstart package for testing before it becomes the init daemon. We welcome any experienced users who want to help test this; install the package and follow the instructions in /usr/share/doc/upstart/README.Debian to add a boot option that will use upstart instead of init. If your system boots and shut downs normally (other than a slightly more verbose boot without usplash running) then it is working correctly. Other types of events will be added as required during development and testing. Currently only a basic client tool (initctl) has been written, compatibility tools such as shutdown will be written over the next week or two before it replaces our sysvinit package.

Bastian Blank: New machine to play with

Some people already know it, I got a new machine to play with. It is a Sparc running Debian etch:
# uname -a
Linux zee 2.6.17-2-vserver-sparc64 #1 SMP Sat Aug 26 12:28:58 UTC 2006 sparc64 GNU/Linux
The kernel is not yet available in Debian, it is handbuilt. But I hope that this will change soon. It is a small machine with some CPUs:
# grep ncpus /proc/cpuinfo
ncpus probed    : 32
ncpus active    : 32
It only have a little bit of RAM:
# grep MemTotal /proc/meminfo 
MemTotal:     33257432 kB
And really too less disk space:
SCSI device sda: 143374738 512-byte hdwr sectors (73408 MB)
SCSI device sdb: 143374738 512-byte hdwr sectors (73408 MB)
Yes, it is a T2000 from Sun with 8 real CPU cores:
cpu             : UltraSparc T1 (Niagara)
fpu             : UltraSparc T1 integrated FPU
prom            : OBP 4.19.0 2005/10/27 17:24
type            : sun4v
Each of the 8 cores can run 4 threads at the same time, Sun calls this CoolThreads, and Linux sees this as virtual CPUs.

Jeff Bailey: When I breathe in...

Wow, haven't had time to post in a while. Some major highlights over the past couple of weeks:

(longish entry, hidding behind an lj-cut to avoid flooding various aggregators...)



Opus and ConCentric

Angie and I went to Opus and ConCentric. For those not familiar, it's an annual UU Young Adult (18-35yr olds) campout and spritual retreat. When we're there, we do activities, workshops, worship, cook, clean, sit around the fire, swim, talk, laugh, cry, and all the things that come when you throw people together in a space for 10 days. Every time that I go, I both miss it and am glad when I leave. Over the course of the year, I start to think about only the good parts and when I go back. But when I'm there, there's tempers, hurt feelings, things go wrong. At the same time, when I'm there, I meet some of the people I'll connect with the strongest over the course of the year. Sometimes just a feeling or a song from the camp will help me reconnect and push through in the year in between.

This Opus in particular was interesting. I'd been away for two years, after having been on the planning committee for two years. There were things I loved: There were new people, new songs, new games. I learned to crochet, swam naked under the stars, reconnected with many old and new friends. This particular camp in Maryland is the one at which I proposed to Angie in 2000. There were things that sucked: The cooking staff had trouble getting food out for the first few days, which resulted in one of them quitting; a few hospital visits for people onsite stressed my friend who was the first aid attendant. Fortunately, Angie and I have worked in camp kitchens before, and she was able to step in and fill that roll. A ...

I need a collective for a group of people that doesn't sound like 90's corporate psychobabble. 'team's are things that compete. Maybe I'll steal the word from the current Ubuntu release.

... knot of 4 of us are applying to be kitchen staff next year. I have to be careful what I commit to this year, since in general all commitments I'm making to people officially expire in February. I can't tell what life will be like on the other side of having a child!

It's also hard going to a camp where we've been before, I think. My memories of that camp are mostly centred around people who weren't there. One of whom is dead, many have aged out, many just didn't come this time. I miss all of you.

For the drive down, Angie and I rented a Smart Car from Avis. (Photo by Simon Law) Driving down to Maryland was fun. These things aren't for sale in the US until 2008, and there were many pictures of us taken on the drive and at gas stations. At least a dozen SUV drivers walked over to us to ask the mileage. It sustains 120km/h with no problems and doesn't get blown around too much on the highway. A few times I took it up to 130km/h, but at that point it starts to blow around alot. It *is* tiny, though. Packing enough for Angie and me to travel for 10 days was a bit tight, and driving a Yarris when I got back felt *huge*. On the way down, including Angie going to work once, and us taking a detour, the Diesel cost us $35, and the tolls cost us $40.

We did the drive down in two days. The first day making sure that we crossed the border and getting from Montr al to Albany. On the drive down on the second day, we didn't want to hit the NJ Turnpike at 5pm on a Friday, so we stopped for lunch at a place called Eduardo's Pizza in Boonton, NJ. They had some of the best pizza we've ever had, and the nicest staff. They gave us directions to a waterpark nearby which had a neat ride called High Anxiety (Picture 2 Picture 3). I prefered to call it Funnel of Doom. The park was overpriced for a full day for what you'd get, but the half-day discount prices were worth it and the park was mostly empty because of a state fair.

The drive back was mostly a day of hard driving. Being at camp was wonderful, but we wanted our own *beds*. We got a bit lost coming back, and somehow paid less than $10 in tolls, despite travelling in the same amount of time. I like adventures like that.

So what's next? Re-entry into the world is almost done, but now there's re-entry into the mainstream UU communities. This is the part I find the hardest. Opus is such an idealised world, where we talk about anti-oppression work, changing the world, changing ourselves to help create this new world. The worships are spritually alive (Elandria, YOU ROCK MY WORLD!) and the group doesn't stay long enough for alot of politicking to set in. Our jobs leaving there are always to take a part of that community and recreate it elsewhere. I think it's the toughest job I've ever had.

Go out into the highways and byways. Give the people something of your new vision. You may possess only a small light, but uncover it, let it shine, use it in order to bring more light and understanding to the hearts and minds of men and women. Give them not Hell, but hope and courage. Do not push them deeper into their theological despair, but preach the kindness and everlasting love of God.
- John Murray


For whatever God means to you of course. Blessed be. =)

Russell Coker: more on anti-spam

In response to my last entry about anti-spam measures and the difficulty of blocking SPAM at the SMTP protocol level I received a few responses. Brian May pointed out that the <span style="font-weight: bold;">exiscan-acl</span> feature of <span style="font-weight: bold;">Exim</span> allows such blocking, and Johannes Berg referred me to his web site <a href="http://johannes.sipsolutions.net/Projects">http://johannes.sipsolutions.net/Projects</a> for information on how he implemented <span style="font-weight: bold;">Exim</span> SPAM blocking at the SMTP level.<br /><br />It seems that this is not possible in Postfix at this time. The only way I know of to do this in Postfix would be to have a SMTP proxy in front of the Postfix server that implements the anti-SPAM features. I have considered doing this in the past but not had enough time.<br /><br />Also a comment on my blog criticises SORBS for blocking <a href="http://tor.eff.org/">Tor (an anonymous Internet system)</a>. As I don't want to receive anonymous email and none of the companies I work for want to receive it either this is something I consider a feature not a bug!

Russell Coker: big and cheap USB flash devices

It's often the case with technology that serious changes occur at a particular price or performance point in development. Something has small use until it can be developed to a certain combination of low price and high performance that everyone demands.<br /><br />I believe that USB flash devices are going to be used for many interesting things starting about now. The reason is that 2G flash devices are now on sale for under $100. To be more precise 1G costs $45AU and<br />2G costs $85AU.<br /><br /><a href="http://www.coker.com.au/hardware/usb.html">http://www.coker.com.au/hardware/usb.html</a><br /><a href="http://www.coker.com.au/hardware/usb.html"><span class="" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"></span></a><br />The above page on my web site has some background information on the performance of USB devices and the things that people are trying to do with them (including MS attempting to use them as cache).<br /><br />One thing that has not been done much is to use USB for the main storage of a system. The <a href="http://laptop.media.mit.edu/">OLPC </a>machines have been designed to use only flash for storage as has the <a href="http://familiar.handhelds.org/">Familiar</a> distribution for iPaQ PDAs (and probably several other Linux distributions of which I am not aware). But there are many other machines that could potentially use it. Firewall and router machines would work well. With 2G of storage you could even have a basic install of a workstation!<br /><br />Some of the advantages of Flash for storage are that it uses small amounts of electricity, has no moving parts (can be dropped without damage), and has very low random access times. These are good things for firewalls and similar embedded devices.<br /><br />An independent advantage of USB Flash is that it can be moved between machines with ease. Instead of moving a flash disk with your data files you can move a flash disk with your complete OS and applications!<br /><br />The next thing I would like to do with USB devices is to install systems. Currently a CentOS or Red Hat Enterprise Linux install is just over 2G (I might be able to make a cut-down version that fits on a 2G flash device) and Fedora Core is over 3G. As Flash capacity goes up in powers of two I expect that soon the 4G flash devices will appear on the market and I will be able to do automated installs from Flash. This will be really convenient for my SE Linux hands-on training sessions as I like to have a quick way of re-installing a machine for when a student breaks it badly - I tell the students "play with things, experiment, break things now when no-one cares so that you can avoid breaking things at work".<br /><br />The final thing I would like to see is PCs shipped with the ability to boot from all manner of Flash devices (not just USB). I recently bought myself a new computer and it has a built-in capacity to read four different types of Flash modules for cameras etc. Unfortunately it was one of the few recent machines I've seen that won't boot from USB Flash (the BIOS supported it but it didn't work for unknown reasons). Hopefully the vendors will soon make machines that can boot from CF and other flash formats (the more format choices we have the better the prices will be).

Russell Coker: wasted votes

In a mailing list to which I subscribe there is currently a discussion on US politics with the inevitable discussion of <span style="font-weight: bold;">wasted votes</span>. As I don't want to waste my writing on this topic on a closed list I'm posting to my blog.<br /><br />There is ongoing discussion on the topic of <span style="font-style: italic;">wasted votes</span>. As a matter of principle, if a vote is considered to be wasted, then that should be considered a failure of the electoral system.<br /><br />Having representatives for regions makes some sense in that a regional representative will have more interest in the region than a central government with no attachment to the region. I expect that representatives of regions were initially used because it was not feasible for people to vote for people that weren't geographically local. Now there is no real requirement for geographical locality (only a very small fraction of the voters get to meet the person they are voting for anyway) but having a representative for a region still makes sense.<br /><br />The requirement for a regional representative means that if you live in a region mostly filled with people who disagree with you then your vote won't change much. For example I live in a strong Labor region so the REAL fight for the lower house seat (both state and federal) occurs in the Labor party room.<br /><br />My vote for the senate counts as that is done on a state-wide basis. So of the two votes entered in one election one of them can be considered to not be <span style="font-style: italic;">wasted</span>.<span style="font-weight: bold;"></span><br /><br />For the US system, the electoral college was developed in a time when it was impossible for the majority of voters to assess the presidential candidates, and it solved the requirements of those times reasonably well. Today it is quite easy to add up all the votes and use either a simple majority or the "Australian ballot".<br /><br />Currently there is some controversy over the actions of Senator Joe Lieberman who lost the support of his party and then immediately declared that he would stand as an independent candidate. I believe that this illustrates a failure of the electoral system. It should be possible to have multiple candidates from each party on the list. In the Australian system it is possible to do that, but as they are in random order on the voting cards no-one would be sure of which candidate of the winning party would get the seat unless there were actual reasons for preferring one candidate over another (which sadly often isn't the case). This is good for voters (the minority of voters who care enough about internal party policies to prefer one party candidate over another should make the decision) but not good for the candidates who want a better chance of winning without actually demonstrating that they can represent their voters better than other candidates.<br /><br />The Australian government system has nothing equivalent to the US presidential election. The prime minister is voted in by the members of parliament. So there is little chance of getting multiple candidates from one party contesting one position. For the US presidential election I think that the best thing to do would be to have an "Australian ballot" and permit multiple candidates from each party. For example you could have Bush and Cheney running as candidates for president with each promising to make the other their VP if they get elected. With the Australian ballot it wouldn't matter if you put Bush and Cheney as the last two votes on your ticket, the order you use for them will still matter.<br /><br />I think that with the US presidential and state governor elections there is enough knowledge of the candidates among the voters to make it worth-while for each of the major parties to run multiple candidates.<br /><br />One of many advantages of having multiple candidates is that you might have real debates. If the main candidates from the two big parties have a set of strict rules for their debate that prevents any surprise then the people who are the less likely candidates from those parties (and who therefore have less to lose) could go for a no-holds-barred debate with a selection of random members of the public asking questions.<br /><br />Of course none of this is likely to happen. Any serious change would have the potential to adversely affect at least one of the major parties, and any improvement would necessarily have a negative impact on most of the current politicians. Votes ARE being wasted, and most politicians seem to like it that way.

Russell Coker: common mistakes in presentations

I attend many presentations and have seen many that had a lower quality than they should have. Some things are difficult to change (for example I have difficulty speaking slowly). But there are some things that are easy to change that many people seem to get wrong and I will list some that stand out to me.<br /><br />Unreadable presentation notes. You have to use a reasonably large font for it to be read by most people in the room. This means probably a maximum of about 16 lines of text on the screen. I have attended some presentations where I couldn't read the text from the middle of the room!<br /><br />Too many slides. On a few occasions I have heard people boasting about how many slides they are going to use. An average of more than one slide per minute does not mean that you have done a good talk, it may mean the exact opposite. One of my recent talks had 8 slides of main content plus an introductory slide while waiting for people to arrive and a Q/A slide with my email address and some URLs for the end. The speaking slot was 30 minutes giving an average of a slide every 3-4 minutes.<br /><br />Paging through slides too quickly. If you have 60 slides for a one hour talk then you will have no possibility of going through them at a reasonable speed (see above). Even if you have a reasonable number of slides you may go through some of them too quickly. On one occasion a presentation included a slide with text that was too small to read, I tried to count the lines of text but only got to 30 before the presenter went to the next slide.<br /><br />Using slides as reading material for after the lecture. Sure it can be useful for people to review your notes after the lecture, and it's generally better to give them the notes than to have them be so busy writing notes that they miss somehting you say. But if you want to have something verbose and detailed that can't be spoken about in the lecture then the thing to do is to write a paper for the delegates to read. Serious conferences have papers that they publish (minimum length is generally 4 solid A4 pages) which are presented by a talk of 30 to 60 minutes. That way people get a talk as an introduction and they get some serious reference material if they want to know more. Also people who miss the talk can read the paper and get much of the value. Is it not possible for slides to take the place of a paper.<br /><br />Bad diagrams. Diagrams should be really simple (see the paragraph about readable text). It is OK to have diagrams that don't stand alone and need to be described, a lecture is primarily about talking not showing pictures.<br /><br />When simplifying diagrams make sure that they still represent what actually happens. Simplifying diagrams such that they don't match what you are talking about doesn't help.<br /><br />Animations. The only thing that is animated in the front of the room should be the person giving the presentation. Otherwise just do the entire thing in flash, publish it on the web, and don't bother giving a talk.<br /><br />Staged content, particularly when used as a <span style="font-style: italic;">surprise</span>. Having a line of text appear with every click of the mouse forces the audience to stay with you every step of the way. This may work for primary school students but does not work for an intelligent audience. Give them a screen full at a time and let them read it in any order that they like. This is worst when they someone tries to surprise the audience with a punchy line at the end of every paragraph. Surprising the audience once per talk is difficult. Trying to do it every paragraph is just annoying.<br /><br />One final tip that isn't as serious but is not obvious enough to deserve a mention. Use black text on a white background, this gives good contrast that can be seen regardless of color-blindness and with the bright background the room is lit up even if all the lights are off. The audience wants to see you and sometimes this is only possible by projector light. Also the more light that comes out of the projector the less heat that builds up inside, it can really mess up a presentation if the projector overheats.

Russell Coker: blocking spam

There are two critical things that any anti-spam system must do, it must not lose email and it must not cause damage to the rest of the net.<br /><br />To avoid losing email every message must be either accepted for delivery or the sender must be notified.<br /><br />To avoid causing damage to the rest of the net spam should not be bounced to innocent third parties. To accept mail, process it, and then bounce messages that appear to be spam will result in spam being bounced to innocent third parties.<br /><br />The only exception to these two conditions is for virus email which can be positively identified as being bad and therefore they can be silently discarded. For any other category of unwanted mail there is always a possibility of a false-positive and therefore the sender should be notified if the mail will not be accepted.<br /><br />Therefore the only acceptable method of dealing with spam is to reject it at the SMTP protocol level. Currently I am not aware of any software that supports Bayesian filtering while the message is being received so that it can be rejected if it appears to be spam, it would be possible to do this (I could write the code myself if I had enough spare time) but AFAIK no-one has done it.<br /><br />The most popular methods of recognising SPAM before it is accepted are through DNSBL lists (DNS based lists of IP addresses known to send SPAM), RHSBL lists (DNS based lists identifying domains that are known to be run by spammers), and Gray-listing (giving a transient error condition in the expectation that many spammers won't try again).<br /><br />Gray-listing is not effective enough to be used on it's own, therefore DNSBL and RHSBL systems are required for a usable email system. Quickly reviewing the logs of some of my clients' mail servers suggests that the DNSBL <span style="font-weight: bold;">dnsbl.sorbs.net</span> alone is stopping an average of 20 SPAMs per user per day! The <a href="http://www.sorbs.net">SORBS</a> system is designed to block open relays, machines that send mail to spam-trap addresses, and some other categories of obviously inappropriate use. The number of false-positives is very small. On average I add about one white-list entry per month, which isn't much for the email for a dozen small companies. For every white list entry I have added I have known that the sender has had a SPAM problem. I have not had to add a white-list entry because of a DNSBL making a mistake, just because people want to receive mail from a system that also sends SPAM.<br /><br />I was prompted to write about anti-spam measures by an ill-informed and unsubstantiated comment on my blog regarding DNSBL services.<br /><br />If anyone wants to comment on this please feel free. But keep in mind that I have a lot of experience running mail servers including large ISPs with more than a million customers. The advice I give in terms of anti-spam measures concerns techniques that I have successfully used on ISPs of all sizes and that I have found to work well even when both ends use them. Make sure that you substantiate any comments you make and explain them clearly. Saying that something is <span style="font-style: italic;">stupid</span> is not going to impress me when I've seen it work for over a million users.

Christine Spang: Finally Official

So earlier today (or yesterday, if you want to be technical) I final dragged myself down to Stratton to pick up my MIT student ID and tell the orientation dudes that I’m here, even though I’ve already been here for two months. I ended up being tackled by a rep from Bank of America as soon as I stepped into the building, who assumed I was Not A Freshman™ when I mentioned that I in fact am already the possessor of not one but two Bank of America bank accounts. The wearing of the bike helmet probably helped there, since I doubt many other freshmen are biking to orientation. The ID itself is, to put it shortly, kind of rediculous looking. What with the bubbly background and the shiny “MIT” holograms all over it. It’s definitely better than my currently-used-as-ID New York State driver’s permit though, which has “UNDER 21″ plastered all over it in rather large letters and a rediculously old photo. Which can get pretty annoying sometimes. Now, I just hope I can get the card activated for access to the Media Lab pretty quickly so I’ll stop locking myself out trying to go to the bathroom by the elevator after 6 PM or so. I don’t know about you, but I found that pretty annoying. And I never did manage to figure out exactly what time they started locking the doors, so I did it at least three or so times. Even though my last day of work was technically Friday, I’ll probably go in for a couple hours on a day or two next week. I plan on being a real UROP there during term anyway. Other than the ID, the other major things I picked up were “The Hitchhiker’s Guide to Orientation” which actually does mention some things that may end up being fun during orientation, a t-shirt that just screams frosh, and a book called How to Get Around MIT which actually isn’t really a whole lot about getting around MIT, and looks like it may even have some useful info in it. I blame it on the fact that the book’s written by students. Orientation starts Sunday, but I’m skipping that day to go on a 50-ish mile bike ride on a rather sexy borrowed touring bike. Word.

25 August 2006

Julien Danjou: DeFuBu contest #2

Bug Welcome to this 2nd issue of the DeFuBu contest, the monthly championship of the funniest bug reported to the Debian BTS. The challengers How the vote has been done Five Debian related people voted for these bugs: Roland Mas, Alexis Sukrieh, Cl ment Stenac, kolter and Yves-Alexis Perez. Full ranking Bugs Challengers The winners Notes To participate, simply drop me an email with a bug number. About DeFuBu

Christophe Prud'homme: pkg-scicomp: packages in progress

In the pkg-scicomp project a few packages are in progress<br /><br /><ul><li><span style="font-weight: bold;">freefem++</span> a very powerful language to solve pde, right now the remaining issue is updating all files and fix the licence/copyright</li><li><span style="font-weight: bold;">trilinos</span> a meta-package that contains many numerical libraries with an emphasis on robust parallel algorithms. Right now 6.0.19 is in the box, I think I will wait for the version 7<br /></li><li><span style="font-weight: bold;">parmetis</span> well parametis is already taken care of by hazelsct but I wanted to modify it and provide some headers from metis. Patches will be sent to hazelsct.</li><li><span style="font-weight: bold;">arprec</span> an arbitrary precision numerical type in C++, I need to update to the last version which fixed licensing issues</li></ul>I am happy that it is possible to have a large numerical software suite in Debian which you will have difficulties to find in any other distro.

23 August 2006

Amaya Rodrigo: Murphy's Power Supply

Short summary: Server down.

Isn't Murphy absolutely lovely? Hardware will, of course, break on weekends.

The light in my kitchen's ceiling stopped working a month ago. I changed the light bulb, a week ago, but it didn't help, so on Friday I asked H ctor to take a look at it. Absolutely low priority. The cable was literally roasted, so he asked me to cut the power off, in order to replace the cable. I did, without remembering to propperly power off the server. What are journalling filesystems for anyway? The UPS battery used to perform much better, oh the decay, so the server is abruptly shut down after a couple of minutes. As H ctor was not able to "quickly" fix the kitchen light, and I was not in a hurry, and do not really care about the damn light, we just didn't look at it any further. So far so good.

Some hours later, at midnight (maybe that's technically Saturday, but it really felt like a Friday, I swear to the allmighty vegetarian spaghetty monster with no meat balls whatsoever), I try to power the machine up. And a sadly familiar ritual is about to be performed. Since I moved the server into "the run down attic I call home" I dreaded the moment I had to reboot the machine. It would come up, you could see the blue case fans light up and spin, the hard drives and CD drives be initialized, but no beep, no POST, no nada.

Aenima, my solu, my baby, my serverThe ritual dance would consist of me submissively kneeling down to power on and off in a random sequence the back switch, the front one, the UPS, the reset buttom, curse, turn it completely off for random amounts of time, pull the cable in and out, curse some more... never really finding out when or what would make it fully come to life. But eventually it did, after 5, 10, 15 minutes, without any reproduceable pattern, it did. Not on Friday night. Or saturday. I spent most of the night (until 6 am) performing the ritual, googling like crazy, fustrated and eventually plain angry. All I could find was "the mobo is b0rked, exchange it". But I knew it was not. I knew the CPU was fine, the MoBO was fine, the memory was fine, because when I finally managed to get it to power up, all worked well!

But Miry came home and helped me out, coming up with a valuable clue: The mobo was not getting enough power form the PSU, so I got a spare PSU from H ctor and swapped them. The baby came up instantly. So I was very pissed off.

The good thing about it all is:
- I learned that power supply units sometimes fail. Even my wonderful, 100 EUR BQuiet! PSU.
- I missed completely all of the udev fun. Well, at least on my machines, but there's a couple of people I needed to help out today.

On Monday I got a new power supply, it is a joke of a plastic, for SM's sake! plastic!?, PSU with a couple blue fans. Pics of old nice one and crappy new one here. My sitting room looks like a space craft, and sounds like a plane is about to take off. The cats have not complained yet. They have not disconnected my land line (yet).
Update: The reason I bought this PSU is I have quite a big case, a case I can ride! So I needed Log cables. And I had to go for a cheapo modder plstic thingy, simply because I could not afford anything better.

I hate hardware.

New and old PSU

Wouter Verhelst: Accept to gettext

In 2003, I needed to write a PHP site that would need to be internationalized, and decided to use gettext() for this purpose. While PHP has proper support for gettext, it unfortunately does not have any builtin way to easily convert the data in the Accept-Language and Accept-Charset HTTP headers into something that can be understood by gettext. So I sat down, and over the course of an afternoon, I wrote 83 lines of PHP code (excluding comments) that would do just that: parse the above two headers, and return a gettext string which represents the best match out of a set of strings specified. It's pretty easy in use, and was written quite generically, so I put a GPL tag on top of it, put it online, added a comment to the documentation of the gettext stuff in the PHP manual advertising the URL, and stopped thinking of it. The project that I wrote this file originally for eventually wasn't even finished; today, I don't even recall what it was. In early 2005, I received a mail from Matthew Palmer thanking me for the code, and telling me that he'd incorporated it in IRM of which he's part of the development team. Which reminded me of its existance. For a short while. Today, I was cleaning out my INBOX, and stumbled upon this old email again. Which got me curious, so I started googling for those 83 lines of code that I'd entrusted to the Free Software world three years ago. I must say I'm pleasantly surprised. My file accept-to-gettext.inc seems to be used in a variety of free software projects, including of course IRM, but also the GnuCash website, or in this french educational thing called SLIS. It seems to be quoted in its entirety on some turkish PHP-related forum. It has been adapted to support different translation systems. And so on... the list is rather long. Can't say I'm not proud. And yet, the code contains a rather silly bug: the assumption that character set encodings are somehow linked to translations. They are not; gettext is perfectly capable of transparently transcribing one character set to another. Oh well...

Evan Prodromou: 6 Fructidor CCXIV

Argh... trying to get caught up on this journal in the wee hours of the morning here in wt:Odense. I've had pretty bad jet lag this trip -- I've never been particularly good with time changes, and the North-America-to-Europe switcheroo really throws me off. So by 2PM I'm falling down on my feet, but at 4AM I'm rarin' to go. Odense has been a particularly nice place to visit. We got into wt:Copenhagen a few days ago, and crashed at the Airport Hilton there. It's actually attached to the airport -- you can just walk right in. Maj got a good deal on a room, and we figured it would make sense to sleep with the baby right there, rather than fight the train system to find another hotel in the city centre. After a free brunch including many different kinds of pickled fish, and a looong nap, we took the train into the Central Station in Copenhagen, right by Tivoli Gardens. There were lines around the block for the amusement park, but we skirted them and headed into the pedestrian area near City Hall. Based on a recommendation in Wikitravel, we went to the line of caf s and restaurants off of Nyhavn, a sliver of water poking into the heart of the town. It was a great walk, and we had a casual sidewalk dinner at a place called Carl's Corner. The canal was lined with boats that had been converted to restaurants -- we may try one when we go back to Copenhagen this week. tags:

Wikisym The next morning I got up at dawn and got on a train to Odense for Wikisym. I missed my connection at the Central Station, and all the trains were running late, so I got real confused about where to go. The fact that I was carrying all of our luggage didn't help matters. But a few false starts later, I managed to get myself oriented and on my way. The train ride was beautiful -- wt:Denmark is a very pretty country, with rolling grassy hills and clusters of small, peak-rooved houses by the tracks. The trip from Copenhagen to Odense takes you from wt:Zealand to wt:Funen, across a long rail bridge. Very impressive. Once I'd landed in Odense and got myself organized, I slipped into the back of the room for Wikisym to catch the last few minutes of Angela Beesley's keynote address. Angela might be the hardest-working person in Wikidom -- she's a tireless community organizer not only for the Wikimedia Foundation sites like Wikipedia but also for Wikia's sites. After her talk, we did an wp:Open Space session, which continued throughout the day, interlaced with the academic presentations. I'm getting to be a big fan of Open Space; it was really effective for RecentChangesCamp, and I think it works well for organizing a conference. Ted Ernst led the sessions, with the help of Gerard Muller of the Danish Open Space Institute. Probably the most productive Open Space session for me was the one about non-text wikis -- using wiki techniques for video, audio, image and visual language editing. I'm fascinated by this stuff, and it's great to hear that some people are working with SVG and SMIL to do in-browser multimedia editing. The consensus is that the technologies Aren't There Yet but are around the corner. The other major thing I think I picked up from this session was Eugene Eric Kim's discussion of Wiki Ohana. Ohana is the Hawaiian word for family; the Wiki Ohana is a project to develop some interoperability and a transmission of our Wiki principles to new members of the family. I think it's a great idea and I'm going to try to get involved further. tags:

Odense We had a great walk around Odense's core pedestrian area. It's not exceptional for Northern European towns -- it reminds me of the Netherlands, and Maj of Switzerland -- but the car-free cobble-stone walking areas are a real relief after years in North America. We have some pedestrian areas in Montreal, of course, but not in the same way. Odense is the childhood home of wp:Hans Christian Anderson, and the city is decorated with statues of HCA, and of characters from his stories (the Tin Soldier, Thumbelina, etc.) It gives a kind of fairy-tale air to the town. I'm not sure they should feel so proud of being Anderson's childhood home, though -- from everything I've read, his childhood was nightmarishly cruel, and his abysmally poor family was harshly treated by the society here. But, of course, that's in the past. Now, we had a real nice time walking around. Amita June likes tottering along on the cobblestones, and shouting really loud in the small streets to hear the echos. We ended up having dinner in a place called the Cuckoo Caf -- great food under a spreading tree in a little square. This morning -- no, yesterday morning -- Maj got up and took the first sessions, and Amita June and I slept in. We went off into town again to find a bakery, and shared a chunk of brunsviger, a sugary pastry that will probably rot out her tiny teeth. I had a cup of tea, which was less than satisfying. I've been trying to cut caffeine out of my life, so we've been having decaf at home, but they don't seem to serve it in caf s here. I'm a creature of habit, and I like the taste of coffee even if it doesn't have the caffeine oomph. tags:

CAPS LOCK SUCKS In response to Lars's defense of CAPS LOCK: Lars, you ignorant slut. Caps lock has been the bane of online culture since the invention of mixed case in the late 1960s. It is a hallmark of clueless newbie-ism for people who are too analphabetic to remember the exceedingly simple English capitalization rules. The only legitimate purpose for CAPS LOCK is for doing C macros and defines, but hey, who writes in C any more? Anyways, that's just lazy programming. A real programmer would write a macro to capitalize the names of other macros where used. That's just good programming practice. Another important point is that CAPS LOCK is Eurocentric and imperialistic. What value does CAPS LOCK have for someone writing in Eritrean, Malayalam or Ojibwa? None at all. Yet dead white males like Lars Wirzenius want to force their CAPS LOCK cultural hegemony on an increasingly global culture. For shame. The worst thing about CAPS LOCK is that it squats in the middle of the most important letters on the keyboard, like a rat trap waiting to spring. Big and ugly, it always catches your left pinky when you're reaching for Ctl or Shift or Tab or A or whatever. Key-chording is here to stay, and CAPS LOCK not only ignores this important UI development but actively interferes with it. Modal interfaces are rightfully extinct, and CAPS LOCK needs to go the way of the dinosaur. It's time to eliminate this obsolete key once and for all. (This message brought to you by The Taxpayers Against Caps Lock Coalition. I, Evan Prodromou, endorse this message.) tags:

Erich Schubert: Stepping beyond tag clouds

Tag clouds [en.wikipedia.org] are a current must-have for web 2.0 applications. Examples can be found for bookmarks, blog entries, photos, music or books. Tag clouds are hip, because they're a dynamic feature and show the "Zeitgeist" [wikipedia]. They given an overview on the users ("California" in flickr) or on current hot topics ("Israel", "Lebanon" in technorati). However, tag clouds also have severe limitations. First of all, they're arbitrarily ordered. Usually alphabetic, so there is no content relationship among the entires. Secondly, they only show an excerpt, since there are usually much more tags than fit on the screen. Thirdly, they're atomic information, whereas relations as used e.g. in RDF [wikipedia] can convey much more complex information. I'm trying to push tag clouds to a next level. They're a gimmick right now, but maybe we can make them to a powerful navigation tool? Together with Enrico Zini I've just created my first tag cloud (I've skipped making a tag cloud for my blog...). Well, it quickly evolved beyond a tag cloud. You could maybe call it a tag sky. Or tag forest. I'm not using my blog or something like this for the tag cloud. That would be quite boring, I'm not doing real tagging on it. Instead I'm using software tags. The Debtags project, led by Enrico and I, has been working on software tags for some years now during our spare time. We have about 600 tags in a dozen of facets, and 15000 software packages (I don't have the number ready how many of that are somewhat tagged already). Well, the tagging efforts are still far from complete, thats why we're currently working on an AI to assist tagging efforts, too. We generated two different renderings of the tag clouds for you: one separated cloud per facet, and all folded into one big cloud. Oh, and actually click on one of the tags, it will take you to a more complex tag-based navigation tool and a tagger. So what makes these different from the usual tag clouds you see everywhere (apart from the sheer size, sorry about that. Maybe we'll add buttons next to hide/show tags with low occurrence numbers)? Well, the tags next to each other aren't completely unrelated any more, since they are (in both renderings) grouped by their facet. This makes it easier to locate something - go through the red facets first, then look at the tags in the group. I'm thinking about a second step, which would involve dynamic expanding details in the tag cloud, or hiding them, finally transforming the tag cloud into a true navigation utility beyond a "single click filter". In my final diploma thesis, one of the topics to work on suggested by my professor is doing "tag clouds" (i.e. weighted lists) for relations. The prototype will likely be integrated with the IkeWiki semantic wiki. I don't have a clear vision of how the "relation cloud" will work or look like, but I havn't started with my tesis yet anyway. I currently imagine up to three clouds (corresponding to the empty places in the relation) that will dynamically adopt to the choices already made by the user. Some zooming will probably be needed, too. Another use of tag clouds would be a visualization of the AI - the weights could be chosen by how sure the AI is about this tag; the cloud would then describe the AIs rating of a software package description. If you have some ideas, good links, relevant papers or other feedback, just send me an email to erich@debian.org. Thank you.

Next.

Previous.