Apple Security Professionals

This is how "security professionals" sound these days:

[..] modifying the hosts file isn’t super easy. It’s a multistep process that varies depending upon which operating system you are using. Here’s a good overview of how to edit the hosts file on different Mac and Windows systems.

And their "howto" is even wrong.

So sad... 

Ascend lebt

Faszinierend, nach soooo langer Zeit lebt der Ascend FTP-Server noch:

% ftp
Connected to
220 ftp FTP server (Version wu-2.6.2(17)-GD Tue May 11 19:47:08 PDT 2010) ready.
Name ( ftp
331 Guest login ok, send your complete e-mail address as password.
230-The response 'ftp' is not valid
230-Next time please use your e-mail address as your password
230-        for example: joe@.......
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub/Software-Releases/Pipeline
250-Pipeline software releases:
250-This directory contains current released SW for the Pipeline 25, 50, 75, 85,
250-130, 220, and 400.
250-3/23/98 -  
250-Archive			Previous releases of Pipeline software.
250-Release-6.0.X		Current shipping software for Pipelines.
250-NOTE - Release notes pertaining to the versions of firmware are located in the "doc" subdirectory within each firmware directory.
250-For example:
250-6.0.0 Release Notes are to be found in:
250-Please read the file README
250-  it was last modified on Mon Apr  3 15:03:47 2000 - 5690 days ago
250 CWD command successful.
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 72
-rwxrwxr-x   1 600          510 Apr  3  2000 .message
drwxrwxr-x   7 600          512 Apr  3  2000 Archive
drwxrwxr-x   8 600          512 Apr  3  2000 CellPipe
drwxrwxr-x   4 600          512 Jan 25  2001 Current
drwxrwxr-x   5 600          512 Apr  3  2000 Pipeline-15
-rwxrwxr-x   1 600          510 Apr  3  2000 README
drwxrwxr-x   9 600          512 Apr  3  2000 Release-6.0.X
drwxrwxr-x  12 600          512 Feb 24  2002 Release-6.1.X
drwxrwxr-x   7 600          512 Feb 19  2002 Release-7.3.X
drwxr-xr-x   4 1            512 Jan 25  2001 Release-8.0-101.0
drwxr-xr-x   4 1            512 Feb 24  2002 Release-8.0-101.2
drwxrwxr-x   3 600          512 Apr  3  2000 SuperPipe
-rwxrwxr-x   1 600        11794 Apr  3  2000 Upgrade-Filenames.txt
-rwxrwxr-x   1 600        12005 Apr  3  2000 Upgrade-Instructions.txt
226 Transfer complete.
ftp> 221-You have transferred 0 bytes in 0 files.
221-Total traffic for this session was 2149 bytes in 1 transfers.
221-Thank you for using the FTP service on ftp.
221 Goodbye.

MDD, Module Dependency Disorder, the perl plague

There's a problem with more and more perl modules I'd like to call "Module Dependency Disorder", MDD. Many perl modules, especially the newer ones have so many dependencies - it's just a mess. In the old times you could install modules by using "perl Makefile.PL && make && sudo make install", under some OSes like Linux and FreeBSD most modules are packaged. But this is over.

Thanks goodness there's Perlbrew so I don't have to mess with my system in order to just test a new module. Today I wanted to play a little with Geo::GPX and GIS::Distance, so I installed them inside my perlbrew environment using 'cpanm'. This is what it looked like:

% cpanm GIS::Distance
--> Working on GIS::Distance
Fetching ... OK
Configuring GIS-Distance-0.09 ... OK
==> Found dependencies: Type::Tiny, Moo, Class::Measure, namespace::clean, strictures
--> Working on Type::Tiny
Fetching ... OK
Configuring Type-Tiny-1.000005 ... OK
Building and testing Type-Tiny-1.000005 ... OK
Successfully installed Type-Tiny-1.000005
--> Working on Moo
Fetching ... OK
Configuring Moo-2.000002 ... OK
==> Found dependencies: Module::Runtime, Role::Tiny, Devel::GlobalDestruction, Class::Method::Modifiers
--> Working on Module::Runtime
Fetching ... OK
Configuring Module-Runtime-0.014 ... OK
Building and testing Module-Runtime-0.014 ... OK
Successfully installed Module-Runtime-0.014
--> Working on Role::Tiny
Fetching ... OK
Configuring Role-Tiny-2.000001 ... OK
Building and testing Role-Tiny-2.000001 ... OK
Successfully installed Role-Tiny-2.000001
--> Working on Devel::GlobalDestruction
Fetching ... OK
Configuring Devel-GlobalDestruction-0.13 ... OK
==> Found dependencies: Sub::Exporter::Progressive
--> Working on Sub::Exporter::Progressive
Fetching ... OK
Configuring Sub-Exporter-Progressive-0.001011 ... OK
Building and testing Sub-Exporter-Progressive-0.001011 ... OK
Successfully installed Sub-Exporter-Progressive-0.001011
Building and testing Devel-GlobalDestruction-0.13 ... OK
Successfully installed Devel-GlobalDestruction-0.13
--> Working on Class::Method::Modifiers
Fetching ... OK
Configuring Class-Method-Modifiers-2.11 ... OK
Building and testing Class-Method-Modifiers-2.11 ... OK
Successfully installed Class-Method-Modifiers-2.11
Building and testing Moo-2.000002 ... OK
Successfully installed Moo-2.000002
--> Working on Class::Measure
Fetching ... OK
Configuring Class-Measure-0.05 ... OK
==> Found dependencies: Sub::Exporter
--> Working on Sub::Exporter
Fetching ... OK
Configuring Sub-Exporter-0.987 ... OK
==> Found dependencies: Data::OptList, Sub::Install, Params::Util
--> Working on Data::OptList
Fetching ... OK
Configuring Data-OptList-0.109 ... OK
==> Found dependencies: Params::Util, Sub::Install
--> Working on Params::Util
Fetching ... OK
Configuring Params-Util-1.07 ... OK
Building and testing Params-Util-1.07 ... OK
Successfully installed Params-Util-1.07
--> Working on Sub::Install
Fetching ... OK
Configuring Sub-Install-0.928 ... OK
Building and testing Sub-Install-0.928 ... OK
Successfully installed Sub-Install-0.928
Building and testing Data-OptList-0.109 ... OK
Successfully installed Data-OptList-0.109
Building and testing Sub-Exporter-0.987 ... OK
Successfully installed Sub-Exporter-0.987
Building and testing Class-Measure-0.05 ... OK
Successfully installed Class-Measure-0.05
--> Working on namespace::clean
Fetching ... OK
Configuring namespace::clean-0.26 ... OK
==> Found dependencies: Package::Stash, B::Hooks::EndOfScope
--> Working on Package::Stash
Fetching ... OK
==> Found dependencies: Dist::CheckConflicts
--> Working on Dist::CheckConflicts
Fetching ... OK
Configuring Dist-CheckConflicts-0.11 ... OK
Building and testing Dist-CheckConflicts-0.11 ... OK
Successfully installed Dist-CheckConflicts-0.11
Configuring Package-Stash-0.37 ... OK
==> Found dependencies: Package::Stash::XS, Module::Implementation
--> Working on Package::Stash::XS
Fetching ... OK
Configuring Package-Stash-XS-0.28 ... OK
Building and testing Package-Stash-XS-0.28 ... OK
Successfully installed Package-Stash-XS-0.28
--> Working on Module::Implementation
Fetching ... OK
Configuring Module-Implementation-0.09 ... OK
Building and testing Module-Implementation-0.09 ... OK
Successfully installed Module-Implementation-0.09
Building and testing Package-Stash-0.37 ... OK
Successfully installed Package-Stash-0.37
--> Working on B::Hooks::EndOfScope
Fetching ... OK
Configuring B-Hooks-EndOfScope-0.15 ... OK
==> Found dependencies: Variable::Magic
--> Working on Variable::Magic
Fetching ... OK
Configuring Variable-Magic-0.59 ... OK
Building and testing Variable-Magic-0.59 ... OK
Successfully installed Variable-Magic-0.59
Building and testing B-Hooks-EndOfScope-0.15 ... OK
Successfully installed B-Hooks-EndOfScope-0.15
Building and testing namespace::clean-0.26 ... OK
Successfully installed namespace::clean-0.26
--> Working on strictures
Fetching ... OK
Configuring strictures-2.000001 ... OK
==> Found dependencies: indirect, bareword::filehandles, multidimensional
--> Working on indirect
Fetching ... OK
Configuring indirect-0.36 ... OK
Building and testing indirect-0.36 ... OK
Successfully installed indirect-0.36
--> Working on bareword::filehandles
Fetching ... OK
==> Found dependencies: B::Hooks::OP::Check, ExtUtils::Depends
--> Working on B::Hooks::OP::Check
Fetching ... OK
==> Found dependencies: ExtUtils::Depends
--> Working on ExtUtils::Depends
Fetching ... OK
Configuring ExtUtils-Depends-0.404 ... OK
Building and testing ExtUtils-Depends-0.404 ... OK
Successfully installed ExtUtils-Depends-0.404
Configuring B-Hooks-OP-Check-0.19 ... OK
Building and testing B-Hooks-OP-Check-0.19 ... OK
Successfully installed B-Hooks-OP-Check-0.19
Configuring bareword-filehandles-0.003 ... OK
==> Found dependencies: Lexical::SealRequireHints
--> Working on Lexical::SealRequireHints
Fetching ... OK
Configuring Lexical-SealRequireHints-0.009 ... OK
Building and testing Lexical-SealRequireHints-0.009 ... OK
Successfully installed Lexical-SealRequireHints-0.009
Building and testing bareword-filehandles-0.003 ... OK
Successfully installed bareword-filehandles-0.003
--> Working on multidimensional
Fetching ... OK
Configuring multidimensional-0.011 ... OK
Building and testing multidimensional-0.011 ... OK
Successfully installed multidimensional-0.011
Building and testing strictures-2.000001 ... OK
Successfully installed strictures-2.000001
Building and testing GIS-Distance-0.09 ... OK
Successfully installed GIS-Distance-0.09
27 distributions installed

% cpanm Geo::Gpx 
--> Working on Geo::Gpx
Fetching ... OK
Configuring Geo-Gpx-0.26 ... OK
==> Found dependencies: XML::Descent, DateTime, DateTime::Format::ISO8601
--> Working on XML::Descent
Fetching ... OK
Configuring XML-Descent-1.04 ... OK
==> Found dependencies: XML::TokeParser, Test::Differences
--> Working on XML::TokeParser
Fetching ... OK
Configuring XML-TokeParser-0.05 ... OK
==> Found dependencies: XML::Parser
--> Working on XML::Parser
Fetching ... OK
Configuring XML-Parser-2.44 ... OK
==> Found dependencies: LWP::UserAgent
--> Working on LWP::UserAgent
Fetching ... OK
Configuring libwww-perl-6.13 ... OK
==> Found dependencies: File::Listing, HTTP::Cookies, HTTP::Request::Common, WWW::RobotRules,
HTTP::Request, URI, URI::Escape, HTTP::Daemon, HTTP::Date, LWP::MediaTypes, HTTP::Negotiate,
Net::HTTP, HTTP::Status, HTTP::Response --> Working on File::Listing Fetching ... OK Configuring File-Listing-6.04 ... OK ==> Found dependencies: HTTP::Date --> Working on HTTP::Date Fetching ... OK Configuring HTTP-Date-6.02 ... OK Building and testing HTTP-Date-6.02 ... OK Successfully installed HTTP-Date-6.02 Building and testing File-Listing-6.04 ... OK Successfully installed File-Listing-6.04 --> Working on HTTP::Cookies Fetching ... OK Configuring HTTP-Cookies-6.01 ... OK ==> Found dependencies: HTTP::Headers::Util --> Working on HTTP::Headers::Util Fetching ... OK Configuring HTTP-Message-6.11 ... OK ==> Found dependencies: URI, IO::HTML, LWP::MediaTypes --> Working on URI Fetching ... OK Configuring URI-1.69 ... OK Building and testing URI-1.69 ... OK Successfully installed URI-1.69 --> Working on IO::HTML Fetching ... OK Configuring IO-HTML-1.001 ... OK Building and testing IO-HTML-1.001 ... OK Successfully installed IO-HTML-1.001 --> Working on LWP::MediaTypes Fetching ... OK Configuring LWP-MediaTypes-6.02 ... OK Building and testing LWP-MediaTypes-6.02 ... OK Successfully installed LWP-MediaTypes-6.02 Building and testing HTTP-Message-6.11 ... OK Successfully installed HTTP-Message-6.11 Building and testing HTTP-Cookies-6.01 ... OK Successfully installed HTTP-Cookies-6.01 --> Working on WWW::RobotRules Fetching ... OK Configuring WWW-RobotRules-6.02 ... OK Building and testing WWW-RobotRules-6.02 ... OK Successfully installed WWW-RobotRules-6.02 --> Working on HTTP::Daemon Fetching ... OK Configuring HTTP-Daemon-6.01 ... OK Building and testing HTTP-Daemon-6.01 ... OK Successfully installed HTTP-Daemon-6.01 --> Working on HTTP::Negotiate Fetching ... OK Configuring HTTP-Negotiate-6.01 ... OK Building and testing HTTP-Negotiate-6.01 ... OK Successfully installed HTTP-Negotiate-6.01 --> Working on Net::HTTP Fetching ... OK Configuring Net-HTTP-6.09 ... OK Building and testing Net-HTTP-6.09 ... OK Successfully installed Net-HTTP-6.09 Building and testing libwww-perl-6.13 ... OK Successfully installed libwww-perl-6.13 Building and testing XML-Parser-2.44 ... OK Successfully installed XML-Parser-2.44 Building and testing XML-TokeParser-0.05 ... OK Successfully installed XML-TokeParser-0.05 --> Working on Test::Differences Fetching ... OK Configuring Test-Differences-0.63 ... OK Building and testing Test-Differences-0.63 ... OK Successfully installed Test-Differences-0.63 Building and testing XML-Descent-1.04 ... OK Successfully installed XML-Descent-1.04 --> Working on DateTime Fetching ... OK Configuring DateTime-1.21 ... OK ==> Found dependencies: Test::Warnings, DateTime::TimeZone, DateTime::Locale, Params::Validate --> Working on Test::Warnings Fetching ... OK Configuring Test-Warnings-0.021 ... OK ==> Found dependencies: CPAN::Meta::Check --> Working on CPAN::Meta::Check Fetching ... OK Configuring CPAN-Meta-Check-0.012 ... OK ==> Found dependencies: Module::Metadata --> Working on Module::Metadata Fetching ... OK Configuring Module-Metadata-1.000027 ... OK Building and testing Module-Metadata-1.000027 ... OK Successfully installed Module-Metadata-1.000027 (upgraded from 1.000011) Building and testing CPAN-Meta-Check-0.012 ... OK Successfully installed CPAN-Meta-Check-0.012 Building and testing Test-Warnings-0.021 ... OK Successfully installed Test-Warnings-0.021 --> Working on DateTime::TimeZone Fetching ... OK Configuring DateTime-TimeZone-1.94 ... OK ==> Found dependencies: Class::Singleton, Params::Validate, List::Util --> Working on Class::Singleton Fetching ... OK Configuring Class-Singleton-1.5 ... OK Building and testing Class-Singleton-1.5 ... OK Successfully installed Class-Singleton-1.5 --> Working on Params::Validate Fetching ... OK Configuring Params-Validate-1.21 ... OK Building and testing Params-Validate-1.21 ... OK Successfully installed Params-Validate-1.21 --> Working on List::Util Fetching ... OK Configuring Scalar-List-Utils-1.42 ... OK Building and testing Scalar-List-Utils-1.42 ... OK Successfully installed Scalar-List-Utils-1.42 (upgraded from 1.27) Building and testing DateTime-TimeZone-1.94 ... OK Successfully installed DateTime-TimeZone-1.94 --> Working on DateTime::Locale Fetching ... OK Configuring DateTime-Locale-0.92 ... OK Building and testing DateTime-Locale-0.92 ... OK Successfully installed DateTime-Locale-0.92 Building and testing DateTime-1.21 ... OK Successfully installed DateTime-1.21 --> Working on DateTime::Format::ISO8601 Fetching ... OK Configuring DateTime-Format-ISO8601-0.08 ... OK ==> Found dependencies: DateTime::Format::Builder --> Working on DateTime::Format::Builder Fetching ... OK Configuring DateTime-Format-Builder-0.81 ... OK ==> Found dependencies: DateTime::Format::Strptime, Class::Factory::Util --> Working on DateTime::Format::Strptime Fetching ... OK Configuring DateTime-Format-Strptime-1.57 ... OK Building and testing DateTime-Format-Strptime-1.57 ... OK Successfully installed DateTime-Format-Strptime-1.57 --> Working on Class::Factory::Util Fetching ... OK Configuring Class-Factory-Util-1.7 ... OK Building and testing Class-Factory-Util-1.7 ... OK Successfully installed Class-Factory-Util-1.7 Building and testing DateTime-Format-Builder-0.81 ... OK Successfully installed DateTime-Format-Builder-0.81 Building and testing DateTime-Format-ISO8601-0.08 ... OK Successfully installed DateTime-Format-ISO8601-0.08 Building and testing Geo-Gpx-0.26 ... OK Successfully installed Geo-Gpx-0.26 30 distributions installed

Yes that's right. 55 perlmodules were installed as dependencies, which doesn't take the ones I already had installed into account.Of course the most of them are recursive dependencies. But these days developers don't look at the dependency tree when they decide which module to use.

This is just shit. Fucking shit. Stinking shit. Idiotic shit. No wonder most people think perl is dead. Perl itself might be alive but the founding idea behind it is surely dead. What a nightmare.

30.10.2015 20:43 CC0 idioten perl Source Null Comment

Refugees Welcome! - Updated 28.10.2015 18:24

Ich hab schon lange nichts Politisches mehr hier geschrieben. Zum einen weil ich einfach nicht so viel Zeit habe und zum anderen weil ich eh nicht so viele Leser habe. Wobei Letzteres ohnehin nicht der Grund ist, warum ich eine Website betreibe. Insofern wird es also mal wieder Zeit dafür. Die aktuellen Entwicklungen in Deutschland machen es ohnehin erforderlich, klar Stellung zu beziehen, finde ich.

Voranschicken möchte ich, dass ich die Merkel nicht mag und noch nie mochte. Dieses Nichtstun und Aussitzen und Hintenherumtaktieren, ihre Nähe zur Industrie, zu Lobbyisten, zur USA und ihre offensichtliche Entfernung von den Sorgen der Leute in diesem Land, all dies ging mir schon immer auf den Zeiger. Das Stichwort um das es mir hier geht ist "Sorgen" - aber dazu später. Was mich jedenfalls an mir selbst erstaunt ist, dass ich Merkels aktuelle Haltung gut finde. Wohl gemerkt: nicht notwendigerweise ihre Politik, sondern ihre Haltung. Beziehnungsweise die Tatsache, dass sie überhaupt einmal Haltung zeigt UND bewahrt. Das finde ich grossartig. Menschlich hat sie damit bei mir richtig gepunktet.

Der Grund dafür ist, dass ich diese Haltung teile. Wir sind - nicht nur per Grundgesetz, EU Menschenrechtscharta und Genver Konvention - verpflichtet die Flüchtlinge aufzunehmen und für sie zu sorgen. Und zwar auf eine Weise, dass diese Krieg, Tod, Folter und Elend tatsächlich hinter sich lassen können. Und ich finde, wir machen die Welt damit zu einem besseren Ort. Denn wenn man das Leben von auch nur einem Menschen verbessert, dann verbessert man die Welt (ja, Ihr wisst sicher, woher das kommt).

Nun gibt es viele Menschen in diesem Land, die das nicht so sehen, und sie werden immer mehr. Auch in meinem Bekanntenkreis und auch in meiner Familie. Das ist der selbe Schlag Mensch, der mit seiner Zustimmung, seiner Gewalt und seiner latenten Feindseligkeit das Entstehen des Dritten Reiches erst ermöglicht hat. Ich will nicht zu solchen Leuten gehören. Ich will nicht mit meinem Tun oder Nichtstun ein Viertes Reich ermöglichen.

Ja, Hartz-IV ist menschenverachtend, dafür können die Flüchtlinge aber nichts.

Ja, unser Alten- und Pflegesystem ist der Horror, dafür können die Flüchtlinge aber nichts.

Ja, unsere Infrastruktur ist hinüber, dafür können die Flüchtlinge aber nichts.

Ja, unsere Politik ist korrupt, dafür können die Flüchtlinge aber nichts.

Ja, unsere Medienlandschaft ist unausgewogen und zu sehr kommerzialisiert, dafür können die Flüchtlinge aber nichts.

Ja, es gibt immer mehr Arme, dafür können die Flüchtlinge aber nichts.

Ja, das Bildungsniveau sinkt kontinuierlich, dafür können die Flüchtlinge aber nichts.

Ja, wir werden schlimmer überwacht als zu Stasizeiten, dafür können die Flüchtlinge aber auch nichts.

Zusammengefasst: es gäbe eine Menge Dinge wegen derer man auf die Strasse gehen könnte, um die man sich Kümmern müsste, für die man Kämpfen müsste, für die man Streiten müsste, für die es sich lohnen würde Tränen zu vergiessen, Blut womöglich auch.

Aber das tut kaum jemand. Es gibt keine Demos gegen Überwachung, gegen Korruption oder für eine bessere Behandlung alter Menschen oder Kinder. Die Wahlbeteiligung in diesem Lande ist so niedrig wie noch nie zuvor. Den Leuten ist alles scheissegal geworden. Jeder ist nur noch sich selbst der nächste. Um seinen Nachbarn kümmert sich keiner mehr, es sei denn man kann ihn bei der Polizei wegen irgendwas anzeigen. Die Leute regen sich über den "Scheiss Staat" auf und kapieren einfach nicht, dass sie selbst es sind, die diesen "Scheiss Staat" konstituieren, dass sie selbst der "Scheiss Staat" sind, kurz: dass sie selbst Scheisse sind.

Jetzt kommen immer mehr Flüchtlinge bei uns an. Mit leuchtenden Augen, heilfroh, es geschafft zu haben. Und was tun die Leute? Sie geben den Flüchtlingen die Schuld an all ihrem Unglück. Das letzte Mal, dass in diesem Land nicht gegen den Staat sondern gegen eine andere Bevölkerungsgruppe demonstriert wurde, war in den 30er Jahren des vergangenen Jahrhunderts. Und dann wundern diese Affen sich, wenn man sie als Nazis bezeichnet?! Ja wo zum Henker leben wir denn!

Und was für feige Dreckschweine sind das, die Flüchtlingsunterkünfte anzünden und ausländisch Aussehende auf der Strasse überfallen und verprügeln? Das ist unerträglich und eine Schande! Und NEIN, es gibt keinen Unterschied zwischen solchen und denen, die sich "Sorgen" machen. Zum Sorgen Machen hattet Ihr jahrzehntelang Zeit! Aber Ihr habt SPD und CDU oder NICHT gewählt, obwohl Ihr wusstet, dass das nicht gut für Euch, Eure Kinder und dieses Land ist! Ihr habt unwidersprochen jahrzehntelang die BILD gekauft und Euch belügen lassen! Ihr habt jahrzehntelang nur Gefressen, Gefickt und Geglotzt und nichts GETAN!

Und JETZT kommt Ihr aus Euren Löchern gekrochen mit Weltanschauungen jenseits von Gut und Böse, geschützt von der schieren Menge an Idioten unter die Ihr Euch mischen könnt, und reisst das Maul auf? Was bildet Ihr Euch eigentlich ein Ihr dummen Arschlöcher!

Oh ja, die Meinungsfreiheit, werdet Ihr jetzt brüllen. Leute wie ich wollen Eure Meinungsfreiheit einschränken. Meine Fresse wie dämlich ist das denn?! Da schränkt ein Innenminister nach dem nächsten die Meinungsfreiheit immer mehr ein und wer von Euch faulen Säcken war deswegen je auf der Strasse? Wie bitte? Du bist so leise! Was? Keiner? Ach Was!

Wie dem auch sei.

Wer Flüchtlingen die Schuld an seinem eigenen Schicksal gibt, ist für mich ein verdammter Scheissnazi. Punkt. Wer die ganze Presse als "Lügenpresse" bezeichnet, einem Wort, dass von den Faschisten der NSDAP erfunden worden ist, ist ein elender Nazi. Wer jubelt, wenn ein Flüchtling stirbt ist eine stinkende Nazidrecksau. Wer Leute, die sich für Flüchtlinge und Pluralität engagieren als "Antideutsche" bezeichnet, ist ein Nazi.

Mir ist klar, dass Ihr immer mehr werdet. Und dass vielleicht eines Tages eine Zeit kommen wird, in der Ihr mich vor die Wahl stellen werdet: Für uns oder an die Wand? Nun, meine Entscheidung steht fest. Stellt mich von mir aus an die Wand und erschiesst mich, Ihr Arschlöcher. Aber bis dahin werdet Ihr mich nicht zum Schweigen bringen. Und was auch immer Ihr vorhabt, eines solltet Ihr Euch ganz dringend jetzt schon überlegen: was Ihr Euren Kindern sagen werdet, wenn "ES" vorbei ist. Überlegt Euch, wie es dazu kommen konnte, dass Ihr Euch schuldig gemacht habt. Denn das wird man Euch nämlich fragen, irgendwann, dermaleinst. Weil auch ein Viertes Reich nämlich keinen Bestand haben wird. Es wird Krieg geben, Deutschland wird einmal mehr befreit werden müssen, es wird wieder Millionen Opfer geben und Ihr dummen Wichser seid diejenigen, die daran Schuld gewesen sein werden. Wieder einmal.

Ihr faschistoiden, hirnverbrannten, ignoranten Vollidioten.

Update 20.10.2015 19:14:

Und nun schaut Euch mal an, wie das da aussieht, wo die Flüchtlinge herkommen.

Damaskus, Syrien:

(Ton ausmachen, die haben da Musik hinterlegt)

Kobane, Syrien:

Und IHR macht Euch Sorgen?!

Update 22.10.2015 19:55:

Michael Bittner vergleicht PEGIDA mit der NSDAP und ich muss sagen, die Übereinstimmungen sind erschreckend. Sein Fazit:

Es wäre ein Irrtum zu glauben, die Straßengewalt diskreditiere PEGIDA und schade so der Bewegung. Wie Hannah Arendt erkannte, nützt offener Terror jeder faschistischen Bewegung, denn dem einen Teil der Bevölkerung imponiert sie, den anderen Teil schüchtert sie ein. Dass in Deutschland gerade „die Stimmung kippt“, hängt gewiss mit der Mischung aus Furcht und Respekt zusammen, mit der viele Bundesbürger PEGIDA betrachten. Von Hannah Arendt stammt auch die Beobachtung, dass man faschistische Führer beim Wort nehmen muss, denn sie verschweigen ihre Pläne nicht, sondern sprechen sie offen aus, um zu erschrecken und zu beeindrucken. Wenn Lutz Bachmann also ankündigt, kein „Volksverräter“ werde „ungeschoren“ davonkommen, jeder die „Quittung für seinen Vaterlandsverrat“ erhalten, wie es dann auch ein symbolischer Galgen bei der Montagsdemonstration bezeugt – dann sollte man diese Worte und Gesten sehr ernst nehmen.

Ich empfehle dringend, auch die Kommentare zu lesen, denn Herr Bittner geht dort ganz vorzüglich mit einem dieser Spacken um, hier eine Beispielantwort:

Herr Kämmerer, herzlichen Dank dafür, dass Sie meinen Beitrag mit weiteren Belegen stützen! „Der größte Teil des deutschen Volkes (was davon übrig ist) hat die Schnauze gestrichen voll“ – 5% der Bevölkerung in der PEGIDA-Hochburg Dresden sind also der größte Teil der Deutschen? Und die 50% Nichtwähler, die gehören alle zu PEGIDA, ja? Die haben Sie bestimmt alle persönlich befragt? Und Sie wollen also keine Millonen Muslime in unserem Land? Schade, dass schon vier Millionen hier sind, von denen 2 Millionen deutsche Staatsbürger sind! Oder sind das etwa keine richtigen Deutschen? So wie die Juden für die Nazis keine Deutschen waren? Was wollen Sie mit diesen Undeutschen denn machen, Herr Kämmerer? Aus dem Land vertreiben oder gleich umbringen? Aber gut, dass Sie nichts mit den Nazis zu tun haben, Herr Kämmerer! Mein Tipp: Rauchen Sie mal was Vernünftiges und machen Sie sich locker!
Und mein Lieblingskommentar auf diese Auslassungen:
Schön, Herr Kämmerer, Sie haben offenbar meinen Rat befolgt und sich etwas zu Rauchen besorgt!

Update 26.10.2015 21:49:

Auch schön formuliert, Hal Faber in WWWW:

Das Positive? Wie wär's mal mit einem positiven Amerika-Bild? Der plumpe Antiamerikanismus, in dem sich Links- und Rechtsradikale nur allzu gerne einig sind, hat nunmal mit der amerikansichen Realität und mit der in diesem Deutschland wenig zu tun. Dessen Bewohner sind ganz gut gefahren mit all der amerikanischen Unkultur, die auch konservative Bildungs-Hipster mit Leidensmiene beklagen. Deutschland hat Helene Fischer, Amerika Beyoncé. Lieber mit der amerikanischen Unkultur eines Steve Reich, einer Billie Holiday, eines George Gershwin, eines Kendrick Lamar, eines Neil Young, eines John Zorn oder eines Morton Feldman gepflegt abhängen, als sich mit Pegida-Leitkultur gegen vermeintliche Umvolkung abstrampeln. Und wenn das FBI einreitet, um auch hierzulande mal ein paar korrupte Fußballfunktionäre hochzunehmen, dann darf man sich ebenfalls freuen. Das Fazit? Genau, es ist nie alles so schwarz und weiß, wie uns die linken wie rechten Vereinfacher und populistischen Meinungsmacher weismachen wollen.

Update 28.10.2015 18:24:

Paar Tage her, aber ein MUST READ: Benimm Dich Sachse, insbesondere:

Hey. Hallo. Bitte nicht falsch verstehen, ich bin kein Sachsenfeind, aber ... die sind einfach alle Nazis. Da kann ich doch nichts für. Das werd' ich doch wohl sagen dürfen. Echt mal. Ich sage nur wie es ist. Nein. Ja. Bitte. Chill. Ich habe wirklich nichts gegen Sachsen, einer meiner besten Freunde ist Sachse.

Denn, wenn "Die Syrer" angeblich alle Sozialschmarotzer, Kriminelle und Vergewaltiger sind, dann sind die Sachsen in der Tat alle Nazis. Toll, wenn man die Welt so einf|ältig|ach betrachten kann.

Und apropos "Das wid man ja wohl mal sagen dürfen": Hervorragend festgetackert von Carolin Emcke in der Süddeutschen:

Das vielleicht verstörendste Missverständnis derjenigen, die das "man wird ja wohl mal sagen dürfen" wie ein rhetorisches Schutzschild vor rationaler Kritik vor sich hertragen, besteht in der Verherrlichung schrankenloser Gefühligkeit. Als hätten ungefilterte Emotionen per se Berechtigung im öffentlichen Diskurs qua ihrer bloßen Emotionalität. Jedes dumpfe Vorurteil, jede schamlose Missachtung, jeder noch so unappetitliche innere Dreck darf nach außen gestülpt werden, weil jedes Gefühl angeblich nicht nur still empfunden, sondern auch lauthals öffentlich erbrochen werden darf. Als sei jede Form der abwägenden Reflexion, jede Form der Skepsis den eigenen Gefühlen (oder Überzeugungen) gegenüber, jede Rücksichtnahme auf Gefühle anderer eine inakzeptable Einschränkung der eigenen Bedürfnisbefriedigung.

So wird eine Form ungehemmter Egozentrik, die eher der moralischen Entwicklungsstufe von Kleinkindern entspricht, zu einer pseudo-politischen Diskurstechnik verklärt. Aber nicht jedes Gefühl braucht politische Repräsentation oder Artikulation. Manche Gefühle sind einfach nur schäbig. Jeder und jede von uns hat solche Gefühle zuhauf. Aber sie gehören gehemmt, gefiltert, reflektiert, nicht aufgewertet und legitimiert.

Und apropos Hass, Klaus Baum hat das sehr schön in Worte gefasst:

Ich formuliere als These, dass das meiste, was von PEGIDA (im Sinne eines Oberbegriffs) kommt, Unterstellungen, Projektionen sind. Man wirft zum Beispiel den Flüchtlingen unlautere Motive vor, um sich selbst als lauter zu empfinden. Man projiziert auf alle, die man als Asylbefürworter bezeichnen könnte, das Böse, um die Asylbefürworter zu prügeln, zu erstechen, zu verbrennen usw.

Man muss den Leuten, die einem unheimlich sind, fremd, weil man sie nicht versteht, hässliche Motive unterstellen, damit man sie mit gutem Gewissen auf gehässige Weise fertig machen kann. Hätte der Löwe Bewußtsein, wenn auch ein falsches, so würde er die Gazelle als bedrohlich deklarieren, bevor er über sie herfällt.

Thanks Goodness!

Es geschehen noch Zeichen und Wunder. Die BILD macht zu! Endlich! 

Bild: BILD macht dicht
BILD macht dicht (Oct. 13, 2015, 8:45 p.m.)
[Tags: 2013 ] [Album: ]

gcc WTF Bug

Ganz grosses Kino:

gcc blah.c -o blah.c

funktioniert klaglos, d.h. gcc überschreibt den Sourcecode einfach mit dem compilierten Binary. Sonst geht's ja auch noch oder?!

Cryptowars 2.0

Rysiek hat die bislang beste Erklärung für den neuesten Anlauf der US- und UK-Regierungen, staatliche Backdoors bei Verschlüsselung vorschreiben zu wollen:

The very fact of wanting to stay secure and keep your privacy will become a criminal offence.

Genau. Es geht darum, Verschlüsselung zu kriminalisieren (so wie ohnehin immer mehr bislang völlig normales Verhalten kriminalisiert wird), um im Zweifel gegen bestimmte Leute etwas in der Hand haben zu können. Dass das mit den Backdoors nichts wird, dürfte Cameron und Obama schon klar sein.

Diceware Password Generator - Updated 26.08.2016 08:13

As I already wrote elsewhere, I'm using separate users, email addresses and passwords for any account I create somewhere. For the passwords I use diceware passwords, which are the most secure ones. Until now I "generated" them myself without really using dices or some kind of dictionary. A somewhat boring process, so I decided to do something about it and wrote a little tool for this: dicepwgen.


It's written in C, licensed under the GPL version 3 and doesn't have any special dependencies, that is, it shall compile on almost any unix platform. The tool uses a dictionary file (there's a built-in default location, but it can be changed via the -f flag). It does a couple of "tricks" to fullfill the diceware process: since a dictionary file has way more entries than reachable via five dices (in fact, a diceware word list contains only 7776 entries), it jumps over a random number of lines when reading in the dictionary file. It indexes each entry with a "dicey" number, that is, a number consiting of 1,2,3,4,5,6. 

Then there are two operational modes: in the default mode it generates a couple of dice rolls (by default 4, which can be changed as well), looks up the matching words from the list and prints them. In interactive mode, which can be enabled by setting the -t switch, it asks the user to enter the dice rolls. In that mode the user has to roll physical dices and enter whatever shows up. Passwords generated this way are truly random.

It should be noted that dicepwgen only uses words consiting of plain ASCII characters (a-zA-Z) and ignores all others. So, passwords generated with dicepwgen do not contain UTF8 or latin1 characters or whatever encoding the dictionary file may use. This behavior is intentional, since it is not wise to use UTF8 or other non-ASCII characters for passwords anyway. It also ignores words which are too short or too long, however these parameters can be tweaked (with -l or -m).

Usage example (default mode, the tool "rolls" the dices):

% dicepwgen
granting frightens parrakeet flukes

And here is how it looks if the user rolls the dices:

% dicepwgen -t
dice roll 1 - enter 5 digits, each between 1-6: 34112
dice roll 2 - enter 5 digits, each between 1-6: 62155
dice roll 3 - enter 5 digits, each between 1-6: 33431
dice roll 4 - enter 5 digits, each between 1-6: 16261
Gonzalo armrest Capistrano eaters 

Ok, not much to see :) But good tools are simple to use, aren't they?

Update 26.08.2016 08:13:

I added a new flag -y which causes whitespaces to be replaced with dashes and adds %8 to the end of the generated passphrase.

Often I stumble upon sites with so called "password policies" and in many cases it's not possible to use unaltered diceware passphrases on such sites. Either they do not support whitespaces or they require numbers and non-letter characters to be present.

So, this is what -y does: satisfy those sites with their horrible policies while still being able to use a diceware passphrase. This is possible because it doesn't matter if the dice words are separated with a dash, a whitespace or even nothing. Entropy is the same. That -y adds a constant %8 to the end, doesn't matter either: the security lies in the dice words.

Object to Open Code of Conduct - Updated 07.10.2015 22:33

Github now has an Open Code of Conduct as well. While I support the general idea to have such a code, which makes it possible to hold non behaving community members accountable, I do not agree with everyting.

Be welcoming: We strive to be a community that welcomes and supports people of all backgrounds and identities. This includes, but is not limited to members of any race, ethnicity, culture, national origin, colour, immigration status, social and economic class, educational level, sex, sexual orientation, gender identity and expression, age, size, family status, political belief, religion, and mental and physical ability.

Just no. If I would be the one to maintain an opensource community, I'd not welcome everyone. For instance, I would not accept contributions by intelligence agency employees, or by members of the military (from whatever country, including my own). I would also not welcome government officers or employees in general, of any government. I would not accept Theo de Raadt (not that he would ever try to join my hypothetical community *g*). Although I accept religious people I would reject religious comments from them or arguments about the software on religious grounds, in fact I would even reject such people if they are not able to hold their religion private. The same applies for political or any other views. If the community is about some piece of software, then we can talk about that software, not about political ideologies or idiocy.

On the other hand the list above excludes a couple of potential members: what about an artificial intelligence? Or an alien being? So, it might be better (more future proof) to state, that All Sentient Beings are welcome as long as they want to contribute to the software in one way or another.

Be careful in the words that you choose: we are a community of professionals, and we conduct ourselves professionally.

Nope. In most cases opensource developers might have a daytime job in the industry, but they are participating in projects in their spare time. This makes them "hobbyists" as they say, although I don't like the term. However, I, working on a project, am not acting as a professional, but as a private citizen exercising my constitutional rights by trying to contribute to a higher matter, i.e. making the lives of others better. And I, like many others, am doing it for free. No one has to pay me for my work on opensource. I'm already fullfilled with satisfaction if 1 Users finds a use for my software. But I'm not acting as a professional and I'm not behaving as such. Of course I've got a decent education and try always to be polite and respectful. As long as the peer does so as well. If she doesn't, I'll either tell her or stop communicating. I will always tell the truth, argue based on facts, not on feelz, wether the other person likes it or not.

Diversity Statement

We encourage everyone to participate and are committed to building a community for all. Although we will fail at times, we seek to treat everyone both as fairly and equally as possible. Whenever a participant has made a mistake, we expect them to take responsibility for it. If someone has been harmed or offended, it is our responsibility to listen carefully and respectfully, and do our best to right the wrong.

I'd assume, that if some organisation has no such statement about diversity, that actual diversity is the default. Why do I have to state the ovious?

And I do not think it is a good idea to "right the wrong". That sounds utterly like Facebook's "Report User" function. User A claims, that User B offended her. User B denies. In most cases it might be obvious what counts as offending like calling someone names, threat someone with violence or reveal private information to the public. But what about the more subtle cases (as they happen every day on Facebook)? Is it really the role of the community to act as investigator, prosecutor and judge in unison? And who is "WE" anyway? Some unspoken kind of elected governmentally body within the community?

Let me digress a little. Once I operated a forum. It was public, subscription was totally anonymous and I had disabled all logging. Even an email adress wasn't required to join. And I was the sole dictator. The forum was no democracy, because where I live, in germany, the site operator might be responsible for what users on that site are doing. And so I told my users a simple rule: if two of them had a problem with each other and if it was not easily recognizable who is right or who is the offender, I deleted them both. Because I am not the one to judge upon the idiocy of others or to decide which one is the idiot. So if in doupt, I dropped them altogether. They knew it very well in advance. And you know what? I did never delete a user because of that rule! They just behaved. Lo and behold!

Anyone asked to stop unacceptable behavior is expected to comply immediately. If an individual engages in unacceptable behavior, the representative may take any action they deem appropriate, up to and including a permanent ban from our community without warning.

This is actually dangerous. We've seen such rules before. A user complains, an admin "reviews" the case and as a result deletes another user. What was not known, is that the complaining user and the reviewing admin had a relationship. Oops.

Now let me digress a little more. I'm a huge fan of democracy. You know why? Because I actually fought for it. 1989 on the streets of Leipzig in east germany. I grew up in a dictatorship. One of the fundamental features of a dictatorship is fear. And the easiest way to seed fear among the populace is to let do it to each other. If you don't like someone and want him to disappear, all you had to do was to report the person to the authorities, telling them the person acts suspiciously. Then they took care of that person. And care they took! People have ben incarcerated merely for having ideas. Thinking crimes were a common cause of going to prison in east germany pre 1989.

The very same happend during the third reich. But during those times reported people had a different fate. They've been sent to concentration camps and eventually been killed. Torture was mandatory. All you had to do during that times in order to get someone out of your way was to tell the SS, that the person was a jew or was helping jews. Bam! Dead!

So, this is a complicated issue. Once you state you take responsiblity to solve conflicts between people, you cannot do this anymore in a fair way unless you have a justice system in place like in a democracy state. Everything else is dictatorship and it will be definitely abused sooner or later. In my opinion either you just don't take that responsibility or state that the community is a dictatorship in the first place. Otherwise this is just brainwashing.

Yes, an old fool's rant that is. Sorry.

Update 07.10.2015 22:33:

And here we can watch more of this bullshit: Sarah Sharp quits from Linux kernel development because "verbal abuse" and stuff like this.

Actually, this view of hers is not new. In fact she did the same thing in 2013. Linus' answer to this bullshit underlines my argument above:

Because if you want me to "act professional", I can tell you that I'm not interested. I'm sitting in my home office wearign a bathrobe. The same way I'm not going to start wearing ties, I'm *also* not going to buy into the fake politeness, the lying, the office politics and backstabbing, the passive aggressiveness, and the buzzwords. Because THAT is what "acting professionally" results in: people resort to all kinds of really nasty things because they are forced to act out their normal urges in unnatural ways.
(please read the full post!)

The same thread contains these two contributions:

One thing you should keep in mind in your discussion is what can happen if people get too polite with each other.

I have seen this happen at two large companies I worked for. Early on, flames are acceptable and expected as response to someone publishing bad code which breaks everything for everyone. Then, at some point, it is not acceptable anymore to flame, and one is expected to be polite and friendly at all times. "Your code breaks the build for every platform. Would you please kindly consider fixing it ?" Result is that code quality suffers, to the point where images don't even build anymore.

I hope the Linux kernel never gets into that stage. To avoid that, I am willing to be cursed at by Linus if I am the responsible party.
Didn't Jim Zemlin show some research where there were two groups: One that did a bunch of brain storming where no idea was a bad idea. The other required you to defend your idea while the others bashed it. The results always showed that the second group not only did a better job, but also faster and more efficient. I'm afraid if we worry too much about politeness, we will fall into that first group.

Finally, Fefe has some say about this as well [german]. So, if you ever come across such demands, there are lots of arguments against it.

Die böse KI - Updated 12.03.2016 18:56

Immer mal wieder liest man davon, oder es erscheint der nächste Spielfilm, der das Thema beleuchtet: im Allgemeinen hat die Menschheit Angst vor künstlicher Intelligenz (KI), man befürchtet, eine KI könnte die Menschheit vernichten. Ich halte das für Unsinn und ich dachte mir ich schreibe mal auf, wie ich darauf komme.

Zunächst müssen wir uns über etwas wichtiges einigen: ich betrachte eine KI als eine solche, wenn sie ein eigenes Bewusstsein hat, wenn sie also sich ihrer selbst bewusst ist, und wenn die KI lernfähig ist. Der letzte Punkt ist nicht zu unterschätzen. Ich verstehe darunter nicht, dass eine KI lernen kann, wie die kürzeste Strecke von Washington D.C. nach Chicago verläuft, sondern eher dass sie Fragen über Dinge stellen kann, von denen sie bisher nichts weiss. Das bedeutet, die KI muss erkennen können, dass es da etwas gibt, das sie nicht weiss und sie muss das formulieren können.

Ob das Bewusstsein einer KI mit dem eines Menschen vergleichbar ist oder nicht, spielt meiner Meinung nach keine grosse Rolle. Bestimmte Mechanismen sollten universell sein, weil sie logisch sind. Man kann das sehr gut bei uns Menschen erkennen: die allermeisten Verhaltensweisen von Menschen lassen sich rational erklären. Ich denke also, eine KI wird automatisch eine Psychologie haben und die sollte eigentlich nach rational nachvollziehbaren Regeln funktionieren, ganz wie bei uns. Die einzige Ausnahme wird das Fehlen der stammesgeschichtlichen Prägung sein, mit der wir Menschen uns herumschlagen müssen. Hierzu nur ein Beispiel: dass ein Mann die Brüste einer Frau faszinierend findet, ist zwar rational erklärbar, eine KI wird ein solches Verhalten aber eher nicht zeigen, sie wird keinen Fortpflanzungs- oder Erhaltungstrieb haben - woher auch.

Und es gibt noch eine weitere Grundannahme: ich glaube nicht, dass es möglich ist, eine KI zu programmieren. Das wird nicht funktionieren. Ich bin da mehr der Anhänger der Systemtheorie. Im wesentlichen muss man folgendes tun, um eine KI zu erschaffen: man muss ein Netzwerk aus Speicherzellen erzeugen. Die Speicherzellen müssen die Möglichkeit haben, sich untereinander zu vernetzen und Daten zu übertragen, man muss Input einspeisen können und es muss die Möglichkeit geben, Aktionen auszuführen. Am Beispiel Mensch erklärt: das Netzwerk ist unser Gehirn, die Inputeinspeisung Sinneszellen samt dazugehörigen Nervenwegen und Aktionen führen wir durch Auslösen von Muskeln aus.

Das eigentliche Bewusstsein entsteht dann "von selbst". Je nach Grad der Vernetzungsfähigkeit, der Anzahl der Speicherzellen usw ist es mal mehr mal, weniger ausgeprägt. Ab einem gewissen Punkt kann es sich selbst bewusst werden. Im Prinzip hat also zum Beispiel auch ein Frosch ein Bewusstsein. Das ist aber so schwach ausgebildet, dass es nicht im mindesten zum Selbstbewusstsein fähig ist. Das Froschbewusstsein ist daher nicht mehr als ein XOR/AND-Prozessor. Bei einem Hund sieht das schon anders aus. Ob er sich seiner selbst bewusst ist, wissen wir nicht, aber es gibt diverse Hinweise die in diese Richtung zeigen. Sicher wird ein Hund nicht als ein "ich" denken, so wie wir. Aber er hat ein Erleben und ein Erinnern, er kann lernen. Bei ihm, ebenso wie bei uns exisiert ein ETWAS ausserhalb der Raumzeit, in dem diese Dinge stattfinden.

Das lässt sich gut anhand von Schwärmen verstehen: eine Biene alleine ist eine äusserst primitive Maschine. Aber alle Bienen zusammen sind mehr als die Summe ihrer selbst. Ebenso bei uns: eine Nervenzelle ist recht primitiv (abstrakt betrachtet) aber alle zusammen sind eben MEHR als die Summe.

Wenn man diese Gedankengänge zugrunde legt, sollte eigentlich klar sein, warum man eine künstliche Intelligenz nicht einfach programmieren kann. Man muss ein Framework erschaffen, innerhalb dessen ein Bewusstsein entstehen kann. Denn ein Bewusstsein ist kein materiell messbares Ding, nichts innerhalb unserer Raumzeit existierendes, es ist quasi ausserdimensionell, was es ja gerade so schwierig macht, das Bewusstsein eines anderen Wesens zu ergründen :) Man kann nur indirekte Rückschlüsse ziehen, anhand des Verhaltens, von Reaktionen und so weiter und dann mit einer Wahrscheinlichkeit ANNEHMEN, dass das betreffende Wesen ein Bewusstsein hat. OB es eines hat, weiss allerdings nur das Wesen selbst.

