Category: Webentwicklung

MATHEMA Campus 2013

Der diesjährige MATHEMA Campus fand am 19. und 20. April am bewährten Ort, dem Novotel Erlangen, statt. Das Programm war wieder vollgepackt mit einer Fülle aus Vorträgen, gegliedert in vier Tracks: Sprachen, Mobil/Web, Qualität und Verschiedenes. Eine der schönen Besonderheiten am Campus ist, dass es nicht nur „tierisch“ ernste IT-Vorträge gibt, sondern auch solche zum „ganzen Rest“; so konnte man dieses Jahr z.B. etwas zur Faszination des Whiskys erfahren oder etwas über die Vorzüge des Barfuß-Laufens.

Hier möchte ich kurz über die von mir besuchten Vorträge berichten.

Tag 1

Kaffeesatz

Die Begrüßung leitete wieder Michael Wiedeking, der diesmal einen Rückblick zu 10 Jahren Campus und parallell dazu 10 Jahre (vermeintliche) Highlights der IT gab. Erstaunlich, wie viele Dinge man schon wieder vergessen hat oder vor fünf Jahren noch als wichtig eingestuft, die nun doch wieder in der Versenkung verschwunden sind …

We’re all in

Werner Eberling und Torsten Zahn berichteten von Ihrem internationalen Großprojekt bei Adidas. Es ging um den flexiblen Produktkonfigurator für individuell gefertigte Produkte, der sich in die gesamte Adidas IT-Infrastruktur integrieren musste. Neben den „üblichen“ technischen Herausforderungen gab es interessante Erkenntnisse zum Offshoring über mehrere Firmen und Länder hinweg zu hören.

Freches Früchtchen

Ralph Henze gab einen schönen Überblick über Google Guava, die „Core-Bibliothek“ für Java-Projekte. Ich hatte selbst schon einige Teile davon in den letzten Jahren genutzt (vor allem das Collections Zeug), dennoch waren für mich ein paar neue Dinge dabei. Beispielsweise das Optional<T> zur Vermeidung von null-Werten kann bei konsequenter Nutzung sehr zur Verbesserung der Codequalität beitragen. Aber auch die angebotenen Caches sind eine starke Sache – jeder, der sich sagt: „da mach ich mir mal schnell nen Cache mit einer HashMap“, sollte unbedingt in Erwägung ziehen, die Cache-Klassen aus Guava zu verwenden!

Ausgeswingt

Im kommenden Java wird Swing als @Deprecated markiert und die Verwendung von JavaFX empfohlen. Sascha Groß gab einen praxisnahen Überblick zum aktuellen Stand bei JavaFX 2.0. Nachdem ich bei den älteren Versionen von JavaFX beschlossen hatte, dass es nicht lohnt, dieses Thema weiter zu verfolgen, war ich von der Entwicklung doch einigermaßen positiv überrascht! JavaFX 2.0 kommt recht solide daher und einem gestandenen Swing-Entwickler sollte der Umstieg nicht schwer fallen. Auch das Tooling und Showcases sind schon auf einem recht guten Stand, so dass es sicher Spaß machen kann, seinen GUI-Client mit dem Framework zu entwickeln.

I, Robot

Für mich und meinen Sohn Nico (8) (nochmals danke an Mathema für die „Sondereinladung“) war dies ein ganz besonderes Highlight: Jan Leßner erzählte über seine Erfahrungen mit Kindern in Sachen Programmieren lernen. Er leitet eine AG für Schüler der 5. bis 7. Klasse an einem Paderborner Gymnasium. Zunächst lernen die Kinder die nötigen Denkstrukturen mit Hilfe der Software CeeBot Teen. Hier programmieren die Schüler Autos, die über den Bildschirm in virtuellen Räumen fahren und Aufgaben lösen (und ja, die können sogar schießen 😉 )

Mit diesem Vorwissen geht es dann an die Programmierung von LEGO Mindstorms Robotern mit LEJOS, einer Java-basierten Umgebung unter Verwendung von Eclipse. Nach Jans Erfahrung lernen die Jungs und Mädels(!) sehr schnell den Umgang mit Eclipse, insb. Autovervollständigung, Format, Organize Imports und so weiter.

Nach dem Abendessen konnten wir das Ganze dann in der Praxis ausprobieren: wir sollten einen fahrenden Roboter mit Ultraschall- und Drucksensor ausgestattet, so programmieren, dass er an einer Wand entlang fahren kann und Hindernisse dabei umfährt. Die 75min reichten gerade so, dass die meisten Teams eine in erster Näherung funktionierende Implementierung hatten. Unser Bot war sogar der erste, der den Parcour erfolgreich bewältigte, mein Junior war sehr stolz 🙂

Best of Highlights

Der traditionelle Filmvortrag am späten Abend zeigte wieder Sensationen der Computergrafik in Filmen und allerlei lustige Ausschnitte.

