Ich persönlich mag ja Skriptsprachen. Wenn es irgendwie geht greife ich gerne zu Python, wenn es sein muss skripte ich aber auch in Perl oder PHP. Sprachen mit P halt. :-)

Ein Problem das ‚richtige Programmierer‘ immer wieder mit Skriptsprachen haben ist, dass die in der Regel dynamisch typisiert sind. Man muss halt nicht explizit sagen was in einer Variable stehen darf, man benutzt sie einfach.

Gerade bin ich auf ein erschreckendes Beispiel gestoßen das zeigt dass dynamische Variablen tatsächlich böse schlecht implementiert sein können. Ich war noch nie ein Freund von Javascript, aber…

rschaten% js
js> 5+2
7
js> 5-2
3
js> "5"+2
"52"
js> "5"-2
3

Schaurig, oder? 8-O

Glücklicherweise machen andere Sprachen das besser:

rschaten% python
Python 3.3.2 (default, Sep 6 2013, 09:30:10)
[GCC 4.8.1 20130725 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 5+2
7
>>> 5-2
3
>>> "5"+2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly
>>> "5"-2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'int'

Dass die Fehlermeldung sich hier zwischen + und – unterscheidet liegt daran dass der Operator + in Python auch für die Konkatenierung von Strings verwendet wird. Mein Vertrauen in Python besteht weiterhin… :-)

Gelesen habe ich:

We are contacting you to participate in a bid for the lease of your IPv4 address space. As you know, IPv4 is in a transitional period and will soon be replaced by IPv6. We are interested in leasing IPv4 address space for cash before they become obsolete.

Verstanden habe ich:

Wir würden Dir gerne etwas für Deine Beine bieten. Wie Du weisst ist das Laufen nur eine Brückentechnologie die bald durch das Fliegen ersetzt wird. Wir haben Interesse daran, Dir — gegen Geld natürlich — die Beine abzunehmen bevor sie obsolet werden.

So weit sind wir schon, wie? :-)

Manchmal habe ich das. Heute zum Beispiel.

Ich beschäftige mich eine Weile mit einem Thema. Meistens habe ich vorher schon was davon gehört, oder darüber gelesen. Manchmal habe ich mich auch schon etwas eingelesen, oder etwas rumprobiert. Nach einer Weile des unbeholfenen Rumstocherns werden Beispiele konkret. Ich stelle mir gezielt Aufgaben, und irgendwann sind die Lösungen einfach. Es passt einfach alles, und alles ergibt einen Sinn.

In den letzten Tagen habe ich mich intensiv mit Puppet beschäftigt. In der Theorie weiß ich schon lange was es tut, und die Beschäftigung damit stand genauso lange ganz oben auf der Liste der Sachen die ich mir noch aneignen will.

Zu Recht, wie mir scheint.

Heute hatte ich mehrere ach-so-geht-das-Momente. Zusammen ergeben die dann einen veritablen warum-hab-ich-das-nicht-schon-immer-so-gemacht-Moment. :-)

Ich bin mir absolut darüber im klaren dass es im Puppet-Umfeld jede Menge zu entdecken gibt, und dass das sicher mit einer Menge Arbeit und bisweilen auch mit Frust verbunden ist. Aber dieser warum-hab-ich-das-nicht-schon-immer-so-gemacht-Moment erleichtert die Beschäftigung damit ungemein.

Soviel dazu. Muss weg. Manifeste verfassen… ;-)

195 Adressen

195 Adressen

Der heutige Preis für praktizierten Datenschutz Communitybildung geht an… einen Veranstalter dessen Namen ich hier mal nicht nennen möchte.

Anfang letzten Jahres habe ich ein Konzert besucht. Die Karte habe ich mir im Vorverkauf besorgt, und den hat der Veranstalter selbst abgewickelt. Dass ich als Antwort auf meine Bestellung eine — augenscheinlich manuell und individuell getippte — Mail bekommen habe in der mir zugesichert wurde dass die Karte vor der Veranstaltung an der Kasse ausliegt hat mich schon irritiert. Ein paar Monate vor der Veranstaltung hätte ich erwartet dass die mir zugeschickt würde…

Nun denn. Das Konzert hat Spaß gemacht, damit hat sich der Abend gelohnt.

Heute — fast ein Jahr später — bekam ich eine weitere Mail des Veranstalters. Nicht nur ich. Neben meiner standen noch 194 weitere Adressen auf dem Umschlag. Eine der Adressatinnen kenne ich sogar noch aus der Schule, also selbst für mich noch aus der vor-Internet-Zeit. Seit etwa 20 Jahren dürfte ich die nicht mehr gesehen haben. Jutta, falls Du dies liest: Hallo! ;-)

Allen Gelegenheits-Rundschreibenschickern sei geraten: die eigene Adresse ins Feld für den Empfänger schreiben. Die eigentlichen Empfänger kann man dann in einem Feld mit dem Titel Blindkopie (auch BCC oder Blind Carbon Copy) auflisten. Dann sehen Empfänger nur den Absender, nicht die komplette Liste aller Adressaten. Das geht auch mit dem Thunderbird, selbst auf einem Windows 7.

