SpringOne 2GX 2009: Link collection

A small summary of links to interesting things happened on the SpringOne 2GX conference hold this week in New Orleans from the outside, mostly observed from the twitosphere, with a modest emphasis on Groovy and Grails.

Notes and comments from attendees:

Slide decks:

Interviews:

Some outstanding quotes extracted from twitter:

  • Guillaume Laforge: “Nice :-) RT @twcrone Griffon rocks!!!! Client apps with Groovy. I know I’m a “Flex” guy apparently but I’d rather be writing Groovy.”
  • Scott Davis: “GPars (Groovy parallel library) looks really, REALLY compelling.”
  • Daniel Honig: “GPars makes concurrent operations in Groovy so trivial that it should be illegal.”
  • Andres Almiray: “#griffon based slideware code available at git@github.com:aalmiray/griffon-talk.git clone, hack, enjoy! :-)”
  • Gordon Dickens: “Cool stuff in #Gradle presentation from Hans Doktor dynamic builds using #Groovy” (Gradle 0.8 is out)
  • Hubert Klein (aka Mr. Haki): Adding Groovy and Grails Support to SpringSource Tool Suite (STS)

Migrating from Coppermine to SmugMug with 100 LOC (or so)

Since I was spending a great deal of last weekend’s time on migrating my Coppermine photo albums over to my brand-new SmugMug account, I thought it might be helpful to others to summarize my experiences here. First of all, the whole process (transferring several thousands of photos uploaded over the last 7 years into my Coppermine installation) went pretty smooth, that is mostly because of the brilliant pysmug Python library by Brian Zimmer as well as SmugMug great and reliable API (provided as a RESTful web-service).

Here is a step-by-step instruction on how to upload your existing coppermine albums into your SmugMug account. You need to have generated an API Key inside the SmugMug control panel for the upload process.

(1) Download and install pysmug package on your system, usually boils down to something like:
tar xvzf pysmug-0.5.tgz
cd pysmug-0.5
sudo python setup.py install

(2) Prepare SmugMug API access by setting up ~/.pysmugrc according to your individual user ID and API Key:
[pysmug]
login=login_withHash
smugmug=pysmug.SmugTool

[login_withHash]
APIKey = UZm0Y4…
userId = 999999
passwordHash = $1$.s…

(3) (optional) If your camera happens to embed rotation information as EXIF inside the JPEGs, you might want to rotate the photos before uploading accordingly. Unfortunately the upload API call does not support rotating on the SmugMug server-side, and also it seems like the rotation information got somehow eaten on upload. A small bash script using the great ImageMagick toolkit can do the conversion in a moment:

#!/bin/bash
path=$1
find $path* -type f -iname "*.jpg" ! -iname "thumb*" ! -iname "square*" ! -iname "medium*" | while read FILE
do
echo $FILE
convert -auto-orient "$FILE" "$FILE"
done

(4) Download my Python script cpg2smugmug.py and modify the header according to your Coppermine installation (specifically the MySQL connection settings and the path to your album root directory).

(5) Execute python cpg2smugmug.py and watch how the categories and albums got created and after wards the photos (on an album by album batch) uploaded into your SmugMug account.

Have fun!

Bequemes Builden 2009

Neues Jahr, neue Tools: zumindest da wo es Optimierungsbedarf gibt. Und den gibt es ja meistens reichlich bei Java Projekten beim Thema Build Management. Trotz den Hoffnungen, die Maven geweckt hat, sind Ant basierte Buildskripte seit Jahren Standard. Sobald bei Maven basierten Buildskripten die ersten Anpassungen durchzuführen sind, wollen der Lebenszyklus, die vielfältigen Erweiterungsmöglichkeiten, und die kompliziert benannten Goals verstanden sein. Die Suche und das Ausprobieren gehen los und senken deutlich den anfänglichen Spaß und führen zu extra Zeit Investitionen. Ein Ausweg scheint sich anzubahnen …

