Most information here is in English. Only entries not relevant for the international audience are in Dutch.



 2005.06.30
House of Cards

My blogging activities have been rather low in the last four weeks. We are eagerly working on our application. So if you have time to spare, here is some activity that will absorb most of your time for the coming weeks:



 2005.06.30
Winnie de Poehma

Scherpe veiligheidsmaatregelen zijn genomen op de Veluwe om het gevaar van de los lopende poema te weerstaan:



 2005.05.20
Risks of Laptops with Bluetooth

from: ACM FORUM ON RISKS TO THE PUBLIC IN COMPUTERS AND RELATED SYSTEMS (comp.risks)

Date: Fri, 6 May 2005 11:35:08 -0700
From: Andrew Nicholson <andrewn @ lesto. com>
Subject: Car breakins using bluetooth

I recently lost our rental car in one of the huge parking lots of Disney
World. The color and license plate entry on the rental car tag were
incorrect and we couldn't remember the color and we had the row wrong.

Eventually security drove us around while I pushed the "panic" button on the
remote key fob at any likely looking vehicle. Security knew roughly where
the cars were parked based on the time that you caught the shuttles. Once
we found the car that was it - no further checks.

During the search I asked about car theft from the parking lots given that
they are huge and there is little sign of security patrols etc. The claim
was that they don't have many car thefts, but they do have 4 to 5 break-ins
every day where the contents of the cars are stolen.

Here's the interesting part: every break-in in the past month had involved a
laptop with internal bluetooth. Apparently if you just suspend the laptop
the bluetooth device will still acknowledge certain requests allowing the
thief to target only cars containing these laptops

Reused without explicit authorization under blanket permission granted for all Risks-Forum Digest materials. The author(s), the RISKS moderator, and the ACM have no connection with this reuse.



 2005.05.15
Barbie with Brains

Turn your Barbie into a USB-stick!



 2005.05.15
Vintage Products Contest

  

This is a contest for advanced Photoshoppers: Vintage Products. Great fun!



 2005.05.15
Winter in Geneva

More bizarre photos of winter along the Lac Léman here.



 2005.05.13
Software-beheer

Bij het downloaden van software blijft er vaak een folder met een zip-bestand op het buroblad staan. Vaak is dat niet meer nodig, zeker niet als het een gratis programma is dat later opnieuw neergeladen zou kunnen worden. De software is inmiddels geïnstalleerd en elders op de machine gekopieerd. Je kunt het dus veilig weggooien. Aan de andere kant kun je ook overwegen om alles wat je neerlaadt (deze folder dus) onder te brengen in een folder met de naam downloads. Hiervan maak je dan af en toe een backup. Je hebt dan de mogelijkheid om altijd in de toekomst, hoe ernstig het probleem ook is, je machine exakt te herstellen, of je kunt andere machines voorzien van eaxkt dezelfde programma's. Eigenlijk moet je per PC ook een logboek bijhouden van alle installaties die je doet. Misschien voor een partikulier een beetje overdreven, maar aan de andere kant ook niet veel moeite.



 2005.05.13
Cookies voor gewone gebruikers

Als je een website bezoekt is het handig dat de server dingen over jou onthoudt, bijvoorbeeld een e-boekhanmdel die jouw rekeningnummer nog kent of je afleveradres. Om allerlei uiteenlopende redenen worden die gegevens niet op de machine van de boekhandel opgeslagen, maar op jouw eigen computer. Jouw machine houdt dus jouw gegevens bij voor het volgende kontakt met de boekhandel. Zo kan de boekhandel jou herkennen en wordt je niet lastig gevallen met vragen die je al eens beantwoord hebt. Vergelijk dit met het kleine zegeltje aan de voordeur dat je krijgt als je geld hebt gegeven aan de kollekte van de hartstichting.

