Eclipse 3.1 M2

The Eclipse team seem to have stopped announcing Milestone releases on the front page, so it’s a bit tricky to know when a new one is released.

So it may be old news, but Eclipse 3.1 M2 has been released.

It contains some nice new features.

The Milestone builds are extremely stable, so there should be no problems using it.

Is that still POP3?

My mobile phone provider here is sunrise. I am subscribed to what they call “Onebox”, a unified messageing solution.

I did that because I have access to my voice mailbox via their web-interface which is much more comfortable (and cheaper) than to use the mobile phone.

Unfortunately, their interface does not allow forwarding those messages to another address. While they say they do, entering a forwarding-address actually forwards the emails sent to the sunrise mailbox, but the voice messages stay where they are.

Today I though about accessing the box via fetchmail and sending it to my regular mailbox.

While this turned out to work extremely well (even the simple notification flag gets cleard on my handset when the fetchmail job forwards the message), the protocol the server speaks is awfully strange. It’s supposed to be POP3 passing around RFC2822 messages, it’s actually something else… Just have a look:

pilif@galadriel ~ % telnet um.sunrise.ch pop3
Trying 212.161.159.6...
Connected to um.sunrise.ch.
Escape character is '^]'.
 1 +OK POP3 umsi3-c04d2.mysunrise.ch vUMSI v1.6.0.0 (UM2 Build 030408) server ready
 2 user [phonenumber]
 3 +OK User name accepted, password please
 4 pass [password]
 5 +OK Mailbox open, 1 messages
 6 stat
 7 +OK 1 192931
 8 retr 1
 9 +OK 1421099 octets
10 From: [calling number] <[calling number]@mysunrise.ch>
11 To: -                      <[phonenumber]@mysunrise.ch>
12 Date: 04 Oct 2004  09:29 +0200
13 Message-id: 0xe97d4b80-0x40-0x3735-0x50
14 Subject: Voice Message
15 Mime-Version: 1.0 (Voice Version 2.0)
16 Content-Type: multipart/voice-message;
17   boundary="2448314160_4000_141330_5000.04102004_0929"
18 Sensitivity: Normal
19 Importance: Normal
20 X-Priebity: 1 (Highest)
21 Content-Duration: 64
22 X-UMSI-Transferred: Server-Id="1"; Server-Type="INFINITY";
23     Profile="[phonenumber]@4:6";
24     Original-Message-UID="244831416 004 005 14133"

(I’ve added the line numbers myself)

Line 7: Oh nice. There’s a message and it’s about 188 KiB large

Line 9: Wait a minute… 1300 KiB? Didn’t they say otherwise in Line 7? Actually it’s the server decompressing the Voice message and converting it to WAV just after the retr

Line 13: Is that supposed to be a valid Message-ID? Don’t think so

Line 15: What’s that? That’s not a valid Mime-Version Header

Line 18+19: Are those really valid message headers?

Line 21: What the heck is “Priebity”? That’s not an english word.. Maybe they mean “Priority”?

Line 22: Is this a valid header?

I pity the developers of mail user agents: They must cope with such rubbish and in the end, they are blamed if they do not. It’s never the vendors of the brolen servers because those are not visible to the end users.

Different question: Why is it always closed source commercial software doing such stupid things? They get paid to create working software and what you see above is not what I’d call “working”.

When I’m writing software communicating with some other component not written by me, I follow the defined protocol to the character whether the software is going to be publically released or not. It’s just polite.

Head First Servlets & JSP

Today I bought myself Head First Servlets & JSP.

While I have absolutely no intention in passing any Java related exam or even do anything JSP-ish in the near future (see my reasons here, here and here), I had to have the book.

Why?

For one thing: While I have my problems with Java, I’m still very interested in it and the technologies around it. This is the reason, why I’ve already read one or the other book about JSP. The scond reason: The “Head First” series is absolutely the best way of how a tech book can be written. It’s a pleasure to read them.

They are that good, that it’s even worth reading them even when you don’t really need to learn what’s in them. It’s just fun to read it. Try it yourself!

XAMS (Exim) and SpamAssassin

It just came to me, that with the new custom_query-option for the SQL-preferences, it will finally be prossible to integrate SpamAssassin 3.0.0 into XAMS

For those that do not know: XAMS is a sophisticated configuration for handling multiple virtual email domains, keeping all users in a strictly normalized MySQL database.

In contrast to things like vpopmail, it’s easy to set up, does not require patches to any software component involved and is extremely feature-rich.

XAMS was built by Oliver Siegmar, taking my initial idea (german. written von de.comm.software.mailserver), cleaning it up and adding a web interface

I posted my SpamAssassin configuration to the XAMS Mailinglist, so read it there.

Geocaching

cache.jpg

You may have heard of Geocaching.

This weekend I found my first cache. It was quite well hidden, but as I knew the territory (it’s where I lived from 1993 to 2000), it was not that difficult.

When I first tried to find the cache last sunday, it was already quite dark outside, so I had to give up. Yesterday, I’ve returned and finally found Magic Place / Forch-Denkmal

The picture was taken using my K700i. I didn’t have my camera with me

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.