Nachdem ich zu Jahresbeginn mit dem Gedanken spielte für ein neues Projekt buildr als Build Tool einzusetzen. Es sei an dieser Stelle noch auf den interessanten Blog Beitrag verwiesen, wie der gradle. Die ausschlaggebenden Punkte waren dabei neben der Tatsache, dass das Buildskript in Groovy (statt in Ruby) geschrieben wird, eine sehr ausgetüffelte und stabile Abhängigkeitsanalyse (basierend auf Ivy, Stichwort: transitive dependencies) und eine umfangreiche Dokumentation (trotz der Neuheit). An ein paar gute Seiten von Maven wird auch angelehnt, so wird per Default Konfiguration von einer Verzeichnisstruktur gemäß Maven Konvention ausgegangen, ausserdem können Maven (und natürlich Ivy) Repositories zur Abhängigkeitsverwaltung der Bibliotheken einfach konfiguriert und benutzt werden.

Spielend gedeihende Webapps

Ein sehr symphatischer Name für ein neues Web Framework: Play!. Es ist ein weiterer Anlauf den inzwischen recht komplexen Java Enterprise Stack auf die Kernbelange runterzudampfen, die man für eine typische MVC basierte Webapplikation benötigt. Dabei kommen erprobte Komponenten für Persistenz (Hibernate), Authentifizierung (OpenID), Caching (memcache) zum Einsatz. Besonders erwähnenswert, dass von vornherein das HTTP im Zentrum der Konfiguration steht, und damit sehr einfach eine REST Schnittstelle implementiert werden kann.

Viel Spaß beim Spielen!

Spass an Logfiles

Noch nie hat das Verfolgen von Log Dateien in Echtzeit soviel Spass bereitet, wie mit glTail. Einem fantastischem (Ruby basiertem) Tool, das sich einfach per SSH an eine oder mehrere Apache Instanz verbindet, und dort inkrementell die neuesten Einträge per tail abgreift und auswertet. Die grafische Darstellung ist sehr ansprechend mit OpenGL umgesetzt und erinnert stark an ein Pong Spiel zwischen den anfragenden Usern und dem antwortendem Webserver. Das Tool lässt sich mit dem Installieren eines gem Files schnell an den Start bringen, und ist durch eine (leider so gut wie nicht dokumentierte) Konfigurationsdatei in vielen Bereichen anpassbar. Das schön dabei, nicht nur Apache access logs können visualisiert werden, sondern auch weitere Webserver, Mailserver, DB Server Logs.

Groovy und Grails News

Wer auf der Suche nach einer Workflow- bzw. Business Prozess Engine ist, sollte sich ein spannendes neues Projekt namens GrailsFlow anschauen. Es ist zwar derzeit noch in der Entwicklung (Produktionsreife wird aber in 3-6 Monaten erwartet), aber wird unter der Apache Open-Source Lizenz herausgegeben und wen wundert es, mit Grails entwickelt.

Warum nicht das MVC Pattern auch einfach für das Entwickeln von Swing Applikationen mit Groovy als Skriptsprache einsetzen, das neue Projekt Griffon beschäftigt sich genau damit. Zwei interessante Beispiel Artikel finden sich unter:Drilling Analytics und Flying with Griffon.

Apropos UI: ein neues Framework namens Cappuccino sorgt jüngst für Furore (280slides ist das Vorzeigeprojekt), weil damit einfach Applikationen entwickelt werden können, die mit wenig Aufwand unter Mac OS X, auf dem iPhone und als HTML/Ajax RIA laufen. Eine Idee von Tomas Lin wirft auf, ob ein Groovy nach Objective-C Übersetzer als Grails Plug-In Sinn machen könnte.

Eine gute Linksammlung zu Sourcen diverser Grails Projekten findet man hier. Viel Spaß beim Lernen daraus und Happy Coding!

Groovy & Grails: Links der Woche

Glen Smith hat mit seinem Buch Grails in Action begonnen, und begründet damit sein Schweigen über die letzten Wochen. Von Ruhe kann allerdings nicht wirklich die Rede sein, immerhin gibt es fast alle 10 Tage eine neue Folge des Grails Podcast zu hören.

Der zweite Teil eines ausführlichen Artikels von Avi Flax zum Thema Building RESTful Web Apps with Groovy and Restlet ist erschienen, und beleuchtet anhand eines Beispiel den Zugriff auf Mailbox Resourcen mit einer Groovy Applikation.

Brian Guan führt nun einen Blog über Grails bei LinkedIn, der hoffentlich kontinuierlich über den Fortschritt berichten wird. Ganz interessant auf alle Fälle die Präsentation, die auf der JavaOne zum gleichen Thema gezeigt wurde (und der Vergleich zu appfuse).
Apropos Vergleich, in diesem kurzen Beitrag wird Grails gegenüber Alfresco vorgezogen, um großen Dateien (>10GB) hochzuladen und verwaltet.

