Posts for the month of June 2008

Trac, die Webentwicklungsplattform

Es gibt ja verschiedenste Frameworks die total toll sind um darauf aufbauend Webseiten-Entwicklung zu machen.  TurboGears,  Django,  Ruby On Rails, etc.

Und was muss ich feststellen? Ich treibe Webentwicklung in einem Framework, der es selber gar nicht sein will.  Trac.

Irgendwie ist das eine Liebe und Hass-Beziehung. Einerseits finde ich das Prinzip gut und mir gefällt wie es umgesetzt ist. Andererseits kotzt mich der Code in Trac zum Teil gewaltig an.

Sowas von Kompliziert. Bäh.

Also wieso mache ich mir den Stress?

Weil ich später auf der Benutzer-Seite nicht so viele verschiedene Tools einsetzen will. Ich will meinen Blog schreiben, im Wiki Arbeiten und meine Software verwalten - alles ohne extra Aufwand zu treiben, damit es sich integriert.

Dabei ist es logisch betrachtet viel mehr Aufwand das alles in einem Tool zusammenzukriegen, als einfach ein paar gut geeignete Tools zusammenzuwerfen.

Na mal schaun. Für's erste mach ich mal weiter mit dem Blog - immerhin kann man damit jetzt schon posten und kriegt sogar eine Fehlermeldung wenn man vergisst einen Titel zu vergeben. :-) Dauert also nicht mehr lange bis ich das hier fürs Bloggen einsetzen kann / werde.

iPhones bei O2 Germany?

Gerade hat mich meine "Tarifberaterin" angerufen und mich darauf hingewiesen das ich meinen Vertrag erneuern könne.

Auf meine Frage wie es denn da mit den iPhones aussieht erhielt ich dann eine überraschende Antwort:

"Ja klar, das dauert aber noch bis zum 11. bis die auf den Markt kommen, in welchem von diesen drei geschäften möchten sie den Vertrag denn dann abschließen?"

Doh.

Also entweder:

  • Sie will mich verarschen, damit ich doch einen Tarif über sie Abschließe
  • Sie war völlig Dämlich und hat nicht verstanden das O2 keine iPhones hat
  • O2 hat einen Deal, den sie jetzt ausgeplaudert hat.

Letzteres kann ich mir aber nur sehr schwer vorstellen - denn diese Neuigkeit wäre ja der Vollhammer für die Telekom. Bleibt eigentlich nur noch Möglichkeit eins und zwei.

Ersteres fände ich reichlich geschmacklos - vor allem, was soll dann danach kommen?

Bleibt eigentlich nur noch Möglichkeit zwei. Dagegen spricht allerdings das sie doch sehr überzeugt und resolut klang und auch offenbar diese eindeutige Liste von drei Geschäften in Berlin hatte wo das gehen wird.

Hmm....

Brainworks in presentation

 Garr Raynolds spricht mal wieder.  Seinen Blog verfolge ich ja schon lange - und habe ihn noch nie sprechen hören.

Daher war ich auch am Anfang etwas enttäuscht, da er (IMO) viel besser Schreibt als er spricht. Aber er kommt rein und hält letztlich eine sehr gute Präsentation - mit dem Thema wie man präsentieren soll (nach ihm).

 Den Vortrag kann ich daher nur empfehlen.

p.s.: By the way: Durch den Vortrag bin ich auch auf  Brain Rules ein Buch von John Medina gestoßen, der aus der Sicht eines Molekularbiologen beschreibt was wir über das Gehirn wissen und wie wir uns demnach verhalten sollen.

Good stuff. (Buch gerade bestellt)

iTunes - ohne Schlüssel?

Ist ja nicht so einfach.  Die  verschiedenen  Versuche waren immer mit nur kurzen Halbwertszeiten gesegnet.

Aber  Reqiem ist ganz Nett. Schöne C-Implementierung,  verteilt über viele Torrents und mit einer Homepage die in Freenet gehostet wird (1) kann man sich echte Chancen ausrechnen das es mal bestand haben wird.

Zumindest von einer technischen Seite aus.

Davon abgesehen finde ich den Sourcecode aber auch Schick. :-)

(1) Reqiem Homepage: freenet:USK@GSQgFDoeQUG0cSkbUVYYkB-ssqEEavRdo-RDVEAm0jk,rVvV3LjSZq3UNdGJrrup~~ZBPq4ohBhJeKkREXDLULw,AQACAAE/requiem/-1/

Hacking !TracBlog

Well, wir sind weiter gekommen. Man kann sogar schon posten.

Vor allem aber, haben wir eine recht vollständige Testsuite. Und dazu gehören auch funktionale Tests  mit Twill.

Die finde ich vom Ablauf her noch reichlich krude und aufwendig, aber ein Anfang ist gemacht.

 Wer schon mal einen Blick werfen will, darf das gerne tun. :-)

Censorship sells

 and how it does!

Via  Rivva (genaues Post weiß ich nicht mehr)

Outteach

Ich mag es wie  Kathy Sierry bloggt. Immer hat sie den Fokus darauf das Benutzer von Software (oder von irgend etwas) dadurch mehr schaffen können.

Das ist der richtige Ansatz.

Zusammengefasst ist dieser Grundsatz vielleicht  in dem Zitat: "Outteach not outspend".

Ich bin noch am Überlegen wie das auf Novamedia anzuwenden ist - aber

Stop Shopping!

 Bloggalujah to ya all!

