Beautiful Code

written by Martin Häcker on

"Lest mehr Code!" werde ich mir immer als Schlusswort des Literarischen Code-Quartetts merken.

Und weil man ja auch verdauen muss was man liest, empfiehlt sich natĂĽrlich guter Code - an dem man auch noch mehr lernen kann.

Daher war ich begeistert, dass O'Reilly das Buch "Beautiful Code" (blog) herausbrachte. Das geniale daran: Es werden nicht nur gute Programme abgedruckt, sondern Erklärungen, was hervorragende Programmierer daran schön finden und warum!

Und was fĂĽr Perlen da drin sind.

Besonders haben mir gefallen (ich bin noch nicht durch)

  • Kapitel 1: Regex matcher in C - Brian Kernighan hat Stil! (und pointer :)
  • Kapitel 14: Wie sich LAPACK ĂĽber die Zeit und die verwendete Hardware veränderte
  • Kapitel 17: Ein Rundgang durch die Layer des Virtuellen Dateisystems von BSD
  • Kapitel 18: Wie Pythons Dictionaries implementiert sind
  • Kapitel 22: Deadlock-Detection und subtile Bugs im Solaris Kernel (faszinierend)

Und so geht es grade weiter.

Gibts auf Amazon oder einem Tracker in deiner Nähe.

Kathy Sierra - Didaktik fĂĽr Reiche

written by Martin Häcker on

… und wem es reicht, von Lehrenden ständig für dumm verkauft zu werden.

Endlich mal jemand, der das, was wir aus Computerspielen und Psychologie gelernt haben, zu einem schlĂĽssigen Didaktik-Konzept zusammenbringt und auf ernsthafte Themen anwendet!

Und das beste - sie bringt ihre Theorien und deren Anwendungen in diesem wundervollen Podcast (von der OOPSLA) auch noch auf den Punkt!

Yeah.

download - mp3

p.s.: Kathy Sierra hat nicht nur die Head First-Serie bei O'Reilly mitgestaltet, sondern auch einen Blog den sie leider aufgegeben hat, nachdem ein paar Idioten sie auf ihrem Blog aufs Korn genommen haben - bis hin zu äusserst graphischen Drohungen. :-(

Hoffentlich fängt wieder zu Bloggen an - und ich bin sicher, dass jede e-mail hilft!

50 of 50

written by Martin Häcker on

Guy Steele kennt man ja. Richard Gabriel schon weniger.

Wenn die beiden aber zusammen einen Vortrag auf der OOPSLA halten - dann sollte man zuhören.

Richtiges, echtes, Geek-Kabarett.

Wie man eine schöne Animation macht...

written by Martin Häcker on

Das ist nämlich gar nicht so einfach.

Ich arbeite ja nun seit ein paar Monaten bei Novamedia - und mein erstes Projekt war, (mit einem 'sportlichen' Zeitplan von etwa 6 Wochen) bis zur Macworld im Januar 08 das Produkt Fone2Phone fertigzustellen.

Ziel der Aktion war es, ein Produkt zu haben, was bei der Migration von einem Telefon weg hilft. Dazu sollte Fone2Phone alles, was das Telefon an Daten enthält, aus diesem herausholen und in die jeweils zuständigen Apple-Applikationen befördern.

Das ist für sich genommen natürlich recht wenig (wenn auch technisch anspruchsvoll), darum haben wir uns von vornherein das Ziel gesetzt, mit dem Produkt auf der Macworld möglichst viele Preise abzusahnen. (Was auch geklappt hat. :)

Aber das ist alles nur Vorrede (und Stolz, schlieĂźlich hab ich damit gezeigt, was ich kann). Also auf zum eigentlichen Zweck dieses Posts.

Image

Die Animation. Damit Fone2Phone wirklich geil aussieht, haben wir tief in die Trickkiste gegriffen ('Wir' ist in diesem Zusammenhang mein Kollege Andreas).

Denn damit die Animation richtig gut aussieht, ĂĽberlagern wir drei Elemente.

  1. Eine Animation, die die beiden Views austauscht
  2. Eine variable Geschwindigkeit, das heiĂźt die Animation beginnt langsam, beschleunigt sich dann und wird am Schluss wieder langsam.

Bis hierher wäre ich auch darauf gekommen - aber der eigentliche Geniestreich liegt in dem letzten Element, das da noch oben drauf kommt:

  1. Die Views werden mit dem Hereinschieben eingeblendet / mit dem Herausschieben ausgeblendet.