Acrobat.com mit REST API gestartet

Mit dem heutigen Launch der Public Beta von acrobat.com stehen Entwicklern ab sofort die Acrobat.com Document Services zur Verfügung. Nach dem Registrieren erhält man einen API Schlüssel, den man für mehrere tausend Requests die Stunde verwenden kann, um z.B. Dokumente hochzuladen, mit Share anderen Leuten zur Verfügung zu stellen oder PDFs server-seitig zu erzeugen. Mehr darüber kann man nachlesen unter:

  • Einführung
  • REST API Referenz
  • Es existieren bereits Bibliotheken, um aus eigenen Programme darauf zuzugreifen für die Sprachen Java (bereitgestellt von Adobe), AS3, Python, Ruby und ColdFusion (alle anderen von der Community entwickelt)

Risotto bei Softpedia

Zugegeben etwas unerwartet hat mich heute vormittag die Mail von Softpedia fast vom Hocker gerissen, ich hielt es zuerst für einen verspäteten April Scherz. Hier zunächst der Originaltext der Mail:

Your product “Risotto 0.18 Beta” has been tested by the Softpedia labs and found to be completely clean of adware/spyware components.

We are impressed with the quality of your product and encourage you to keep this high standards in the future.

To assure our visitors that “Risotto 0.18 Beta” is clean, we have granted it with the “100% CLEAN” Softpedia award. Moreover, to let your users know about this certification, you may display this award on your website, on software boxes or inside your product.

Das bemerkenswerte daran ist, dass das letzte Release von Risotto auf den April 2002 zurück geht und ich mich nie darum bemüht hatte einen Eintrag (ausser bei freshmeat) dafür anzulegen. Grossen Respekt an Softpedia für die ausführliche Inspektion und das entgegenbrachte Vertrauen, eine gute Wahl: Risotto. Mein Favorit in Sachen RSS Newsreader wird allerdings nach wie vor Blogbridge bleiben.

Verkette Dich mit SnapLogic

Analog zu Yahoo Pipes bietet SnapLogic eine Open Source Lösung (in der Community Edition) an, mit der Informationen gefiltert, verknüpft und ausgeliefert werden können. Als Datenquellen können dazu RESTful web services eingebunden werden, das Administrieren der Pipelines geht mit dem SnapLogic Designer (einem Flex basiertem Tool) elegant von der Hand. Für Unternehmen wird ausserdem eine “Enterprise Edition” mit technischem Support angeboten. Macht einen guten Eindruck, bleibt abzuwarten ob die versprochene Really Simple Integration ein ähnlich großer Erfolg wie Really Simple Syndication (RSS) wird…

Karten Kollaboration in Flex

Christophe Coenraets hat seine interaktive Karten-Demo mit Flex nun auf die ActionScript 3 fähige Yahoo API upgedated, so dass man nun ohne AJAX auskommt (zuvor hatte die Demo Google Maps verwendet). Dadurch bleibt man der Benutzer ganz in der Flash Oberfläche, sehr interessant bestimmt auch um damit AIR Applikationen zu erstellen.

Darfs noch ein bisschen logisch sein?

Beim Thema Anemic Domain Model scheiden sich ja schon seit jeher die Geister. Auch in der Grails Gemeinschaft scheint man sich nicht ganz einig zu sein, ob nun in der Domain Klasse etwas (mehr) Logik angebracht sei oder nicht. Irgendwie sehr strikt scheint mir schon, dass jede Klasse im domain Package gleich auch persistiert wird, Hilfscontainer wandern dann schnell mal rüber in src/groovy. Auch Hilfsmethoden sind wohl besser ausserhalb der Domainklasse gesehen, allein schon um das ständige Durchstarten des Servers zu verhindern.

Der dazugehörige Thread in der grails user Mailing Liste, man darf gespannt sein, ob zukünftige Grails Versionen etwas “reichere” Domainschichten erlauben werden.

« Ältere Einträge

Warning: stristr() [function.stristr]: Empty delimiter in /var/www/web2/web/wp-content/plugins/wassup/wassup.php on line 2093