Cookies kunnen een privacy-risiko vormen, maar niet een virusrisiko. Je kunt je de problemen voorstellen als de kollektant van de hartstichting je kredietkaartnummer en de hoogte van de bijdrage zou invullen op het zegeltje aan je voordeur. Om dergelijke problemen met cookies te voorkomen kun je twee dingen doen. Ten eerste kun je alle cookies weigeren (handmatig of automatisch door instelling van de browser). Je lost dan alle privacy-problemen op, maar moet bepaalde ongemakken bij het opnieuw bezoeken van websites voor lief nemen. Sommige sites werken in het geheel niet als ze geen cookies kunnen achterlaten. Ten tweede kun je de browser zo instellen dat hij cookies alleen toont aan die servers die de cookie ook oorspronkelijk verstrekt hebben. Dat is meestal een voldoende oplossing. Hiermee voorkom je ook dat wildvreemde machines al je cookies inspekteren om een profiel van je op te stelllen dat vervolgens gebruikt wordt voor marketingdoeleinden.



 2005.05.09
software is not manufacture

In this discussion about SubText on Lambda the Ultimate, Koray Can made this interesting remark:

In the beginning the author says: programming is an embarrassment and a failure. Again and again I hear this and comparisons to other disciplines. Manufacturing microchips and building bridges have obvious material costs that justify strict quality control. Software management typically pushes on complexity and time to market, and they control the damage caused by resulting bugs via patches (viewed inexpensive as compared to recalls).

Far too often programming is compared to more conventional disciplines such as engineering, building bridges or developing hardware. Sometimes these discplines can be used metaphorically, but at some point the comparison fails miserably. ISO-900x, anyone? The economies of software development are totally different.



 2005.05.09
Europe Day

Freude!

Freude, schöner Götterfunken
Tochter aus Elysium,
Wir betreten feuertrunken,
Himmlische, dein Heiligtum!

Today 55 years ago, French foreign minister Robert Schuman made his famous declaration that marked the birth of the European Union [version française][English][Nederlands].



 2005.05.08
Great quote on European Constitution

A great quote by President Mrs. Vaira Vike-Freiberga of Latvia --a country that escaped from tyranny only 15 years ago-- when asked about the pending European constitution:

The European Union established the longest period of peace in European history. Whatever the faults [of the EU], there must be something good about it. It is the most democratic, the most prosperous [part of the world], with the best quality of living. For us that is good enough.



 2005.05.08
Aphorisms

[all of my own mint:]

  • Language is a machine to convey thoughts
  • Language is the chisel of thoughts
  • The need for comments in a programming language indicates a lack of expressiveness



 2005.05.05
Pong-Mechanik

Niklas Roy has built a computer game without a computer: Pong-Mechanik. Pong was one of the first computer games in arcade halls. Niklas remade the game with only mechanical and electro-mechanical parts. Very clever, very geeky. In his galery, one will find other geeky installations, for example, this GrafikDemo which uses only a single part from a computer: the casing. Watch the videos!.

I wrote earlier in my weblog on Pong on the facade of the Bibliothèque Nationale François Mitterand in Paris.



 2005.05.05
Cantal

 

Sylvia Bonal published some very nice wide angle photos of the Cantal region, including the above picture of the Viaduc de Garabit.



 2005.04.26
Dom, Donner, Donst

Minister Donner heeft vandaag in Kerkrade zijn ei gepresenteerd: 'Bedrijven moeten verantwoordelijk gemaakt worden voor het file-probleem. Als woon en werkverkeer gedefinieerd wordt als arbeidstijd, dan wordt het een probleem van de werkgevers die dan antwoorden kunnen vinden.'

Met zoveel domheid, waar moet ik beginnen met de weerlegging? In de eerste plaats bevestigt Donner het failliet van de Nederlandse overheid inzake de verkeersproblematiek, toch bij uitstek een taak van het Rijk. In de tweede plaats spreekt de minister over verantwoordelijkheden, maar bij verantwoordelijkheden horen ook bevoegdheden en budgetten. Kortom: mag het bedrijfsleven dan ook de opbrengsten van de wegenbelasting onderling verdelen of naar eigen inzicht nieuwe wegen aanleggen?

