Gratulation nach Schwarzenburg!

Wie diese Woche bekannt wurde, gewann Kaba-Gilgen AG aus Schwarzenburg nach einem sechsmonatigen Pilotbetrieb die internationale Ausschreibung der Pariser Métro (RATP), zwei Linien mit halbhohen Bahnsteigtüren (Platform Screen Doors PSD half-height, PDF) auszurüsten.

Ich gratuliere dem ADP-Team von Kaba-Gilgen für diesen Erfolg und freue mich, dass damit auch die Arbeit von Hug-Witschi den Weg nach Paris findet. Hug-Witschi hat im Auftrag von Kaba-Gilgen die Steuerung (Hardware und erste Version der Software) der einzelnen Türeinheiten entwickelt.

Posted in Hug-Witschi | Comments Off on Gratulation nach Schwarzenburg!

Ist mobiles Internet schon bezahlbar?

The Swiss mobile operators are not ready yet for the iPhone launch, because there are almost no attractive data tariffs available.

Irgendwann wird Internet mit mobilen Geräten (Mobiltelefonen, PDAs) selbstverständlich sein. Das mag zwar schon heute der Fall sein, aber bloss für Firmenkunden, wenn das Budget keine Rolle spielt.

Die Geräte wären bereit für Internet-Anwendungen. Es gibt Email- und RSS-Clients, schlanke Browser (OperaMini) und Clients für spezialisierte Anwendungen wie Routenplaner (zB Google Maps). Bald schon sollen YouTube und MySpace für das Handy angeboten werden; und alle Leute reden schon jetzt vom iPhone, welches neben einem iPod und einem Telefon auch noch ein Internet-Terminal sein soll.

Aber überall online zu sein ist mehrheitlich noch graue und teure Theorie. Denn für das portable Internet ist ein Daten-Abo eines Mobilfunkanbieters ratsam; andernfalls verschlingt das Surfen bald einmal astronomische Summen. Und bezahlbare Daten-Abos muss man noch mit der Lupe suchen.

Wer den Überblick über die Datentarife haben möchte, ist weitgehend auf sich allein gestellt. Vergleichsseiten wie Comparis scheinen davon nichts zu wissen, bloss bei Teltarif.ch habe ich eine (unvollständige) Übersichts-Seite gefunden.

Bei den grösseren Anbietern gibt es meist zwei Varianten:

  • Jede Daten-Tranche wird zu einem konstanten Preis verrechnet. Hier varieren die Preise pro Megabyte zwischen 3.50 (Cablecom Mobile, Sunrise Relax Super) und sage-und-schreibe 100.– (Lebara). Dazwischen liegen Sunrise, Tele2 und Talk Talk (je 5.–), Swisscom mit 10.– und Orange mit 15.–
  • Bei Pauschal-Varianten ist ein bestimmtes Volumen (oder sogar ein unbegrenztes Volumen) inbegriffen. Diese Tarife zu vergleichen ist schwierig, denn es kommt neben der Datenmenge auch noch drauf an, in welchem Zeitraum diese anfällt und wie regelmässig man surft.

Datentarife 2007-03

Die in der Grafik aufgeführten Tarife werden jeweils monatlich verrechnet, ausgenommen Sunrise Day Package, bei welchem pro Tag mit Datenverkehr pauschal 3.50 verrechnet werden. Lesebeispiel: bei Swisscom kreuzen sich Data Tariff und Data Option 2000 bei etwa 27 MB. Die Data Option 2000 rentiert also ab einem monatlichen Datenvolumen von 27 MB. Analog rentiert Sunrise Surf ab etwa 10 MB und Sunrise Unlimited ab etwa 112 MB. Wenn man bei Sunrise aber nur an wenigen Tagen im Monat surft (dann dann aber viel), dann abonniert man am besten Sunrise Day.

Zur Unübersichtlichkeit der Tarife trägt auch bei, dass die Informationen auf den Homepages zum Teil nur sehr verstreut zu finden sind. Der Data Tariff bei Swisscom ist beispielsweise unter Mobile Unlimited eingeordnet, aber so wie ich den Hotline-Mitarbeiter verstanden habe, könnte der Data Tariff auch bei einem Handy abonniert werden. Für Mobiltelefone wird auf der Homepage aber nur auf die Data Option 2000 hingewiesen.