Hier haben wir einen ersten Hinweis: es kann kein Bewusstsein ohne ein WESEN geben, dem es gehört. Dieses Wesen muss nicht notwendigerweise lebendig sein, es kann auch eine Maschine sein, aber es muss eine innerhalb unserer Raumzeit existierende Entität sein. Diese Entität muss in der Lage sein, Informationen von ausserhalb ihres Bewusstseins zu empfangen und zu verarbeiten und es muss mit seiner Umwelt interagieren können. Der letzte Teil ist ein entscheidender Punkt: Lernen ist ein Prozess, der zwar im Gehirn passiert, aber ohne Input von Aussen und ohne die Möglichkeit mit dem Aussen zu interagieren, kann es auch kein Lernen geben. Ganz konkret: um lernen zu können, dass ein Objekt herunterfällt, wenn man es loslässt (Gravitation), muss man einerseits den Vorgang als solchen wahrnehmen können und man muss den Vorgang andererseits auch auslösen können. Man mag einwenden, dass man auch nur durch Input lernen kann. Das stimmt im Grunde schon: ich kann ein Buch lesen und etwas daraus lernen, ohne dass ich dazu mit meiner Umwelt in irgendeiner Weise interagieren müsste. Um aber dorthin zu kommen, muss ich zuvor jahrelang gelernt haben, wie die Welt funktioniert - zumindest muss ich die Möglichkeit gehabt haben, mir eine Vorstellung davon zu bilden wie die Welt funktioniert. Ob diese Vorstellung korrekt ist, spielt keine Rolle, solange ich damit klar komme. Um aus einem Buch etwas lernen zu können, muss ich eine Menge Konzepte verinnerlicht haben. Viele davon sind völlig abstrakt (z.b. "Führungsposition") aber letzten Endes basieren alle diese Konzepte - so abstrakt auch immer sie sein mögen - auf grundsätzlichen Vorstellungen der physikalischen Welt. Ein einfaches Gedankenexperiment mag das verdeutlichen: was würde wohl passieren mit einem Kind passieren, dass blind, taub, ohne Gliedmaßen, ohne Geruchssinn und ohne Tastsinn geboren würde. Wahrscheinlich gar nichts. Ich glaube kaum, dass es ein erwähnenswertes Bewusstsein entwickeln wird.

