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:

=SUMME(A1:A20)
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:
=STABW(A1:A20)
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:
=MINUTE(A1)*60+SEKUNDE(A1)
So you basically need another column, filled with the above formula, say column B, and then you can compute the standard deviation:
=STABW(B1:B20)

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…
UPDATE:
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
#ALL ALL = (ALL) ALL
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 *:

root:*:13917::::::

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…