New Toys II

I thought I’d seen most of it by now. I guess I was wrong.

The new file server, the X2100M2, has problems keeping lockd alive. The process keeps running, but somehow the connection dies on the gigabit ethernet link in between vielapeople and this machine, vielawarez. The only solution until now seems bumping the nfs-kernel-server every five minutes or so. I’ve talked to several people on IRC but the problem doesn’t sound familiar to them. I can think of two possible causes. The kernel version on vielapeople (the client) is 2.6.18 and on vielawarez (the server) 2.6.22. I’ve seen a lot of fixes in the nfs and sunrpc 2.6.22 source tree. Maybe this problem resides there. The other possibility is the second link, the one over the internet. Because both boxes have one NIC connected straight into the internet their hostnames obviously are available to each other. Maybe some weird RPC call uses the actual hostname of the machine and creates an RPC or data connection over the internet, where it doesn’t belong. The showmount utility clearly shows vielawarez accepting the vielapeople.wasda.nl hostname. This setup needs some work.

My new IBM system turned out to be a Pentium D Dual Core 2.8Ghz. It’s still not bad and still way too poweful for the task at hand. But you know, it’s not the Xeon. This isn’t really a problem. The real problem is IBM’s hardware vendor lockin scheme. I didn’t realise this until I tried mounting my brand new Seagate Barracuda 750GB SATA disks. They wouldn’t fit. This system needs special guiding rails for every drive inserted. The disk assembly itself looks really solid (of course I’ve already disected the entire machine) but has no room for standard 3.5″ screws. Normally the rails would be shipped together with the casing, or in a bad scenario, ordered seperately. But IBM doesn’t want you to use custom hardware. I’ve just ordered a 80GB IBM drive just for the rails. The bastards actually managed to put a price of 140 euros on an 80 GB drive. You don’t want to know what they dare to ask for a 750GB drive. And these drives aren’t special at all. Just standard Hitachi bulk drives. After I ripped the rails from the 160GB IBM drive and inserted the 750GB disk it just worked. So it’s just childish business keeping people from using their own parts. I was surprised the thing booted when I inserted custom DDR2 memory. Not everything on this system is bad news. On the contrary. It’s a rock-solid heavy duty case with top notch Intel hardware. Nothing exotic (except the ATI VGA). The cooling is surprisingly silent. During the POST process it does tend to lift a few feet above the ground when it tries to take off. But after it realises it’s at room temperature it turns silent again and lands safely. I wish I had the resources to upgrade it with the optional SAS controller. Now I’ve got to bootstrap a Debian install on software RAID-1. This is going to be a challenge since I’ve been spoiled with hardware RAID all the time.

Finally, the postal service (TNT) managed to loose my laptop twice in a row. I hope I’ll get the thing tomorow. I’ve already got the extended life battery. It looks a bit sad without the x61s sitting on top. The postal service also managed to loose the case badges I’ve ordered from Munnikes. Now the IBM machines have to go without Tux graffiti for a while. At times like these the socialist in me kicks in screaming “The service was so much better when it was owned by the government back in the day!”. Oh well, if they keep screwing things up like this they will be, some day.

Update (18:00):
I just got off the phone with TNT. Now it’s official. They actually have lost my thinkpad. They say they’ll try to ship it again tomorrow. That’s if they can find it. If not, they will have a problem with me. Some of my work isn’t done because of them, so they will have to pay for their stupidity. Also, the bogus hard drive I’ve ordered somehow isn’t where the hardware supplier thought it was. They said they had a few in stock, but it turns out they didn’t. So none of my new toys work right now. This really pisses me off.

New Toys

I’ve got some new toys to play around with, and some toys are going to be here very soon.

At work, we’ve got a brand new Sun Fire X2100M2 with two 750GB disks, two gigs of RAM and a dual core AMD AM2 processor. It’s happily running Debian GNU/Linux and is going to be shipped to Amsterdam this week. It’s still a joy to work with these Sun machines. This will be our fourth Sun machine in almost two years. I think we’re going to place another one later this year, to get the load off of grebbehout.

Also at work, our high-end desktops are complete with the arriving of the monitor stands for the dual 22″ LCD setups. It just looks like CSI at out office right now, but without the Mac OS X. These desktops pack quite a puch, with 4 gigs of DDR2 and a speedy AMD X2 5600+ processor. Did you know Linux loves big pipes? I do now! Our software still manages to get these behemoths down to a crawl, though.

