Wo meine Shops enden

Vor einiger Zeit habe ich einen Artikel über Angela Merkel und Christian Wulff (Captain Deutschland, übernehmen Sie das Steuer) geschrieben. Dabei habe ich auch ein Bild von Captain Ruck Bodgers aka. “Captain Deutschland” gephotoshoppt.

Und wo hat man diese äußerst schlechte Bildbearbeitung gesehen? Im Forum von “Hero Zero” (eine Art Online-Spiel mit pseudo-Superhelden).

Und man muss ganz ehrlich sagen: Wer sowas vorschlägt, gehört gebannt. :D

Python pregenerates class properties

This article is a reference because this cost me about an hour to debug:

class test(object):
foo = []

a = test()
b = test()
a.foo.append("bar")
print b.foo
#['bar']

When you define the class (test, in this case), any class properties will be instanciated on class-definition and not on object instanciation. Therefore, when you create multiple copies of a class, they will have the same actual object as class properties. You should instanciate those attributes in the init-method.

For this reason, the following code will generate output, even though it looks like it probably shouldn’t, because not a single object was created:
def f():
print "foo"

class test(object):
foo = [f()]

This will obviously not concern you, if you are – as you should – using immutable objects.

Syntactical sugar in Python: map, filter, reduce vs. the python way

This article is going to try to shed some light on how to convert map, reduce and filter (often used with lambda expressions) in python into a syntax conforming to “the python way”. At the bottom you will find a download link to execute this stuff for yourself.

l = range(10)
print l
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

This is going to be the list (l) we’re working on.

What we’ll be looking at first, is iterating through this list and applying a function. And what simpler function could there be, than the identity?
a = map(lambda x: x, l)
b = list(x for x in l)
print a, b
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

If you don’t really know what the we did in (a) you may want to read up on lambda expressions, a topic I am not covering now. We need the list-method in (b) because map() always returns a list and the for-expression coughs up a generator object which we have to fully evaluate and convert to a list, to get the equivalent. Generator objects I will cover in the future. For now, suffice to say, it has a reason we are applying the list-function.

Weiterlesen

Ich blogge falsch

Wenn ich mir ansehe, über welche Suchwörter maweki.de bei google gefunden wird, komme ich zu einem Ergebnis: Ich blogge falsch

The php comparison game

Recently, I had a discussion with EnnoBigBenno, one of the friends over at senaeh.de about the merits of php (or lack thereof). I believe that a good and simple programming language can easily be parsed and understood by a human. This brought me to the idea, to create a small game of “True or False” where you have to decide, what the php-interpreter thinks, is true or false. Simple as that. Count your correct answers and check you php-prowess.

Warning: This game is not for the faint of heart. And feel free to share your score in the comments.
Weiterlesen

Unsere Bücher müssen brennen

Ich habe im Februar bereits darüber geschrieben (Deutsche Fassung), dass ich denke, dass Bücher brennen können müssen.

Amazon bietet seit einigen Jahren einen eBook-Reader an. Dieses Gerät trägt den zynischen, beinahe an Perversion grenzenden Namen “Kindle” (“to kindle something” ist Englisch für “etwas anzünden”).

Nun hat sich in Norwegen ein Fall zugetragen, wo einer Amazon-Kundin ihr Account gesperrt worden ist. Nach einer Kontaktierung des Kundendienstes, wurde ihr folgendes gesagt:

  1. Ihr Account wurde mit einem anderen Account in Verbindung gebracht, der gegen die Nutzungsrichtlinien verstößt
  2. Um welchen Account es sich handelt, unterliegt dem Datenschutz
  3. Gegen welche Nutzungsrichtlinien verstoßen worden ist, unterliegt dem Datenschutz

Linn, so heißt die Norwegerin, hatte jede Menge Bücher auf ihrem Kindle und noch nie einen anderen Account. Der Kundendienst weigert sich, diesen Fall überhaupt zu bearbeiten oder das Problem irgendwie zu lösen.

Der Kundendienst passiert über Amazon.co.uk (Großbritannien), die Abwicklung über Amazon.com und die Limited, die eigentlich die Lizenzen inne hat, sitzt in Luxemburg. Es scheint also auch keine Aussicht auf eine schnelle und preiswerte gerichtliche Einigung.

Daher nochmal mein Appell an Alle: Kauft echte Bücher! Kauft Dinge, die ihr anzünden könnt!