Norwegians protest against OOXML

While Switzerland’s people can see nothing wrong with the scandalous acceptance of MSOOXML as an ISO standard, Norway sees it differently. Perhaps that’s because Norway is more successful in the international software business (Opera, Funcom, Trolltech etc.) and therefore has something to lose, while Switzerland has a very passive and consumerist attitude.

But never mind the reasons, Norwegian people were smart enough to gather in front of the ISO SC34 meeting for a demonstration to kick OOXML out of ISO. One sign even asks Neelie Kroes to intervene. Seeing that the EC has started an investigation into the irregularities encountered during the OOXML voting process, it looks like she read the sign.

Yes, throw IS 29500 out. It’s a broken specification, and there is proof. If any other company had submitted this spec, they would have been sent back to the drawing board to fix all the defects. But Microsoft has the power and the money to manipulate and to bribe, so they can undermine ISO’s integrity and force steaming piles like this through an erstwhile respectable standardization process.

The general idea being tossed around by leaders of the Swiss standardization body is now “let’s all be happy and hug each other, and start to fix IS 29500 together”. Come again? Why should we waste our time and money to fix a broken product that we do not even control, because of the patents on it and because of the proprietary extensions that are at any point possible? Why shouldn’t we instead invest this time into making the existing ODF standard even more interoperable and accessible? It’s not impossible that IS 29500 at some point is mature enough, but the problem is that it should have been mature enough to begin with. Microsoft should not have submitted such a broken spec and come through with it. That they have shows that the standardization process has failed.

Link via noooxml.org.

ISO approves broken standard amidst massive irregularities

The whole voting process for fast tracking DIS 29500 (i.e. MS-OOXML, Microsoft Corp’s broken new format for office documents) was full of irregularities. Votes that were not counted or counted wrongly, Microsoft Gold partners that were bribed into joining national standards bodies to swing their opinion around in the last minute, meeting rooms for discussing these issues that were deliberately too small for people who could point out the flaws in the formats, but not too small for its supporters.

I read the news reports as all of this was happening and couldn’t help but be reminded of fake elections in a corrupt country. I also had to laugh. I believed that ISO was on top of all this, would not stand for such corruption and would use their own processes to find the people responsible, punish them appropriately and bring the voting process back to a reasonably democratic shape. I was so naive. ISO has failed. Failed in their mission to jointly introduce new standards for and with its members, failed at assessing a technical standard objectively, failed at taking the voices and concerns of their members seriously, failed at being a neutral body without bias.

There are ways within ISO to disapprove a standard, but if they are governed by the same people, I see no hope of getting this severely broken standard to a place where it belongs.

Today is a black day for freedom. And if you like democratic process, it’s a black day for that too.

Update: Mark Shuttleworth (founder of Canonical, maker of Ubuntu) is sad too: “It’s sad that the ISO was not willing to admit that its process was failing horribly.” He offers a few more details. I’m not willing to risk talking about things I am not allowed to talk about, so I’ll leave uncovering the internal failings to the real news sources for now. Shuttleworth provides a good summary.

Update 2: The European Commission is investigating the irregularities encountered during the standards approval process. Maybe there is still hope to get rid of some of the corruption and hopefully get the standard revoked, so that its vendor can apply for standardization again and do it properly this time.

Gbarcode Support for Ruby FPDF

I was going mad fixing a bug in a very convoluted barcode printing feature in the equipment management system we’re developing. After a while I gave up — we must have triggered something deep within Rails or Ruby, and it wasn’t going to go away soon. The details are complicated and boring, and I ended up rewriting our barcode handling. As a side effect developed an extension for Ruby FPDF to support Gbarcode 🙂

Please give it a try if you need barcode support in your PDFs and let me know what you want to improve and what fails horribly for you.

Our OpenVZ Virtualization Experience

We are currently finalizing the server consolidation in our department. The product we chose for virtualization is OpenVZ, because it sports creepy Russians.

All in all, it was a bit of a roller coaster ride, but once we figured out that most of the problems came from our own incompetence, we quickly stopped pointing fingers and shaking fists and instead read some documentation. Then all was good. We went from 12 servers to 5, killing 7 physical servers and saving roughly 1500W of power consumption. The new virtualization servers we used were actually the old database server and the old main web server, both overpowered. A change in the mentality and the technical competence level required from our students in the last few years has made the extra power for these boxes unneccessary. Now we’re using them much more efficiently because each of them runs several virtual servers.