Tag 2

(conj known-languages :closure)

Eine sehr schöne Einführung in die funktionale Programmiersprache Clojure lieferte uns David Tanzer. Er hatte keine Folien dabei, stattdessen wurde fleissig Live-gecoded – ein erfrischender Start in den zweiten Tag des Campus. David verwendete den Editor Light Table, welcher die Ausdrücke sofort während des Tippens sehr schön dargestellt auswertet.

Make-Up fürs Web

Da die Session zu Raspberry Pi leider ausfallen musste, ging ich in den CSS3 Vortrag von Rüdiger Keller. Für mich gab es hier nichts wirklich Neues, aber die Zahl der Fragen aus dem Publikum zeigte mir, wie wichtig so ein Vortrag aktuell ist.

Mein Name ist Script, JavaScript!

Von diesem Vortrag war ich leicht enttäuscht, da mir das Abstract etwas mehr versprochen hatte. Frank Goraus präsentierte eine solide Einführung in die Grundlagen von JavaScript, aber eben nichts darüber hinaus. Meiner Meinung nach dürfte für jeden, der schon ein bisschen mit der Sprache zu tun hatte, nichts neues dabei gewesen sein.

Real existent

Zum Abschluß gabs nochmal ein Highlight: Michael Wiedeking zeigte den aktuellen Stand zu seiner perfekten Programmiersprache ALx (Arbeitstitel, der wohl nicht der finale Name werden wird). Mittlerweile gibt es tatsächlich einen Compiler (der leider noch nicht vollständig funktioniert) und ein Eclipse-Plugin, das es ermöglicht, die nötigen mathematischen Zeichen einzugeben. Allerdings bereitet die Auswertung von Ausdrücken (Reihenfolge der Operatoren) „MiWi“ doch noch größere Probleme …. man darf gespannt bleiben!

Fazit

Der Campus war wieder mal eine Top-Veranstaltung, an die manch größere Konferenz nicht herankommt. Vielleicht ist es ja gerade die herzliche Atmosphäre und der eher kleine Kreis, der die Magie dieser zwei Tage ausmacht. Vielen Dank an das gesamte MATHEMA-Team und ich freue mich schon aufs nächste Jahr!

Share

MATHEMA Campus Tag 2 (25.02.2012)

Campus Besucher

Den zweiten Tag des MATHEMA Campus konnte ich aufgrund privater Verpflichtungen leider erst am Nachmittag genießen, so dass ich mir nur zwei Vorträge anhören konnte, die ich nun kurz erläutere.

Vor zwei, drei Jahren hatte ich es mir schon mal angesehen, nun gab es einen Vortrag dazu: das Play Framework. Und ich muss sagen, es hat sich viel getan! Mit Play werden stateless Webanwendungen entwickelt, bei denen man im Frontend in ganz normalem HTML mit ein paar extra Tags arbeitet, die seitens Play dann mit Leben erfüllt werden. Alles ist sauber und streng nach einer MVC Architektur gegliedert. Auf der Konfigurationsseite muss man sich im wesentlichen nur um eine Datei kümmern, die für das Routing von URLs zu den passenden Controllern zuständig ist. Alles in allem eine sehr schöne Sache, die Spaß macht und einfach zu erlernen ist. Auch zahlreiche Erweiterungen sind bereits auf dem Markt. Leider wurde mir noch nicht klar, wie gut die Sache für große Projekte einsetzbar ist, was ja auch am Play Server hängt – viel Erfahrung gibt es scheinbar noch nicht.

Als letzten Vortrag besuchte ich Michael Wiedekings Da Capo, bei dem  es um die Vorstellung des aktuellen Stands seiner derzeit in Entstehung befindlichen Programmiersprache (Arbeitstitel ALx) ging. Aktuell ist die Sprache erst mal auf ein mathematisch sauberes Fundament gestellt und vor allem konzeptionell existent. Die konkrete Erstellung eines Compilers, sowie die syntaktischen Details sind derzeit noch offen – „versprochen“ wurde aber, dass es zum Herbstcampus etwas zu sehen gibt. Alles in allem ein interessanter Ansatz mit einer begeisternden Definition – bin schon gespannt auf die nächsten Fortschritte.

Insgesamt hatte ich viel Spaß, interessante Themen, nette Leute, coole Ideen und Inspirationen – was will man mehr. Freue mich schon auf den Herbstcampus!

Share

MATHEMA Campus Tag 1 (24.02.2012)

Der erste Tag des diesjährigen MATHEMA Campus hat mir großen Spaß gemacht. Hier ein kurzer Bericht über die von mir besuchten Vorträge. Den Einstieg machte wie üblich, Michael Wiedeking mit frei vorgetragenen Analysen, Berichten und Betrachtungen rund um die Entwicklung aktueller Programmiersprachen.

