Re: The Perl Jam 2 [32c3] ... for the LoLz

Netaniel Rubin continues his crusade to eradicate Perl from the planet, on 32C3 this time. I will not respond to the technical details, as others are already doing so.

During his talk Netaniel complains about the Perl Community, which he assumes is being represented by the people on, responding to his talk last year aggressively, personally and with trolling. Well, this comment will be personal as well and surely offending. 

Let's be clear first: the problems pointed out by Netaniel during his second talk are indeed real in a sense. But they are not new, nor are they perl specific. At least they are well known for years (see the gist linked above for more details). The problem I'm seeing with this talk is the tone.

You see, there's criticism and there's rants. Netaniel's talk is a rant. And it's not justified. Obviously he REALLY hates perl. He makes fun of it, he shouts at it, he even insults it. However, we're talking about a fucking programming language, not a human being, or an organisation or the like. This boy stands on the stage and behaves like a five year old shouting at his non-functioning Lego construction: "You Moron!".

My impression of this talk (and thus Netaniel) is worse than the last one. It's funny if you don't have a clue but insults the intelligence of the initiated.

Dear Netaniel: "Stop using Perl!" is a childish, ridiculous and unrealistic demand. And your "arguments" aren't getting the more valid the louder you shout them. Therefore, let me explain to you how the real world looks like:

There are lots of computers running these days (not counting PCs, notebooks, tablets or phones). The majority of them is not connected to the internet. These are headless servers running unattended most of the time (just to make sure you understand what I'm talking about since you're a windows user: headless in this context means "no GUI", just a console). Such systems are operated by system administrators, labeled as "DevOps" these days.

Administrators are responsible for lots of systems, hundreds or even thousands of servers. Many of such servers are legacy systems running legacy operating systems and legacy software. Sometimes it's not possible to update them, sometimes it's not allowed, sometimes there's no developer for the particular software running on it left in the company. So they keep running. And running, and running, and running.

Administrators are a lazy species. If they ever watch themselfes entering the same cascade of commands twice they put them into an shell alias. And if it grows so much that it doesn't fit into an alias, they put it into a shell function. Sometimes such a function grows and grows so much that it doesn't make any sense any more to maintain it as a shell function in .bashrc or something. So, the administrator puts the function into a script.

The script grows further and sometimes reaches a point where it is a pain in the ass to continue to develop it as a shell script. The administrator decides to go to the next level and rewrite the thing with something more powerful and flexible than a shell script. In essence he wants to convert the script from a beast into an elegant lady.

Now, Netaniel, remember what I told you earlier about legacy systems. You cannot install node.js on an AIX system of the past decade. You're not allowed to install Go on a mainframe. There's no modern ruby package for that ancient Sun machine. But there's Perl.

Let me repeat: but there's Perl!

Perl is part of the base installation of most operating systems of relevance (that is: not Windows, Netaniel, sorry) for decades. A well crafted perl script can be deployed over dozens of different platforms doing the same simple thing, stable, portable and maintainable. Sometimes Python can be used instead. If all servers have python. Sometimes even ruby might be used. But the more heterogeneous a network gets and the more legacy systems it contains the higher the probability that you will be stuck with Perl.

The reason is simple: Perl itself is a legacy system. It was born out of system administration, designed by system administrators just to make their live easier. Not necessarily yours, that is.

Of course, since its inception, people have done things with Perl beyond imagination. The even wrote CGI scripts, replaced them with application servers which they then replaced with content management systems. And all those dirty features built into Perl to make administrators happy are still there, waiting to be exploited by Kids like yourself.

That's the reason thousands of developers all over the world implemented better systems like Mojolicious, because we already know of those features. Your demo code will not work if you just put an "use strict" in there. And we urge people to do so since years after years. The fact that you don't seem to know it, shows how unfamiliar you are with perl. And the fact that you don't seem to know that flexibility with variables is not in any way specific to Perl, shows you never developed anything. Someone in the monk thread (linked above) from last year pointed out that he couldn't find anything you ever developed. This didn't change 2015: there's still nothing to find made by you. Even your Github account with which you responded to the gist post linked above is fresh and has not a single repository or contribution.

Let me say it bluntly: Don't diskuss battle tactics with us unless you bled with us! 

03.01.2016 13:26 CC0 en kritik opensource perl Source

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... 

11.11.2015 21:10 CC0 apple idioten Networking

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.

05.11.2015 20:04 CC0 fun Draussengewesen

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

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: ]

13.10.2015 20:43 CC0 freiheit fun Geschwätz

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?!

30.08.2015 17:23 CC0 opensource Unfassbar

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.

18.08.2015 22:48 CC0 crypto politik Gesellschaft

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.

03.08.2015 19:49 CC0 diceware opensource security Source

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.