Taschenorakel.de

Postings tagged with rant

Firefox 6 Memory Usage

Firefox 6 landed on my Ubuntu box, so obviously it's time for my mandatory Firefox rant...

top - 14:42:13 up  4:24,  7 users,  load average: 6.52, 4.21, 1.83
Tasks: 216 total,   4 running, 211 sleeping,   0 stopped,   1 zombie
Cpu(s):  5.0%us,  8.5%sy,  0.2%ni, 17.3%id, 69.1%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3951008k total,  3915284k used,    35724k free,     2500k buffers
Swap:  4001788k total,  1353916k used,  2647872k free,   335360k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                
16775 mathias   20   0 5454m 2.8g  16m S    0 73.3   3:21.52 firefox-bin

This is with 6 tabs open: Bugzilla, Google, nothing heavy. Not funny at all.

Maybe a Firefox bug, more probably Ubuntu messing up with patching under time pressure.

Anyway: Time to read about quality management, to consider how mixing security fixes with feature releases impacts release quality, to consider how rushing releases impacts release quality.

Sorry for sounding arrogant while pointing out the obvious.

Update: Resetting layers.acceleration.force-enabled did the trick.

Firefox does silent major version update!?

First I was just annoyed by Firefox's "your browser has been updated and must be restarted nagging banner": It slides in with an annoying animation with each tab you open. Even if you closed it. There is no "nag me not" button. GUYS! I'VE GOT WORK TO DO! On an internal website. This site is secure. I promise: "I won't visit that malware ridden Internet before restarting. Really!"

But then searching for a release log - again no link or button in the nag screen - I clicked the about dialog and almost fell of my chair:

Firefox FIVE DOT ZERO!?

confusion

Checking system packages.

more confusion

How comes I've got a silent major version upgrade of Firefox!?

insults filling the head

Are you the new IT bad boys? Like those that motivated building free desktops years ago? Is that really your goal?

Disclaimer: Sorry for disturbing your morning. Call me stupid if you prefer. This had to be posted.
Second Disclaimer: Italic portions are edited text since Planet GNOME editors found my blog post insulting.

Update: Issue was caused by Ubuntu's update manager silently installing security updates by default, and Firefox 5 being marked as such. Some things are worth to reconsider I'd say.

Web video lies

Those days it's easy to read things like: "Every decent browser supports WebM". So let me share some little wisdom: Things don't become true, just because Google tells so.

For instance Ubuntu 10.04.2 LTS does not support WebM, unless you activate some obscure PPAs. Maybe.

Firefox supports WebM only since version 4, which was released just a few days ago.

My smartphone also doesn't support WebM - because it has the shocking age of one year.

So please: THINK! before you allow someone to abuse you for their propaganda.

Deciding now if I am curious enough to waste time on figuring out webm support for my notebook.

Edit: Ok, at least Google's Mark Pilgrim agrees that WebM is not mainstream yet.

The limits of "community driven"

So I decided to finally upgrade from Karmic to Lucid. Easy task, only should take some time: After all I did a plain default install. Well, ok - I've used the alternative ISO as my employer requires me to use full disk encryption. It's a good idea anyway, no idea why this feature isn't the default for all installs.

So after some time the install finishes, the computer reboots and grub the kernel tells me it cannot find the root fs.

Obviously nobody cared to check if upgrade with encrypted disks works. Too boring. Still would not have happend with some professional OS vendor. Especially not four mounths after the initial release.

EPIC FAIL! Thank you. Not.

Update: In case you need proof for "too boring" check this rotting bug report.

The user is always right

Today I had a failing fsck during Ubuntu startup: any HDD activity would simply stop when the check claimed to have reached 89% Couldn't abort, had to cold start the box. Same result. OK, abort the check, bypass it and see what's going on. If only! Ubuntu thinks it is a great idea to drop normal users into maintenance mode. Once you leave maintenance mode, the check starts again! Same result. Did it occur to anyone that the check itself might be at fault sometimes, and that a userfriendly way to bypass this check is absolutely crucial?

