What's with PulseAudio?

After my upgrade to OpenSUSE 11.2, I noticed that VLC was again stuttering when playing videos. A quick check revealed, that the upgrade re-installed the PulseAudio system. Removing all Pulse related stuff fixed the problem. I wonder why, oh why on earth all the sound servers under Linux suck? And why are they default for every installation, if they don't work as expected? I still own a nice SoundBlaster Live, which does sound mixing in hardware, which means I do not even need a sound server, since the card can expect many different audio streams from many applications. Anyway, please, dear sound server developers: If you need to write such a beast of a tool, make it work as expected!


Using YMP URLs from the command line

I just upgraded my home machine to OpenSUSE 11.2, and needed a few programs from secondary repositories. SUSE comes with those nice YMP URLs, which allow one-click installation of programs. However, after my change to using sudo from a few weeks back, this does not work anymore. The One Click Installer does not seem to be compatible with sudo yet. So I now found a workaround, by just using the shell to do the same. E.g. if you wanted to install Amarok 2.2, which does not come with SUSE 11.2, you would do:

/sbin/OCICLI http://software.opensuse.org/ymp/KDE:Backports/openSUSE_11.2/amarok.ymp

Nice, isn't it?


Printing the SSH host key fingerprint

Whenever you update your SSH host keys, your machine becomes compromised, or you re-install your system, the SSH host key will change. To check if there is really a man in the middle attack, it is nice to be able to print out the fingerprint of the SSH host key on the host itself. So locally log onto your machine, and do the following:

$ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub

If you are using the DSA key, you should replace rsa with dsa, naturally.

Computing the standard deviation of timings in OpenOffice

I took some timings during a user study, and tried to use NeoOffice (aka OpenOffice for OS X) to evaluate the results. I needed to compute the standard deviation of the timings. The data itself was in a format MM:SS. What does work is computing the sum, like this:


Note that I am using the german function names. I don't know all the english function names, so you have to check that yourself. Now I tried to compute the standard deviation as follows:


But all I got was 00:00 as the answer. I couldn't get an answer why that is the case, not even by the helpful people in #openoffice.org on Freenode. What I did find out is that you can do the computation when converting the timings to another format, namely just seconds. You can do this in the following way:


So you basically need another column, filled with the above formula, say column B, and then you can compute the standard deviation:



How to scrobble vinyl records

I like to listen to music. Mostly MP3, CD, and my all-time favourite: records. Yeah, those big, black 12" monsters from your youth. Or maybe you don't even remember those...?

It also happens that I like to scrobble my music. What's scrobbling you ask? Easy: It means to track what you have been listening to, using the Audioscrobbling service of last.fm. This gives me the advantage of knowing what I listened to last week, getting recommendations on new music, and such stuff. This automatically happens when I listen using Amarok, Cog or some iPod.

But what do I do with my vinyl records? Turns out, that is simple as well. Just use Scrymble, which is available here: http://ansiform.afraid.org/scrymble/

Requirements are: Firefox, Greasemonkey and the scrymble script. I usually use Konqueror or Safari, but it's ok to have Firefox around for purposes like this. After the installation of Scrymble, you can go to RYM (http://rateyourmusic.com/) to scrobble any album listed there, either in real time, or post auditem.

PS: I actually made up the auditem. Anybody here who knows the correct form? :)


sudo and xauth

Ok, last week I tried to switch my OpenSUSE system to use sudo rather than su for running things like YaST as root. This works relatively well, apart from the fact that I am not able to run X11 programs. My first guess was to edit the sudoers file so that the $DISPLAY does not get reset. So when I would do something like this:

$ sudo echo $DISPLAY

I would not get an empty line, but something like "localhost:10.0". However, this does not work. Would have been too easy. The problem here is that of course the xauth cookie gets in the way. X11 uses cookie based authentication, which is stored in a file in the user's home directory. After some googling I found out that an automatic xauth handling could be implemented in sudo using pam (pluggable authentication modules), but no one has done that so far. There are some people trying to do some magic tricks, involving the merging of root's and the user's xauth files, but I don't like that this needs so many commands and not only a simple sudo command anymore. If I find anything more simple, I will post it here...


Well, one simple solution is as follows:

$ export XAUTHORITY=~/.Xauthority
$ sudo -E xeyes

Instead of using the -E flag (preserve environment), one could add DISPLAY and XAUTHORITY to the variables which are not reset in the /etc/sudoers file. Actually I think that is the most comfortable solution.


sudo vs su

Today I updated my home machine, running OpenSUSE 11.1 at the moment (yeah, I know 11.2 is out, but I always wait a couple of months, for the first round of updates to settle in). I got used so much to OS X's and Ubuntu's style of not having an explicit root user, that I wanted to emulate it in OpenSUSE. So, first thing is to edit the sudoers file:

$ su -c visudo

Then find these two lines and comment them out, and add the other line:

#Defaults targetpw
youruser ALL = (ALL) ALL

This will enable your user called youruser to run any program as the root user (actually any user), only needing his own password. You can of course make this more fine grained. You can allow this user only to run programs as a certain user, but that's not the point here.

What's now still missing is to disable interactive logins or rather the su command. Edit the file /etc/shadow and replace the root password with a *:


The encrypted password is always stored in the second field, delimited by the colons (":"). One problem which I haven't solved yet: I can run sudo /sbin/yast2 now, but that will only fire up the ncurses frontend of yast. I still need to find a way to run the Qt or gtk frontend. Well, this is for another post...


Google Analytics

Just added Google Analytics to my blog. Let's see how that works out. In the past and on my other home, I had been using awstats, running on my own webserver.

VirtualBox Headless

Nice feature of VirtualBox:

VBoxHeadless -startvm "Your VM name"

Run that in screen(1) and be happy! The non-OSE version is supposed to support RDP as well, otherwise make sure SSH is running!


Quick screenshots with Snow Leopard

Today I learned that you can get a full screenshot by pressing cmd-shift-3, and a screenshot of a selected portion of the screen by cmd-shift-4. The files will be put on the desktop, and they will be in PNG format! Until now I've used the screenshot utility, which only produces TIFF files, and is more clunky to use. Hooray!

How to set up git email notifications

This is not very well documented in the git user manual. Here is what I did:

Go to your central repository, not your working copy. There, change to the hooks directory:

cd /path/to/yourproject/hooks
cp post-receive.sample post-receive

If your repo is not a bare repository, you have to change to .git/hooks to do this. The post-receive-email script can be found under contrib/hooks/ in the git documentation (e.g. in /usr/share/doc/git/contrib/hooks on most Linux distributions).

Now configure the email hook:

git config hooks.mailinglist "email1@bla.com, email2@bla.com"
git config hooks.envelopesender yourname@informatik.rwth-aachen.de
git config hooks.emailprefix "New commit: "

Also you should give your project a name:

$EDITOR /path/to/yourproject/description

Hello World

...yes, now also blogging. My reason: Collect all the information that I think is useful to others at one spot.