Bei Swisscom gäbe es auch noch die Data Time Option, bei welcher ähnlich wie bei Sunrise Day auch pro Zeit pauschal verrechnet wird. Da diese Variante aus technischen Gründen aber nur zusammen mit der Mobile Unlimited Software auf einem Notebook möglich ist und nicht in Verbindung mit einem Mobiltelefon (wie ich nach ausführlichen Gesprächen mit der Swisscom-Hotline herausgefunden habe), habe ich diese Möglichkeit nicht weiter verfolgt.

Ein weiteres Kuriosum bei Swisscom ist die Möglichkeit, im Ausland billiger zu surfen. Wenn man vergleichsweise wenig surft (zB 2 MB pro Monat), dann bezahlt man mit der World Data Option 11.- (5+2×3) Franken, mit dem Standard-Preis aber 20.- (ausser man kann den Data Tariff wirklich auch mit einem Handy abonnieren). Der Haken daran: man muss sich im Ausland befinden…

Fazit:

  1. Eigentlich würde ich beim Pendeln gerne mit Swisscom surfen, da nur Swisscom meinen Arbeitsweg mit UMTS abdeckt (und HSDPA bietet sowieso erst Swisscom an). Mein Nutzungsverhalten passt am besten zu den Tarifen Swisscom Data Time Option oder Sunrise Day Package; leider gibt’s den ersten nicht für Mobiltelefone und den zweiten nicht mit der gewünschten UMTS-Abdeckung.
  2. Damit das iPhone bei seiner Einführung in ca. 9 Monaten bei Privatkunden ein Erfolg werden kann, fehlen auf Seiten der Mobilfunkanbieter noch die attraktiven Datentarife (und dem iPhone fehlt noch UMTS).
Posted in Life/the Universe..., Mobile Life, The Web | 2 Comments

Triple emulation

I’m cleaning up old harddisks in my vintage PCs and found a DOS partition that I used solely to run the emulator S3AEMUL for the Psion Series 3a. This emulator was once available for free: a clever marketing trick! I got soon hooked and bought my first PDA, back in 1995.

Out of nostalgia I tried to get the emulator running again – but without leaving OS X, of course. Thanks to Parallels Desktop this should be easy, I thought. Just create a new virtual machine, install FreeDOS and copy the emulator on it.

The first hurdle was to know which memory driver to load. FreeDOS offers three choices: EMM386, EMM386+EMS and HIMEM XMS. I tried all of them, with 4 MB memory and more. The emulator would never run, but report different errors: Runtime errors, Fatal application error 04 or Unhandled Exception 0D at 00E7:1539 Error Code: 0000. I wasn’t really surprised, as the emulator never worked for me in the “DOS” boxes of any Windows version, because the emulator fiddles with the 640k limit of DOS in incompatible ways.

Before giving up I thought I’d try another road. Tony Chung had success running s3aemul with the bochs emulator under Linux. Bochs itself should be portable, but there is no OS X binary yet of the latest release. So I chose the Windows build and installed it in my XP virtual machine. This time I got lucky and the emulator worked when starting FreeDOS with HIMEM XMS option.

Psion 3a booting

The whole setup reminds me of Babushka Dolls:

  • Outermost level: OS X
  • 1st emulation: XP running in Parallels Desktop
  • 2nd emulation: FreeDOS running in Bochs for Windows
  • Innermost level: SIBO (Psions operating system) running in s3aemul

Psion 3a ready

Posted in OS X/Windows/Linux | Comments Off on Triple emulation

AltGr and Parallels Desktop

Im neusten Build 1970 von Parallels Desktop funktioniert AltGr nicht mehr. Ziemlich umständlich kann man die Taste wieder aktivieren.

