Skip navigation.

Raphael's Pflock

miscellaneous Opera, Debian, Media and German posts

Einer von 420

Yeah:

Erklärung von Eltern aus IT-Berufen zu Internetsperren

Über 420 Familien von Internet-Fachleuten sprechen sich gegen die Einführung von sogenannten Internetsperren aus und fordern Sach- statt Symbolpolitik.

Background Music

Wouldn't it be nice to have background music in pubs and clubs that do not
make talking to each other impossible?
Some kind of music that leaves out the frequencies used for human speech.
Would probably sound awkward, though.

PCB Design Lessons Learnt Today

, , , ...

Learnt some lessons today:

  • If you mark the VCC pin of a component you created in Eagle as a "POWER" pin, it will be automatically connected to the VCC net. If you want to retain control over how you connect your power pins, mark them as "I/O" pins
  • On a PIC 18F2550 pins RC4 and RC5 only work as digital inputs, not outputs.


These mistakes cost me about two hours of debugging, cutting traces, and rewiring, as well as a bluetooth module that got fried by 5V (when it should have been connected to the 3.3V net).

Final Edition

, , , ...

Sad topic, great video:
Final Edition from Matthew Roberts on Vimeo.

After 149 years and 311 days, the Rocky Mountain News published its final edition on February 27, 2009.

Zwanziger gegen Zwanziger

, , , ...

Der Sport-Journalist Jens Weinreich ist einer der wenigen investigativen Journalisten der Branche und durchleuchtet den Filz aus Profi-Sport, Funktionären und Politikern. Er befindet sich momentan in einem ausufernden Rechtsstreit mit dem DFB-Präsidenten Theo Zwanziger. Jetzt bittet Weinreich um Spenden, da der DFB die juristische Auseinandersetzung wohl absichtlich in die Länge zieht, um ihm finanziell das Genick zu brechen.
Wer ein ausgeprägtes Gerechtigkeitsempfinden hat, oder etwas dagegen hat, wenn ein kritischer Journalist von einem allmächtigen Sportverband drangsaliert wird, der möge doch bitte sofort mal den obigen Link anklicken und spenden.

Kurzer Hintergrund: Weinreich hatte Zwanziger letztes Jahr in einem Blogbeitrag - aus aktuellem Anlass - einen "unglaublichen Demagogen" genannt. Herr Zwanziger fühlte sich unglaublich diffamiert und zerrte Weinreich vor Gericht. In zwei Instanzen urteilten die Richter allerdings gegen Zwanziger. Der war beleidigt und ließ eine DFB-Pressemitteilung schreiben, in der mit Unwahrheiten gegen Weinreich agitiert wurde. Diese Pressemitteilug wurde unter anderem an Bundespolitiker und Medien verschickt. Weinreich erwirkte auch gegen diese Pressemitteilung eine Verfügung. Nun versucht der DFB den Rechtsstreit mit mehreren Nebenschauplätzen in die Länge zu ziehen. Eine ausführliche Dokumentation dazu natürlich auf Weinreichs Website.

TEI'09

, , , ...

This should have been a live-blogging experiment. I wanted to blog about what I see and hear at the Tangible & Embedded Interaction (TEI) 2009 conference in Cambridge, UK from 16.-18. February 2009.
However, the hotel wifi did not cope that well with 170 computer scientists and designers. Thus, I've only covered part of the first day (see below). For a more complete report see Christian Zöllner's blog.

Like Christian I absolutely enjoyed the conference. The mix of designers, psychologists and computer scientists is pretty awesome. I've come back from TEI with a lot of new ideas and contacts. While TEI is a lot smaller and less prestigious than CHI, it is much more inspiring and useful.
Besides the talks there was a whole day of demos. That was absolutely necessary because there were over 30 of them, ranging from cool art projects over tabletop interfaces to sensors and frameworks. There was no "Best Demo Award" like at other conferences because it is simply impossible to decide what's the best out of such a wide range of demos.

Next year's TEI will be from 25.-27. January 2010 at the MIT Media Lab. Unlike the previous conferences, TEI'10 will also offer 'studios', real hands-on workshops for playing with electronics and other cool stuff. The submission deadline is somewhen in August 2009.

There was also some discussion whether to change the conference title from "Tangible & Embedded Interaction" to "Tangible & Embodied Interaction". An informal vote about the name did not show a significant trend towards one term or the other. I prefer the original name because "Embedded" feels more connected to hardware hacking than "Embodied". However, it's the community that makes TEI what it is, not the name.


Day 1 Log

Tom Igoe's Keynote

..was about the ecology of embedded computing.



There were not that many questions after his talk - I think that most people need some time to think about this issue.
The slides will be available online.

Session 1
(...)

Session 2

Jörn Hurtienne et al. - Sad is Heavy and Happy is Light - Population Stereotypes of Tangible Object Attributes

  • metaphors for object attributes
  • they used Lego parts for their user study :smile:
  • big-small
  • bright-dark (metaphors only really work with black/white, not with different shades of the same hue)
  • light-heavy
  • smooth - rough


Ayah Bdeir's Talk



Replacing the Battery of a Oral-B Sonic Complete Electric Toothbrush

, , , ...

We have a nice Oral-B Sonic Complete electric toothbrush. Unfortunately, the rechargable battery inside only lasts about two years until it is more or less dead.
Asking our vendor how much a replacement battery would cost we were told to just throw away the toothbrush and buy a new one. Great.