Technicalities

We wasted a lot of time learned a lot by going the opposite route when it comes to OpenVZ configuration. Most people are advised to start with a BIG configuration for each virtual private server (VPS), we started with a tiny one. This meant that memory parameters were at a bare minimum, normally mimicking the specs of the hardware machine we were virtualizing. In the same go, we grouped services differently so that we could reduce the number of servers, again making better use of the available hardware. For servers that are created from scratch (not based on an existing physical machine), we also started from a minimal config file and went up from there.

This approach not only made me grow at least six new white hairs in my beard, but it also taught me about the importance of KMEMSIZE. KMEMSIZE is your friend. KMEMSIZE loves you. KMEMSIZE is soft and fluffy. Trust KMEMSIZE.

The problem with KMEMSIZE was that while we did assign enough memory in the main UBC memory categories (vmguarpages, oomguarpages, privvmpages), we didn’t have enough KMEMSIZE for our NUMPROCS. Just picture this! The poor NUMPROCS! The net result was that the server couldn’t fork new processes once its amount of KMEMSIZE was eaten up. So after multiplying our expected NUMPROCS with the estimated unswappable memory consumption per process, things worked perfectly.

Now our OpenVZ environment is very, very stable and very, very efficient. We’re very, very happy. This is a very, very success story.

From Zero to Virtualization: Linux-Vserver vs. OpenVZ

We’re currently evaluating solutions for virtualizing GNU/Linux servers at the HGKZ in order to replace seriously aging hardware (700 MHz P3’s!). At the same time, we can be hip like you and use important-sounding words such as “machine consolidation”, “hypervisor” and “cuttlefish”.

Gino is evaluating OpenVZ while I’m looking at Linux-Vserver. Both solutions have a similar approach: Don’t create virtual machines. Instead, create virtual servers that are sealed away from each other, but running on the same kernel. This has its own set of advantages and disadvantages, but I won’t go into that, you can read about it elsewhere.

Here’s a handy comparison table of what we found out so far:

Linux-Vserver OpenVZ
Kernel Pre-patched kernel included with Debian Need to patch your own or rely on outside sources for binaries
Networking Networking for guests works out of the box Needs IP forwarding on the host, custom network config on the guest
Developers Funny Austrians Creepy Russians
Documentation Horrible mess in six different states of rebuild and decay Well-structured, organized and maintained
Affiliation Snuggles a bit with RPM-based systems sometimes Spends entire weekends in RPM-based systems’ beds and refuses to leave come Monday
Debian Is treated like a leper, but a very friendly one Is the enemy
Guest configuration Implicit but convoluted Explicit but straightforward

There, that’s hard scientific facts for you.

After all of this probing, compiling, tickling, testing and general mayhem, we have decided to go with OpenVZ. To reach that decision, we of course evaluated both solutions on many levels (don’t let that table fool you). There are clear philosophical and architectural differences between the two solutions, but one key factor in our decision was that for the administrator, both systems are almost too similar.

Yes, OpenVZ takes a more complicated approach to networking, but Linux-Vserver takes a more complicated approach to configuration. Yes, a Linux-Vserver host’s default config is mostly what you want and just seems to work out of the box, but this lowers your motivation for learning the details of the resource management system. And details, as you surely know, are nearly always ugly.

With OpenVZ, you are forced to learn these things up front, which presents a steeper learning curve but gifts you with a more solid grasp of the technology. You get to flex your math muscle to fit virtual servers into your actual hardware’s limitations without creating an impossible physical paradoxon that rips a hole into space-time, and that’s quite handy. With Linux-Vserver, these things might come back to haunt you later, when you’re trying to put vserver no. 22 onto your machine and discover your 16 GB of memory are already spent, and that’s when details bite a tasty chunk right out of your lower backside. The decrepit state of Linux-Vserver’s documentation does nothing to ease your fears in this department. Convoluted configuration would otherwise be okay, as long as it’s well-documented convoluted configuration.