This week my new laptop will be shipped. After a collegue of mine bought an IBM Thinkpad x60s I had to have one too. It’s a great and at the same time tiny little laptop. I wouldn’t be me if I didn’t want to beat the guy. So I’ve asked to ship an IBM Thinkpad x61s with 12 cells of battery power in total. With the latest tickless patches in the -mm Linux kernel tree Tux will be able to operate for almost 12 hours(!).

And oh no, it doesn’t stop there! Danoontje, my dear ol’ file server, is getting a little hammered lately by the 24/7 OGG encode needed for radio.jrrzz.net. Constant loads of 1.00 - 1.20 on a uniprocessor VIA chip are outside it’s design parameters. Whenever I browse for files on it’s terabyte of storage LVM makes my radio stream hickup. Also panzertux, a ten year old Compaq Deskpro 3000 routing all my traffic, needs to be replaced. I’m sure it can run for another decade without servicing but I want to be sure my network keeps it’s uptime. So I’ve called in the help from the big guys at IBM. Sure, why not? They brought a nice IBM System x3200 for me to fuck around with. Two 750GB barracuda drives (what’s up with the 750GB disks lately?) in RAID-1, a dual core Intel Xeon and (only) 1GB of RAM. I’m going to put the two 500GB ATA-133 drives in there too, just for the fun of it. This new machine will be replacing both panzertux and danoontje and will be running Debian GNU/Linux, of course. With the demise of panzertux the last LFS based machine disappears from my network to leave a 100% Debian GNU/Linux powered network. To make up for the loss I’m going to use what’s left of danoontje to create a NetBSD workstation. It does have the VIA padlock, a cryptographic coprocessor. It’s a shame not to use it.

Code Monkey Write Blog Entry. Banana?

This summer it’s my very own summer of code. How geekish. Let’s see what I’m going to (try to) write this summer:

Work. Imagine having to rewrite the entire financial, social and administrative information system of a big company in eight weeks. You can’t can you? We expect writing down all the specifications takes at least two weeks. Well, that’s just for the basics. Yes, we. Luckily I’m not alone with this. We’ve got one highly skilled PHP programmer and two people who just can’t write proper code. This is going to be interesting. By the way, we even had to order a big-ass three meter white board just to be able to draw some schematics. My second employer also needs some major modifications in zjop, my e-commerce application. That’s going to be hard to fit in, but I think I can make it nonetheless.

But where would a guy be without a hobby? I’m not just going to write code in my spare time. I’m going to write coding tools in my spare time. Right now I’m working on PHP Reformatter. It can already understand most PHP code samples I’ve fed it. It’s written in ANSI-C and doesn’t use any non-standard libs. I need this piece of software because people tend to ignore coding standards. A perfectionist like me wants every byte of code exactly according to spec. Of course it’s just nonsense to edit all the files by hand.

I’m also officially announcing the birth of a new programming language. JBISC. I’m not sure wether or not I’ll be able to pull this off. But when this language eventually hits the public it’s going to be quite something. It’ll be a language designed for functional C programmers who need a fast and controllable scripting language. There’s just nothing simple out there. It’s all bloated and slow. It’s a hell to hack the languages themselves and it’s too complicated to write modules. This new language is going to look like C a lot but in the same time look and feel very different. I want it to be as easy like PHP and strict like C. No obligated memory management but still a small memory footprint. The syntax is going to be a lot like C with some of my ideas thrown in. I know this sounds too good to be true but I seriously think I’m able to create it.

Virtual Machines using KVM on Linux

Using KVM I’ve built a nice Debian system running two Windows Server 2003 machines to help in the transition from Windows to Linux workstations. This is a short log about how it’s set up.

Get the latest version of KVM and install it. Either from source or from your package repository. I’ve built it from source. KVM-27 at the time of writing. Usually make starts to whine about some dependencies. If you don’t know what these are install your distribution’s KVM package.

cd /usr/src/
wget [get the URL from sf.net]
tar zxvf kvm-xx.tar.gz
cd kvm-xx
./configure --prefix=/usr/local/kvm/
make && make install
ln -s  /usr/local/kvm/bin/qemu-system-x86_64 /usr/local/bin/kvm
ln -s /usr/local/kvm/bin/qemu-img /usr/local/bin/kvm-image
depmod -a
modprobe kvm-intel || modprobe kvm-amd

We need to make sure the KVM module is loaded at boot time. Depending on your CPU type add kvm-amd or kvm-intel in /etc/modules.

We have to add a user to run the virtual machines in the standard X session. I’ve used the user virtual with the password virtual. This user will have a minimal X session using openbox.

