We had to rebuild our RedBull wall, so I took a time lapse of it. These are approx. 420 cans, which makes a can deposit of about 105,00 EUR.
And again: Don’t tell a doctor about it…
I think I will pretty much miss Patrick for these kinds of funny office happenings in the next four months. And all the other stuff he does and says. So tumblr staff, be prepared, the constructor of the new BerlinRedBullWall is coming to your little city of NY pretty soon.
LOL, looking forward to see those geeks again on friday :D
Einfach grossartig!
Software Patente
Der Hauptgrund warum wir eine haftungsbeschraenkte Firma gegruendet haben war eindeutig um uns vor Patentstreits zu schuetzen.
Wenn man sich ueberlegt, in was fuer Schwierigkeiten man geraten kann, wenn man sich fuer technische Problemloesungen interessiert zeigen zwei Artikel die ich heute gelesen habe.
Creating Shazam In Java
Herr van Rijn hat an einem Wochenende eine Software geschrieben, die Lieder in eine Textrepraesentation umwandelt und auf diesen auf Muster untersucht.
Technische und mathematische Problemloesungen die er in seiner Freizeit zu loesen versucht haben arge Konsequenzen: Die Firma Landmark Digital Services droht ihn zu verklagen, wenn er seine Software veroeffentlicht.
Die Intention spielt also keine Rolle. Wenn man den Algorithmus im Netz veroeffentlicht, werden Patentverletzungen weltweit moeglich. Wer will da schon der Initiator sein?
2001 wurde ein russischer Wissenschaftler vom FBI verhaftet, weil er sich mit der Kryptoanalyse von eBooks auseinander gesetzt hat und dazu auf einer Konferenz eine Praesentation hielt (http://de.wikipedia.org/wiki/Dmitri_Witaljewitsch_Skljarow).
Danke an Felix Geisendoerfer via Twitter.
BIG BAG BIG BOOM - the new wall-painted animation by BLU (by blu)
Best animation, I’ve seen, ever. In my whole life. Thx @solving42
Linksradikale zwingen Araber die Deutschlandflagge abzuhängen
Schwarz-Rot-Gold - In Neukölln ist ein Fahnenstreit entbrannt - Berlin Aktuell - Berliner Morgenpost
Was heisst Araber?
Nein, es sind Deutsche mit arabischem Migrationshintergrund.
Ich find’s krass, wie sich manche Leute das Recht rausnehmen mit Gewalt gegen Patriotismus vorzugehen, insbesondere wenn der Ursprung an alles Andere als das Nazideutschland erinnert.
Nein, diesmal steht die Integration im Vordergrund. Unsere Bürger die unserem Fußballteam die Daumen heben und Angst haben müssen, dass paar Assis die Bude abfackeln, bei dem Versuch die Deutschlandflagge zu zerstören, weil man ja eigentlich doch noch nen schlechtes Gewissen haben müsste, weil Menschen die heute nicht mehr leben unverzeihliches getan haben.
Außenwirkung
Vor wenigen Tagen hat ein relativ bekannter amerikanischer Softwareentwickler (Kent Beck) gemeint, wir deutschen sollten uns der Leistung unserer Gastarbeiter-Generation bewusst sein.
Er hat sich für die leicht arrogant klingend, anmaßende Aussage entschuldigt, nach dem sich seine deutschen Twitter-Freunde empört hatten.
Wär eigentlich cool, wenn er das hier mitbekommen würde, an welchem Punkt wir heute stehen. Unser Nationalbewusstsein ist ein anderes. Wir lieben unsere multikulturelle Lebensweise.
Unsere Außenpolitik ist im Vergleich zur Amerikanischen mehr als ein Understatement.
Berlin
Insbesondere als Berliner, der in Kreuzberg aufgewachsen ist und mehr türkisch spricht als seine Muttersprache (serbisch), fühlt man sich krass verarscht, wenn linksradikale nem Habibi Feuer untern Arsch geben, weil der stolz drauf ist nen deutscher zu sein.
Ich wette diese Linksradikalen sind zugezogene Wessis, mit schlechtem Gewissen, weil Naziopa vor 70 Jahren krass am Start war und man gegen die reichen Eltern rebellieren will.
Ich hoffe, dass Deutschland Weltmeister wird. Nicht weil wir uns was drauf einbilden wollen, nee, weil die Party mit allen Gelben, Braunen und Schwarzen in Berlin einfach geil wird!
Großartige Dokumentation schreiben
writing great documentation, by jacob kaplan-moss: jacobian.org/writing…
Cooler Link, danke!
Das andere Extrem ist:
documentation considered harmful
Ich find es schon ziemlich geil, wenn man ne gute Dokumentation ließt, andererseits ist Dokumentation nicht so lebendig, wie das was man eigentlich dokumentiert.
Es kommt doch super häufig vor, dass die Dokumentation out of sync geht mit dem was man eigentlich dokumentiert.
Ich find das kritisierte automatische generieren von Dokumentationen aus dem Quellcode eigentlich wichtig um genau dieser desynchronisation entgegenzuwirken.
Auf jeden Fall ist Dokumentation, wenn diese super aufbereitet wurde hammer, aber wenn ich alles dokumentieren würde und immer aktualisieren müsste (insbesondere wenn es um die Cross-Plattform-Kompatibilität geht) und kontinuierlich prüfen ob dies und das mit den aktuellen Abhängigkeiten weiter funktioniert, wär ich am Ende des Tages nicht mehr produktiv, und ich würde nicht mehr das machen, was ich wirklich liebe.
It’s summer time. Time for new Kombucha!
Craft your own kombucha!
yummie! :D
Ruby eval, dynamischer geht es nicht
Ruby macht es möglich, dass man zur Laufzeit Methoden hinzufügt. Ob man das nutzen sollte, es rein stilistisch gesehen klar geht oder nicht, ist dem Anwender überlassen. Und ich find es eigentlich cool, von ner Programmiersprache nicht wie nen Kind behandelt zu werden. Es gibt auf jeden Fall Use-Cases wo man solch ein Verhalten will (wie ActiveRecord in Rails und die sexy dynamischen find-Methoden).
eval
eval fuehrt den uebergebenen String aus
eval "13+37" # => 50
Damit ist es also unproblematisch code, den ich hier in einem Textfeld eingebe, irgendwo in meinem Programm ausfuehrbar zu machen (bis nen %x{ rm -rf /* kommt}).
Also: aus grosser Macht, folgt grosse Verantwortung :)
instance_eval
instance_eval ist der kleine Bruder von Eval: Sehr geile Eigenschaft: es wird der String oder der Block den du uebergibst ausgefuehrt, self wird aber auf den Empfaenger des Methoden-Aufrufs gesetzt. Boah, ok Bahnhof. Hier kommt nen Beispiel:
class Secret private def psst puts "ey psst, darf keiner wissen" end end s = Secret.new s.psst # => NoMethodError: private method `psst' called for #<Secret:0x10137bd18> s.instance_eval { psst } # => "ey psst, darf keiner wissen"
Also ist self der Empfaenger und darf damit auf psst zugreifen. Ganz schoen hackisch mal eben self veraendern zu duerfen ;)
class_eval
Und das leckerste zum Schluss: mit class_eval kann man auf den class-definition body zugreifen.
str = "test" # => "test" str.class.class_eval do def to_turkish "#{self.gsub(/[ou]/,'ü').gsub(/[OU]/,'Ü')}, ya" end end str.to_turkish # => "test, ya" foo = "foo" # => "foo" foo.to_turkish # => "füü, ya" # arkadaslar tuerk, ya, Kreuzberg geliorum!
Zugriff auf Variablen im uebergeordneten Scope
Man kann mit class_eval auch den Scope erweitern:
# in der irb >> draussen = "du kommst hier nicht rein" >> class Club >> puts draussen >> end => NameError: undefined local variable or method 'draussen' for Club:Class # wobei das hier geht >> Club.class_eval { puts draussen } => "du kommst hier nicht rein" # das hier wiederum nicht, da 'def' nen eigenen Scope oeffnet >> Club.class_eval {def mach_ansage; puts draussen; end; } => NameError: undefined local variable or method 'draussen' for Club:Class # das hier aber wieder funzt: >> Club.class_eval { define_method("mach_ansage") { puts draussen } } => #<Proc:0x0133723@(irb):42> >> _.call => "du kommst hier nicht rein" >> Club.new.mach_ansage => "du kommst hier nicht rein"
Ist doch mal der absolute Kracher, oder? Ich finds sooo geil :)
Git Repository unter Redmine mit post-receive hook updaten
Angenommen ich hab da mal ne Redmine-Instanz aufm Server laufen. Auf der gleichen Maschine liegen meine Repositories. Wenn ich nun was ueber Git commite, moechte ich, dass Redmine die Aenderungen mit darstellt.
Mein Gitosis-User heisst mal gitosis:
Ich erstelle eine Datei, die fuer alle Repositories nutzbar ist:
#!/bin/sh # ~gitosis/bin/update.sh umask 002 cd $1 # wechselt in den uebergebenenen Pfad env -i /usr/bin/git-pull origin master # zieht sich da nen update env -i git-update-server-info # updated die server info
Nu kann ich ganz gepflegt in meinem post-receive hook ansagen, in welchem Verzeichnis das Repository geupdated werden soll:
# ~gitosis/repositories/myrepository.git/hooks/post-receive ~/bin/update.sh ~/link_to_my_repository
Der Benutzer gitosis muss per gitosis-admin ebenfalls Zugriff auf das Repository in link_to_my_repository haben, da man sich ja immer mit den Rechten von gitosis einloggt und mit dem dann die updates durchfuehrt.
Wenn wer Verbesserungsvorschlaege hat: immer raus damit :)