Maar het derde punt vind ik het belangrijkste: een werkgever heeft nauwelijks invloed op de keuze van de werknemer omtrent de keuze van woonplaats. Als de werknemer degene is die de woonplaats kiest, laat de werknemer dan ook de rekening betalen. Onze politici leren het ook nooit, alles wat gratis is, nagenoeg niets kost, of slechts anderen geld kost wordt ongebreideld gekonsumeerd: voordelig onderwijs, gratis/voordelig openbaar vervoer, uitkeringen. Krijgen we nog zo'n merkwaardige situatie als het feit dat een werkgever niet mag vragen naar de kinderwens van een werkneemster of sollicitante, maar wel geacht wordt de rekening te betalen in de vorm van opvang en verlof? Of nog een: een werkgever mag geen aktie ondernemen tegen gevaarlijke hobbies van werknemers, maar is tegenwoordig wel verplicht 2 jaar salaris door te betalen, ook bij ongelukken in de privésfeer.

Dit heet afschuiven van de eigen verantwoordelijkheden. Ik wil van u niets meer te horen over normen en waarden.

Eindoordeel: gezakt.



 2005.04.25
Ranged numeric types

In this thread, there was a discussion whether zero is a natural number or not, whether unsigned numbers are useful in programming, and whether implementation width should be incorporated in the identifier of the class. I explained why ranged numeric classes can help developing better software:

>>> First thing -- most "pure" software people would rather not have to care what the native word size is of a register on the machine they are using.  That's why we have the 'int' keyword in C -- its size changes depending on what platform you use it on.<<<

I beg to differ most strongly. If you want to develop high integrity code, you should always specify range and precision of all your numeric types. Using types with range and precision left open is not giving you portable code or even future proof code (when compilers, platforms change).

Granted, code using Int128 may not run on some machines, but the compiler will tell you up front. If the 128-bit-ness is a domain requirement, then you are lucky: you have been saved from disaster by the compiler. If the 128-bit-ness is not a domain requirement, then the question is why it was there in the first place.

If what you really want is (almost) limitless range, then use BigNums, and thus, specify that explicitly.

An even better technique in this area is by explicitly specifying the range of possible values and letting the compiler pick the best internal representation (as in the Carmen-language):

  class Age: Nat range 0...130

This range invariant provides additional semantic information that will help you catch errors and provides total freedom to the compiler to use any suitable implementation type.