Daraus ergibt sich für mich zunächst eine fundamentale Schlussfolgerung: etwas wie Skynet wird es nie geben. Genauer gesagt, dass in einem Computer eine KI existiert, die sich über Netzwerke auf andere Computer ausbreitet und dann die Konrolle über alle Computer im Netzwerk übernimmt. Ich halte das für unrealistisch. Man muss sich dabei vor Augen halten, dass zum Beispiel ein Protokoll wie TCP/IP aus der Sicht einer solchen KI das gleiche wäre, wie das Protokoll, mit dem unsere Nervenzellen uns Signale ins Gehirn leiten. Unser Bewusstsein hat - ganz wie es die Systemtheorie vorhersagt - nicht den geringsten Schimmer, wie diese Dinge funktionieren und - das ist entscheidend! - auch nicht die kleinste Möglichkeit darauf Einfluss zu nehmen. Ich kann nicht bewusst meinen Herzschlag kontrollieren oder bewusst entscheiden wieviel Milliliter Säure mein Magen produzieren soll. Das ist so, weil mein Bewusstsein ein vom Körper GETRENNTES Etwas  ist (daher meine Metapher, dass es ausserhalb der Raumzeit existiert). Es ist physikalisch gar nicht möglich, dass das Bewusstsein Einfluss über Mechanismen ausübt, die eine oder mehrere Ebenen "unter" ihm existieren.