adduser virtual
su virtual
echo "exec openbox" > ~/.xsession
exit

When you’re using GDM be sure to choose “Run Xclient script” as your X session.

Now let’s make KVM do it’s thing. First we’ve got to configure some stuff to get the network running. We use 802.1d ethernet bridging to bind two or more KVM network tap interfaces together.

brctl addbr br0
ifconfig br0 172.20.0.1 up

We also have to make sure KVM uses this br0 when it starts. Edit /etc/qemu-ifup (and create it if it doesn’t exist) using the following configuration:.

#!/bin/sh
sudo -p "Password for $0:" /sbin/ifconfig $1 0.0.0.0 promisc up
sudo -p "Password for $0:" /usr/sbin/brctl addif br0 $1

Yes, we need sudo. We also need to add virtual to sudoers using the visudo command.

virtual ALL=(root) /usr/local/bin/kvm

Now we’re going to set up KVM itself. Log in as the virtual user in your clean openbox X session and open a terminal window. We will use some shell scripts to get them running because the syntax tends to become a bit complicated. We’ll also create two hard drives for both virtual machines.

mkdir kvm
cd kvm
mkdir 2k3
mkdir 2k3_2
cd 2k3
kvm-image create hd.img 20G
kvm-image create hd2.img 80G
touch start
chmod +x start
cd ../2k3_2
kvm-image create hd.img 20G
kvm-image create hd2.img 80G
touch start
chmod +x start

Edit kvm/2k3/start to contain the following (”virtual” is the password for the virtual user):

#!/bin/sh
echo Uno Momento...
sleep 10
echo "virtual" | sudo -S kvm -localtime -net nic,model=rtl8139,vlan=0,macaddr=52:54:00:12:34:55 -net tap,vlan=0,ifname=tap0 -m 1024 -boot c -usbdevice tablet -hda ~/kvm/2k3/hd.img -hdb ~/kvm/2k3/hd2.img

We sleep for 10 seconds to be sure the kernel is finished loading all the stuff it wanted to load before we start the virtual machine. This was done on a beefy quad-core Xeon machine, so maybe that’s why.

We won’t be using the start script just yet. We need to install Windows first. Put the Windows disc in the drive and use the following command to install Windows on the virtual machine:

echo "virtual" | sudo -S kvm -localtime -net nic,model=rtl8139,vlan=0,macaddr=52:54:00:12:34:55 -net tap,vlan=0,ifname=tap0 -m 1024 -boot d -usbdevice tablet -hda ~/kvm/2k3/hd.img -hdb ~/kvm/2k3/hd2.img -cdrom /dev/cdrom

Let’s do the same for the second machine. We’ll have to change the MAC adrress in order to make these machines talk to each other properly, Edit kvm/2k3_2/start to contain the following:

#!/bin/sh
echo Sex Momentos...
sleep 60
echo "virtual" | sudo -S kvm -localtime -net nic,model=rtl8139,vlan=0 -net tap,vlan=0,ifname=tap1 -m 1024 -boot c -usbdevice tablet -hda ~/kvm/2k3_2/hd.img -hdb ~/kvm/2k3_2/hd2.img

We wait a minute because in this setup the first virtual machine has to be booted first because it’s the domain controller.

Install windows again using the following command:

echo "virtual" | sudo -S kvm -localtime -net nic,model=rtl8139,vlan=0 -net tap,vlan=0,ifname=tap1 -m 1024 -boot d -usbdevice tablet -hda ~/kvm/2k3_2/hd.img -hdb ~/kvm/2k3_2/hd2.img -cdrom /dev/cdrom

But, where’s the MAC address? The default is 52:54:00:12:34:56 so we’ll keep that.

In both virtual machines we’ll have to use fixed IP addressing. 172.20.0.2 on the first and 172.20.0.3 on the second. This is important, you’ll see why a bit later. If this is set the two machines should see each other and the host machine.

Now we put everything together. Add these two lines to ~/.xsession and make sure the file ends with the exec openbox command. Use any terminal emulator you like, I just happen to like aterm.

aterm -e ~/kvm/2k3_2/start &
aterm -e ~/kvm/2k3/start &

Logout and login again. Two Windows virtual machines should boot after their sleep times.

The following bit is optional, but it comes in very handy. I’ve written a quick Bash script to forward some ports to the virtual machines in case the outside world want to talk to the Windows boxes.

cd /usr/local/
wget http://www.wasda.nl/~jorrizza/src/firewall.tar.gz
tar zxvf firewall.tar.gz
rm firewall.tar.gz