Dieses letzte Element macht die Animation soo viel besser - obwohl es in der Komposition zuerst bewust ĂĽberhaupt nicht wahrgenommen wird.

Und das ist die Lektion, die ich heute mitgenommen habe.

Shell-Scripting aus Python

written by Martin Häcker on

Ich wollte ja schon länger meine Shell-Scripte eigentlich gerne in Python schreiben - einfach weil mich bash so fürchterlich nervt.

Allerdings ist der call-out zu shell-scripten ziemlich ekelhaft. All die schönen / ekelhaften Dinge die man in der Shell so einfach machen kann, gehen nicht.

Naja, dachte ich. :)

Mit ein bisschen Googeln hab ich [source:open-source/python-shell-scripting nämlich das hier gefunden].

Wunderschön einfach und simpel:

import shell

print shell.prefix
shell.prefix="/usr/bin"
print shell.prefix
shell.wait=False
print "calling true:", shell.true().returncode
shell.wait=True
print "calling true:", shell.true().returncode

shell.prefix="/bin"
print shell.ls("~/").stdout

Nice! Nie wieder Bash bashen.

:)

  • [source:open-source/python-shell-scripting browse source]

Vergessene Objective C-Möglichkeiten

written by Martin Häcker on

Da gibt es doch tatsächlich in Objective C die Möglichkeit, jederzeit eine Klasse unter einem anderen Namen zu importieren.

Nice.

@compatibility_alias MyShortClassName MyVeryLongClassNameThatIDontWantToTypeEveryTime;

Von Write a Screen Saver Part II

Mehr Transparennz

written by Martin Häcker on

Mehr Demokratie? = Dieser Gedanke trägt sich schon längere Zeit mit mir herum.

Unter Transparenz ist natürlich viel subsummiert. Dazu gehört natürlich die Wikipedia. Ich finde aber Transparent-Macher wie Udo Vetter mit dem "Law Blog" oder Thomas Knüwer mit "Indiskretion Ehrensache" oder Garr Reynolds mit "Presentation Zen" im Moment viel spannender.

Diese Leute sind für mich Kondensationskeime für die Transparenz die das Netz rein aufgrund der Tatsache schafft, das es so einfach ist und sich dann auch Leute finden die diese Möglichkeiten nutzen.

Für mich bedeutet das, das ich einen ganz anderen Einblick in den Berufsstand und die Denkweise dieser Menschen erhalten kann. Mir eröffnet sich die Möglichkeit zu verstehen was sie tun und wie sie denken.

Hoch spannend. Und meiner Meinung nach auch hoch politisch.

Andere machen auch Fehler...

written by Martin Häcker on

Es ist doch immer wieder angenehm, wenn man feststellt das man nicht der einzige Mensch auf der Erde ist der Fehler macht.

Damit dieses Post besser via google zu finden ist, ab hier auf Englisch.

--- snip ---

For anyone trying to develop QT-based apps on leopard, take care. I couldn't find this bug documented anywhere, so I'm writing this up here.

The Leopard CDs Apple shipped with new computers right after leopard came out contain a very old QTKit Version in the 10.4u.sdk of Xcode 3.0.

This means (at least) that you get spurious warnings on building - and we have also found that it makes apps built on this machine (Leopard, Intel) behave very badly on PPC Tiger machines. That is, QuickTime Exports would fail silently. (This is what initally triggered us finding this)

To detect it, have a look at the file: </Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/QTKit.framework/Versions/A/Headers/QTMovie.h> and look till when the copyright goes. If it is till 2005 -> You have the old version. If it is till 2007 -> You most likely have the correct version.

I don't know if there are other problems with the CD Version of Leopard, so if you are using it, take care and consider installing something different!

Oh, and of course I filed a radar: 5699456

--- snap ---

Ah well. Mal schauen wo ich dieses Post unterbringen kann.

Jetzt oder Nie

written by Martin Häcker on

Herbert Grönemeier ausgerechnet. Wer hätte das gedacht.

Total schräg.

<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/J4YK03vPenQ&rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/J4YK03vPenQ&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object>

Jetzt oder Nie

Descriptiver Code…

written by Martin Häcker on

Es geht doch nichts ĂĽber selbstbeschreibenden Code. ;)

IF_LAST_ERROR
        ERROR_HANDLING

Hat mir dann auch gar nichts genützt die nächsten Zeile zu lesen:

diglossia* oracle=NULL;
    struct NmGsmCtrlCoreMsg* Msg=NULL;

    oracle=((diglossia*)PtrParamG->oracle);

Habt Mitleid mit mir....