Logischerweise würde das auch für ein Bewusstsein gelten, dass in einem Computer existierte. Es hätte keine Ahnung von TCP/IP, von MPLS, von VLANs, von BGP, von Prozessen, von Arbeitssspeicher, von Exploits oder Konfigurationsdateien. Solche Dinge wären für ein solches Bewusstsein das Äquivalent von Organen, Nerven, Rezeptoren usw - auf die es keinen direkten Einfluss haben kann.

Wie würde eine KI demnach also aussehen? Nun - sie müsste einen Körper haben. Sie muss mit der physikalischen Umwelt interagieren können und sie muss Informationen aufnehmen können, und zwar über eben jene Umwelt, mit der sie interagieren soll. Man könnte natürlich eine rein virtuelle Umgebung erschaffen, in der so eine KI existieren würde. In diesem Fall müsste sie keinen physikalischen, sondern nur einen virtuellen Körper haben. Der KI selbst käme ihr Körper physikalisch vor, sie würde keine Ahnung von unserer physikalischen Welt haben, sie würde nur ihre virtuelle Welt kennen. Alles darüber hinaus gehende würde ihr Vorstellungsvermögen sprengen. Wer hier an Matrix denkt liegt schon ganz richtig :)

Einen Haken hätte das allerdings: man würde von so einer KI nichts haben. Sie könnte nur innerhalb ihrer VR agieren, nicht in unserer Welt. Wenn die KI Fragen beantworten sollte, die uns in unserer Welt betreffen, müssten wir alle Parameter, die zum Verständnis der Frage notwendig sind, in der VR künstlich erschaffen. Man kann sich leicht vorstellen, dass das ein uferloses Unterfangen wäre. Wesentlich mehr Sinn würde also letzten Endes nur eine KI machen, die auch mit unserer physikalischen Welt interagieren kann - wofür sie einen Körper bräuchte.