So I had to hunt down a fitting battery and replace it myself. If you want to do so, too, follow these steps (sorry, no photos):

  • Buy two GP100AFH NiMH rechargable batteries (Conrad: #250465)
  • Solder the solder tail on the positive pole of one battery to the solder tail on the negative pole of the other battery. Try not to heat the battery too much.
  • wrap both batteries in insulating tape so that you get one long battery
  • bend the two remaining solder tails in the same direction so that they lie flat on the battery pack.
  • open the toothbrush by turning the recess in its bottom a little bit counterclockwise (I think). A spring will push out the bottom cap.
  • carefully remove the bottom cap. Do not damage the wires that connect it to the main part.
  • push out the main part by pushing inwards the metal bar that protrudes from the top of the toothbrush.
  • carefully remove the main part from the shell
  • the battery is soldered to the circuit board. Don't try to solder it off. Instead, cut it off with a small wire cutter. Leave as much of the solder tails attached to the circuit board.
  • remove the battery
  • bend the remains of the solder pins so that they provide good contact points for the solder tails that protrude from the newly-built battery pack. If you don't understand what I'm trying to tell, either do what you think is right or send me an e-mail.
  • put in your new battery pack so that it makes contact with the leftover solder tails from the old pack. Of course, watch the polarity.
  • try if the toothbrush works again.
  • if yes: great - carefully reassemble the toothbrush
  • if not: throw away the mess and buy a new toothbrush

Buy proprietary, DRM-locked content and support the Free Software Foundation (FSF)

, , , ...

Bookzilla is a German online book shop with a great concept. The website is just a frontend to Libri.de - a big wholesale trader for books. However, any proceeds Bookzilla earns from selling you books are donated to the FSF. A really nice idea.
However, being just a store front for another shop can be problematic:
Bookzilla/Libri.de are selling e-books. They have many on software development topics. However, all e-books are copy-protected using the MobiPocket format. You can only read these e-books on devices that are supported by MobiPocket. Incidentally, Linux is not among the supported platforms.

Great.

Physisch vs. Physikalisch

, , ,

Weil's immer wieder falsch verwendet wird:

Physisch:

Bedeutungen:
[1] die Physis betreffend, körperlich
[2] tatsächlich vorhanden, materiell



Physikalisch:

Bedeutungen:
[1] zur Physik gehörend, Gegenstand der Physik seiend




Im Englischen ist "physical" mal wieder ein False Friend.
"Physical" entspricht dem deutschen "physisch", nicht "physikalisch".

Das heißt, dass es in der Regel falsch ist, wenn man von physikalischen Objekten oder Benutzerschnittstellen redet. Richtig ist "physische Objekte". Wirklich.

PS: Es gibt auch einen erheblichen Unterschied zwischen "scheinbar" und "anscheinend".

PPS: de.wiktionary.org ist gut!

Weihnachtsgeschenke

, ,

Aus aktuellem Anlass ist mir ein Spruch von Harald Schmidt eingefallen. Aus der Zeit, als Schmidt noch bei Sat.1 und lustig war. Naja, wirklich lustig ist der Spruch jetzt nicht, aber eingefallen ist er mir trotzdem:

Hast Du schon alle Weihnachtsgeschenke?

Nee, die gibt's doch erst am Heiligabend!



Transposing Python Arrays

, ,

Found at the Muffin Research Labs:

Transposing an array (a list of lists) in Python can be easily done using the map() function.

>>> list=[[1,2,3],[4,5,6],[7,8,9,10]]
>>> print map(None,*list)
[(1, 4, 7), (2, 5, 8), (3, 6, 9), (None, None, 10)]

Legalize it...

, , , ...

Detlef Parr (FDP) meint (PDF), dass Suchtprävention doof ist, wenn der Staat dadurch weniger Geld einnimmt:

Der neue Glücksspielstaatsvertrag ist eine Missgeburt. Wenn man sieht, dass Günther Jauchs SKL-Show wegen Suchtgefährdung aus dem Fernsehprogramm gestrichen wird und die Umsätze des Landes Sachsen – um nur dieses Beispiel zu bringen – allein im ersten Quartal 2008 bei den Spielbanken um 40 Prozent, bei Oddset und bei schnellen Spielen wie Keno und Plus 5 um 44 Prozent und beim klassischen Lottospiel um 14 Prozent gesunken sind, dann erweist sich dieser Vertrag als riesiges Verlustgeschäft, das durch den geringen Gewinn bei der Suchtbekämpfung nicht annähernd aufgewogen wird.



Wenn die Zahlen von Herrn Parr stimmen, dann hat der Glücksspielstaatsvertrag ja offensichtlich eine erhebliche Präventionswirkung.

Vielleicht sollte sich Herr Parr dafür einsetzen, das TV-Werbeverbot für Zigaretten aufzuheben. Dann kommt wieder mehr Geld in die Staatskasse.


via Kommentar bei Jens Weinreich

Vier Jahre

, , , ...

Grandios.
Anfang 2008: Kurz nachdem ich zum ersten Mal 20 Euro auf meine neue Geldkarte draufgeladen hatte, gab der Geldkarten-Chip den Geist auf.

Auf Geldkarte.de sagt die FAQ:

Was kann ich machen, wenn meine GeldKarte defekt ist?

Die Mitarbeiter Ihrer Hausbank können mit dem Bankensonderfunktionsterminal feststellen, ob Ihre Karte einen Defekt aufweist. Sollte der Defekt nicht mehr zu beheben sein, wird Ihnen das auf dem Chip gespeicherte Guthaben auf jeden Fall erstattet.



Als vor kurzem auch der Magnetstreifen auf einmal nicht mehr lesbar war habe ich deshalb die Karte zu meiner Bank - der DKB - eingeschickt, mit der Bitte, das Guthaben auf mein Konto gutzuschreiben.

Dann bekomme ich heute eine E-Mail:

Sehr geehrter Herr Wimmer,
der Chip der Karten-Nr. XXXXX läßt sich nicht mehr entladen.
Die Geldkarte wird zum Zweck einer späteren Gutschrift (ca. 4 Jahre) auf das Kundenkonto einbehalten.
Für Rückfragen stehen wir Ihnen gern zur Verfügung.
Mit freundlichen Grüßen

Deutsche Kreditbank AG



Juhuuu, schon in vier Jahren kommt mein Geld wieder aus der Geiselhaft frei.
Technische Gründe kann das in meinen Augen nicht haben - das Schattenkonto der Geldkarte wird regelmäßig zwischen Händlern und Banken synchronisiert, so dass nachvollziehbar ist, wieviel noch auf der Karte ist.

Mal schauen, was die auf meine Beschwerde antworten.

Wahl mit Münzen

, , ,

Hadmut Danisch meint zum Thema "sichere Wahlcomputer":

Was mich zu der Frage bringt, ob in einer vertrauenswürdigen Wahlmaschine überhaupt mehr als ein Zähler sein darf.



Das hat mich gerade auf eine Idee für “gute” Wahlmaschinen gebracht (auch gleich als Kommentar bei ihm gepostet):

Jede Wahlkabine hat mehrere Urnen, für jeden Kandidaten oder jede Partei einen. Jeder Wähler bekommt bei seiner Identifizierung eine Anzahl spezieller Münzen. Er hat prinzipiell einen Anspruch darauf, sich diese zufällig aus einer Menge herauszupicken. Jede Münze repräsentiert eine Stimme.
Die Münzen wirft der Wähler dann in der Wahlkabine in die Urnen.
Die Urne hat eine Elektronik, die überprüft, ob eine Münze valide ist - ähnlich dem Münzchecker im Zigarettenautomat. Wenn dies der Fall ist, fällt die Münze weiter - an einem Sichtfenster vorbei - in die Urne.

Nach der Wahl werden die Urnen einfach gewogen, und das Nettogewicht durch das Gewicht pro Münze geteilt, um die Anzahl der Stimmen in der Urne festzustellen. Wenn nötig oder gewünscht, kann auch nachgezählt werden.

Vorteile:
  • schnelle Auswertung (_das_ Argument für Wahlcomputer)
  • Nachzählbarkeit
  • Wähler kann korrekte Stimmabgabe verifizieren
  • Nachdem die Münze am Sichtfenster vorbeigefallen ist, ist die Wahlentscheidung nicht mehr nachprüfbar
  • intuitiv (behaupte ich mal)
  • Elektronik kann das Wahlergebnis nicht manipulieren


Mögliche Probleme:
  • schwieriger umzusetzen bei komplexen Wahlsystemen - da müsste man mal überlegen
  • es muss organisatorisch oder technisch sichergestellt werden, dass niemand mehr Münzen einwirft, als er darf. Wenn jemand das macht, erkennt man es aber am Unterschied zwischen ausgegebenen und eingeworfenen Münzen.
  • der Münzchecker könnte prinzipiell mitloggen, wann eine Münze eingeworfen wurde. Dagegen hilft teilweise eine Offenlegung der Baupläne, und Versiegelung der Münzchecker. Dann wäre das Auslesen nur unter extrem hohem Aufwand (pro Gerät) machbar.


Mit relativ geringem Aufwand könnte man so die Wahl intuitiver machen und die Auswertung beschleunigen, ohne Wahlcomputer zu verwenden.
Die erwähnten Sicherheitsprobleme sind meiner Meinung nach auch nicht deutlich größer als bei der aktuellen Papierwahl. Und deutlich geringer als bei Wahlcomputern. Vor allem lassen sie sich kaum zur großflächigen Manipulation einer Wahl nutzen.

Habe ich was übersehen? Gibt’s das schon?

Geldautomaten-Krise

, ,

Lustig. Am Freitag, 3. Oktober haben die Geldautomaten von 150 Sparkassen in Nord- und Ostdeutschland kein Geld mehr rausgegeben. Grund war angeblich ein Stromausfall.

Heute, Samstag, 4. Oktober, waren zumindest im Münchner Osten (Laimer Platz) die Geldautomaten von mehreren Banken außer Betrieb. Meine Frau hat es bei HypoVereinsbank, Postbank und Münchner Bank (= Volksbank) erfolglos probiert - genau wie Dutzende anderer Kunden. Grund waren angeblich "technische Probleme". Dafür gingen wenigstens die Automaten bei der Sparkasse. Dort bildeten sich dann zwangsläufig lange Schlangen.

Ein Schelm, wer Böses dabei denkt.

Der deutlichste Kontrast zu Schwarz

Jaja, liebe FDP.

[FDP-]Spitzenkandidat Martin Zeil erneuerte nach der Wahl sein Koalitionsangebot an die CSU: Er sehe "für andere Koalitionen keine ausreichenden Übereinstimmungen".

Unfug

, , ,

Herr Herrmann hat auf meine Frage, weshalb er denn Killerspiele für alle Deutschen verbieten will, geantwortet was geschrieben.

Kern seines Beitrags ist:

Die Herstellung und Verbreitung von Alkohol mit dem Herstellen und Verbreiten von "Killerspielen" generell gleichzusetzen, halte ich jedoch für sachlich verfehlt, denn hier geht es um etwas völlig anderes. Die bayerische Initiative gegen "Killerspiele" richtet sich gegen Machwerke von abstoßender Brutalität und Grausamkeit, bei denen es darum geht, am Bildschirm grausame oder die Menschenwürde verletzende Gewalttätigkeiten zu begehen. Gegen solch moralisch und ethisch abstoßende Werke nicht vorzugehen und damit zu rechtfertigen, dass man dies nicht auch gleichermaßen gegen die Herstellung und Verbreitung von Alkohol tue, wäre so, als ob man Äpfel mit Birnen verwechselt und wäre Unfug.




Wenn ich das richtig verstehe, sagt Herr Herrmann, dass er ja gegen die Killerspiele doch nicht deswegen vorgeht, weil sie vielleicht die Jugendgewalt erhöhen, sondern eigentlich, weil es "moralisch und ethisch abstoßende Werke" seien.

Ich will jetzt nicht die moralischen und ethischen Implikationen von Alkoholkonsum erörtern.

Ich finde Gewalt in Computerspielen auch nicht toll. Aber ich sehe akut keinen Anlass für einen §131a StGB. Ich halte die existierenden Regelungen für ausreichend. Moral kann man nicht durch Sondergesetze erzwingen.
Und erst recht sollte ein Innenminister nicht Argumente an den Haaren herbeiziehen um seinen Steckenpferdparagraphen zu promoten.

Ach, ist ja eh wurscht.

Full Disclosure: Ich konsumiere sowohl Alkohol als auch Egoshooter. Beides in Maßen.

Power outlet at Hamburg Airport, gate C05

,

If you are in desperate need for power, you might find some at the waiting area in front of gate C05 (Terminal 1) at Hamburg Airport.

vimeo-dl

, ,

Vimeo is a great YouTube competitor. They allow you to download most movies. However, an uploader can deactivate downloads. More or less:
http://vimeo.com/moogaloop/play/clip:1641641/0/0/?q=hd


Update (2009/01/11): This method does not work anymore. However, Clipnabber allows downloading "download-protected" Vimeo videos.

Mal eine Frage an Herrn Herrmann

, , , ...

Die folgende Frage habe ich eben auf Kandidatenwatch dem bayerischen Innenminister gestellt:

Sehr geehrter Herr Herrmann,

Im Interview mit ZEIT Online vom 5.9.2008 äußern Sie die Ansicht, dass sogenannte "Killerspiele" komplett verboten werden müssten. Eine Altersbeschränkung reiche nicht aus.
Sie begründen Ihre Haltung mit zwei Argumenten:
(a) "[...] wenn Spiele auch nur zu einem bestimmten Prozentsatz ein höheres Maß an Jugendgewalt auslösen, dann ist das Grund genug, sie zu verbieten. "
(b) "Wenn ein 18-Jähriger ein Spiel in der Hand hat, gibt er es am nächsten Tag an 17-, 16- und 15-Jährige weiter."

Ungefähr 27 Prozent aller Fälle von Gewaltkriminalität in Deutschland wurden 2007 unter Alkoholeinfluß begangen [2]. Ungefähr 24 Prozent aller Fälle von Jugendkriminalität waren Gewaltdelikte [3].
Eine Studie [4] in der Schweiz hat ergeben: "Bei Jungen ist rund ein Drittel der verübten körperlichen Gewalt alkoholbedingt, bei Mädchen sind es sogar zwei Drittel."

Es ist also anzunehmen, dass auch in Deutschland mindestens ein Drittel der Jugendgewalt alkoholbedingt ist.
Meiner Erfahrung nach gibt es auch genügend 18-Jährige, die Alkohol an Minderjährige weitergeben.

Meine Fragen:
1. Stimmen Sie der Aussage zu "Alkoholkonsum bei Jugendlichen löst ein höheres Maß an Jugendgewalt aus"?
2. Sind Sie demnach für ein striktes Alkoholverbot (für alle Bürger) in Bayern?
3. Falls nicht, in welcher Hinsicht hinkt mein Vergleich von Spielen mit legalen Drogen?

Vielen Dank,
Raphael Wimmer


[1] http://www.zeit.de/online/2008/36/killerspiele-verbot-interview-herrmann
[2] http://www.bka.de/pks/pks2007/p_2_2_3.pdf
[3] http://www.bka.de/pks/pks2007/p_2_3_1.pdf
[4] http://www.sfa-ispa.ch/DocUpload/rr_Espad_Alkohol_Gewalt.pdf

Neural Networks for Knowledge Bases

, , ,

Technical support centers usually have a knowledge base. It contains a large number of symptoms and solutions for common problems. When a team member encounters a new problem, she can look it up in the knowledge base. If she can not find it she needs to resolve the problem using her own experience. Once solved she enters the problem description and her suggested solution into the knowledge base to help other team members resolving this problem.

This does not scale infinitely, however. Once you have got several problems with one or more common symptoms it gets increasingly difficult to find the correct problem for your symptoms. For example, a not working internet connection can have dozens of primary causes. Just searching for the terms "internet down" in your knowledge base won't help you much.
A solution to this problem are 'wizards'. They guide you in determining the cause of a symptom by asking you questions like "Can you ping the router?" or "Can you resolve example.com?".
However, such a wizard has to be written and updated for every problem domain. Someone who has a vast knowledge of problems and solutions hard-codes his problem-solving algorithm into such a wizard.

But what about symptoms of problems noone knew about when writing the wizard? What about problem domains where noone has written a wizard yet?

20Q is a pretty cool online game. The computer asks you to think about an object (e.g. a bath tub). It will then ask you twenty questions about this object (e.g. "Is it larger than a cat?", "Can you eat it?"). After yu have answered these questions the computer will try to guess the object you think of. And it guesses the correct solution almost every time.
Behind the curtain a neural network is at work. It selects possible solutions to your answers based on the answers other people have given. If the neural network does not know of an object yet, it will ask you for its name and a question-answer pair which would help determining it.
The more people play this game the more gaps in 20Q's knowledge get filled. I'm absolutely impressed.

Couldn't we use such a neural network for searching knowledge bases? Like in 20Q the network would act like a wizard, asking you some questions about your problem and providing you with a possible solution. If it does not know of a solution yet, the neural network will ask you to find out yourself - and afterwards enter the solution and a question leading to it.

I've carried this idea for several years now. Do you know of any implementation? If not, this might be a nice project. Feel free to take the idea and get immensely rich.

[SDCC] Storing your configuration in EEPROM

, , , ...

In a previous post I have documented how to write to and read from EEPROM in the PIC 18F2550.

For the new revision of CapToolKit I wanted to store all user-modifiable configuration variables in EEPROM. The user can change these settings over a plain-text serial interface. Typing "S↵" should store everything to EEPROM while "R↵" should restore all variables to the values stored in the EEPROM.
Here's what I've done (many variables removed for brevity). Im sure there are many similar or better solutions for this task - if you happen to know one please let me know.

// config.c
// (c) 2008 Raphael Wimmer
// licensed under GPL v2 or later

// do not include "configuration.h"
#include "eeprom.h"
#include  <stdio.h>

#ifndef STORAGE
        #define STORAGE 24
        // keep this also in sync with config.h!
        // of course we could use all 256 bytes of EEPROM.
        // but we also have to keep the whole array in RAM
#endif // STORAGE

union {
        struct {
                unsigned int  device_id;
                volatile unsigned char use_leds;
                volatile unsigned char bm_led_state;
                volatile unsigned char bm_led_blink;
                volatile unsigned int drift_offset[8];
        }; // SUM: 21 bytes
        struct {
                unsigned char eeprom_data[STORAGE];
        };
} cfg;

void save_cfg(){
        unsigned int i;

        printf("Saving config to EEPROM:\r\n");
        for (i=0; i < STORAGE; i++){
                printf(".");
                ee_write_byte(i, &cfg.eeprom_data[i]);
        }
        printf(" done\r\n");
}

void restore_cfg(){
        unsigned int i;

        printf("Restoring config from EEPROM:\r\n");
        for (i=0; i < STORAGE; i++){
                printf(".");
                ee_read_byte(i, &cfg.eeprom_data[i]);
        }
        printf(" done\r\n");
}


And the header file:

// config.h
// (c) 2008 Raphael Wimmer
// licensed under GPL v2 or later
#ifndef _CONFIG_H
#define _CONFIG_H

#ifndef STORAGE
        #define STORAGE 24
        // keep this also in sync with config.c!
        // of course we could use all 256 bytes of EEPROM.
        // but we also have to keep the whole array in RAM
#endif // STORAGE

extern union {
        struct {
                unsigned int  device_id;
                volatile unsigned char use_leds;
                volatile unsigned char bm_led_state;
                volatile unsigned char bm_led_blink;
                volatile unsigned int drift_offset[8];
        };
        struct {
                unsigned char eeprom_data[STORAGE];
        };
} cfg;

void save_cfg();
void restore_cfg();

#endif // _CONFIG_H


As you can see all configuration variables are stored in a struct cfg. Thanks to union this struct occupies the same space in memory as the struct eeprom_data. Instead of writing every variable to a specified EEPROM location I write the whole eeprom_data array. Restoring the variables is done the same way.
Be aware that the union definition in config.c and config.h is different:
The keyword extern in the header file tells the compiler that this union will be available from some other object file (i.e. config.o) when linking.

Advantages:
[*] no need to assign EEPROM positions manually
[*] no danger of assigning the same EEPROM byte twice.
[*] easily extensible
[*] storing/restoring works either completely or not at all - this avoids stupid bugs.

Disadvantages:
[*] array size should be adapted to your needs. you usually don't need 256 bytes of config data - and you usually don't want to spend 25% of your RAM for it.
[*] config.c and config.h have to be synchronized each time you add a variable
[*] no simple way to store/restore single variables

One caveat: C does not guarantee that the members of a struct in memory are in the same order as in your code. You can not expect that the first byte the struct occupies is also (part of) the first variable in your struct.
AFAIK, SDCC does order the variables in memory in the order you wrote them. But don't expect it or any other C compiler to behave this way.
For my example this caveat does not apply. I do not care in which order the variables are in memory. All this code requires is that the variables stay at the same place in memory all the time. Lacking a MMU the PIC does not have any other choice.

If you want to define EEPROM contents in your hex-file:
typedef unsigned char eeprom;
__code eeprom __at 0x2100 __EEPROM[] = { 0xAA, 0x1E, 0x00, 0x01, 0x0A, 0x64, 0x1E, 0x01 };

Thanks to arkadi for this tip!

Die Uni Regensburg baut - und bloggt

, ,

Die Uni Regensburg ist in den 60er Jahren zackig hinbetoniert worden. Das hat zur Folge, dass es seit längerer Zeit an allen Ecken und Enden tropft, bröckelt und kracht. Nachdem endlich 400 Millionen Euro für die Renovierung bewilligt wurden, baut die Uni kräftig um.
Als Informationsportal für Studierende und Mitarbeiter dient baustelle.uni-regensburg.de. Das Portal ist wirklich gut gemacht, wirkt sehr ambitioniert und hat einen lockeren Stil - ohne "trendy" wirken zu wollen. Für mich ein Musterbeispiel wie gute Kommunikation gemacht wird.

Beispiel:

Auf den ersten Blick ist unsere Uni hässlich. Auf den Zweiten auch. Auf den Dritten… naja, interessant. Nach vier Semestern hat man sich an den Anblick gewöhnt, zum Schluss gewinnt man ihr noch ein melancholisches ‚eindrucksvoll‘ ab. Muss das sein?

Fürwahr, ihre Ästhetik ist eine klobige, Kenner würden ihre Anmut vielleicht als skulptural abgegrenzt und angehend subtil bezeichnen – der Nicht-Kenner richtet beim Gang über den Campus den Blick lieber stur zu Boden. Was er dabei verpasst? Ein Kunstwerk am anderen, insgesamt fast 40 Stück.

Glaubt ihr nicht? Wir auch nicht, und deswegen machen wir uns jede Woche einmal auf die Suche nach der Kunst am Campus

OpenMoko's Neo Freerunner is available!

, , , ...


Yeah, the first completely open-source smartphone is available.
Well, technically not yet, but on 4th/5th of July.
In Germany three online shops are selling it: TRIsoft, Pulster, and Golden Delicious. All three have been selling the great Zaurus Linux PDAs before.

Finally - OpenOffice Presenter Console

,

The extension I have waited for so long. Only for OpenOffice 3.0 beta for now, though.

OpenMoko & Germany

, , ,

It seems like the Germany is one of the biggest markets for open-source hardware:

Google Analytics results for wiki.openmoko.org

Premiere

,

Es gibt zwei schöne, neue Entwicklungen, vor denen sich jeder Universitätsprofessor - und damit auch jeder seiner Mitarbeiter - fürchtet:

Klagen von Studenten wegen Formfehlern. Durch die sehr viel stärker formalisierten Bachelor-Studienordnungen wird der Spielraum bei Gestaltung und Bewertung von Übungen und Klausuren extrem eingeschränkt. Falls nun auch nur ansatzweise etwas gefordert wird, das über die Beschreibung in der Studienordnung hinausgeht, könnte ein Student klagen. Weil jede Note im Bachelor-Studium in die Endnote eingeht, ist eventuell auch ein gewisser Anreiz da, die Rechtsschutzversicherung mal anzurufen. Ob das jemals ein Student machen wird, weiß ich nicht. Es ist hier wie mit den Terroristen: Es wird wohl nie passieren, aber Angst haben kann man trotzdem.

Gesteigertes Anspruchsdenken. In den letzten Jahren haben viele Bundesländer Studienbeiträge (vulgo: Studiengebühren) eingeführt. Aus Sicht eines lehrenden Mitarbeiters haben diese Studienbeiträge drei Effekte:
  • Ein bisschen mehr Geld für zusätzliche Tutoren und die ein oder andere Anschaffung zur Verbesserung der Lehre.
  • Viel weniger Zeit und Engagement seitens der Studenten
  • Deutlich höhere Ansprüche an die Lehrstühle bezüglich Service, Ausstattung, etc.

Heute kam jetzt zum ersten Mal das Argument, auf das ich schon seit April 2007 gewartet habe:

[...] ich sehe nicht ein dass ich für 592 euro Studiengebühren an ein Rechner nicht komme!!!!



Hintergrund war, dass ich einer Studentin Reservierungen für einen Labor-Arbeitsplatz gestrichen habe, da sie sich nicht an die Regeln für die Reservierung hielt. Ihre Reservierung hätte außerdem andere Studenten erheblich beeinträchtigt.

Sudden Silence

, , ,

Very strange but wonderful experience today:
While I was walking down the stairs to the underground, suddenly the world became silent for a few seconds. No car was driving by, no foot steps to be heard - nothing. After a few seconds someone walked up the stairs, destroying this great moment.
I think I've been living in a city for too long :frown:

Firmen, die ich mag: Rabenring

, , , ...

Ab und zu bin ich mit einer Firma nicht ganz zufrieden. Dann blogge ich das. Ab und zu bin ich aber tatsächlich auch sehr zufrieden. Dann blogge ich das ebenfalls:

Die Firma Rabenring vertreibt über ihren Online-Shop Bühnenmolton, Projektionsfolien und diverses Zubehör (Spanner, Original Gaffa-Tape, etc.). Außerdem konfektionieren sie den Molton
Für die Video-Praktika zur Vorlesung Medientechnik haben wir bei Rabenring einen Greenscreen-Backdrop, 300g/m² mit 5 x 3 Metern Größe bestellt. Diesen haben wir dann auch noch rundum einfassen und mit Ösen versehen lassen. Endpreis waren 195 Euro zzgl. Mwst. Meiner Meinung nach ein fairer Preis. Und gegen Expressaufschlag (30 Euro) haben wir das Ganze innerhalb von 5 Arbeitstagen erhalten. Wir sind soweit ziemlich zufrieden mit Service und Qualität. Nur die Antwort auf unsere erste Anfrage ist nicht komplett auf unsere Fragen eingegangen.


Der Greenscreen von Rabenring, aufgespannt auf unseren selbstgebauten Rahmen. Die Flecken kommen vom Wasser, mit dem wir den Stoff eingesprüht haben, damit die Falten besser verschwinden. Sie sind natürlich nicht mehr zu sehen.

Students make my life interesting...

,

Sometimes I want to hit certain students with a +20 "Hammer of Enlightenment". This urge has increased over the last months...

Visitor OSs

, , ,

I just had a look at the User Agent Strings the visitors to this blog use. Sorted in order of popularity:

Windows XP
Windows Vista
MacIntel
Mac OS
Windows 2000
Windows NT
Linux
Windows 98
Windows ME
iPhone
Windows CE
iPod
Pike
Unknown
Hiptop
PLAYSTATION 3
PSP
Series60
Web TV
Windows 95
Nintendo Wii
SunOS
OpenVMS AlphaServer_1000A_5/400
Win32ÿ
5.0 (Windows; es-AR)
IRIX64 IP28
Mobile/1A542 Safari/419.3
SCO_SV i386
Win
Nitro
Mobile/1A543a Safari/419.3
Mac OS X
SYNERGY
Docomo
OpenPDA/Qtopia
NEC c228/1.0
HP-UX
XP
lose64
DTV
essence
virtual
ZX Spectrum
Windows Mobile
_____
HP-UX 9000/778
QNX x86pc
Win64
Liunx
Mac OS X 10.5
Vme
UNIX
SHP
"virtual"
IRIX64 IP30
RISC OS
Windows NT 5.1; SV1; .NET CLR 1.0.3705;
FreeBSD
Windows XP 5.1 x86
googlebot/2.1 ( http://www.google.com/bo
BogusOS
W
Symbian
Haiku BePC
IRIX64 IP35
Mac68k
0
iphone apptapp webkit CFNetwork AppTapp
NEC e338/1.0
NEC c616/1.0
Win 32
scp6750
Warp 4
BlackBerry
http://www.google.com/bot.html
Win16
NetBSD
MHP1.1
Mac OS X 10.5.2 i386
HP-UX 9000/785
OpenVMS COMPAQ_Professional_Workstation
Macintosh
WinCEGogi
Win256
Warp 4.5
X11
xOS
Win3
Windows
HellBoundHackersOS
Macintosh; U; Intel Mac OS X; en
HP-UX 9000/800
NEC e228/1.0
OpenVMS COMPAQ_AlphaServer_DS20E_666_MH
Mobile/1A542a Safari/419.3
X11; U; Linux i686; en-US; rv:1.8.1.1
Wi
FOMA
iphone apptapp webkitCFNetwork
OpenBSD

Python script for sending out bulk password e-mails

, ,

I needed it today and did not find anything like this. The following script combines a template file and a CSV file (see below) and sends the output to an e-mail address specified in the CSV file. I used it to send temporary passwords to ~100 students.
Hope this example helps somebody.

#!/usr/bin/python

import smtplib
import csv

# CONFIG
CSVFILE = "accounts.csv"
TEMPLATE = "mail_template.txt"

SENDER = '"Sender Name" <sender@example.com>'
SMTP_SERVER = 'smtp.example.com'

USE_TLS = 0 # for encrypted connection to SMTP server set to 1
AUTH_REQUIRED = 0 # if you need to use SMTP AUTH set to 1
SMTP_USER = 'sender'  # for SMTP AUTH, set SMTP username here
SMTP_PASS = 'pass'  # for SMTP AUTH, set SMTP password here

# You have to set the following two variables to 0 
# in order to actually send the e-mails to the recipients!
DRY_RUN = 1 # do not actually send e-mails but print what would have happened
SAFE_MODE = 1 # if set, all mails wil be sent to RECIPIENTS instead of the address specified in the csv file.
RECIPIENTS = ['sender@example.com']

template = open(TEMPLATE, "r")
csvfile  = open(CSVFILE, "r")

mail_template = template.read()
csv_reader = csv.reader(csvfile)

######## Open SMTP session ########
smtpresult = 0  # define it so we do not get an error during DRY_RUN
if not DRY_RUN:
    print "Opening SMTP session"
    session = smtplib.SMTP(SMTP_SERVER)
    #session.set_debuglevel(1)
    session.ehlo()
    if USE_TLS and session.has_extn("STARTTLS"): # not tested!
        session.starttls()
        session.ehlo()
    if AUTH_REQUIRED:
        session.login(SMTP_USER, SMTP_PASS)

######## Send Mails ########
for row in csv_reader:
    # adapt these fields to your needs
    surname = row[0]
    givenname = row [1]
    email = row[2]
    login = row[6]
    passwd = row[7] 
    # you might want to remove this part:
    if passwd == "":
        print "Skipping " + login + " - account already existed"
    else:
        print "Sending mail to " + email
        mssg = mail_template.replace("$NAME$", givenname + " " + surname)
        mssg = mssg.replace("$USERNAME$",login)
        mssg = mssg.replace("$PASSWORD$",passwd)
        if SAFE_MODE:
            recipients = RECIPIENTS
            mssg = mssg + "\r\nThis message would have been sent to " + email
        else:
            recipients = [email]
        if DRY_RUN:
            print "[DRY RUN] Sending mail to " + recipients[0]
            print mssg
        else:
            smtpresult = session.sendmail(SENDER, recipients, mssg)

        if smtpresult:
            errstr = ""
            for recip in smtpresult.keys():
                errstr = """Could not deliver mail to: %s

        Server said: %s
        %s

        %s""" % (recip, smtpresult[recip][0], smtpresult[recip][1], errstr)
            raise smtplib.SMTPException, errstr



The template file looks like this (in German):

From: "Raphael" <example@example.com>
Reply-to: test@example.com
Subject: [MT] Accounts

Hallo $NAME$,
Du erhältst mit dieser E-Mail deine Account-Daten für die Windows-Arbeitsplätze.
Beim ersten Login wirst Du aufgefordert, das Passwort zu ändern. 

Benutzername: $USERNAME$
Passwort: $PASSWORD$

Gruß,
Raphael 


The CSV file looked like this:
Miller,Peter,miller@example.com,12,232445,Student,peter.miller,Zgsd.aSda

Opera Master Password Bug Galore

, , ,

Just filed 4 bugs for Opera (9.50b2):

Bug 327857 - Master password not accepted at startup
Opera asks for my master password but does not accept it. As the dialog is modal, I can not change the password in the settings. Pressing cancel makes another password dialog appear within a second. If I try too often, and sometimes if I press cancel, Opera segfaults with either:

opera: Parentless modal/blocking dialog assigned to ToplevelWindow of 1 candidate(s)
opera: Parentless modal/blocking dialog assigned to ToplevelWindow of 1 candidate(s)
opera: Parentless modal/blocking dialog assigned to ToplevelWindow of 1 candidate(s)
opera: Parentless modal/blocking dialog assigned to ToplevelWindow of 1 candidate(s)
Segmentation fault


or

opera: Modal/blocking dialog with no parent detected
Segmentation fault


The workaround is to press the Help button on the dialog, which opens a new browser window. There I can set the master password not to be used for my passwords. The bug is apparently known since at least 8th April ( http://my.opera.com/community/forums/topic.dml?id=229927&t=1209981775, http://my.opera.com/desktopteam/blog/show.dml/1939281?startidx=200#comment5118242 )

Bug 32786? - Can not disable the master password
Opera should accept a new empty master password, clearing it.
Opera requires me to enter at least six digits, does not accept an empty password. Additionally, there is no aparent method for clearing the master password (so that someone can set it again without knowing the old one)

Bug 327868 - Master password needs to be complex
Try to enter a master password with less than six characters or without at least one number and one letter in it
I would expect Opera to warn me about an insecure password, but to accept it if I insist on using it. At least I would expect an option to do so in opera:config
Opera does not accept 'weak' master passwords. This is surely a good feature for many users. However, in some cases, I want an insecure, simple password. In my case, I want to have a password that hinders a passer-by to log in to password-protected sites using Wand. However, as I want to be asked for my password every time I use Wand, I want a password that I can type quickly. Something like "ffv" would be sufficient for my security concerns. The requirement to use at least one number in the password makes such a password hard to type quickly. This actually prohibits using such a password every time one logs in using Wand. Please accept also simple passwords if I really want to use one.

Bug 327874 - Opera Bug Tracker not public
1. Encounter a probable bug in Opera
2. Enter a bug report at https://bugs.opera.com/wizard/
3. Wait for years for Opera ASA to do something about your bug. Maybe they did. But you don't know for sure.

I would like to see title and status of Opera bug reports. This would probably reduce duplicates quite a bit. Additionally, I would not feel left alone with my problems :frown: Besides that, it would help people finding workarounds for these bugs and focus discussion in the forums.
Currently bug reports disappear into the black hole.

Two definitions of "Instrumented Environments"

,

It's quite hard to find a definition of Instrumented Environments online. Here are two.

Instrumented environments provide a sandbox in which ubiquitous computing scenarios can be investigated. Instruments and devices embedded in the environment give things and places the power to display or sense information. They provide the connecting points between the physical world, in which they are located, and the virtual world to which they are connected. In this sense, the instrumentation of an environment augments it without the use of classical AR tools, such as projection or head-worn displays.


Butz, Kröger: "A Generalized Peephole Metaphor for Augmented Reality and Instrumented Environments”

For my diploma thesis I tried to give a more pragmatic definition:

Instrumented Environments (IE) are an instantiation of Ubiquitous Computing, focusing on human-computer interaction with physical environments, e.g. a room or a desk. In an instrumented environment the user can view, input or modify data using different interaction modalities (gestures, tangible user interfaces) and different display devices (mobile devices, tablet PCs, wall-sized displays, steerable projectors). Instrumented environments use sensor data to support explicit interaction.


Wimmer: "Capacitive Sensing for Instrumented Environments", Diploma Thesis, 2006

Ubiquitous GPS navigation?

, , , ...

As nearly everyone has a mobile phone today, one actually expects the other to have one. I think that not possessing a mobile phone has already become a stigma. If you do not have one, you require others to adjust their behavior - e.g. they need to be on time, they can not reach you while you are on the go, etc. It's kind of like you were disabled - others have to cater to your limitations. However, unlike someone who is physically challenged, you choose your disability freely.
I wonder how long it will take until we expect others to have a navigation system with them. Today, while walking to the university, a car driver asked me for directions. Unfotunately I could not help him. And a small part of my brain said "Bad luck. It's his own fault if he has no GPS in his car."

Disclaimer: I have a mobile phone. I have no problem if someone does not have one. It was only a small part of my brain that thought this negatively. I do not generalize my observations - it just feels as I have described.

Opera, HELO_LOCALHOST, and /etc/hosts vs /etc/hostname

, , ,

I just found a really annoying bug/problem in Opera Mail (submitted as Bug #323363). I'm not sure how many other users are affected.
For a while now, each e-mail I sent from my laptop had been marked as spam by the SpamAssassin installation running on our departments mail server. Thus, many people's mail client put my e-mails into the Suspect-Mail folder, hiding them from plain view.
SpamAssassin has a rule called HELO_LOCALHOST which is triggered if the sending host authenticated itself as localhost. As I could see from the e-mail headers this rule caused every one of my e-mails to be marked as spam.
But why did Opera authenticate as localhost to the SMTP server? My /etc/hostname file contains the correct name of my laptop, and running the hostname command returns the same name. Where did this localhost come from.
After some investigation, I found the culprit: /etc/hosts. It had as the first line:
127.0.0.1   localhost   my_hostname


This is absolutely correct. The same format (containing localhsot and the real hostname) can be found on many (all?) other (Debian) Linux systems.
For some stupid reason, Opera used the first hostname entry for the loopback interface in /etc/hosts for authentication. That seems twice stupid to me. First, Opera should read /etc/hostname for determining the hostname, not /etc/hosts. And, second, Opera should not use the entry for the loopback interface, as it is not even used for sending the e-mail.

Workaround: Change the order of the names for the 127.0.0.1 line in /etc/hosts, so that the first name is not localhost but the actual name of your computer.

Flash 9 with Opera 9.20 on Linux (GTK problem)

, , , ...

The current Flash 9 Browser Plugin for Linux requires the browser to support GTK. As Opera for Linux is QT-based, it does not offer a GTK-API to plugins. Opera 9.5 Release Candidates now implement GTK support. However, Opera 9.5 is far from stable, and not suitable for production use (= my experience).
If you have accidentally installed the current Flash plugin (r.115), or your package manager upgraded it automatically for you, this means no Flash support in Opera 9.20.
However, there is a quick workaround:
  1. Uninstall the current Flash plugin.
  2. Download a ZIP archive with all Flash 9 Plugin versions (73 MB) from Adobe.
  3. Extract install_flash_player_9r48_linux.tar.gz from the 9r48 folder in the archive.
  4. Extract libflashplayer.so from the tar.gz and put it e.g. in /usr/local/lib
  5. In Opera's plugin preferences add this path to the plugin paths and re-scan for plugins. Opera should detect the Flash plugin and use it from now on.
  6. Watch funny videos on Youtube

Kiloweise

, , ,

Gerade erhalten, nicht als Spam erkannt:

Wir sind ein dynamisches Gewerbe im Bereich der Speditionsabwicklung !
Unsere internationalen Geschäftskontakte werden immer wichtiger. Zur Verstärkung unseres Teams suchen wir einige Mitarbeitera für Warenabwicklung .
Sie
· wohnen in der EU
· verfügen über Engagement, denken unternehmerisch und handeln zielorientiert
· haben einige Komputer Kenntnisse und sind tagsüber erreichbar
· haben wenigstens 5 Stunden pro Woche frei
· sind in der Lage eine Warensendung bis zu 4kg zur Post zu bringen und zu versenden

Unser Gewerbe
· bietet Ihnen ein leistungsorientiertes Gehalt und ausgezeichnete Aufstiegschancen
· überlässt es Ihnen selbst ,wie Sie Ihre Arbeitszeit planen

Ihr Lohn beträgt ab 2500 Euro monatlich. Falls Sie mehr wissen wünschen oder Interesse an dieser Position haben, schreiben Sie bitte Ihre Bewerbung bzw. Fragen an:
rinkya@bossmail.ru

Mit freundlichen Grüssen
RINKY LTD



Vergleiche dazu eine frühere E-Mail von RINKY.

Verwenden die Phisher jetzt DHL statt Western Union? Oder suchen die Viagra-Verschicker (bis zu 4 Kilo)? Weiß jemand mehr?

Spot the Error

, ,


(Made in China)

Erdenschwer und wolkenleicht (aka Kirche und Physik)

, , ,

Frau Wüst von der Evangelischen Kirche erklärt auf dem Radiosender SWR3:

Wolken sind Wasser. Und Wasser kann man wiegen. Nehmen wir einmal an, eine Wolke hätte eine Masse von 100.000 Kubikmetern. Bei einer Luftfeuchtigkeit von einem Liter Wasser pro Kubikmeter Luft ergibt das 100.000 Liter Wasser. Ein Liter Wasser wiegt auf der Erde ein Kilogramm. Also wiegt meine mittelgroße Wolke 100 Tonnen. Da bin ich aber froh, dass sie nicht auf die Erde fällt und mich erschlägt. Tut sie aber nicht. Wieso?

Weil mit steigender Entfernung von der Erde die Erdanziehung geringer wird. Und mit geringer werdender Erdanziehung sinkt auch das Gewicht der Wolke. In der Höhe, in der meine Wolke über den Himmel zieht, ist sie in der Tat fast schwerelos und unendlich leicht. Wunder der Physik. Aber in meinen Augen weit mehr: Wunder des Lebens.



Schön.

via Hadmut Danisch

Neon-Knick-Leuchtsticks von Hartig+Helling considered harmful

, , ,

Da bin ich jetzt aber mal gar nicht amused.

Ich hatte heute beim Saturn am Stachus in München 100 Neon-Knick-Leuchsticks1 für 12,99 Euro gekauft. Vertrieben werden die Dinger von der Firma Hartig+Helling aus Bochum. Hergestellt (natürlich) in China. Man könnte eventuell von einer Mogelpackung sprechen, da die Packung eine Länge von 30 cm suggeriert, die Stäbchen aber nur 20 cm lang sind. Auf der Packung wird nirgends darauf hingewiesen.
Die Sticks sind geschlossene Plastikröhrchen, die mit einer zwei verschiedenen Füssigkeiten gefüllt sind. Knickt man sie, so zerbrechen kleine Glaskapseln im inneren. Die Flüssigkeiten vermischen sich und leuchten halbwegs hell.
Mit den beiliegenden Konnektoren kann man diese Stäbchen zu Ringen biegen. Die kann man dann z.B. irgendwo aufhängen.

Ich habe das erste, zum Ring gebogene, Stäbchen nach kurzer Bewunderung auf meinen Schreibtisch gelegt. Vielleicht nach einer halben Stunde hat es sich dann in einem unbeobachteten Moment selbständig in der Mitte zerteilt und seine Neonfarbe auf dem Tisch verspritzt:


Das finde ich jetzt nicht so endlos toll. Zum einen hat es einige (zum Glück nicht lebenswichtige) Rechnungen erwischt und den Tisch versaut. Zum anderen habe ich beim Wegwischen der ganzen Soße auch noch einige feine Glassplitter gefunden, die wohl mitsamt der Farbe aus dem Stick geschleudert wurden.



Auf der Packung steht der Warnhinweis:

Der Inhalt kann Kleidung und Möbel dauerhaft verfärben.



Sehr schön. Heute abend wollte ich meinen Kindern ein paar schenken...

Wie gesagt: not amused.



1) Die Sticks die ich gekauft habe haben die Produktnummer FLS 30221.

Vertical Task and Tab Bar

, , ,

Torsten Kleinze asks (in German) who ever considered to put his task bar not at the top or bottom, but on the left or right edge of the screen. With 16:9 screens this makes quite some sense.

For many years now my task bar sits on the right edge of the screen. In KDE this works quite nicely. Only some applets are not (yet) displaying correctly.



I've also placed my tab bar in Opera on the right side. This has two main benefits:
  • You can keep more tabs open (about 50 with the great Breeze Simplified Skin)
  • You can read about 20 characters of the page title - regardless of how many tabs you have open
  • You have a little more vertical space. As most web sites have a vertical layout you usually do not miss the lost horizontal screen estate.


I suggest turning off Preferences->Advanced->Show close button on each tab. This saves some space on each tab. You don't need the (X)-Buttons as you can close a tab by middle-clicking on it.

There is also a Firefox extension that allows moving the tab bar. I haven't found it within one minute googling, however. If anyone knows its name, please tell me.