It appears that car park computers revert to their native language, German, when placed under stress

A car park in Birmingham switches from English to German in times of stress.

That reminded me that over a decade ago, a colleague of mine noticed an error message on the screen at the exit to the parking garage at the Seattle-Tacoma International Airport. The way the airport works, you pick up a ticket as you enter, and you pay your parking fee at vending machines stationed around the parking garage, and at the exit, you insert the (paid) ticket into the machine, which verifies that you paid your parking fee and opens the gate.

When my colleague pulled up to the machine, instead of displaying the expected Please insert ticket message, it had an error message. In German.

Fortunately, my colleague knows German, and he recognized the error message as a Windows 95 serial port conflict resolution dialog. While he was trying to figure out how to click Abbrechen on a machine with no mouse or keyboard, an attendant walked up, took his ticket, and opened the gate.

Just another example which demonstrates that parking garage computers are native speakers of German, and they revert to it when placed in stressful situations.

Comments (25)
  1. keith says:

    SAP or Siemens implementations?  

  2. porter says:

    Was that the final solution?

  3. nathan_works says:

    lets see, en-us 1033, en-gb 2057, de-de 1031.. German and US are close enough to think a little typo on the language code, assuming they weren’t using en-uk to begin with..  

    i18n does a good job of separating men from babies.. Actually, no, it separates OCD from clinically insane.

  4. Marquess says:


    I’m feeling morally obliged to hurt you now.

  5. Uwe Raabe says:

    A foreign customer of mine once complained about the application throwing an error message in German (my native language) instead of his own language. After some arguing the customer finally managed to send a screenshot of the error message. The error message (here translated to English): "missing language resource"

  6. Sunil Joshi says:


    This is in very poor taste.

  7. Leo Davidson says:

    Given the blog has a year+ post queue and this post links to an article published last week… I can only conclude that you have invented the time machine that you’ve often wished for.

    (It’s possible that an item was inserted into the queue but that possibility is far less interesting so my brain has filtered it out.)

    This is awesome! I’ve windows open showing the headers with TCS_VERTICAL & CCS_VERT, the output of a "dir /x" and, in a Win95 VM, the Wikipedia article on George W. Bush, which I’m thumbing through with MSH_MOUSEWHEEL msgs being tracked in Spy++… This is gonna be so cool when the timeline alters and they all change!

    …Hey, wait a minute, why are my hands turning see-through? W…nooooooo!

  8. Mihai says:


    If the user can’t understand the message, it is pointless, not matter how correct the message is.

    Something I have implemented in a library dealing with the resource loading: hard-coded messages in about 40 language saying something like "missing language resources, please reinstall"

    Yes, hard-coded strings are bad, but it all depends how you use them. Sometimes they might be good.

  9. Olivier says:

    @Uwe Raabe : and you’re proud of your bad coding?

  10. Ilya says:

    If you try to check in books at the Bellevue Public Library using the new check-in computer, and choose the Spanish interface, the computer says, "WELCOME_TEXT_MSG".

  11. Neil (SM) says:


    It was a funny story.  Save the self-righteousness for someone who’s more impressed by it.

  12. Chris K says:

    The (market leading) data querying and reporting program I have to use on a daily basis only seems to speak French when it gets stressed. "Mémoire insuffisante"

  13. J says:

    Wow, what’s with jumping on Uwe for sharing a humorous anecdote?  I blame porter.

  14. Yuhong Bao says:

    austfart: Well, as I remember, the dialog in question relates to multiple DOS virtual machines trying to access a serial port at the same time. There was several ways to virtualize a hardware device across multiple DOS VMs, and one of them was to allow only one DOS VM to access a device at a time. If two of them tried to access at the same time, the only option was to pop up a conflict resolution dialog like this one, and Win3.x and Win9x had built-in support for doing this. More information on all this stuff can be found in the old DDK docs (like the Windows Server 2003 SP1 DDK) that had the VxD documentation.

  15. austfart says:

    Another example of how the ‘fail gracefully’ ethos was ignored.

    I think we actually forget that the name ‘failsafe’ means to fail SAFELY.  The biggest gripe most users have is that when things fail – they almost always fail twice.  First is the failure the second – and more damning – is how often OS’s and software fails to correctly help the user fix the problem.  

    I don’t give a rats *@#$ if there’s a dialog box that says their is a COM port failure – is there any indication of how Joe average is to fix it?  Or better yet – the software *itself* should do everything in its power to fix the problem or enter another mode of operation that works around the problem – yes even for hardware failures.  

    It should do all the work of checking configurations and so forth until it’s figured out as near as it can what really went wrong and give a real *solution* to the user – not just give up and say ‘your problem now bub’

    [Okay, then, what would be your recommendation of what the program should do when there is a COM port failure? Or more generally, when there is an unexpected failure of an unknown type? -Raymond]
  16. David R. says:

    @Uwe Raabe: In a situation like that, you should throw an error with just a number.

    Anyone can report an error with just a number in it to customer support etc. but an error in a (potentially) foreign language will just create confusion

    [It’s not true that anyone can report an error with just a number. Not everybody uses Arabic numerals. Or are you saying that everybody knows how to report error number ௱௫௰௬ or ١٢٣? -Raymond]
  17. Jim Lyon says:


    For any sufficiently complicated system, there will always be failure modes where the average Joe has but two options [footnote]: call an expert to fix it, or arrange his life to not use that system. In the case of the parking garage, Joe’s only rational response is to use a different exit lane.

    Computer interface design goes wrong when the programmer refuses to admit that the system is in such a state. The parking garage’s system should have displayed "Closed – use a different lane", with the error message shown on a maintenance screen.

    [footnote] For systems that Joe owns (as opposed to public systems), Joe often has a third choice: reboot.  When designing a system for Joe’s personal use, you can usually do Joe a great favor by automatically rebooting when things start to go wrong, instead of muddling on and hoping things will cure themselves.

  18. David R. says:

    @Raymond: Nothing is universal, but a number is as close as you can get to universal. If you were dealing with more oddball languages where that’s not an option, obviously you’d change it appropriately. But for the case of German vs. English a number is perfectly acceptable

    Also, what other choices are there, without (as already mentioned) translating every single error message and hardcoding them, or just displaying blank messages?

  19. Param says:

    That’s why all error messages should be smoke signals

  20. bluesixty says:

    @austfart @raymond I completely agree with austfart. In this case the "user" is the person trying to use the exit. When an "unexpected failure of an unknown type" happens the message should instruct the user what to do, regardless of what the underlying problem is.

    A message to affect of "This exit is currently not working, please use another exit stall or contact a parking attendant." would provide all the info the user needs.

    The "user" doesn’t care why it’s not working or what needs to be done to fix it. They just want to exit.

    The software should also write the actual software error message to a log so a technician can identify the problem and fix it.

    The important thing is to remember who the user is and what information will help them.

  21. Cheong says:

    Computer interface design goes wrong when the programmer refuses to admit that the system is in such a state. The parking garage’s system should have displayed "Closed – use a different lane", with the error message shown on a maintenance screen.

    Well, your suggest might be better, but just imagine what would be happening if it’s some attendent misassigned the port numbers to those of the "Entrance" gates, so every "Exits" (Remember, most car parks usually only have one or two exits) are blocked. You now have customers complaining why "the staffs of car park" closed all the exits.

    Sometimes you should be considerate to the car park staffs and mention it’s system failure that cased the exit to be closed in the error message too.

  22. austfart says:

    @Jim – you’re getting the crux of what I’m saying.  Yuhong – your answer is totally plausable, but shows what a lot of us do (me included) – in the face of a bug like this – we just keep jumping down the engineering rat/rabbithole without stopping to ask a more fundamental question.  I’ve learned to stop looking down the hole and to try and smell them coming before I start.  Trust me – there IS no bottom.  And more importantly, when you’re spending your time looking off the cliff, you’re not looking at your goal anymore.  

    After being a software engineer for 10 years on major projects – I’ve learned this one lesson about code usability: if you’re using more than 3-4 sentences your mom can’t understand to describe a fix or architecture; something is likely gone, or will be going, very wrong soon.

    While I completely understand what yuhong2 is saying and it’s very plausable and intelligent, if it’s true, it shows me that someone made a terrible choice of platforms/architecture when choosing to solve this problem of a parking meter.  I’ve worked with more than a few tech leads that come up with horrendously complicated algorithms and architectures to solve problems that could be solved MUCH more easily.  And you know what?  The easier solution, while perhaps not the fastest or cool looking, is almost always the fastest and best long-term.  Why?  Because those complex architectures have even more complex problems.  i.e. yohung2’s answer.  As the project grows, it just gets worse and worse – not better.  Until you need a phD to figure out why some part of your threaded, interconnected data structures are hanging or getting corrupted once every 30 days.  This should be a moment to stop and ask yourself what you’re really doing. Sure, certain problems really do require complex solutions (i.e. 3D graphics, threaded applications and drivers – some of what I do), but know your tools and the strengths and limitations of them (the hardware platform, the language you’re using, the software/os stack, etc).  Yes, you darn well better have a good toolbox of the latest algorithms, languages and OS info, but your toolbox will do nothing but get you into trouble if you don’t know how and when (or when NOT) to really use those tools.  If yuhong2 is right, you see how your complex solution just backed you into a corner and shows you someone probably picked the wrong stack or algorithmic approach when just having a very simple box that checked times would have worked.

    I have worked long enough to also know that many times platform choices are out of your control as an engineer – budgeting and marketing often limits you.  But if you’re forced to use a platform – design so-as to avoid the limitations of that platform – not try to force them into doing what you want.  As a rule of thumb, always stick with the simplest solution that completely solves the problem first, then you’ll be re-writing to solve performance and feature issues instead of core this-thing-doesn’t-even-work-yet problems.  At worst, I’ll have a working system that’s slow and I can then optimize and re-design the parts that need it.  I won’t have wasted time optimizing for things that may not have needed any help.  Now the caveat is that you really must know what you’re doing and why your making those choices for simplicity.  It’s just as bad to stupidly pick an architecture that’s too simple for the problem and gets you just as much in a corner.  But I’ll argue a working, slow system will always sell and ship before one that’s 10 months late and MIGHT be faster.  Simplicity also makes the code more maintainable and much more extendable long term as there’s less inherent inertia in the code to move about.

    Software is like using clay to make art.  Sure you can beat and force and manipulate it to create very complex structures – but you start making more and more complex problems for yourself. i.e. if you try to build a car engine from clay.  If you work *with* the clay/code’s natural strengths and not force it to do what it isn’t good at, however, you end up with beautiful thing that’s simple, works well for its intended use, and is very easy to maintain (a clay bowl).

  23. Dave says:

    @Uwe Raabe: In a situation like that, you should throw an error with just a number.

    What, like Windows Update does for any situation whatsoever, and then you get to spend the next two hours googling for information with most hits leading to messages like "Windows Update failed with an 0x80001234 error code, what should I do?".

  24. Worf says:

    @Cheong: That’s why you put "Out of order" on the sign.

    "CLOSED – OUT OF ORDER – Please use alternate exit."

    That way, everyone thinks the staff are nutters because they bought a system that crashed, rather than closing all the gates for their amusement. Though, you’d think an alarm would go off when a gate is forced to close unexpectedly.

  25. ultranoob says:

    @austfart – I agree with your overall outlook but in this case he explained that an attendant already came up and let the guy out.

    This tells me that the overall "system" was working fine because it had probably already notified the human operator that something was wrong, (which is why he showed up at the gate)…one can only presume that subsequent to the guy leaving the carpark the attendant then hung an "out of order" sign on the gate.

    You can only make a system handle so many explicit error conditions. Yes, perhaps the designers of the system could have taken an extra step and simply caught any critical error and displayed "Out of Order" on the gate but that’s more a detail because it would still require human intervention if you had driven up to the gate and had for example 3 cars behind you so you could not go to another one.

    @Uwe – funny story, did you ever do something like Mihai suggested with the hard-coded messages or keep it for future support laughs?

Comments are closed.

Skip to main content