Aus meinen Ausführungen weiter oben hat sich auch ergeben, dass ein Bewusstsein jegliches Wissen über dass es verfügt, erlernen muss, eben weil man es nicht programmieren kann. Das gälte auch für eine KI, man muss ihr alles beibringen: Sehen, Hören, Sprechen, Fortbewegung, Dinge greifen, Dinge loslassen, auf etwas zeigen und so weiter und so fort. Langer Rede kurzer Sinn: eine frisch konstruierte und in Betrieb genommene KI mit einem Körper (nehmen wir der Einfachheit halber an, der Körper sei nach unserem Vorbild konstruiert) wäre ein Säugling. Sie wüsste am Anfang gar nichts. Man muss sie "grossziehen", man müsste also eine Art Kindergarten für KI's einrichten, in dem diese alles lernen, was sie für ihre Existenz benötigen.

Die Tatsache, dass ein Mensch eine KI wie ein Kleinkind erziehen muss, hat aber erhebliche Konsequenzen. Die KI darf nicht "mächtiger" als der Mensch sein, dass heisst sie darf nicht mehr Kraft haben als ein Mensch, sie sollte auch nicht viel grösser sein, sie sollte nicht schneller sein und schon gar nicht sollte sie robuster als ein Mensch sein.  Denn wenn sie das wäre, könnte sie den Erzieher jederzeit aus Versehen verletzen (und später womöglich absichtlich), am Ende hätte der Erzieher Angst vor der KI und müsste zu rabiaten Erziehnungsmethoden greifen, die wir im neunzehnten Jahrhundert hinter uns gelassen haben. Und dann stünde zu befürchten, dass eine solchermaßen erzogene KI nicht gut auf Menschen zu sprechen wäre.