Mein Favorit in diesem Jahr war gleich der erste Vortrag: Remote Control. Hier stellte Marco Knüttel die OpenSource Elektronik Plattform Arduino im Zusammenspiel mit Android vor. Absolut faszinierend, was man hier für wenig Geld so alles basteln kann. Vorgestellt wurde die Fernsteuerung eines Ferienhauses (Kameras, Heizungssteuerung, Sensoren) und ähnliches im Wohnmobil. Ich hoffe, dass ich bald Zeit finde, mich hier etwas rein zu vertiefen 🙂

Unter dem Titel Scriptease.js bot Golo Roden ein unterhaltsames Live-Coding in Sachen Javascript. Gerade für jemanden wie mich, der zwar oft mit JS arbeitet, dort aber kein echter Experte ist, waren sehr viele nützliche Tipps und Hinweise dabei. Vor allem Dinge, die einem eine zeitraubende Fehlersuche bescheren können, z.B. etwas wie: null + „ify“   // => „nullify“ ! Sein Fazit: „Nie vergessen, dass Javascript keine C-basierte Sprache ist, so sehr sie danach auch aussieht, sondern ihre Wurzeln bei LISP/Scheme hat!

Werner Eberling brachte eine praxisnahe Einführung in PhoneGap und jQuery Mobile – eine Kombination, die auch mein Topfavorit für eine schnelle Möglichkeit ist, native Apps auf allen gängigen mobilen Plattformen zu generieren.

Arduino Schlachtfeld

Sehr interessant, wenngleich aktuell noch nicht praxistauglich, war der Vortrag zu Web Intents von Willie Chieukam. Web Intents hat die Verknüpfung von Webseiten bzw. webbasierten Anwendungen mit nützlichen Diensten zum Ziel. Beispiel: Eine Webseite möchte die Möglichkeit bieten ein hochgeladenes Bild zuzuschneiden. Statt nun selbst ein Javascript-Monstrum zu implementieren, gibt man auf der Seite einfach an, dass man einen Service zum Zuschneiden benötigt. Der User kann dann aus einer Auswahl von Diensten wählen und dort sein Bild zuschneiden, welches bearbeitet zur Webseite zurück kommt. Die Auswahl kann im Browser für spätere Aufrufe gespeichert werden.

Nach einem guten Abendessen gab es eine Publikumsdiskussion mit dem Thema, ob die Objektorientierung sich überlebt hat. Ein echtes Fazit kam nicht zustande, aber die bekannten Probleme (Mehrfachvererbung, Vererbungshierarchien, Mapping Objekt zu relationaler DB, …) wurden heiß diskutiert.

Einen lustigen Abschluß bildete der späte Abend: unter dem Titel „Desaströs“ wurden Filmausschnitte gezeigt, bei denen so einiges schief geht – untermalt von entsprechend amüsanten Kommentaren seitens Michael Wiedeking.

Share

Problem: rich:editor eingebettet in rich:modalPanel

Mal wieder so eine kleine Sache, an der man unnötig hängen bleibt und auf deren Lösung man ohne googeln kaum kommen kann.

Ausgangsstellung: Ich hatte in meiner JSF-Oberfläche mit RichFaces einen modalen Dialog eingebaut, der unter anderem einen Editor enthalten soll. Eigentlich ganz easy, nichts besonderes. Der Code sah vereinfacht und gekürzt in etwa so aus:

1
2
3
4
5
6
7
8
9
10
<rich:modalPanel id="editpanel" autosized="true">
	<h:form>
		... (andere Komponenten) ...
		<rich:editor id="editor" width="400" height="100" value="#{myBean.dialogBeschreibung}" />
		<a4j:commandButton value="Speichern" action="#{myBean.dialogSpeichern}" 
			oncomplete="#{rich:component('editpanel')}.hide();" reRender="treepanel" />
		<a4j:commandButton value="Abbrechen"
			onclick="#{rich:component('editpanel')}.hide();return false;" />
	</h:form>
</rich:modalPanel>

Eigentlich alles ok, oder? Also gut, ‚mvn tomcat:redeploy‘ … ein bisschen einwirken lassen … Firefox auf, testen. Der Dialog springt sofort auf, aber der Editor ist tot, nicht mal den Cursor kriegt man zum blinken. Und auch der ‚Speichern‘-Knopf zeigt keine Reaktion.

Die Lösung (besser: den Workaround) liefert JBoss.org Issue RF-7477 bzw RF-5268: Im modalPanel ist domElementAttachment=“parent“ zu setzen. Zeile 1 von oben sieht dann also so aus:

<rich:modalPanel id="editpanel" domElementAttachment="parent" autosized="true">

Was lernt man daraus? Keine Ahnung, wohl das was wir schon oft gelernt haben: „Kaum macht mans richtig, schon gehts …“

Share