There is a lot of merit in being Ada-aware (-8

>>>Actually there is no agreement on whether or not zero is a natural.<<<

In some of the math books and literature that I have access to, it is stated that there is some controversy over the question whether zero is a natural number. After having spent two sentences on the subject, *all* these books and papers continue assuming that zero is a natural.

>>>I am strongly tending towards the view that there is never a good reason to use unsigned numbers.<<<

Why is that? At Garabit we use Integers, Naturals and Cardinals all of the time, and they help us to catch errors by allowing us to express invariance constraints for the value domain. However, I must confess that we have defined our own implementations for these types, because the standard ones in Delphi are broken. other than that, subrange types in Pascal are extremely useful. In fact they are a poor man's invariants (as in DbC).



 2005.04.17
Modelspoor 's-Hertogenbosch

In this area there are two model train clubs with very nice dioramas/ layouts. The Modelteam Meijerij has made one showing 's-Hertogenbosch and its environment. Now they are working on a more distant area: wood logging in California.

The other group is MSG 's-Hertogenbosch, who are building a huge layout.



 2005.04.17
Matériel Sprague

This brings back living memories of the times I was in Paris in the 70's and 80's. This is about the 3D-model for simulations, this is about the real thing.



 2005.04.17
SNCF rolling stock for Train Simulator

 

Bruno Terrien maintains a nice website with 3D-models of French rolling stock for MSTS. It even contains a model of the pont-viaduc of Garabit! More rolling stock can be found on this site. The latter site also has a list of French rolling stock and nice links, amongst others with scenery of famous railway lines.

Rail.lu is a gold mine for anyone interested in the railways of Luxembourg, France, Germany and Belgium. Thousands of photos of locomotives, tunnels, bridges, blast furnaces, etc. Many photos and a lot of information on the local heavy industry and its railways of yesteryear.



 2005.04.14
Design by Contract

Answering a question by Wannabeboy in Joel on Software:

The margin of this forum is too small to provide you with a complete theatment of DbC. Bertrand Meyer wrote Object-Oriented Software Construction II (perhaps now even III?) and needed 1252 pages. However, this book is not a bigger-is-better/ more impressive. OOSC II is a classic in software engineering. The Wikipedia and the Wiki Wiki also have useful information.

I will give you a small example of a routine using DbC, written in our own language Carmen (R):

function partMiddle(tt: Text, pos: Card32, len: Nat32) return Text
  -- Returns an extract from tt, starting at pos, >>
  -- having a length of len.
  -- Aka: midStr (deprecated).
  precondition
      1 <= pos <= tt.count+1
      0 <= len <= tt.count
      0 <= pos+len-1 <= tt.count
  do
      return tt[pos...pos+len-1]   -- implementation
  postcondition
      contains(tt, result)
;

Discussion: contracts are inherited by subtypes; contracts are both executable code and documentation, in fact executable documentation!; contracts can be left out with a compiler switch for better performance (usually not needed, except in hotspots); making sure that preconditions are met is the job of the caller-programmer; making sure that postconditions are met is job of server-programmer; perfect blame management within a team of programmers; when a postcondition is violated there is no point in using a stack trace: the server-programmer has either made a mistake in his implementation code, or had too weak a precondition; code is made as brittle as possible, no attempt to repair mistakes or second guess the caller.

The latter point is important. Make the software as brittle as possible so that bugs are discovered early instead of covered up by usually buggy and badly test-covered exception handling code. Let the code explode in your face, it makes you careful (-8. I estimate that we have fewer than 0.2 exception handlers per KLOC. This style of DbC reduces the number of execution paths enormously.

Not shown in this simple example are intermediate inspections (checks). These are used to assert a condition. These inspections should be used instead of debuggers. If we have a bug in our code (signalled by a violated contract or inspection) we do not fire the debugger; we add more inspections in the code until we find the point where the mistake was made.

Notice that in this example we did no attempt to repair incorrect inputs, such as the caller demanding parts longer than the original input tt. Such repair mechanisms complicate the software tremendously, are never enough to cope with all stupidities people do (thus demanding for even more complexity both in the service and in its existing callers), make it very complicated for anyone to know what the service exactly does, make documentation a nightmare and do not signal the bugs in the caller.

The Carmen-programming language is a blend of Ada and Eiffel, designed for large scale high-integrity applications. Although its syntactic design has resemblance to Python, it actually predates Python by several years. Carmen has many new facilities that make it simple to write correct software. Small programs in Carmen are usually compacter than their Python counterparts, very large programs are much compacter than their Eiffel and Ada equivalents (without leaving out things that make Eiffel and Ada so interesting; I am not making a comparison like that of structured Ada with unstructured Perl) and without giving in on readability.

There is no complete compiler for Carmen yet, because a compiler for Carmen cannot be generated with standard compiler-compilers, so we are writing things ourselves. The language, the libraries, environment and the development method have been developed in pair. At this moment we have a bunch of tools that together allow us to think and write in Carmen.

Now that the birth of a first version of a Carmen-compiler is nearby, I plan to write more on Carmen and language design in my blog.



 2005.04.13
Uitvaart Prins Rainier

Vorige week vrijdag werd een groot en eenvoudig man begraven en onze koninklijke familie bleef thuis. Vrijdag wordt Prins Rainier van Monaco begraven en onze kroonsprins is aanwezig. Zowel de paus als Rainier waren staatshoofd van allebei even kleine soevereine staatjes. Mij ontgaat de logika waarom men wel in Monaco aanwezig wil zijn en niet in Rome. Prins Rainier kan op geen enkele manier met de paus vergeleken worden; zou de Rijksvoorlichtingsdienst dat bedoelen als ze laat weten dat de prins en de paus onvergelijkbaar zijn?

De RVD gaf wel een interessante verklaring: ze laat weten dat onze koninklijke familie altijd aanwezig is bij begrafenissen van staatshoofden van regerende vorstenhuizen. Welnu, de paus is ook een gekroond staatshoofd. Vervolgens wordt het konkreet en volgt dat onze koninklijke familie altijd aanwezig is bij andere koninklijke bruiloften, begrafenissen en partijen. Bovendien Willem-Alexander en Prins Albert van Monaco kennen elkaar, onder andere uit het IOC en de bruiloft van Willem-Alexander. Prima, rouw- en trouwbezoek in de privésfeer. Maar ons staatshoofd kent de paus toch ook van staatsbezoeken?

Hier kan maar één konklusie uit getrokken worden: ons koninklijk huis vertegenwoordigt vooral zichzelf en niet de Nederlandse bevolking.



 2005.04.11
Uitvaart paus Johannes Paulus II

Majesteit,

Afgelopen vrijdag bij de uitvaart van de Paus Johannes Paulus II schitterde u en de rest van de koninklijke familie door afwezigheid. Nederland had daar natuurlijk vertegenwoordigd moeten zijn door het staatshoofd. Landen waarvan het katholieke bevolkingsdeel velen malen kleiner is waren wel door het staatshoofd vertegenwoordigd, zelfs landen als Syrië, Iran en Afghanistan. Ook de president van de Verenigde Staten had de moeite genomen om te komen, samen met twee oud-presidenten en de minister van buitenlandse zaken. Het katholicisme is naar koppen geteld de grootste godsdienst van dit land. Bovendien gaat het hier om de uitvaart van een paus waarvan de historische betekenis voor iedereen duidelijk is. Wat een uitglijder.

Natuurlijk, het antwoord van vice-premier Zalm op de kritiek van oud-premier Van Agt was leuk en spits, maar dit antwoord pareert de kritiek van Van Agt zelf, niet dat van alle anderen binnen en buiten de politiek die hetzelfde riepen, volgens enquetes 57% van de bevolking (met 32% tegenstanders). Eigenlijk is het Zalm te gemakkelijk gemaakt, omdat niemand heeft doorgevraagd.

De opmerking uit de politiek over scheiding van kerk en staat vind ik hoogst ongepast. In Nederland hebben namelijk niet een echte scheiding van kerk en staat. We hebben een premier die het gebed terug heeft gefriemeld in de troonrede, als Nederland hebben we in Europees verband lopen zeuren om het zijschrijft 'God zij met ons' op de Nederlandse euro, we hebben tal van konfessionele partijen in de kamer, daarbij inbegrepen het CDA, en het meest storend: ons staatshoofd wordt ingehuldigd in een kerk en tekent wetten 'Bij de Gratie Gods'. Staatsrechtelijk het enige juiste zou zijn dat het staatshoofd zou tekenen met 'Bij de Gratie van het Nederlandse volk' en dat het staatshoofd het ambt aanvaardt door een eed of belofte, af te leggen op de grondwet in een gezamenlijke vergadering van de kamers van de Staten Generaal in Den Haag. Wederom kunnen wij veel leren van onze Belgische buren.

We hebben een totaal pleefiguur geslagen. Dit laat zich niet repararen met een aantal korte bezoekjes aan de katholieke mis om de hoek.

Majesteit, en excellentie, minister-president, van twee doctoren had ik meer wijsheid verwacht.

 

Naschrift: hier de namenlijst van degenen die wel aanwezig waren. Wat blijkt, ons land had 5 uitnodigingen!



 2005.04.11
How geeks communicate

This is how we geeks communicate when no other people are around.



 2005.04.11
Incredible commercial 'The Cog'

The Cog is a beautiful television commercial for Honda. Incredible, but true: the movie was taken in a single shot, although it took more than 600 shots to get it right, there is no trickery, no computer graphics, everything is what it appears to be, all parts are taken from two canabalized pre-production versions of the Honda Accord (at a time when there were only 6 hand-built of these in the world). This is the story behind the making of the commercial.



 2005.04.11
Sometimes we morph ourselves into a call centre

Had this conversation this morning with a telephone spammer:

- Hello, Garabit Technologies, with Karel Thönissen
- Good morning, this is Viking Direct, can I speak with the person responsible for purchasing?
- Can I have your support number, please?
- Sorry, I am working in a call center!
- So am I.
- Sorry to have bothered you, good morning.
- Bye!



All my blogs: