Blog

Left-Leaning Red-Black Trees


Red-Black Trees were originally designed by taking a 2-3-4 tree and unrolling the big nodes into a cluster of simpler binary tree nodes. The 2-3-4 node operations are mapped to binary tree operations. Now Robert Sedgewick presented a new tree called Left-Leaning Red-Black Tree. A Red-Black tree has a lot of cases you have to consider, especially if you delete a node. This makes the code complex. Left-Leaning Red-Black Trees are a simpler variant of Red-Black Trees. They are simpler to implement (less code) while maintaining the nice features of Red-Black Trees. Less code means faster insertion and deletion, but there are no benchmarks yet. Once Bob released his new book this would be a nice improvement for csync in…

Novell Hack Week


The second Hack Week at Novell has started yesterday. I'm working together with Sven Schober on the rewrite of lomoco. lomoco is a library and a commandline tool to control Logitech mice under Linux. lomoco can configure vendor-specific options on Logitech USB mice (or dual-personality mice plugged into the USB port). All recent devices will be supported in future (e.g. the MX Air). You can checkout the code with git: git clone git://git.lomoco.org/lomoco.git lomoco

dovecot dspam plugin


I've found the dovecot dspam plugin and looked at the code. It forks and calls the dspam binary directly for every mail. I didn't like this behavior, so I've migrated it to use libdspam and added support to configure it using variables in dovecot.conf. This is the dovecot dspam plugin that watches a special folder, the SPAM folder. When the MTA delivers a message to the user, it'll first run it through the spam classifier. If it is classified as spam, it'll be delivered to the SPAM folder instead of the normal filtering file the user may have (maildrop, sieve). Now the user has everything classified as spam in his SPAM folder. Everything else wherever the users wants it. This…

Qemu (kvm) internal network setup


I got a new notebook, a nice Thinkpad T61 with virtualization technology. I need to run some Windows system for development so I've decided to use the Kernel based Virtual Machine (KVM). The VMs should communicate over an internal network but should have access to the internet and I want access via network to them. So I setup a bridge with TUN/TAP devices masqueraded to my normal interface. HOST QEMU GUEST1 +---------------+ +--------------+ | 10.10.5.158 | | | LAN ---+---- eth0 | | | | | | | QEMU GUEST2 | +------+ +--+---+---- nic0 | +--------------+ | | tap0---+ | |192.168.100.5 | | | | | tap1---+ | +--------------+ | | | +------+ | | | | | br0 +--+----------------------+----…

lomoco – next generation


I've finished my diploma thesis (more about this later) and started to work on lomoco again. lomoco can configure vendor-specific options on Logitech USB mice (or dual-personality mice plugged into the USB port). Since there are some places where you can find code to control Logitech mice, I decided to write a shared library. We will provide a command line client to configure your mouse. The shared library makes it possible to use it for example in KDE's kcontrol which has his own code for Logitech mice at the moment. Some days ago Peter Feuerer (piie) was able to sniff the commands which have to be send to the G5 to change the resolution. With some already existing hiddev code,…

WengoPhone 2.1rc1


WengoPhone 2.1rc1 has been released today. We migrated the build system to the CMake and added an abstraction layer called owbuild for WengoPhone. It compiles just fine under Linux, MacOSX and Windows on x86, x86_64 and ppc. The last weekend I have fixed a lot of problematic warnings to be sure it works just fine under x86_64 now. Back to WengoPhone. It has some nice new features. Secure voice calls using AES 128 bit encryption (Wengo Wengo) The ability to configure a SIP account on any SIP server Massive stability enhancement on Mac and Linux Several usability improvements WengoPhone 2.1rc1 RPMs for openSUSE 10.2 are available at Packman, here. If you have some problems with sound, install the portaudio package…

Bricked Linksys WRT54G repair instructions


What you need: 1 bricked Linksys WRT54G router with boot_wait=off 1 corkscrew optional: 1 bottle of wine If you have to take courage first, the bottle of wine could help! What to do: Unscrew the antennas and open the router and look for the Intel flash chip. The chip has 48 pins. You can find the numbers on the edges of the chip 1 .. 24 .. 25 .. 48. Time for a big slug of wine! Now use the corkscrew to shorten pin 16 and 17. I have the Linksys WRT54G v2.2, on some older routers you have to shorten pin 15 & 16. Now plug in the power cable and your Linksys should be ping-able now. You can…

Client Integration with Samba


At the beginning of October I started writing my diploma thesis at SUSE Linux in Nuernberg. I'll develop a library and a PAM module to synchronize the home directory from a Linux client to a Microsoft Windows ADS environment and back. The main problem of this subject is to write a file synchronizer which works with the infrastructure we already have and acts like the Windows one. This means a client only file synchronizer which just uses libsmbclient and is as simple as the Windows "Merge Algorithm" used for Roaming Profiles since Windows 2000.