Now Introducing:  Reverend Billy and the Church of Stop Shopping

 Und darüber gibts auch eine Dokumentation,  die ich mir gerade angesehen habe. Großartig.

Politik und Unterhaltung und auch noch Spiritualität - alles zusammen. Großartig.

Kritische Anmerkungen:

  • Wie ginge es unserer Wirtschaft, wenn tatsächlich niemand mehr ausgäbe als er hat?
  • Wo und für wie viel Geld würden die Menschen Arbeiten wenn sie keinen Job bei Nike, Wallmart, etc. hätten? ( siehe WP: Sweatshop)

Super film.

p.s.: Einige der  Songs von der Truppe gibt es hier und noch ein paar sachen  hier.

Kommunikationsstrukturen

Wohin führt es, wenn in einer Firma keine geordneten Kommunikationsstrukturen existieren?

Richtig, es wird weniger kommuniziert.

Na hat Captain Obvious bei euch auch eingeschlagen?

Ich finde es ja hochspannend, dass Kommunikation so ein Problem ist.

Open Source Projekte lösen das in der Regel so, dass die Mailingliste die ständige und ausdauernde Besprechung ist, in die alle Vorschläge kommuniziert und diskutiert werden. Passt die Kommunikation nicht, wird das Projekt entweder geforkt (wenn es anderen Personen wichtig ist) oder aber das Projekt schläft ein und hört auf. (War also doch nicht soo wichtig)

In Firmen werden gerne agile Methoden eingesetzt um das Problem zu lösen, da diese immer darum kreisen die Arbeit die passiert transparent zu machen und die Kommunikation der Teilnehmer zu erweitern.

Ob das jetzt ein Stand-Up-Meeting oder das Daily-Scrum oder das was weiß ich was ist - immer geht es darum das man regelmäßig kommuniziert.

Wichtig.

Und jetzt zur nächsten Lektion: Wie kriegt man so eine Kommunikationsstruktur in eine Firma hinein die dass (noch) nicht macht?

Warum kann man…

… eine Wurzel berechnen indem man einen float einfach um ein Bit nach rechts schiftet?

float InvSqrt(float x)
{
    float xhalf = 0.5f*x; 
    int i = *(int*)&x; // get bits for floating value
    i = 0x5f3759df - (i>>1); // gives initial guess y0
    x = *(float*)&i; // convert bits back to float
    x = x*(1.5f-xhalf*x*x); // Newton step, repeating increases accuracy
    return x;
}

 Chris Lomont sich das mal angesehen und seine Erklärung hab ich verstanden.

Was diese Stelle tut:

    int i = *(int*)&x; // get bits for floating value
    i = 0x5f3759df - (i>>1); // gives initial guess y0
    x = *(float*)&i; // convert bits back to float

Ist total cool. das Bitmuster des floats wird einfach als long interpretiert - was nichts weiter bedeutet, als das die Teile des Floats, Vorzeichen, Mantisse und Exponent jetzt halt nebeneinander in einem Bitfeld liegen. Wenn man dieses Bitfeld jetzt nach rechts schiftet dann hat man das effektiv eben auch mit jedem der Bitfelder gemacht. Wenn man dann dieses Bitmuster noch etwas manipuliert, indem man es mit einer Korrekturkonstante vermurkst die die Fehler durch das hereinschiften von werten aus der Mantisse in den Exponent minimieren, dann hat man eine tolle Annäherung.

Und diese Annäherung erlaubt es mit nur einem Schritt nach  Newton zu einer sehr guten Näherung an die Quadratwurzel zu kommen.

Rockig.

Vor allem finde ich es cool, wie die Hacker hinter diesem Algorithmus ihn gefunden haben. Das konnten sie nämlich nur machen, weil sie genau wussten wie ein float tatsächlich implementiert ist - einem Wissen das die meisten Hacker heute nur noch theoretisch haben - aber nicht so genau das sie dieses Format auch mal so ohne weiteres für so einen fiesen Trick missbrauchen können.

In diesem Sinne: Aus der Geschichte lässt sich viel lernen. :-)

Was macht dieser Code

Aus dem  Q3 Source Code:

float Q_rsqrt( float number )
{
  long i;
  float x2, y;
  const float threehalfs = 1.5F;

  x2 = number * 0.5F;
  y  = number;
  i  = * ( long * ) &y;  // evil floating point bit level hacking
  i  = 0x5f3759df - ( i >> 1 ); // what the fuck?
  y  = * ( float * ) &i;
  y  = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
  // y  = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed

  #ifndef Q3_VM
  #ifdef __linux__
    assert( !isnan(y) ); // bk010122 - FPE?
  #endif
  #endif
  return y;
}

Was macht das und wieso funktioniert es?

(Für all zu ungeduldige:  Auflösung)

Was ich besonders spannend finde, ist  die Geschichte mit der es entstanden ist. ( Und die Fortsetzung)

Total cool.

(via:  Einen Podcast von Ryan 'icculus' Gordon [etwa ab min. 30])

Eine Kulturelle Referenz

ist etwas das man nur versteht, wenn man "IN" ist.

Also in einer Gruppe, die die Sprache auf die sich das "Referenzwerk" bezieht.

 Kunst in diesem Sinne.

Total cool.

p.s.:  LOLCats rult natürlich nicht soo, aber...  noch einer

  • Posted: 2008-06-01 22:00 (Updated: 2008-06-01 22:28)
  • Author: dwt
  • Categories: links
  • Comments (0)