I’m quite happy with my alien operating system running along my other applications on my Mac. The biggest gripe is the keyboard.

  • Parallels maps the Windows Alt key to the Mac alt/option key. Ok, Alt to alt seems quite logical, but my fingers don’t care what is written on the key – they remember by position. And the Windows Alt key sits right to the left of the space key!
  • Though it’s handy to be able to tab out of Windows with Cmd-Tab, I can’t really tab back in. When I change the focus to Windows using Cmd-Tab, I have to press Cmd-I before my key presses are sent to Windows again (I know that I can use the mouse, but the keyboard is so much faster). I like when things are logical and symmetrical because that is what makes life easier.
  • The support for AltGr (I have a Swiss German keyboard and need AltGr for all the programmers best friends: []{}|\@#) is weak, almost nonexistent. A couple of weeks back Parallels mapped the Enter key of Apple Laptops (the one to the right of the right Cmd key) as AltGr – without telling anyone. I don’t remember where I first found about this life saver, probably macosxhints, but surely not the Parallels help.
  • As of the newest build (1970), Enter as AltGr has silently vanished again. And only hidden in the forum pages are instructions how to get back the AltGr behaviour involving the Terminal. This is not the Mac way to configure things! (Basically you have to create the file /Library/Parallels/.keyboard_config containing one word: numenterisaltgr and no LF following it).
  • I dream of having the same keyboard layout inside and outside Parallels Desktop (e.g. using the option key to compose all these special characters in Windows), and perhaps even having a combined list of OS X and Windows applications when switching with Cmd-Tab.
Posted in OS X/Windows/Linux, Tips | 1 Comment

Erleichtertes Hörbuch-Rippen

Importing an audio book from CD to the iPod has become a lot easier, thanks to Audiobook Builder.

Ist es nicht angenehm, sich ein Buch vorlesen zu lassen? Am liebsten natürlich ortsungebunden, vom iPod – bloss wie gelangt das Hörbuch in den iPod?
Bisher geschah das wie folgt:

  1. Die Import-Einstellungen von iTunes auf AAC/gesprochene Podcasts setzen
  2. CD einschieben, alle Tracks markieren und die CD-Titel gruppieren (unter Erweitert)
  3. Jetzt die CD importieren.
  4. Die Schritte 2 und 3 für alle CDs wiederholen. Am Schluss hat man einen Titel pro CD.
  5. Den Namen der Titel editieren und nummerieren (sofern das nicht schon automatisch geschah, weil der Titel abgefragt und gefunden wurde). So ist es später auf dem iPod einfach, die CDs in der richtigen Reihenfolge zu hören.
  6. Alle Titel markieren und das AppleScript Make Bookmarkable anwenden. Damit wird u.a. die Option Wiedergabeposition merken gesetzt und die Datei-Endung des Titels auf m4b gesetzt. Dies muss so sein, damit das Buch bei iTunes 7 in der Bibliothek unter Hörbücher eingereiht wird. (Dieser Schritt ist Apple-spezifisch. Bei Windows gibt es keine AppleScripts und für dasselbe sind wesentlich kompliziertere Aktionen nötig. Die Suchbegriffe m4b windows sind dein Freund…)
  7. Synchronisieren. Für mich hat es sich bewährt, eine intelligente Wiedergabeliste extra zum Synchronisieren zu verwenden, mit den Kriterien Zähler ist 0 und Genre ist Hörbücher (vorausgesetzt, dass man nach dem Importieren das Genre richtig setzt). Damit erreicht man, dass Hörbücher automatisch vom iPod gelöscht werden, wenn man sie einmal gehört hat.

Neu geht es (nur mit Apple) auch etwas einfacher: mit dem Audiobook Builder. Die Schritte hier:

  1. Ein Projekt anlegen, Titel und AutorIn festlegen (Cover-Fenster)
  2. Im Chapter-Fenster (Kapitel) jede CD importieren.
  3. Ins Finish-Fenster wechseln und den Build Audiobook Knopf drücken. Das ganze Hörbuch wird automatisch erstellt, das Genre auf “Audiobooks” gesetzt und direkt in die iTunes-Bibliothek eingefügt.
  4. Synchronisieren, genau wie oben.
  5. Das Audiobook Builder Projekt kann jetzt gelöscht werden (sonst belegt das Hörbuch zweimal Festplatten-Platz, da es in die iTunes Bibliothek kopiert wurde).

Als zusätzliches Zückerchen legt der Audiobook Builder auch gleich noch Kapitelsprungmarken an. Ohne Manipulation an der Kapitel-Struktur im Chapter-Fenster entsprechen die Sprungmarken aber bloss den ganzen CDs; ich würde Sprungmarken an den Track-Grenzen vorziehen.

Posted in Tips | Comments Off on Erleichtertes Hörbuch-Rippen

Bad experiences with Milan Malpensa

We got an Alitalia flight with a stopover in Milan Malpensa for our holidays. I must say that we regret having chosen Alitalia.

The negative experiences started already when checking in in Zurich. Our connection flight from Milan was not open yet for a through checkin. No problem, we thought, we’ve got enough time to do that in Milan.

But there was no transfer desk when we arrived in Milan. When you first arrive, transfer desks are sign-posted, but when you get to the desks, there are no more signs. And even before the boarding desk was open, a huge queue started to build up. So I went to a nearby desk and asked, where we could get our boarding passes. Just at the boarding desk, was the answer. When we finally wanted to board, we were told that we had to queue at another desk to get a boarding pass.

Another thing what Malpensa failed to manage: there were no vegetarian meals. The Alitalia cabin crew made it not better by being a bit arrogant: they didn’t really apologise, because it’s not their fault, or is it?

This was not the last of our troubles. Our luggage stayed behind in Milan and we got the phone number of the Alitalia office where we should be able to inquire the status of our luggage. Of course we were nervous to start our trip without our things and tried to call this number early the next day. But only at noon we got through the first time and were told that the luggage would be delivered before eleven in the evening at a friends address. It was only in the evening that this friend was contacted and a few minutes before eleven when we finally got our belongings and the holidays really started.

After all this annoyances I think that “Malpensa” is an appropriate name for this airport: a combination of the Italian words for “bad” and for “thinking”.

How different was our experience in Toronto Pearson when we travelled back home. The airport employee at the boarding desk told the passengers that there is no point to queue yet and how exactly the boarding would happen as soon as a queue started to build. And the security changes (only a couple of hours after the incidents in London last week) were well and transparently organized.

The whole episode reminded us of the joke how to get the worst possible international party: let the English cook, the Italian organise and the Swiss entertain.

Posted in Life/the Universe... | Comments Off on Bad experiences with Milan Malpensa

Gimmelwald Gondola

Kellyerin ist von Gimmelwald nach Stechelberg geschwebt und Marcel hat das Video davon gefunden. In der Realität ist die Fahrt über den Rand der Fluh — direkt nach dem ersten und einzigen Mast — noch viel eindrücklicher!

Posted in Life/the Universe..., The Web | Comments Off on Gimmelwald Gondola

Solving the Santa Claus Problem with Barriers

There are already many solutions to the “Santa Claus Problem” by John Trono[1]. It’s a “problem simple to understand and yet far from easy to solve”; the author’s original solution (based on semaphores) was only partly correct. The probably most known analysis of the problem was written by Mordechai Ben-Ari[2], who also provided solutions in Ada95 and Java.

This is the original problem description:

Santa Claus sleeps in his shop up at the North Pole, and can only be wakened by either all nine reindeer being back from their year long vacation on the beaches of some tropical island in the South Pacific, or by some elves who are having some difficulties making the toys. One elf’s problem is never serious enough to wake up Santa (otherwise, he may never get any sleep), so, the elves visit Santa in a group of three. When three elves are having their problems solved, any other elves wishing to visit Santa must wait for those elves to return. If Santa wakes up to find three elves waiting at his shop’s door, along with the last reindeer having come back from the tropics, Santa has decided that the elves can wait until after Christmas, because it is more important to get his sleigh ready as soon as possible. (It is assumed that the reindeer don’t want to leave the tropics, and therefore they stay there until the last possible moment. They might not even come back, but since Santa is footing the bill for their year in paradise… This could also explain the quickness in their delivering of presents, since the reindeer can’t wait to get back to where it is warm.) The penalty for the last reindeer to arrive is that it must get Santa while the others wait in a warming hut before being harnessed to the sleigh.

As an exercise to learn the java.util.concurrent package of Java J2SE 5.0 I implemented another solution using barriers (CyclicBarrier objects). As either three elves or all nine reindeer must assemble before they are allowed to wake Santa, this seems to me an obvious choice.

The solution consists mainly of an outer class SantaClaus, that sets up all needed synchronisation variables and controls the program termination, and two inner classes Elf and Reindeer, that are instantiated on a separate thread for each individual elf and reindeer behaviour. The source code is also available as syntax coloured HTML; an earlier version without the harnessing part can be found here.

The barrier that manages the grouping of the elves is protected by a Semaphore queueElves with three permits. This implements the requirement “any other elves wishing to visit Santa must wait for those elves to return” in a rather defensive manner: there is some virtual waiting room for the elves to wait before waking Santa that has room for only three elves.

This defensive approach makes the priority requirement (if nine reindeer and three elves are waiting, Santa must deliver toys first) simple to fulfill; a fair semaphore (semaphore with a FIFO queue) is enough:

As no more than one group of elves can sit in the virtual waiting room and access to the waiting room is blocked until the first group of elves have got back to the toy manufacture, the ninth reindeer will never encounter more than two elves in the waiting room[3]. It is therefore enough to guarantee that the reindeer are serviced first if they are the first to try the semaphore that protects Santa’s office.

Using a fair semaphore also for queueElves guarantees that no elf is starved when he would like to consult with Santa.

If we would want the get rid of the queueElves semaphore or expand the problem (eg. Santa could start answering the letters from kids), we had to replace the semaphore santasAttention with a advanced mechanism like a PriorityBlockingQueue to guarantee priority for the reindeer.

[1] J. A. Trono. A new exercise in concurrency. SIGCSE Bulletin, 26(3):8–10, 1994. Corrigendum: 26(4):63.

[2] M. Ben-Ari. How to solve the santa claus problem. Concurrency: Practice & Experience, 10(6):485–496, 1998.

[3] This assumes that the short time between having realised that there are enough (elves/reindeer) to wake Santa and Santa coming out of his office is indivisible.

Posted in Programming | Comments Off on Solving the Santa Claus Problem with Barriers

dmake Stories

At work, we started using dmake in 1991 (or even earlier) for building the firmware for the Vending Machine Controller Euro’90. The firmware consisted mostly of PL/M and C code and the compilers suffered from the DOS limitation of 127 characters per command line. Dennis Vadura’s dmake 3.70 (hosted by the University of Waterloo and available as DOS version) featured the $(mktmp ) macro that let me create any needed temporary config and response files.

Later we kept using dmake for the software for our DIVA and CCI/CSI interface families. The build system had grown quite complex and the makefiles made heavy use of the percent pattern rules and delegation to makefiles in other directories.

A couple of years ago, when I first tried to define a target that builds everything (several firmware variants, debug and release builds), I encountered a strange error from dmake:

dmake.exe:  Error: -- Unable to change to directory `xy?', target is [sub-b]

The latest release then (dmake 4.1) was labeled as “final free release”; the last dmake homepage from Dennis Vadura (dmake.wticorp.com, online ca. 2001), once tried to sell “dmake Gold”, but was already unreachable at this time. As the days of open source dmake seemed over, I was hesitating to invest time finding bugs and thought that we would move soon to another build system anyway.

Recently (we’re still using dmake…) I have learned that OpenOffice.org has “adopted” dmake and resumed its development. This gave me the energy to finally hunt down this bug: a dangling pointer.

Until my fix is integrated into a future dmake release, you can get the patch from the OpenOffice Issue Tracker.

Posted in Hug-Witschi, Programming | Comments Off on dmake Stories

Gimmelwald-Lied

Über dem Esstisch in Zumbühls Städeli hängt inmitten der “Ahnengalerie” auch das Gimmelwald-Lied, schön gerahmt und wohl schon einige Jahrzehnte alt. Von der Version auf der GimmelwaldHomepage unterscheidet es sich vor allem durch den Refrain, das Fehlen einer Zeile in der dritten Strophe und einige orthografische Feinheiten, etwa der Schreibweise “Gimelwald”:

Gimmelwald-Lied

Fritz Lüthi

Uf Gimelwald da heimers so
sin epa trurig oder froh.
wes z’Läben is chan bringen.
U’ z’wärchen hei’mer wäger all
i Fäld u Wald, in Hus u Stall
o z’Muetti mid de Chinden
Gimelwald, Gimelwald, griess Gott
mis schenna Gimelwald.

Uf Schiltalp wohl, da hei’mer z’danken,
si gid es Nidla, Chäs und Anken,
das tued es doch so gued.
Stä’ fescht in isem Burestand
u triw zum schena Vaterland
hein genge’ froha Muet.
Gimelwald, Gimelwald, griess Gott
mis schenna Gimelwald.

In isem Husli ob der Flue
da hei’mier doch o zässen gnueg
mier sin ja gar bescheiden.
Wil epa eina von es gan,
mier andren bliben wacker stahn,
Gimelwald, Gimelwald, griess Gott
mis schenna Gimelwald.

Hei mier eis ises Teili gschafft
u ganz verbrucht all isi Chraft,
de wei’mer riewig warten,
mu treid es den dir z’Bärgli ab
dert zuenem frischen chuelen Grab
bim Staubbach in dän Garten.
Gimelwald, Gimelwald, griess Gott
mis schenna Gimelwald.

Posted in Life/the Universe... | Comments Off on Gimmelwald-Lied