Noch besser wäre es natürlich, sowas mit einem professionellen System zu machen. Das schickt die Mails dann einzeln raus.

Noch viel besser wäre es natürlich, so einen Mist gar nicht erst zu verschicken. Ich kann mich nicht daran erinnern zugestimmt zu haben dass meine Adresse dauerhaft gespeichert und sogar für den Spamversand verwendet wird. Das ist meines Wissens nicht legal, und wenn man das dem falschen schickt kann der einem deshalb böse auf die Füße treten, heutzutage…

Bei der Arbeit mit einem Softwarepaket fiel die Bemerkung dass man den ganzen Mist wegwerfen und neu entwickeln sollte. Mir fiel dazu ein dass es ein Tool gibt mit dem die Entwicklungskosten für Softwareprojekte abgeschätzt werden kann: ohloh.net berücksichtigt dazu im wesentlichen die Anzahl der Quellcodezeilen, das darunterliegende COCOMO-Modell, das zwar nicht völlig aus der Luft gegriffen ist, effektiv aber wohl auch nicht viel mehr bringt als eine Glaskugel.

Trotzdem: die Zahlen die dabei rausfallen sind schon beeindruckend. Selbst wenn man nur die Anzahl der Codezeilen ansieht, nicht die daraus folgenden Kosten (die mit $55k pro Personenjahr angesetzt werden):

Projekt Codebase Size Estimated Effort Estimated Cost
Apache HTTP Server 2.268.153 Zeilen 645 Personenjahre 35.476.462 Dollar
Apache OpenOffice 23.105.092 Zeilen 7361 Personenjahre 404.853.843 Dollar
Gimp 728.523 Zeilen 201 Personenjahre 11.034.951 Dollar
GNU Compiler Collection 6.435.383 Zeilen 1956 Personenjahre 107.585.880 Dollar
Linux Kernel 16.411.777 Zeilen 5321 Personenjahre 292.631.874 Dollar
MySQL 12.566.154 Zeilen 4009 Personenjahre 220.473.614 Dollar
Nagios 240.833 Zeilen 61 Personenjahre 3.334.334 Dollar
Perl 5.422.092 Zeilen 1664 Personenjahre 91.502.061 Dollar
PHP 2.281.573 Zeilen 653 Personenjahre 35.901.501 Dollar
Python Programming Language 908.412 Zeilen 251 Personenjahre 13.822.126 Dollar
Samba 1.554.832 Zeilen 442 Personenjahre 24.330.106 Dollar
Zabbix 279.878 Zeilen 73 Personenjahre 4.036.481 Dollar

Wie gesagt: alles nur Glaskugel, und sicher gibt es tausend Unwägbarkeiten wie autogenerierten Code, oder unterschiedliche Kosten für unterschiedlich qualifizierte Programmierer.

Für 300 Millionen Dollar würde ich persönlich aber durchaus anfangen einen Kernel zu schreiben… selbst wenn ich damit rechne bis zur Rente noch 30 Jahre hacken zu müssen, müsste der rechnerisch bis dahin ja nur 0,56% der Funktionalität bringen ((1 / 5321) * 30 * 100 = approx. 0.5638038)… wenn ich mir die richtigen 0,56% raussuche passt das schon… :-)

Einer der wie ich finde besten Teile aus der Star Trek Filmreihe ist der vierte: Zurück in die Gegenwart. Ich habe den schon einige Male gesehen, diesmal habe ich mir dazu auch die Trivia aus der IMDB angesehen.

Die meistzitierte Szene unter Nerds dürfte die sein in der Scotty die Formel für transparentes Aluminium in einen Computer der 80er Jahre des letzten Jahrhunderts eingibt. Ikonisch ist das „Hallo Computer“ das er in die Maus spricht. :-D

Dass die Kiste ein zeitgenössischer Macintosh ist kann man schwer übersehen. Interessant und dazu passend ist folgender Teil aus den Trivias:

The computer that Scotty uses to show transparent aluminum was originally going to be an Amiga, but Commodore would only provide a computer if they bought it. Apple was willing to loan them the Mac.

Der Film hatte 25 Millionen Dollar Budget, und die machen sich ins Hemd weil sie einen kleinen Computer kaufen sollen? Noch interessanter fand ich dann aber einige Absätze später folgendes:

The computer that Scotty uses in the Plexicorp scene appears to be a Macintosh Plus, but its internals were completely changed for filming. Its screen was replaced with one from an IBM PC to make it easier to synchronize its video refresh rate with the film camera’s frame rate, and the „transparent aluminum“ animation was created on an IBM PC by computer graphics company Video Image.

Merke: niemals was an Filmemacher verleihen. Wenn die das Ding von Apple nur geliehen hatten frage ich mich was Steve Jobs dazu gesagt hat dass er einen Mac zurückbekommen hat in dem ein PC steckt?!? :-)

Oh, und was ist die Moral von der Geschichte? Nicht-Fanboys werden wohl sagen dass so ein Mac leinwandtauglich aussieht, wenn es ans Arbeiten geht nimmt man aber wohl doch lieber den PC. Fanboys werden das dann wohl mit einem „außen hui, innen pfui“ kontern — was aus einigen Blickwinkeln auch durchaus verständlich erscheint…