Somewhere around 9588…

OK. This has a definite technical reason and is neither wrong nor in any other way special. It’s just funny and reminds me of school where in a short presentation, someone did the same thing, so I though I can pot it anyway…

In PostgreSQL you can help the query optimizer to do it’s work even better by calling “VACUUM ANALYZE” – especially after inserting tons and tons of data.

I did that and found this status message:

INFO:  "art_pf": 209 pages, 3000 rows sampled, 9588 estimated total rows

What’s funny about that is that PostgreSQL actually counted the rows (I did a full analyze) and still talks about having estimated the count. And 9588 definitely is not what we humans call an estimation. When we estimate we talk in tens or even hunderts like “9000 estimated total rows or so”.

In the presentation I talked about at the beginning, the colleague of mine talked about a weather station “about 987.6 meters over sea level” which falls into the same category ;-)

mod_perl or not to mod_perl

Floating around the net I found a patch for my mod_perl problem I had with MT 3.1, so I have reenabled mod_perl, which actually sped up the wohle system greatly, but forced me to remove MT-Blacklist, as it’s not compatible with mod_perl environements (Internal Server Error, here I come!)

“No big deal”, I thought – deleting those five SPAM comments a day would not have been so bad – especially since MT 3.1 provides a far better comment-deleting UI than 2.6

Then, today, I had to change my mind: Between 6am and 12pm two of those f***ing SPAMMers actually posted stupid comment spam to nearly every posting in my blog. After deleting them, they gave me a rest just to continue their evil doing during the whole afternoon, forcing me to delete about 2 comments per 20 minutes. Inconvinient when I have to work in between.

So – for me, it’s back to non-mod_perl. It seems like gnegg.ch is popular enough for actually depending on MT-Blacklist. Very nice. Thank you stupid SPAMMers!

A look at Windows Installer

Before I begin, let me put this disclaimer: I’m biased, so this is maybe not objective, but it’s something I wanted to say. And who knows: Maybe you even think the same.

As you may know, Microsoft would really like to see all software using Windows Installer for its deployment needs. Windows Installer is a complex piece of technology, evaluating some kind of database that’s stored in those .MSI-Files.

Windows 2000 Server and later, namely with its Active Directory, provides the system Administrator with the ability to automatically install and update MSI based applications on the client computers, which definitely is a good thing. Additionally, MSI should provide end users with clean uninstalls, automatical repair and the solutions to COMmon [;-)] problems. Sound’s like a good thing, doesn’t it?

It would – if there was not quite a heap of problems associated with Windows Installer

  • First, the thing is intransparent and messy.
  • I have migrated my user profile to another machine, where not all the software I had on the previous machine has been installed. So the control panel was full of software that was not installed on the machine. Hitting “Remove” caused MSI to request the original installation MSI file (why the heck?) and with me failing to provide it (why should I redownload something just to remove traces of it from my machine if I don’t want it in the first place) and hitting “Cancel” removed the entry, but it reappeared when reloading the control panel applet. Cleaning the registry did help, but tell me of an end user capable of doing that.
  • Whenever I drop an URL from my Browser to the desktop, MSI pops up and wants to repair some software I’ve already removed. For this it asks me to provide the path to the original media. Why?
  • Creating Update-Packages is a pain in the ass: You have three possibiliteis:
    1. Create a “full update” which will first uninstall the existing version. That way you have to go great lengths to preserve the user’s data because it’s not that easy detecting whether the uninstall happens because of the upgrade or just is a normal uninstall. This, I want to add, is the recommended way of updating an application deployed by MSI
    2. Create some update-package. This often needs quite a bit of hacking to the MSI-File, leading to problems like MSI-Dialogs popping up asking for some files.
    3. Create a patch-File (.MSP). In MSI pre 3.0 this is a pain in the ass if you want to prevent the user from having the original MSI-File ready. Too bad, MSI 3.0 runs only on Win2k and later

Windows Installer is very tightly integrated into the system. Even small problems here and there (non-clean uninstallation or whatever) can cause major problems that are not really fixable. This is not what I call an end-user friendly technology.

And it does not end there: Have you ever tried engineering a MSI-File? You may begin by reading the SDK documentation I linked to above, but you will soon be overwhelmed – the beast is incredibly complex. But with complexity does not come feature-richness. For example, it’s impossible to install the .NET framework from an MSI based installation as only one of them may be running at the same time.

Because of this and many other problems, it’s the general oppinion to create a self extracting .EXE installing the prerequisities and then passing the control over to the MSI-File which still isn’t capable enough to do many things, setup authors today are used to do.

Big tool Vendors like WISE Solutions or InstallShield go great lengths to hide the comlexity of MSI and to add features not there in the basic version, while sometimes breaking validity of the generated packages or even the one big advantage of MSI’s: Transactional functionality. Thus, taking away the last benefits, MSI may have.

Conventional Installer Tools are availbable for free (InnoSetup, NSIS) and have a much more pleasant user experience: No silly questions for source packages, no confusing breakage and more.

Of course: Some things those conventional tools will never be able to provide:

  • Advertized Features (and Shortcuts)
  • Automatical Self-Repair
  • Advertized Installations (which allow restricted users to install certain packages)

    But to be honest: Which one of those features provides real value to the end user? I know many people that have installed MS Office, for example and no one of them – absolutely no one has instructed setup to install features on demand – nobody wants to insert the office CD at random events.

    In contrast: Everyone I know simply hates those Windows Installer dialogs popping up, requesting the source image. Lukas for example is unable to remove PGP Deskop becuase the uninstaller requires the installer package which can’t be provided as it’s packaged in a self extracting .EXE using a proprietary format. Simply reinstalling from this .EXE isn’t possible either because the extracted MSI detects the existing installation and want’s to uninstall but still does not recognize the extracted original MSI. Bad luck.

    So in the end MSI looks to me like an administrators thing, but not like a tool making the live easier for the end user. With tools like InnoSetup, I can create an user expirience that even non-tech-savy users understand and that even has no further problems popping up later. Granted: More advanced tasks are better integrated into MSI (Installations per User/Per System), but can be done with the conventional tools, if some thought is put into the installation.

    For now, I will definitely stay with InnoSetup and keep my supporting work focused on real application issues, not wierd MSI problems. For Administrators, installing PopScan for their users, we provide a detailed documentation describing, which file goes where and what the installer does, thus providing the administrator with the means of either create an MSI (which can be done automatically these days. The result is not optimized, but it does it’s job. Combined with our documentation, this can be a real alternative) or use other technologies to deploy the software.

My favourite Firefox extensions

I’m using Mozilla Firefox as my main web browser. You know, that you can install extensions for every feature imaginable, but maybe, you are like me – undecisive on what to install. Here is my list of extensions I have installed in my firebird, which I’m constantly fond of having:

  • Popup Count. While it has no real purpose, it seems to have no negative effects either, so it’s fun to watch all those popups getting killed in real time.
  • Download Manager Tweak. Useful because the downloads take less space on screen and because I can customize the download managers toolbar with it (I use “open folder” quite often)
  • TargetAlert: Displays a small icon right of links that do not point to an other HTML-File on the same domain. Very useful, though it has two bugs: 1) sometimes when reloading, the icons get duplicated. I can’t actually reproduce it, but I’m trying to 2) the images are added by altering the documents structure (<img>-Tags are added). Using CSS would be nicer, IMHO

While compiling the list and adding the URLs to the link above, I notices that all the extensions come from the same author and that his webpage seems to be down. The former is a coincidence (really!) and the latter is too bad as it kind of defeats the purpose of this entry. But now that It’s written already, I’m going to post it anyway. Maybe, the site comes back.

The one and only theme I use is Qute, though I could possibly get used to the new default theme, but cute was with me for the last year, so I’m having problems adopting to the new one.

An experiment

Now that I have some problems with MT (it’s so terribly slow when not using mod_perl), I thought to myself: “Let’s do a little experiment. Let’s try out WordPress and let’s see what happens”

This is what happened. And this is the source of the template.

So. Was it worth it? How is it, working with WP?

While I really like the dynamical generation feature and the OPML-Upload, I have some problems with WP:

  • It’s not as flexible as MT. All those template-functions output much too much HTML (every little bit of HTML-code is too much, actually). I had to change the stylesheet to accomodate wordpresses forced <ul> in the sidebar. And for the links I actually had to patch around in WP for my template
  • MT seems much more polished.

Anyway. As WP is written in PHP and contributions are certainly welcome (it’s free software after all), maybe I should look into contributing something.

And as for the future of gnegg.ch: I’ve not deceided yet, what I should do: Adopting the other gnegg.ch templates would take about half a day to one day, which is terribly much time to invest in replacing something that essentially works.