(If fsck had a better reputation for finding real problems instead of being the root cause for many data losses, and if the ext4 version wasn't written by mr-lossy-file-systems-ftw himself, then perhaps I'd be worried. I am not. Fsck offers little protection if you don't have a real backup anyway. So the best advice is really to disable any automatic fsck checks.)

About missing flights

Frequent fliers will know this, but to everyone else: If you ever should be that stupid to miss a flight, call the airline where you booked that missed flight as soon as possible. Otherwise they will cancel your inbound flight and bet on charging you an incredible amout of money for your previously reserved seat. For me they lost their €700 bet yesterday. Just took another airline.

About delegates and cell renderers - data formatting in Qt

Warning: the following blog post has a rant-to-usefulness ratio of 3:1.

Last week I needed to perform some data formatting on Qt list view. From reading the documentation alone I could not find a satisfying answer. When asking on IRC the answer was to use proxy models. This would have worked, but having two models for one view can create all kind of correspondence problems (think of sorting etc.). And there is this interesting bugreport, complaining that there is no easy way to format data. Status: rejected! So formatting should be a responsibility of the view? Wow, who would have thought ... however, if proxy models are a no-go we are left with ... custom delegates.

(cut some nonsense about MVC)

In the Qt world, a delegate is reponsible for 3 tasks:

Somehow, that's two tasks too many, for something that is not a controller. That's where I prefersLet's take a look at GTK+ cell renderers: they only perform one task, and that's exactly what their names suggests(correction: actually, they are responsible for editing and updating as well, should have read more). A text cell renderer renders text, a pixbuf cell renderer renders pixbufs, and so on. Simple but tremendously flexible.

So how can I inject this flexibility into delegates? The QItemDelegate won't be very useful unless you want to use a QPainter for everything. But there is this styled item delegate, added with version 4.4 of Qt. And if we look at the roles & accepted types table we can see how this - together with displayText - could translate nicely into Qt "cell renderers". So we create custom styled delegates for each data type we need to display in our view: text delegates, pixmap^Wdecoration delegates ... Once we have defined a set of custom delegate classes we then request the view to use them on a per-row or on a per-column basis. A proof of concept can be found here.

EDIT: Had to correct some nonsense, this post was too much of a rant and I wasn't thinking clearly. What I originally wanted to express was that with QStyledItemDelegate we can have something very similar to GtkCellRenderer and use them both in a very similar way, too. I think the Qt documentation could have been easier to follow with straight and simple formatting data example, hence my rant. Sorry =/

Who wants my feedback for the Maemo6-Qt tech preview?

During the Maemo Summit there were several talks about the upcoming Maemo 6 platform and also about the transition from GTK+/Hildon to Qt. One of them - the "(Introduction to the) Harmattan UI framework" also mentioned where to get the code for the Maemo 6 UI Framework from. So I went there and cloned the two available repos (tech preview of the framework, tech preview of the homescreen) together with the most recent Qt version that is also on that site.

But sadly, compiling the code wasn't possible for me. Apparantly because some header files were missing. The talk didn't mention a specific resource for feedback so I tried Maemo's Bugzilla. An e-mail to the git repo maintainer didn't yield any response (yet), either.

I reckon that my bug report on the Maemo bugtracker was filed against the wrong module (Qt on Fremantle), but where else should I post problems like that? Even if at this stage the above mentioned repos are probably not much more than a widget gallery it seems like a wasted opportunity to collect feedback, no?

Rant: Trade Imbalance Penalties

Barack Obama on CNN: "We can't go back to the era where the Chinese or the Germans or other countries just are selling everything to us, we're taking out a bunch of credit card debt or home equity loans, but we're not selling anything to them".

Found this quote when searching for stories supporting Financial Times Deutschland's story about US and UK officials having tried to establish trade penalties for export nations like China, Germany and Japan during the Pittsburg G20 summit. Either that story is just wrong, or US and UK turned into communistic dictatorships when I was sleeping under some rock. On the other hand FTD is considered one of the more reliable papers. At least Reuters seems to confirm the FTD story.

So what's about "just" fixing your industries and producing desirable products again? Weren't US and UK usually the first with praising capitalism, competition, challenges? High wages cannot be the reason for your trade problems: German and Japanese industry workers are well paid.

Well, now trying to calm down again.

Why Squeak is not the answer, part 2

Error handling (or god forbid, exception handling) is one of the weak parts in Squeak. A great deal of course comes from its dynamically typed nature. However, the greater impact probably comes from the utter lack of guard clauses in most core librares I've seen so far: Objects will happily accept any kind of parameter and continue to wrack havoc on them until the debugger, at some later point (IF we are lucky), stops the travesty.

Let's move on to BitBlits, where the lack of parameter checking and the absence of proper initialization quickly crashes your VM. Why use BitBlits at all? Because Morphics are crap. More precisely, they feature:

  1. poor performance (I guess all the redrawing with overlapping Morphic instances doesn't come for free),
  2. a hideously complex class hierarchy
  3. undocumented models (say, the model for PluggableListMorph)
  4. a hard-to-access event loop (read: no ready-made support for signals & slots),
  5. a complex API (only for the base class Morph itself "Morph methodDictionary size" returns 1165 methods, yikes).

Naturally, while using BitBlits or Forms most work is actually done by Squeak primitives, that is, external C code that is called by some Squeak wrappers. At this point proper argument checking becomes paramount, or else:

Note the out-commented line, which would prevent the VM crash. Appearantly the form's depth isn't initialized. The funny part starts when you replace "destForm: form" with "destForm: Object new", which triggers the proper error handling and prevents the VM crash as well.

The comment at the top of this method reads "deprecated". Sadly, bitmaps are much faster than any compressed image format, even after the initial reading (oops?). More importantly though is that we have different behaviour (crash/no crash) depending on the platform where this is executed. Wait a moment - a VM? Platform-dependant? Actually, this is not the only example, many Form methods will not work with the Linux VM. But instead of telling you, they'll happily crash the VM, too.

(Get the magic bitmap here.)

Oh well, at least Squeak is good when it comes to runtime optimizations, like any other VM. And loop unrolling is so basic it is hardly worth to test it. Or is it?

This executes in 4ms on my machine.

WTF?! 17ms? Well, one quick optimization is to store the range (interval) of the inner loop like so: innerLoop := 1 to: 3.

+1 for everything (but variables) is an object, -1 for code obfuscation, +1 for getting execution time down to 12ms. But still. WTF?!? Does the code really spend 8 precious milliseconds in the loop variable handling (with other words, 67% of the execution time)?

(My personal) conclusion: Squeak fails at getting basic stuff right. The things it gets right (reflection/introspection, fast development round-trips) are fantastic! But it suffers from a big NIH syndrome so that instead of wrapping useful and established libraries you are left alone with an incomprehensible "self-documenting" class library. Also, wrapping C libraries using the foreign function interface seemingly requires recompilation of the VM ... platform independence, anyone?

I'd welcome comments correcting my perception problems with Squeak!

Priceless...

Interesting how German computer scientists use their office hours: Elements of an EmotionML 1.0.

<emotionml xmlns="http://www.w3.org/2008/11/emotionml">
 <emotion>
  <category set="humaneDatabaseLabels" name="Amusement"/>
  <intensity value="0.7"/>
 </emotion>
</emotionml>

Found at plasmasturm.org.

Static Panel Nonsense

Vuntz, you ask for angry reactions, here is your first one: This static panel stuff is the biggest nonsense I've seen in years! You've presented us an early April's fool joke, didn't you?

Please visit some real people and look at their Windows or OSX desktop, look how they customized the Quick-Launch area respectively their dock and then come again, please.

Important hint: Whenever you try to improve something, you should be as good as the old solution at least. Otherwise you just wasted time.

Come on: You don't really expect users to do several clicks for launching their prefered application, if the current, customizable panel supports this with one single click? Sorry, but the ability to add application launchers to one promiment one-click-location is an essential feature of each desktop shell. And no! I also don't want this list to be generated automatically: I'd feel ashamed if my desktop would tell everyone at a short glimpse, that Solitare is my favorite application.

Well, or if you guys really are convinced of this crap, do it in a side project please, but don't destroy GNOME's desktop shell.

PS: That's how my desktop looks like right now, and I am extremly happy with it.

My GNOME Desktop

Notice how I've disabled desktop icons, since they cause just clutter. Notice how I've filled the bottom panel with information more useful than the task list applet. The very first icon of that panel opens a popup with all current windows. This works much better for finding lost windows than this obscure task.

Update: Btw, you might think that my panels contain information you consider not important. Well, good catch, you've found one of my points: Judgement what's essential information largely differs among individuals.

Firefox Certificate Insanity

Christopher, this kind of insanity and the arrogance with which related feedback is handled, is exactly the reason, why people want alternate browser UI's. Sometimes I really wonder if Mozilla's UI designers serve the users, or if they just serve their ego.

Combine this need for custom UIs with the uglyness of Mozilla's bloated XPCOM APIs and the inability to keep them stable - some people even perceive the situation as sabotage - and you know why developers turn their back to your project.

PS: Colin, you totally forget that FOSS land doesn't only consist of big companies! Expect for big companies nobody, really nobody is paying for certificates. Only alternative seems to be CACert, but their website and the short-livingness of their certificates also make it a pain to use.

29 years and still immature...

g++ just gave me this error message right now:

./JavaScriptCore/kjs/ArgList.h:133: error: extra qualification 'KJS::ArgList::' on member 'operator new'

Would be nice if this language (or its compilers) would have matured that much, that you don't always need exactly the same C++ compiler as the guy writing the code you try to compile. It was just 29 years ago, that C++ was invented...

Leaving Gentoo behind - UPDATE

Today I freed myself from that incredible mess Gentoo had become on my box. Having shiny new software again should let me forget the pain quickly. Also, reconfiguring my GNOME desktop was a mere by-product of copying my home folder back onto the box (yay!).

UPDATE: Wow, it makes a huge difference whether you evaluate a distro thouroughly or just give it a quick glance. Lesson learned: Never enter a distro war without having used the other's distro on your desktop for a week. Of course I knew Ubuntu before, and I already installed it on several boxes, too. But only now, as my desktop distro, I realize how much they already got right. For example, my main argument to keep Gentoo was "But - I have a working compiler environment from the start, with all the header files and libraries!" Had I only known before that it takes 2 packages on Ubuntu to get nearly the same functionality .... Funnily enough, Ubuntu isn't any slower, so there's goes the second argument. Leaves USE flags. Though honestly, I rather prefer working dependencies resolvers than having to test for circular ones.

And finally, sound works. It even remembers my settings!

OK, now on the downside: So I wanted to watch some DVDs: I put the DVD in, totem opens (wow, autoplay on Linux - finally!) and instantly prompts me to download the codecs. If only now the DVD would play, it would have been a convincing demonstration to Windows users. But as some may guess, things go downhill from here (sigh) - you need the medibuntu repo to get the right codecs, add a key manually and even then totem won't play the DVD. I had to fetch mplayer (my most favourite player still after all these years) and then it worked. Sadly, less savy users will consider DVD replay to be broken in Ubuntu and give up. So please, even if the codecs are non-free (as in speech), make a proper wizard at least so everyone who can live with non-free codecs will be able to enjoy DVDs on the Linux Desktop.

Nag Screens have reached GNOME now

Dude, this sucks! Really. Nag screens[1] finally have reached GNOME: When you insert a CD unknown to the MusicBrainz database, Sound Juicer shows a nag screen asking you to upload that information to MusicBrainz.

MusicBrainz Nag Screen in Sound Juicer

I understand that people want to support their favorite service, but in the case of MusicBrainz this is support is really annoying: MusicBrainz - at least as integrated into Sound Juicer - doesn't seem to support anonymous contributions, well and seriously I have absolutely no intend to publish a list of any CDs I've ever put into my computer. So MusicBrainz really belongs to those non-free big-brother services I really do not want to be bothered with.

So can we stop this non-sense of advertising non-free services please, before it gets out of control? Not being bored by nag-screens once was one of the big selling points of free desktop environments, do you remember? We really should not give it up easily.

[1] Annoying advertisement for non-free stuff built into computer programs.

PS: Discussion of this issue should probably should happend in Bug 537441.

Follow up: Ross, in the case of Sound Juicer I am user, and users have every right to be pissed, when developers totally screw it. Nevertheless I want to work on this issue. Closing that problem report as "WONT FIX" with each of your comments neither helps to get the problem solved, nor to calm down the situation.

Follow up 2: Hmm... It's 01:04 CEST now, I am cooled down and wonder why I got that upset. Yes, nag-screens are wrong and Sound Juicer tried a good thing, but didn't get this notification 100% right. Guess I should have handled this more silently, well but guess I won't have written a patch at all in that case - which would have been bad. Frustration: Either I piss many people, but finally write a patch - or I react professionally, but also calm down too much, so that I do not care about patching. Clearly suboptimal.

Launchpad's Personal Package Archives

Probably inspired by openSUSE's Build Service Launchpad provides this excellent Personal Package Archive (PPA) service.

It's quite exciting service: You just request your PPA, upload your source packages via dput command, and get them built within freshly setup Ubuntu environments. When building succeeds your packages are placed within some apt-get repository. No further maintenance steps required.

Unfortunately the service is not perfect yet: It seems to be driven by cron jobs and you only get feedback per mail. This makes the entire process very slow and inefficient. You have to find tiny tasks to fill up the 10 to 20 minute delays. Those tasks are rare, so at least I either end up idling/chatting or doing larger tasks. Very distracting. As a result it takes several hours until I know, that some PPA package is ready for use. I absolutely do not like this working style, I prefer staying focused on my current task, instead of wildly jumping arround between tasks.

Well, but this is just a minor annoyance, compared to the fact that PPA doesn't seem to allow you to delete/overwrite the upstream tarballs forming the base of your self-made Ubuntu packages. The idea of immutable upstream tarballs works nicely if you assume, that you aren't the maintainer of the software uploaded to your PPA: In that scenario you take an upstream tarball and apply patches until it works properly in Ubuntu, but you have no serious chance to modify the upstream tarball.

Things are different when you use PPA to publish software you maintain. In that case it happens, that you use PPA to package your release candidate and test it on your various Ubuntu VMs. During tests you spot minor show stoppers, commit fixes to your code repository, and run "make dist" to get another release candidate. After that you increase the PPA release number in debian/changelog and invoke "debuild -S -sa" to get the next interation of your Ubuntu package. Next step would be uploading that fresh package to your PPA, but that fails since suddenly the MD5 hash of your upstream tarball has changed. Of course! The bugfixes! Duh!

Only solution I've found so far: Skip an upstream release to make PPA happy. Not very convincing. Maybe the LazyWeb has some suggestions to work around that limitation?

Update: Yes, I didn't update the tarball's release number. It's just a release candidate. I'd expect a personal package archive to support release candidates. I prefer PPA over "debuild -i", since the build services attached to PPA provide a clean build environment.

Female Chauvinism

When watching Marc-André I've got one of those women's magazines into my hands and started reading. For a moment I wondered, if male chauvinism isn't just a bizarre invention of female chauvinists - that bizarre was the picture of men drawn there. Really hope, those articles and columns were some kind of bizarre female humor, males cannot gasp. Otherwise it's really no wonder, that many people are lonely those days: Chauvinism at both sides clearly doesn't help to understand each other...

Car Broken Open

This morning I had to find my car broken open. Since coming back to Berlin one year ago, this is the second time, some asocial bastard damaged my car. Its not even a new or expensive car. It's a trusty, 15 years old Vectra. What has happend to this place?

Is is time to leave this city of criminal and unemployed people?

Crap. Berlin's online police station also is offline: Maintaince work. No phone number, no address of the next police station in the phone book. F* world. Maybe I should just use the emergency number? It is an emergency - at least mentally.

Mathias, with one “t” (and “h”)

Btw: There are several spellings for the name my parents gave me, and I've got this variant:

Mathias with one “t” (and “h”)

I don't know why my parents have choosen this variant. People really seem to have problems with it. Every time someone writes it down, I have to explain the spelling: “Oh, just one 't', please” - “But with an 'h'?” - “Yes, with 'h'.” Nevertheless really I prefer my spelling. It looks much better to me, than Matthias or Mattias. Maybe I just prefer being Matze, instead of Matt. Don't know.

PS: Just learned, that “Matze” is the Yiddish name for some kind of Jewish bred, btw. Ok, would have to add some accent sign to get their pronounciation: “Mátze”. Wow. Incredible, what you learn by ranting.

PPS: Well, and I really hesitated to write this, but guess it has to be done - before I entirely loose my given name.

Whatever happened to Gentoo ..

... but when it comes to delivering shiny new software to the masses it got slower than ... cough ... Debian! The latter already has epiphany-webkit, based on epiphany-2.20. But here on my Gentoo box, the newest epiphany ebuild is for 2.18?!? Oh well ... one reason less to stay with Gentoo I guess =(

Liquid Bomb Complot

Luis, there was no prevented assault involving liquid bombs in London. There just are airport owners who want to force you to enter their overpriced "duty free" shopping malls. ;-)

At least that's the idea I had when waiting for my flight on Nottingham East-Midlands: My brand-new water bottle was thrown away at the security check, after the check there was only one shop offering water for a price of £ 3.20 per litre. The waiting area was full of shops and noisy. The departure monitors wrote "relax and shop" for pending flights. Relaxing was impossible at that noisy place. The shopping part made me angry considering the insanly high price level of that area.

Disclaimer: Don't take this theory too seriously. Most certainly there really was a prevented assault, but the effects of this prevented assault just are not acceptable for me. This "enhanced" security checks take forever, cause paranoia among flight guests and security personal. Well, and finally I am pretty sure they will not protected me from being killed by a terrorist. If the flight checks are too restrict, terrorists will target other public transportation vehicles to reach a high body count.

Let's talk about quality...

"Let's talk about quality...", that's what I was thinking, when the Six Mrd. Dollar baby called Vista, presented me that dialog box:

libzip supports PPMd

Got some WinZIP compressed archive using their propritary PPMd compression today. The evaluation period of my Wine powered copy of WinZIP has expired and I was not willing to renew it. Documentation for their PPMd is available, so I added PPMd support to libzip. Actually I already looked at it some months ago, but was too embaressed by Dmitry Shkarin's coding style: He obviously tries to put as many expressions as possible on each sheet of paper and mixes it with a wild casing style for identifiers. Someone should tell him that that source code primary is for humans, not for machines.

Source code is available via git: http://taschenorakel.de/git/libzip/