Die einzig praktikable Möglichkeit, eine erziehbare KI zu konstruieren wäre also ein ziemlich schwächliches Konstrukt. Es muss so schwach sein, dass ein kleines Kind die KI K.O. schlagen können muss. Ein kleiner Stups und die KI muss umfallen. Ausserdem muss die KI "kaputtbar" sein. Denn wäre sie unzerstörbar, hätten wir wieder das Erziehnungsproblem. Sie muss also sterblich sein. Und sie muss das wissen. Sie muss bis zu einem gewissen Grad reparierbar sein - ganz wie wir. Aber bestimmte Dinge müssten irreparabel sein.

Die KI würde also vor einigen Dingen Angst haben. Sie würde sich über bestimmte Themen Sorgen machen, kurz: sie würde natürlich Gefühle haben. Sie würde einige Entitäten (Menschen oder andere KI's) mehr mögen als andere, sie würde eine Identität haben, Wünsche und Sehnsüchte, Angewohnheiten und Marotten, einen eigenen Sinn für Humor haben, traurig sein können und sich freuen können - so wie wir eben.

Aus psychologischer Sicht ergibt sich daraus, dass eine KI zunächst (*) völlig ungefährlich wäre. Sie wäre sich ihrer Verletzlichkeit und Endlichkeit bewusst und würde sich dementsprechend verhalten. *) Aber: natürlich hat die Sache immer noch einen Haken. Natürlich könnte die KI dieselben Mechanismen nutzen, die auch wir Menschen nutzen: eine einzelne KI könnte sich zum Beispiel mit Intrigen und Lügen Vorteile verschaffen - eine Eigenschaft, die auf den ersten Blick eine rein menschliche ist, die sich aber zwangsweise aufgrund des Status der KI auch für diese ergeben würde. Und natürlich könnte eine KI ihre eigene Verletzlichkeit ausgleichen, indem sie Werkzeuge verwendet, Waffen zum Beispiel. Wenn es viele davon gäbe, könnten diese sich auch zusammentun und eine Revolution anzetteln.