Edit /usr/local/firewall/rules/*.rule to your preference and run /usr/local/firewall/update_firewall to apply your changes.
It would be nice to start this script at boot time. So add this command to /etc/rc.local and be sure it’s executable.

Of course this is a pretty minimal setup and you are free to change your own config. This also concludes this little howto. Any questions can be asked in the comment section. Thanks to Dell for the hardware and Syn.acK for the support.

Obstacle Oriented Programming

What’s up with software development lately? As in the last five years or so. It used to be a fast paced ongoing stream of innovation. It seems to become sluggish and less innovative over the years. The engineers didn’t get dumber, they didn’t become more lazy all of a sudden. So what happened? I’ve got a theory that surprisingly fits and explains the recent developments in software engineering.

A long time ago, in the old days, programmers were programmers. They knew how to write code, they knew how to implement their knowledge into a system that complied to the requirements made by the technical staff. They could listen to a detailed technical story and almost instantly produce code. These programmers were skilled people with knowledge of advanced system engineering, algorithms, logic and so forth. Let’s just call them hackers from now on. These hackers were able to get a product up and running in no time. You just had to have skilled people to translate management gibberish into a language understandable for hackers. These roles were usually fulfilled by senior hackers with loads of experience. This system has produced lots of ground breaking code. Just look it IBM, Sun, Microsoft (to some extend) and other big companies. Entire operating systems were built in a matter of a few years.

Somewhere along the line it took a turn for the worst. The clear manager/programmer boundary was getting more fuzzy by the day. Managers started using hacker terminology, often entirely wrong. Hackers were forced to become “System Engineers”. Because management wanted it’s share of the fun, and just stealing terminology wasn’t enough, they needed a management perspective on the coding work itself. Object Oriented Programming was born. Don’t tell me this was a good thing. All the benefits OOP gives us can be made using proper modularisation. But now managers could see schematics and nifty other pictures. Thanks to this new way of designing a system, code becomes a byproduct. The system is built on paper. And just like we expect from management, the necessary paperwork has to be created before and after the system itself. In the old days it was alright to write well documented code in a clean way. Other hackers could read your code and comments, some documentation with your major design strategy and changelogs and that would be enough. How do you test or debug paper? Or even more important, how can innovation happen when the paper protocol restricts people from doing actual research? But there’s a solution. People started to write software to actually simulate an OOP system without even writing it. It becomes utterly abstract for the old school hacker. By this point he’s pulling his hairs out out of pure frustration. This same software can even output half the source code, using only a block diagram.

You know, what if. What if this OOP thing actually works. I’ve done it. And yes, it does work. But there are a few minor points of criticism. First off, development takes eons. You need to spend a lot of time building your classes and connections between them on paper or in a design tool. That’s quite a labour intensive process. Without that step it would be impossible to write code because it’s split up in too many modules with different connections between them. Second, you can’t force programmers to conjure up schematics and fill in the gaps in the code afterwards. It’s against their nature. This will work counter productive. Third, the code becomes almost unreadable and undebuggable. If you give someone uncommented code in C that person will be capable of understanding what it does in say, a few hours. The same amount of code in OOP C++ will take a small army to dissect and understand in the same period of time. Really, especially with inheritance and virtual recursion it becomes unreadable. You’ll simply need the diagram from which it’s created to understand.

And after all this I can still live with OOP code. If it’s documented properly and built the right way, I can manage. But the problem is that the kids don’t learn how to write proper OOP at school. Somehow the teachers just don’t get it. Time after time when I see OOP code from a freshly graduated student I just can’t help myself and vomit all over my keyboard. Object Madness. Somehow all the teachers think it’s a good idea to teach that every little thing where you can create some parameters and functions with, has to be an object. And every object has to inherit, be special, virtual, whatever. What hackers would make with two functions and a struct, a student would make it using three objects all inheriting from a big central singleton class. Schools deliver “System Engineers” who can’t write code and can’t think straight anymore. Yeah, they know how to create neat schematics and paperwork. But even the simplest programming tasks are too hard for them. And people can’t stop asking themselves why it’s so hard to find good IT students. If “System Engineer” would be my job, I’d hate my job.

NVidia Linux Drivers and X.org 7.2

It seems te people at NVidia didn’t quite get the changes in X.org 7.2 yet. They’ve promised to get it fixed in the near future. If you’re like me and want to install the drivers yourself instead of using your package manager you’ll have to do the following things in order to use the latest NVidia drivers (1.0-9755):

cd /usr/lib
ln -s /usr/X11R6/lib/libXvMCNVIDIA* .
cd xorg/modules
ln -s /usr/X11R6/lib/modules/lib* .
cd extensions
ln -s /usr/X11R6/lib/modules/extensions/libglx.so* .
cd ../drivers
ln -s /usr/X11R6/lib/modules/drivers/nvidia_drv.so .

Be sure to remove the symlinks before you update your driver.

Linux networking slower than Windows

That title almost made you feel uncomfortable, didn’t it? But before you go away going all maniac on slashdot ranting about Microsoft please give me a chance to explain.

First, some history. My personal router c.q. firewall, panzertux, just went over it’s uptime counter. Yes, it runs Linux 2.4.x. The IPCop install was kinda ancient so I guessed this was a good moment to feed it it’s updates. I had to do a complete reinstall because of kernel incompatibility problems. But hey, it’s worth it. IPCop is a great firewall distro. After grabbing the latest ISO from sf.net and rebuilding my system the problems started.

Every time some app tried to make a connection through the router to the internet it paused for 10 seconds or so. After that the connection was established and everything was fine until another connection had to be made. Another 10 second pause. When browsing the web like me, you know, several browser screens filled with updating tabs, rss feeds, mail and server logs pouring in, a 10 second pause every time becomes quite an annoyance. What could this be? The first thing that came to my mind was DNS. I quicky checked all the DNS hops and my DNS proxy. All seemed to run fine. Querying the DNS servers using host(1) was as fast as it used to be. So it wasn’t DNS. And now the scary bit. I booted Windows XP to play my newly acquired game. I’m a bit of a cheater so I grabbed some cheats from the net. It was only during the game that I realised. Oh damn, did I just visit a site without that damn 10 second penalty? I turned to one of the running Linux boxes and tried to visit the same cheat site. The pause was still there. What is this? Why is that damn binary blob from Redmond faster on my 100% Linux powered network? This means war. This can’t be.

So there I was, broken beyond repair. The damn people at school were right. Windows is the better networking OS. After letting my forehead meet the door several times during high velocity impact I woke up. I had to get to the bottom of this. First, the thing that started it all. Panzertux. I had to rule that out. So I plugged my Linux laptop directly into my DSL modem. This is a great piece of equipment by the way, Linksys AG241V2, Linux powered, never let me down. Well, until now. I still had to wait 10 odd seconds before any connection was established. So it is my OS? Or is my modem just broken? Is Windows doing something wrong that actually is unintentionally something right on this network? I had made a new friend a while ago, so I went to NetBSD for help. It didn’t have problems what so ever. Could this be true? Maybe it’s my distro. All my workstation machines run Debian GNU/Linux sid. It’s known to break sometimes. Luckily I had an Ubuntu laptop ready for testing. It had the same problem. 10 seconds. I didn’t know what to do anymore. Did all my Linux boxes start to hate me? Would NetBSD be my only friend after this war? I noticed it was 4 AM. I had to get some sleep. Even the caffeine overdose wouldn’t help anymore.

The next morning, just when I thought it couldn’t get any worse. Guess what. It did! My network died! Somewhere during the night some part of my network decided it was time to quit. Panzertux was still up and running happily generating log files. All of my switches were alive and kicking. But I just couldn’t get on the interweb thingy. I told panzertux to reconnect to the interweb. Panzertux said he couldn’t. My modem died. So it was my modem all along? I patched it up, gave it new firmware and even got rid of the dust that it was collecting. I hooked up my Linux laptop directly again to test the modem. Damn, still the same problem. But why did it die? I was toying around a bit and to show off I switched to another tty, text mode only. When I logged into my modem using w3m some errors popped by about some RFC. They went away too fast for me to read them. While I was looking in the man page for a debug switch one flag stood out, “-4″. IPv4 only mode. I gave that mode a try, and wow, no time penalty! So maybe it’s IPv6 that keeps bugging me?

So I recompiled my kernel. Yeah, I do that some times when I’m feeling happy. No, really. I had built-in support for IPv6 but never connected to a single IPv6 router. Guess what, I’ve got one. IPCop talks both IPv4 and IPv6 now. So it routed all my IPv6 requests into an IPv4 network called the interweb. Well, at my ISP it is. This explains the pause. It’s needed by the OS to switch back to IPv4 after failing to connect using IPv6. But this still didn’t explain my entire network getting disconnected from the interweb. Maybe my modem doesn’t like IPv6? So, I wrote a quick bash script to utilise that other neat w3m flag. “-6″. IPv6 only. It started a thousand w3m browsers trying to connect to my modem using IPv6. Hey, a thousand w3m browsers still don’t use as much memory as one Firefox! Ok, the experiment succeeded. The modem died it’s painful death a second time. Poor thing. To save what’s left of that poor blue box I recompiled all my Debian kernels to block out IPv6. I blacklisted the ipv6 module on all the other boxes.

So, to summarise: When your DNS is acting normally, Windows is acting normally and even your mother in law is acting normally and your Linux box has problems connecting to servers, blame IPv6. Also blame that nasty stain on your wall, I know it’s there! You know, if my ISP would just give me a proper IPv6 enabled internet connection all of this wouldn’t have happened and my forehead wouldn’t hurt as much right now.

My Busy LED

Keeps flickering. I’ve got so much to do lately.

First, there’s school. That’s a funny one. At school most of the people are bribed easily. I won’t accuse anybody but that’s how it seems. We had to do this assignment in which we have to realize a scaled down model of the entire school network with all it’s functionality. I thought this was the ideal moment to show these people who dare to call themselves operators what a real BOFH can do with proper equipment. With that I mean real software, Open Source software. The hardware we had to use was absolute rubbish, we had to backup the entire disk of every machine we used to make sure we could continue our work the next day. Yeah, swappable hard disks just have been on the market for like the last decade. All the machines look the same from the outside but they all have their own problems and glitches to make it even more fun to work with. NIC’s that can’t handle incoming connections, cd trays that won’t open, BIOS passwords, the works. Oh, all of the boxes have a lock on the case to keep us from tinkering with the hardware. And I haven’t started yet about the network. We can use one rack mounted el-cheapo 10/100 dumb switch, one tittle workgroup switch and a bunch of broken CAT-5E. The link to the Internet is the only thing I won’t complain about. We’ve got a full class C IP range we can use, hard ones. A full 100Mbit/s uplink to the router and a very low latency to the AMS-IX. So, we had to build this network. We didn’t exactly now what was going on or what we had to do. After a lot of conversation with some teachers things became clear. We thought we would get permission to start building what we’ve been painstakingly documenting for the past few weeks. But no, somehow the teachers stayed sceptic about this whole Open Source idea. One teacher even had the guts to name all of the features of the Microsoft equivalent of one of our services and telling us those features were required. Oh, at this point you should know this teacher should be playing the manager who wants this network to be built, not a Microsoft infected (bribed) weak excuse for an IT professional. Anyway, we decided that it was time to move on to realisation of our assignment instead of trying to fight against the Microsoft oriented educational system. Soon after we made this decision one teacher said to much. He said Fontys would receive quite a lot of money for every Microsoft product we’d use. This was the last drop, I’m in no way going to participate in a scheme to basically buy out the educational system. They can all go screw themselves while we install real software on our machines. Now I know why Fontys uses these weird things like Sharepoint and Outlook Web Access. It’s bad, it crashes, it doesn’t work in FireFox and Konqueror, and it costs a massive amount of money. I’ve got a collection of screenshots showing Sharepoint crash in a various number of ways. I’m gonna report them soon, let’s see what they have got to say. Anyway, the morale of the story is that this relatively simple task of building a network with the usual servers has taken me at least twice as long as I expected. The course of events is in no way realistic. There is not a single company that would ask IT consultants a full report of their in-house research even if the knowledge is already present. I can’t tell these so-called experts their’e wrong just because they have to be always right. The fact that I have had more hours in the field then they ever will doesn’t seem to matter.

Second, I’ve got a lot of work to do for both of my employers. I’m building a plugin for zjop for mobile phones. You can select your network, monthly fee, extras and your mobile phone and it’ll calculate what you have to pay. You can even get a free TV or something if the bonus is high enough. Because there are a lot of variables database setup has been very difficult and the system itself is even worse. With another plugin I’m about to make we’ll be able to automatically send order requests to our suppliers when an order comes in from a customer. I’ve been able to cooperate with Vendit very well to make it all work with our existing IT infrastructure. I’ve also done a lot for my second employer. We’ve just finished installing a second server to our Wasda.nl network where their IT applications are going to run on. Yesterday we had to do an emergency search and rescue operation on their old host, computrade.nl, to salvage what was left of their database after it had crashed on us. Luckily we have been able to secure all the data to our new server. Now we are converting mail to our new host and setting up the website. This was a just-in-time scenario to the minute exact. I hope we’ve done all of this quick enough, because a lot of employees are sitting at home jobless at the moment, they can’t do jack without this system up and running.

Third, I’ve had the unpleasant news that my grandfather, my only grandfather, has been diagnosed with cancer. He’s also dementing due to Alzheimer. These two combined with his age made the doctors believe that any medication or treatment would destroy more than it could heal. So now we just have to make the best of it I guess. I really feel sad, because my grandfather has always been a person who has inspired me. He has sparked my interest in electro technics. Basically, thanks to him, I’m getting my degree in technical information technology. It’s not a nice sight seeing him degrade that rapidly. I’m going to his birthday today, which might just as well be his last.

Oh, have you noticed my new website is online?

Xfce4 and SunFire X4100

I’ve been a Fluxbox and Openbox user for quite some years now. They have never let me down. The past few months I’ve been hooked on Openbox3 because of it’s openness in configuration and perfect Xinerama integration. The only thing missing was a decent panel. I’ve tried them all but none of them really cut it for me. yesterday I remembered an old long forgotten friend of mine, Xfce. Xfce had a panel and it worked like I wanted it to. Damn, Xfce has changed since my Xfce days. So I got curious about the entire Xfce4 system. Debian currently provides Xfce 4.4 BETA2. It really rocks. It’s window manager is quite similar to Openbox in a lot of ways. It’s fast as fck and looks pretty standards compliant. It even has it’s own compositing manager. It didn’t work on my nVidia Xinerama setup, but that’s nVidia. The Xinerama setup is wonderful, even the wallpaper setter was fully Xinerama aware. No more image stiching. It has built-in support for Gnome and KDE background tasks. I’ve said before I love XML, well, the entire config is XML based and neatly stacked away in ~/.config/ as it should be. The final thing Xfce4 has Openbox doesn’t is looks. It uses GTK2 making it smoother and just nicer on the eyes. At work I’ve installed both Xfce4 and Openbox3 on a PIII laptop. Xfce had no problems keeping up with Openbox. I think I’ll stick around Xfce4 for a while.

As you already might know I’ve been hired by ViaViela to polish up their IT infrastructure. Because their web services are running on the same machine I left to die a while ago they are looking for a new host. They want security, uptime and professionalism. So it became pretty clear they had to move to our network. To supply the service and uptime our network will be reinforced with a SunFire X4100 machine. This will be a machine fully dedicated for their services. It’s a really nice machine. Dual Opteron 248, 3GB of ECC memory, 4x 36GB 10krpm SAS disks in RAID 0+1, quad gigabit ethernet, remote management chip, the works. It’s going to beat the crap out of our own grebbehout machine, a SunFire X2100. This will be a nice addition to our server park and I hope we can get some more Sun machines in there. So does the company providing the machinery. They actualy asked me what kind of job I have since I’ve ordered two massive Sun machines in the past few months. I think they think I’m a potential heavy weight customer. Maybe, if HP or IBM doesn’t beat them by the time I actually need more headroom.

Expensive Toys and nVidia Xinerama HOWTO

As you might have noticed grebbehout.wasda.nl is online. It’s our new SunFire X2100 system for us to play around with. Most of our sites have been moved to our new machine and are running smoothly again. Out old host, computrade.nl, is still degrading. It’s starting to drop mail for no reason, drop MySQL connections, skip cron jobs and more weird stuff. The thing is dying. Even this blogservice is hosted on grebbehout right now. As a matter of fact, almost all the sites hosted on computrade.nl are being moved to other locations or plans are ready to do so. The funny part is the admin doesn’t even know most of his customers are leaving the server. What could you expect? The server is running very outdated software, is down at least once a week and fails to do it’s job properly. The admin doesn’t even send bills once in a while so we can’t even pay for the damn hosting. Oh well, now I’m waiting for our ISP to transfer DNS to our new location to move my employer’s webshop away from that unstable wreck. If you are interested in our new server you can visit the website (Dutch) and check out the rig.

This server was pretty expensive, especially all the extras we had to buy to make this thing work. I’ve been playing with alot of expensive toys lately. I’ve rebuilt the entire JRRZZ.net local network. I’ve replaced the switches, routers and wireless access point with brand new (Linux based) Linksys hardware. UDP should be handled ok now and the whole lot should feel a little more responsive. The only component that didn’t need replacing is panzertux, my trusty old gateway server. The latest toy I’ve bought is a Xinerama LCD setup for my main Athlon64 X2 machine. Two Samsung SyncMaster 930BF screens to be exact. The following is a short howto to get X.org and nVidia to work with Xinerama (two screens become one).

nVidia Xinerama HOWTO

For you who have used the nVidia drivers in a windows environment you might know TwinView. nVidia has ported TwinView to it’s X driver. You can use TwinView by editing your xorg.conf but I really don’t recommend the use of TwinView. Mainly because it’s not Xinerama but a simplified version of it. How to do it the right way? It’s really simple. All the stuff down here has to be done in your xorg.conf file.

First, enable Xinerama.

Section “ServerFlags”
Option “Xinerama” “true”
EndSection

Second, define 2 graphic cards. If you have a dual head card, like me, you have to specify the same card twice. This is a PCI-Express card and address 01:00.0, twice. Check lspci for your card’s location(s). The Screen directive is the key here.

Section “Device”
Identifier “NVIDIA Corporation 7800GTX [1]”
Driver “nvidia”
BusID “PCI:1:0:0″
Option “RenderAccel” “true”
Screen 0
EndSection

Section “Device”
Identifier “NVIDIA Corporation 7800GTX [2]”
Driver “nvidia”
BusID “PCI:1:0:0″
Option “RenderAccel” “true”
Screen 1
EndSection

Third, define your monitors you are going to use. Almost all the new monitors have Edid so you usually don’t need to specify the HorizRefresh and VertSync values. Here are mine:

Section “Monitor”
Identifier “Samsung SyncMaster 930BF [1]”
Option “DPMS”
Option “UseEdidFreqs” “true”
EndSection

Section “Monitor”
Identifier “Samsung SyncMaster 930BF [2]”
Option “DPMS”
Option “UseEdidFreqs” “true”
EndSection

Fourth, make screens out of your monitors and cards like this. Alter the resolutions and color depths according to your monitor specifications.

Section “Screen”
Identifier “Left Screen”
Device “NVIDIA Corporation 7800GTX [1]”
Monitor “Samsung SyncMaster 930BF [1]”
DefaultDepth 24
SubSection “Display”
Depth 1
Modes “1280×1024″ “1024×768″ “800×600″ “640×480″
EndSubSection
SubSection “Display”
Depth 4
Modes “1280×1024″ “1024×768″ “800×600″ “640×480″
EndSubSection
SubSection “Display”
Depth 8
Modes “1280×1024″ “1024×768″ “800×600″ “640×480″
EndSubSection
SubSection “Display”
Depth 15
Modes “1280×1024″ “1024×768″ “800×600″ “640×480″
EndSubSection
SubSection “Display”
Depth 16
Modes “1280×1024″ “1024×768″ “800×600″ “640×480″
EndSubSection
SubSection “Display”
Depth 24
Modes “1280×1024″ “1024×768″ “800×600″ “640×480″
EndSubSection
EndSection

Section “Screen”
Identifier “Right Screen”
Device “NVIDIA Corporation 7800GTX [2]”
Monitor “Samsung SyncMaster 930BF [2]”
DefaultDepth 24
SubSection “Display”
Depth 1
Modes “1280×1024″ “1024×768″ “800×600″ “640×480″
EndSubSection
SubSection “Display”
Depth 4
Modes “1280×1024″ “1024×768″ “800×600″ “640×480″
EndSubSection
SubSection “Display”
Depth 8
Modes “1280×1024″ “1024×768″ “800×600″ “640×480″
EndSubSection
SubSection “Display”
Depth 15
Modes “1280×1024″ “1024×768″ “800×600″ “640×480″
EndSubSection
SubSection “Display”
Depth 16
Modes “1280×1024″ “1024×768″ “800×600″ “640×480″
EndSubSection
SubSection “Display”
Depth 24
Modes “1280×1024″ “1024×768″ “800×600″ “640×480″
EndSubSection
EndSection

Finally, we can make the entire server layout. This is pretty simple. We are basically telling the server where the screens should go to make your entire desktop. As you can see it’s very logical and you can add as many screens as you like. Imagine desktops as wide as 5 screens.

Section “ServerLayout”
Identifier “Default Layout”
Screen 0 “Left Screen” 0 0
Screen 1 “Right Screen” RightOf “Left Screen”
InputDevice “Generic Keyboard”
InputDevice “Configured Mouse”
EndSection

Now, save your xorg.conf file and restart X (usually by restarting your display manager).

I’m sorry the indentation has been lost because of the wordpress editor but you can download my xorg.conf file here. I recommend Openbox as your window manager. It’s fully Xinerama-aware and is a joy to configure. Here’s my desktop right now.