So, as I said here, I’m going to stay with what I currently have – for now. At least until I hear back from MT about my support ticket, as mod_perl is a requirement for me to be running MT.

MT 3.1

As you almost certainly know, MovableType 3.1 has been released.

Reading the feature list – especially the entry about dynamical publishing – I deceided to upgrade.

Needless to say that much went wrong:

  • The dynamical generation is of no use to me because I’m using (exactly one) cutom tags in my archive template and custom tags do not work with dynamical generation. Too bad. And too much documentatino to read to port it to PHP
  • My beautiful mod_perl setup ceased to work. Somehow MT sometimes (this is completely random) gets a random number back from $q->parse in lib/MT/App.pm. Updating Perl, Apache and mod_perl did not help. The effect of this bug is a randomly occuring “Upload too large” error. Back to CGI then… (I’ve opened up a support ticket. Let’s see how good this support really is)

At least I can now use MT-Blacklist as it does not work in mod_perl. Much trouble for setting up something I dont really like either because of its extremely commercial background. We’ll see what the future brings…

How journalism should not be done

I am subscribed to the german “Linux Magazin” (it’s articles are translated and published to the english “Linux Magazine”) and today I received their anniversary edition (10 years Linux Magazin).

With great interest, I read the article “Insel Hüpfer” on page 56 and later. It’s about the author telling his story of finding security holes in the setup of a big german hosting provider

The author goes into great details when describing what he did and full of pride he actually tells the reader the MySQL-Root password of one of the compromised servers:

Und dann entdeckte ich erstmals etwas Erfreuliches: Das Passwort für MySQL-Root lautet: xxxxxx. So sollte ein sicheres Passwort aussehen.

Which means in english: Finally, I discovered something good: The mysql root password is: xxxx. This is what a secure password should look like. In contrast to the article in the Linux Magazin, I am definitiely not naming the password here!

All this would not be worse enough for me to blog about here if only they would not have been so stupid to actually show the user the name of the provider!

While all URLs are left out and the article does not name the provider, they made two bad mistakes:

  1. On page 63, there is a screenshot of a compromised FAQ page. While they cleared out Mozillas the URL-field, they did not do that with the big visible title of the page containing the domain name in the top left corner. Additionally if they had grayed out the text, googling with the contents of the rest of the page would too have led me to the providers address
  2. On page 64, they have a screenshot displaying the URL of the compromised phpMyAdmin, graying out the domainname, but leaving the URL intact otherwise. Too bad that the name of the provider is no secret anymore (see above).

All this would not be so bad (it certainly is bad for the publisher of Linux Magazin as this will get them in trouble with the provider), it really is catastrophical that the provider has not changed the password printed in the article!

This means that any reader of the Linux Magazin (currently only subscribers – I really hope they stop further delivery of this issue) can access the MySQL-Databases of many customers of said provider!

Posting stories like this is really nice and is what gets you the readers actually, but if you do this, please take care not to publicly post compromised passwords that continue to be working when your edition goes to press. And don’t leave clues like URLs and other stuff that points to the victim in question! Please!

Comments working again

OK… there was this… embarassing… problem with the pilif.ch-Domain. Talk about forgetting payment for the registration ;-)

The problem is fixed. so the comments and the search function should be working again…

No more blur

When reading my Think Pad T42p review the other day, you may have seen that my only problem I had with the fine machine was that the DVI port of the docking station supported only the 1280×1024 resolution. This forced me to use the analog video otput to power my cool 21 inch 1600×1200 LCD at my workspace.

My problem with this solution: The picture was blurry and a bit unsharp. While it got way better after upgrading the VGA cable to something better than what came with the display, it still did not get as sharp and crisp as the image I had on a 1280×1024 18 inch display I had connected via DVI. Actually it was still quite blurry – at least for me, used to the sharper display.

A comment in my blog entry (many thanks – comments like this are the only thing keeping me deleting all those SPAM-comments while still not disabling the comment function) pointed me to this forum entry which in turn pointed me here.

Omegadrivers provides a hacked version of ATI’s Catalyst driver that enables the Think Pad’s DVI port to support the 1600′ resolution (Actually, the driver is optimized for gaming-performance, but that’s not so important for me)! Very nice!

Now the image is clear and crisp, just as I always wanted it to be. Cool

Now… if someone could tell me what I have to do to un-break the OpenGL-Support, I’d really appriciate that… Whenever a program is using OpenGL it immediately crashes using those new drivers.