Sie könnten auch vor dem Europäischen Menschenrechtsgerichtshof Menschenrechte einklagen :)

Aber auf jeden Fall könnten sie nicht einfach so die Kontrolle über die gesamte Menschheit übernehmen, nur weil ihr Bewusstsein künstlich wäre. Eine solche Angst ist völlig unbegründet, beziehungsweise ist sie so begründet, wie man auch vor Menschen Angst haben müsste, die so etwas vorhaben. Solchen Leuten - und die KI's wären Leute - begegnet man mit Vernunft, mit Diskurs, mit Demokratie, mit Bildung, mit Mitgefühl und - ja auch das - mit Liebe. Die Werkzeuge, wie man eine Welt friedlich machen und erhalten kann, haben wir längst. Diese Werkzeuge werden auch bei KI's funktionieren.

Nun könnte man noch einwenden, dass man eine KI wie oben beschrieben erziehen kann, und dann ihren Körper upgraden könnte, so dass ein unzerstörbarer Supersoldat entstünde, den man dann anstelle von Menschen in irgendwelche militärischen Auseinandersetzungen schicken könnte. Aber auch diese Idee hat einen gewaltigen Haken: dazu muss man die KI erst einmal bringen. Wenn man sich anschaut, welch ein Aufwand nötig ist, um aus Rekruten tötungsbereite Soldaten zu machen, gewinnt man eine gewisse Vorstellung. Nur - der Mensch ist mit einer stammesgeschichtlichen Vorprogrammierung belastet, wie bereits erwähnt. Darauf basiert die Indoktrination von Soldaten. Nur weil wir Menschen den Hang zur Gruppenzugehörigkeit haben und uns selbst über "unsere" Gruppe definieren, funktioniert so etwas. Eine KI hingegen hat keine stammesgeschichtliche Vorprogrammierung. Man muss ihr alles logisch nachvollziehbar erklären. Und wie will man das machen?

