Change you can download

written by Martin Häcker on

Jede Menge Congressional Reports - also Ergebnisse die der wissenschaftliche Dienst des Amerikanischen Kongresses erarbeitet hat zum download.

Fuck yeah. Wikileaks rockt mächtig!

via

Scrum Story estimation

written by Martin Häcker on

ist schwer. Um so wichtiger finde ich gute Tips wie man das machen kann.

Jay Fields hat dazu gute Sachen zu sagen.

Lesenswert.

Andere kochen auch nur mit Wasser

written by Martin Häcker on

Apple in dem Fall mit Apple Mail.

Image

Die Backtrace library will ich auch haben. :)

Holperdinger auf dem Marsflug

written by Martin Häcker on

Tja, was soll ich sagen. Squeak mit Mars ist spannend.

Der Smalltalk Source Code für die Menü-Definitionen gefällt mir zum Beispiel wirklich gut.

menuFile
    ^ (MarsMenuItem label: 'File')
        add: (MarsMenuItem label: 'File Out...' keyStroke: $o command: #fileOut);
        addSeparator;
        add: (MarsMenuItem label: 'Save' keyStroke: $S command: #saveImage);
        add: (MarsMenuItem label: 'Save As...' command: #saveImageAs);
        addSeparator;
        add: (MarsMenuItem label: 'Quit (Development)' keyStroke: $Q command: #developmentQuit);
        add: (MarsMenuItem label: 'Quit' keyStroke:$q command: #quit);
        yourself

Das ist knackig.

Auf der anderen Seite... Das Versionskontrollsystem hat mal eben so vergessen das Changeset mit auf den Server zu schieben auf dem das was ich hochgeladen / comitted habe beruhte.

Äh, wiebidde? Das ließ sich dann zwar durch vereinte Anstrengungen von 3 Squeakern irgendwann fixen. Aber...

Und überhaupt, die GUI von Squeak ist... gewöhnungsbedürftig. Der größte Teil der Funktionalität liegt in Kontextmenüs versteckt - die man einfach nicht findet wenn man nicht weiß dass es sie gibt. Oder die nur kommen wenn man etwas bestimmtes nicht ausgewählt hat.

Grusel

Naja, mixed feelings.

OD Completion Dictionary works with Xcode 3

written by Martin Häcker on

Hrm, das ist mir doch ganz entgangen bisher.

Aber: here it is!

Was es tut: Beliebige Textbausteine in Xcode schnell einsetzen. Das geht zwar auch ohne ODCompletionDictionary, aber, mit kann man es auch in Xcode live bearbeiten. Und das macht das Feature eigentlich erst richtig nĂĽtzlich.

Code Review mal praktisch erklärt

written by Martin Häcker on

Und zwar mit grandiosen schauspielerischen Leistungen. :)

Auf der Ruby-Conference 2008.

The Ruby Code Review. A Play in Three Acts

Ăśberhaupt finde ich Confreaks sehr cool. :)

Writing Code that doesn't suck

written by Martin Häcker on

Und noch mal von den Confreaks.

Ausgezeichneter Vortrag von Yehuda Katz darüber was er für gute Tests hält und was nicht. Sein Argument: Am Ende will man Regression-Tests haben, da nur die wirklich nützlich sind beim Refactorieren. Nur die sind nützlich, weil dass die Tests sind die man behalten kann während man den Code neu faktoriert.

Damit das geht muss der Code aber schon eine gute Faktorierung haben die man (ausschließlich?) über öffentliche Interfaces testen kann.

Wohlgemerkt in dem Talk geht es nicht darum ob TDD gut oder schlecht ist - der Zweck ist einfach ein anderer. Ihm geht es um API-Stabilität und die Frage wie man Interfaces (nicht Implementierungen) über eine lange Entwicklung stabil hält.

Spannend. Mir ist dabei eingefallen dass ich damals im ersten Buch ĂĽber Test Driven Development einen Absatz gelesen habe in dem Stand dass man zuerst seine Tests schreiben soll um dann an diesen seinen Code zu schreiben und zu refaktorisieren. Und dass man danach den Code als Tests fĂĽr die Tests verwenden kann um wiederum diese zu refaktorisieren.

Gaudio. Ob das schon das ist was Yehuda meint? Ich vermute noch nicht ganz - aber es hört sich für mich nach etwas an was ich direkt tun kann - ich kann meine Tests betrachten und mir anschauen ob sie tatsächlich das testen was mich interessiert (das interface) und wenn dem nicht so ist, dann kann ich mir das Interface betrachten und die Tests tatsächlich refaktorieren.

Yay, mehr Arbeit. :)

Landing on Mars (with Squeak)

written by Martin Häcker on

I just started playing around with Mars which is a bridge from Squeak to Cocoa, which allows Squeak Programms to have a Cocoa GUI.

Pretty nice - however not quite as easy to get installed if you are a SmallTalk newbie like me.

There are installation instructions on the Mars homepage however I couldn't quite follow them, so I enhanced them a little and give you the rundown here:

Instructions

  • I downloaded the basic Image from http://ftp.squeak.org/3.10/Squeak3.10.2-7179-basic.zip
  • Got the Virtual Machine from ftp://ftp.smalltalkconsulting.com/experimental//Squeak%203.8.21beta1U.app.zip
  • Installed basic developer tools by executing <HTTPSocket httpFileIn: 'installer.pbwiki.com/f/LPF.st'.> in a workspace window (select it and hit command-d)
  • Then I ran
    Installer universe 
     addPackage: 'OmniBrowser';
     addPackage: 'OmniBrowser-Morphic';
     addPackage: 'OmniBrowser-Standard';
         addPackage: 'OmniBrowser-Refactory';
     install.
    
    to get the basics and
  • installed Mars by executing ``` Installer wiresong project: 'ob'; install: 'OB-Monticello'. Installer lukas project: 'omnibrowser'; install: 'OB-Tools'.

Installer ss project: 'Mars'; install: 'Mars'; install: 'OB-Mars'.


After that `OBMarsWorld execute.` replaces the menubar of Squeak with the Cocoa stuff.

:) Have fun!

Oh, and by the way, I just tried this with the dev image available from Damien Cassou at http://damiencassou.seasidehosting.st/Smalltalk/squeak-dev

This image already has most stuff preloaded, so you can just run

Installer wiresong project: 'ob'; install: 'OB-Monticello'. Installer lukas project: 'omnibrowser'; install: 'OB-Tools'.

Installer ss project: 'Mars'; install: 'Mars'; install: 'OB-Mars'. ```

to get Mars installed and then start it by running: OBMarsWorld execute.

Scriptdir

written by Martin Häcker on

Ich habe immer wieder das Problem, dass ich in Shell-Scripten den absoluten Pfad zum eigenen Script, oder zumindest den Ordner in dem das Script liegt benötige.

Dieses Problem hat viele Lösungen - die allermeisten kommen aber entweder nicht mit Leerzeichen in diesem Pfad klar, oder versagen wenn man das Script über verschiedene Kombinationen von absoluten und relativen Pfaden aufruft.

Meine gegenwärtige Lösung ist das hier:

SCRIPTDIR="$(cd "$(dirname "$0")" && pwd)"
echo $SCRIPTDIR

Damit bin ich zwar auch ĂĽberhaupt nicht glĂĽcklich, aber immerhin scheint es zu funktionieren. :/

Insbesondere ist das Quoting extra funky. Unter MacOS X scheint es aber zu gehen (d.h. die Bash frisst das korrekt)

Hat da vielleicht jemand eine bessere Idee?

Update: Florian hatte die groĂźartige Idee doch einfach mal in gut benutzte Shell-Programme wie den Wrapper fĂĽr OpenOffice zu schauen. Und siehe da:

# cat /usr/lib64/openoffice/program/swriter
#!/bin/sh

cmd=`dirname "$0"`/soffice
exec "$cmd" -writer "$@"

funktioniert groĂźartig. Man kriegt zwar nur den relativen Pfad - aber das reicht ja in aller Regel.

Der neue Trend: Unfactoring

written by Martin Häcker on

Unfactoring is nicht einfach. Man muss es immer wieder ĂĽben.

Hier ein Schulungsvideo von der RubyConf08.

Highly advised! ;)