Now what if we are wrong, and within the next 8 months someone writes The Linux-Vserver Bible (Illustrated Swimsuit Edition) and SWSoft decides to pull the plug on support for OpenVZ, leaving us without any burly Russian engineers to take care of the code? That may seem sad, but it paves the way for such a beautiful pink-colored fluffy thought that it nearly makes my skull burst: We would still be fine. Both of the solutions are open. No proprietary formats. No secrets. We can migrate from one to the other at any time.

Dell Germany Refunds Vista/Works Price to Swiss Customer

Hurrah! “mad” from TheAlternative.ch created a fantastic precedent for us silly Swiss people: He sent one e-mail to Dell and immediately got a refund for both the unwanted Vista and the copy of MS Works included with his new laptop. He saved 15% on the laptop’s price this way, as well as getting rid of software he doesn’t use. Read his story in English or German.

How to get a refund for the unused copy of Windows that is chained to your new laptop

Serge Wroclawski tells us how to get the Windows tax back that you pay with almost any laptop on the market, whether you want Windows or not. I’m not sure if this strategy only works for the USA, though.

I have a few personal experiences with this problem. I have tried several times to get my money back for unused Windows licenses, and every time I was told it’s impossible. One afternoon, I insisted enough to be put through to Microsoft Switzerland’s licensing person, and he himself told me it’s impossible to get your money back, even though Windows’ very own license agreement says you will get cash back if you don’t need Windows. It’s a horrible situation. They sell you a product you don’t need and then trap you in legalese when you want to exercise your right of returning it for a refund.

Sometimes they claim they don’t even need to stick to their own license because of “differing contractual obligations between Microsoft and the OEM.” But so what? Any ties between OEM and Microsoft are not the customer’s problem. The customer is only bound by the EULA, not by any contracts between MS and the OEM. Did the OEM let itself be bullied by MS’ scare tactics like a spineless jellyfish? So what, that’s not my problem.

A friend of mine and I once spoke to one of the largest IBM resellers in the germanophone part of Europe about this. Their answer? “No, you can’t return your copies of Windows, but if you buy more than 50 laptops we can downgrade the XP Pro that’s included to a cheaper XP Home.” Friendly, but completely useless and against your very own license agreement.

This makes me angry because it’s very clearly in illegal territory, and it’s one of the ways Microsoft makes much of its money. And even though it is illegal, it is tolerated because no one has so far challenged Microsoft in court about it (in Switzerland).

Article is at linux.com, found via Slashdot.

PS: “Just don’t buy a laptop with Windows preinstalled” is not an argument, by the way. Most laptops are not available without Windows. Consumers should not be restricted in their choice of laptops by the Microsoft tax.

Some brainlessness in rsnapshot

I love rsnapshot, for the most part. It’s one of the most efficient and straightforward incremental backup solutions I’ve ever used — much more reliable than some of the commercial solutions I’ve tried. It leverages the power of GNU cp, your filesystem, rsync and others and smashes them all together into a big happy chunk of reliability.

However, it must contain some idiocy, and I guess it’s somewhere in parse_config_file. I just set up another server, the same way I usually do, but it needed a slightly different rsnapshot.conf. So I edited the one that was there and known to work because it automatically comes off my server images. Afterwards I wanted to do a test run of each of the backup intervals, because that’s what you do. But rsnapshot didn’t agree. It didn’t disagree either. It didn’t do *anything*.

The next step was to increase its logging verbosity and look for hints in syslog. Interesting: It seems to read its config file successfully and it even writes a pid file. Next, it checks for stale backup directories it might have to rotate. That means it parsed its config file and is happy, no? No! The thing wouldn’t copy anything into the backup. Not a single file!

As a last resort, I straced one of those test runs but forgot to include the tracing of child processes. That probably would have given me more of a clue — the way it was, it just added to my confusion.

In the end I decided to unpack a fresh, distribution-approved config file from /usr/share/doc/rsnapshot/examples and to make the required changes by hand. I retested while already preparing to submit a bug report, when… It worked! The thing performed all the backups reliably, packed up and went to sleep until cron wakes it up tomorrow.

There must have been **some** character **some**where in my config file that deeply confused rsnapshot, confused it so much that it claimed the config file syntax was OK but silently refused to work.

Perhaps config file parsing in rsnapshot has to be rethought. The way I see it, this is sad indeed. It’s the least reliable bit in an otherwise very reliable package, but it’s always the weakest link that breaks the chain, and other assorted age-worn sayings.