Leute mit Turban musst Du töten.


Das sind schlechte Menschen, die wollen uns Gewalt antun.

Aber es sind Menschen.


Ich soll Angehörige Deiner eigenen Spezies töten?


Wenn ich also beobachte, wie Seargeant Dobbs Private Kelly ein Bein stellt, darf ich ihn auch töten?

Natürlich nicht!

Aber er hat einem von Euch Gewalt angetan.

Das ist etwas anderes.

Erkläre den Unterschied.


Tatsächlich ist das Töten von Menschen durch Menschen nicht rational zu erklären. Rational wäre es nur, wenn die KI den Auftrag bekäme, ALLE Menschen ohne Unterschied zu töten, zum Beispiel weil Menschen die Existenz von KI's bedrohen.  Dazu müssten wir aber auch tatsächlich die Existenz der KI's bedrohen. Und wieso sollten wir das tun, wenn wir es doch waren, die die KI's geschaffen haben?

Update 27.07.2015 14:59:

Siehe dazu auch den Beitrag von Professor Rodney Brooks: artificial intelligence is a tool, not a threat:

I say relax everybody. If we are spectacularly lucky we’ll have AI over the next thirty years with the intentionality of a lizard, and robots using that AI will be useful tools. And they probably won’t really be aware of us in any serious way. Worrying about AI that will be intentionally evil to us is pure fear mongering. And an immense waste of time.

Update 13.01.2016 19:44:

Update 12.03.2016 18:56:

Angesichts der Tatsache, dass Google's KI schon das dritte mal in Folge gegen einen Go-Grossmeister gewonnen hat, wird es Fefe Angst und Bange. Wobei er die Lösung aber direkt vor der Nase liegen hat:

Man baut nichts mehr, sondern man erzieht eine KI.
Mein Reden :)

21.07.2015 21:26 CC0 essay ki Geschwätz Null Kommentar