Am 21. und 22.08. fand für mich die 2. Free and Open Source Software Conference FrOSCon in St. Augustin bei Bonn statt. Der Hauptgrund für meinen Besuch im letzten Jahr war ein ausgedehnter Java-Track, ich war jedoch von der Atmosphäre und der Vielfalt der Themen so begeistert, dass die Konferenz für mich sicher ein regelmäßiges Ereignis sein wird.
Die Gelegenheit soll natürlich genutzt werden, um ein paar interessante Vorträge aus diesem Jahr vorzustellen, um dem ein oder anderen vielleicht auch Lust auf einen Besuch zu machen.
Ein recht verbreitetes Thema, das unter anderem gerne im leider eingestellten Stackoverflow-Podcast oder auch in diversen Büchern angesprochen wird, ist der Nutzen für die eigene Karriere, den man sich durch ein offenes Arbeiten in einer Community erarbeiten kann. Lorna Jane Mitchell beschrieb in “Open Source Your Career” recht unterhaltsam von Ihren Anfängen in der PHP-Community und den ersten Auftritten auf Konferenzen. Eine Anreiz für mehr Engagement.
Obwohl ich mit den Grundlagen schon vertraut war, waren zwei Vorträge zu MongoDB interessant: Einer über MongoDB im generellen von einem Mitarbeiter von 10gen, der Firma hinter der Datenbank, und einen zur Integration in Ruby on Rails von Jan Krutisch. Auch wenn die horizontale Skalierung für mich momentan noch keine große Rolle spielen wird, kann ich mir vorstellen, dass der dokumentenorientierte Ansatz auch beim Einsatz auf einer Maschine Vorteile bringen kann. Ich plane das an einem konkreten Problem einmal auszuprobieren, einfach nur um zu wissen, wie sich die Entwicklung anfühlt.
“Mobile Linux Development” von Christian Küster ging mit einem für mich neuen Blickwinkel auf ein bekanntes Thema zu: Wie unterscheiden sich die unterschiedlichen Linux-basierten mobilen Betriebssysteme in Bezug auf die Zugriffsmöglichkeiten auf die Kernkomponenten, welche erlauben beispielsweise ein Austauschen des Kernels oder den Zugriff auf Systemkomponenten. Android schnitt bei diesen Aspekten relativ schlecht ab, Maemo scheint die meisten Freiheitsgrade zu bieten. Für die Entwicklung auf den Geräten spielt die dies meiner Meinung jedoch eine recht geringe Rolle, solange höherwertige Funktionen angeboten werden, mit denen die benötigten Funktionalitäten abgedeckt werden können.
Der Vortrag, wegen dem ich mich eigentlich zum Besuch der FrOSCon entschlossen hatte, Ruby on Rails 3 von Yehuda Katz, war leider nicht so technisch, wie ich ihn mir gewünscht hatte. Gerade da er von einem Mann aus dem Merb-Team gehalten wurde, hätte ich mir einen Überblick über die Unterschiede zwischen den Versionen gewünscht. Merb war ehemals ein Konkurrenz-Framework und geht mit Version 3 in Ruby on Rails auf. Auch wenn mir die technischen Konzepte gefehlt haben war der Einblick in die Arbeit des Rails-Teams dann doch interessant.
Kurzfristig eingeschoben wurde ein Talk von Rainer Jung zu den Neuerungen in Apache httpd 2.4. Besonders die Anforderungen an einen Webserver, die sich durch die stark steigende Anzahl an Connections durch die Verbreitung von AJAX-Anwendungen und das Offenhalten der Connections durch Techniken wie WebSockets/Comet ergeben, waren spannend. Beeindruckend, dass Rainer Jung es nicht nur schafft, in zwei so wichtigen Projekten wie dem in C geschriebenen httpd und dem in Java geschriebenen Servlet-Container Tomcat Core-Committer zu sein, sondern auch beide Projekte gleichwertig vertreten kann, indem er Samstags ein Tomcat-Shirt und Sonntags ein Apache-Shirt trägt
.
Alles in allem war die FrOSCon auch in diesem Jahr wieder außerordentlich lohnend. Die lockere Atmosphäre ist mit keiner anderen Konferenz, die ich kenne, zu vergleichen, was sicher einerseits an dem Termin am Wochenende liegt und andererseits daran, dass die Konferenz weniger businesslastig ist, als die mir bekannten Java-Konferenzen. Trotzdem kann man jede Menge neuen Input für die tägliche Arbeit bekommen, ein Besuch lohnt sich also nicht nur wegen des extrem niedrigen Eintrittspreises von 5€.
Und noch ein praktischer Tipp am Rande: Wer kein Problem mit einem kleinen Fußmarsch hat, ist beim sehr freundlichen Wirt im Laternchen bestens aufgehoben.
Apache · FrOSCon · konferenz · mobile · MongoDB · open source · Ruby on Rails
17
iPhone, Partner und Spinnen – holla the woodfairy
No comments · Posted by Katja Arrasz in Synyx Blog
Wie passt das alles zusammen? Ganz einfach …
“Holla the woodfairy – holla die Waldfee”. Was haben wir gelacht über diese und noch viele weitere “Übersetzungen” auf der Website “I think I spider“. Und da lachen bekanntlich gesund ist, kamen wir schnell zu dem Entschluss noch mehr Menschen zum Lachen zu bringen. Was liegt da also näher, als eine iPhone App zu diesem Thema zu entwickeln? David Linsin, Ansprechpartner für den Geschäftsbereich Mobile Solutions, war sofort begeistert von dieser Idee und nahm Kontakt mit dem Betreiber der Website auf. Mit seiner Erlaubnis fiel der Startschuss für die unkommerzielle Entwicklung der App.
Eine gut durchdachte und funktionierende App ist aber nicht alles. Das Auge isst bekanntlich mit. Also hieß es für uns jemanden zu finden, der genauso begeistert von dieser Idee ist und das Ganze auch noch grafisch umsetzen kann. Dieser war schnell gefunden: Lars von upstruct. Die Zusammenarbeit hat hervorragend geklappt und wir sehen auch für die Zukunft gemeinsame Projekte vor.
Entstanden ist eine feine, kleine, lustige App, welche sich zurzeit in der Betaphase befindet. Wir sind schon auf das Feedback gespannt und freuen uns auf die Version 1.0! Wer auf dem Laufenden bleiben will, soll einfach den Mobile Solutions Blog im Auge behalten. Dort werden alle Neuigkeiten und Infos zu dem Thema gepostet.
App · I think I spider · iphone · mobile · Partner
20
Dependency Hell or Including JSR303 into a hibernated JavaEE App
No comments · Posted by Joachim Arrasz in Synyx Blog
Today i integrated the JSR303 reference implementation, which is Hibernate-Validator 4.x, into an existing JavaEE application. The application is built on Spring 3.0 and uses our Synyx Hades project, which is also based on Spring, as an OR-Mapper. (http://redmine.synyx.org/projects/show/hades)
First I just followed the Spring tutorial which is quite simple and straight forward. (http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/validation.html#validation-beanvalidation-spring)
After a redeploy and writing an example bean and a test for it, it was just disappointing because nothing worked and the stacktrace was not really helping at a first look.
testProperty(org.synyx.jsr303.validation.ValidatorTest) Time elapsed: 0.002 sec <<< ERROR! java.lang.NoSuchMethodError: javax.persistence.Persistence.getPersistenceUtil()Ljavax/persistence/PersistenceUtil; at org.hibernate.validator.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:33) at org.hibernate.validator.engine.resolver.DefaultTraversableResolver.isReachable(DefaultTraversableResolver.java:112) at org.hibernate.validator.engine.resolver.SingleThreadCachedTraversableResolver.isReachable(SingleThreadCachedTraversableResolver.java:47) at org.hibernate.validator.engine.ValidatorImpl.isValidationRequired(ValidatorImpl.java:761) at org.hibernate.validator.engine.ValidatorImpl.validatePropertyForGroup(ValidatorImpl.java:562) at org.hibernate.validator.engine.ValidatorImpl.validateProperty(ValidatorImpl.java:496) at org.hibernate.validator.engine.ValidatorImpl.validateProperty(ValidatorImpl.java:131) at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validateProperty(SpringValidatorAdapter.java:118) at org.synyx.jsr303.validation.ValidatorTest.testProperty(ValidatorTest.java:64) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180) at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127) at org.apache.maven.surefire.Surefire.run(Surefire.java:177) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345) at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
Why did I get an exception from a class called PersistenceUtil while just doing some validations via JSR303? Well, after reading the specification for JSR303 and some related blog entries, the solution is quite simple. JSR303 specification manifests, that if a class PersistenceUtil is in the classpath, the JPATraversalResolver has to be integrated into the validation as well. If afterwards the method getPersistenceUtil() is getting called, its obvious that this method is not available due to the fact that it is just a simple name matching.
Now I had THREE questions instead of one
:
* Why is there a class called PersistenceUtil in my classpath while I DON’T use any JPA2 library (And this class is only relevant for JPA2) – well this is surely just because the Hibernate guys had chosen the same name. Anyway, why the JPA2 guys used names like “PersistenceUtil” ????
* Why the specification manifests that if a class called PersistenceUtil is in classpath, there must be also a JPA validation?
* Why they do not additionally check against the needed method getPersistenceUtil() as well?
Anyway, as I needed a workaround, I checked the projects classpath… and I found my class PersistenceUtil but it was in a jar called “ejb3-persistence-1.0.1GA.jar” – don’t ask me, why there also is a class called PersistenceUtil (btw. I hate ANY classes with *UTIL* in its name). I googled around a bit and found more people, who had the same problem and the fix is really really easy. The guys who maintained the jar, fixed the problem due a little refactoring in version 1.0.2GA.
So the only thing to do was to update this dependency in pom.xml to 1.0.2GA and everything went fine… Took me three hours to find out
architecture · dependencyhell · Dependencymanagement · Java · Maven · synyx
There’s a lot going on over at the mobile solutions blog, so in case you are not subscribed to our feed, which I hope you are, you can grab it here. In order to convince you to hook your favorite reader up to our mobile blog, I’ll highlight a couple of blog posts for you.
Tobias’ post “Android and self-signed ssl certificates” gained a lot of attraction over the past couple of weeks. He basically brings you up to speed on how to tweak Android’s version of Apache Commons Http to work with your own certificate:
Dealing with self-signed ssl certificates is a real pain, because it’s not that simple to add them in your app and let android accept them.
But fortunately, there’s a workaround that uses an own SSLSocketFactory and an own TrustManager. With this, only your added site is beeing able to be called, so theres no security issue.
Another blog post I’d like to point out is by yours truly, on “UI Prototyping iPhone Apps”. It covers a very simple concept and provides you with a framework to employ it in your App development:
I watched a whole bunch of sessions from 2009. Among others a session on “Prototyping iPhone User Interfaces” by Bret Victor… In his session, Bret shows how to prototype an interface only by using with screenshots! … It inspired me to use his framework and the whole process for our own development… Unfortunately, the code for the session isn’t available … After some digging, I found Michael Fey’s blog, who was able to successfully reverse engineer the missing parts, which were not shown in the presentation.
I hope by this time you have already subscribed to our mobile blog and discovered a couple of interesting posts, that our team put together over past couple of months.
android · apple · iphone · mobile
I have just been fighting with the sql-maven-plugin while trying to import an OpenCms MySQL dump automatically. The module wasn’t really verbose with an error message:
[ERROR] Failed to execute: INSERT INTO `CMS_CONTENTS` VALUES
followed by printing the rest of the dump to the standard output.
Fortunately my colleague Marc pointed me to the right direction: The dump contains some statements that can’t be executed by JDBC. To create a correct dump for usage with pure JDBC or with the sql-maven-plugin the following command has to be applied:
mysqldump --hex-blob -u root -p opencms752 > install/opencms752.sql
When developing web apps with Maven the de facto standard for running the app is to use the excellent Maven Jetty Plugin which runs the project in an embedded Jetty server. When configured, it can either run the project from the war file directly via mvn jetty:run or in exploded mode where the war is unpacked before being run (mvn jetty:run-exploded). This noticably speeds up development as there is no need to manually deploy the artifact to a server.
But if the production system does not run on Jetty but on Tomcat you might run into some problems:
- Some redirects from AJAX calls do work on Jetty but do not work on Tomcat
- When submitting some forms on Jetty the parameters get lost
The latter can be noticed when running OpenCms on Jetty: Saving from the editor causes an error because the parameters are not available to OpenCms.
Fortunately there is a viable alternative: The Tomcat Maven Plugin. Besides providing several options to deploy artifacts to an external server it can also be run in an embedded mode.
This is how the plugin is configured:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
</plugin>
It can be run using mvn tomcat:run and mvn tomcat:run-war for running in unpacked war mode.
Using this plugin you can be sure that the features your servlet container provides in production are the same during development.
Development · Java · Jetty · Maven · Tomcat
Hallo zusammen,
ich heiße Steffen Welp und habe heute den letzten
Tag meines 14-tägigen Praktikums als Fachinformatiker
für Systemintegration.
Der Kontakt kam durch meine Bewerbung beim Cyberforum e.V.
in Karlsruhe zustande. Dieser hatte zum Meet`n Greet zwischen
Bewerbern und ausbildenden Unternehmen eingeladen.
Dabei lernte ich Herrn Ferstl kennen, welcher mich spontan
zu einem weiteren Gespräch in den Geschäftsräumen der
Firma einlud. Bei diesem zweiten Treffen wurde dann der
Praktikumstermin vereinbart.
In den letzten beiden Wochen hatte ich nun das Glück
dem Treiben in der Firma beiwohnen zu dürfen und bin nachhaltig
schwer begeistert.
Zu Beginn wurde ich mit den Basics des Shellbedienung und
auch des -programmierens innerhalb von Linux vertraut gemacht.
Dies habe ich auch im Eigenstudium dann bis heute weitergeführt,
und werde es wohl auch privat fortsetzen.
Als weiteres konnte ich meinen beiden Kollegen Herrn Ferstl und
Herrn Ruessel täglich über die Schulter schauen. Beide waren
immer hilfsbereit und haben mir bei Schwierigkeiten stets unter
die Arme gegriffen. Abschließend stand in der zweiten Woche noch
die Wartung der Hardware an, damit diese an warmen Sommertagen
auch weiterhin zuverlässig arbeitet.
Vielen Dank an alle Mitarbeiter und -streiter der Synyx GmbH
für die freundliche Aufnahme und der Hilfestellung bei allen
wichtigen Fragen!
Diese 14 Tage haben mich in der Wahl meines gewünschten Berufs-
bildes bestätigt und ich würde mich sehr freuen, dürfte ich mit
ins Boot springen und im September hier eine Umschulung beginnen!
Ich drück der Synyx GmbH ganz fest die Daumen, daß ihr Konzept
weiterhin aufgehen möge und sie der IT-Welt noch lange erhalten
bleiben.
Gruß
Steffen Welp
No tags
… bis zum Ende meiner dreijährigen Ausbildung zum Fachinformatiker Systemintegration.
Gestern durfte ich im Rahmen einer feierlichen Abschlusszeremonie in der Heinrich-Hertz-Schule, mit live-Musik und mehr oder weniger spannenden Reden von verschiedenen Vertretern der Schule, der IHK, und Ausbildungsbetrieben, mein Abschlusszeugnis, welches das Bestehen der Abschlussprüfung bescheinigt, entgegen nehmen. *freu*
Einen kleinen Wermutstropfen birgt die Sache dann doch, das war nun das allerletzte mal (offiziell zumindest) mit den Jungs aus meiner Klasse und den Lehrern und Lehrerinnen der HHS, ja es gab/gibt einige die man wirklich vermisst. Ich werde noch lange Geschichten erzählen können, die mit “Und einmal in der Berufsschule…” anfangen.
Aber jetzt heißt es noch einmal “Daumen drücken”, am 22. Juli findet die Abschlusspräsentation meines Abschlussprojektes vor der IHK und ein anschliessendes Fachgespräch (man wird gelöchert ob man sich denn wirklich mit der Materie befasst hat) statt.
Anschließend werde ich aller Voraussicht nach das Team Synyx (Fußball-Metaphern sind derzeit so modisch) auch in Zukunft, dann aber als vollwertiger Informatiker, tatkräftig unterstützen.
Ausbildung · Fachinformatiker · synyx
24
Initiative Rheumapreis: Interview mit Christian Vedder (BIH)
No comments · Posted by Katja Arrasz in Synyx Blog
Heute blogge ich zu einem Thema, welches auf den ersten Blick recht wenig mit Synyx zu tun hat. Im Interview mit Christian Vedder, Geschäftsführer der BIH, zur Initiative Rheumapreis wird erörtert, was sich hinter der Initiative verbirgt. Aber was hat das nun mit Synyx zu tun? Unsere Unternehmensphilosophie beinhaltet unter anderem, sich für soziale Zwecke einzusetzen. Dazu gehört auch, am Arbeitsplatz den Mitarbeitern die bestmöglichen Bedingungen zu schaffen. Egal, ob sich das auf die technische Entwicklungsumgebung, den Wissenstransfer oder auf die physischen Arbeitsplatzbedingungen bezieht. Mit der BIH besteht bereits seit Jahren eine Zusammenarbeit, mit der Initiative Rheumapreis seit ca. 2 Jahren. Und so ist es für uns selbstverständlich unsere Unterstützung anzubieten, um dieses Thema aktuell zu halten.
Und nun zum Interview.
Über Christian Vedder und die BIH
Die Abkürzung BIH steht für (Bundesarbeitsgemeinschaft der Integrationsämter und Hauptfürsorgestellen). Die BIH ist der Zusammenschluss aller Integrationsämter und HauptfürsorgesteIlen in Deutschland. Sie erarbeitet Empfehlungen zur Umsetzung des Schwerbehindertenrechts, vertritt ihre Mitglieder in Gremien auf Bundesebene und bei Absprachen mit anderen gesetzlichen Leistungsträgern. Die Integrationsämter nehmen gesetzliche Aufgaben im Rahmen der Beschäftigung schwerbehinderter Menschen auf dem allgemeinen Arbeitsmarkt wahr und fördern die berufliche Chancengleichheit von schwerbehinderten Menschen. Christian Vedder ist Geschäftsführer der BIH.
Was verbirgt sich hinter der Initiative RheumaPreis?
Der RheumaPreis ist eine Initiative mit dem Ziel, die beruflichen Chancen von Menschen mit entzündlich-rheumatischen Erkrankungen zu verbessern und zu mehr Offenheit im Umgang mit dem Thema „Rheuma in der Arbeitswelt“ anzuregen. Im Mittelpunkt stehen dabei die Patienten, aber auch die kreativen Lösungen, die sie mit ihrem Arbeitgeber gefunden haben, um Arbeitsfähigkeit und Selbstständigkeit am Arbeitsplatz zu erhalten. Die Geschichten der Preisträger sollen Vorbildcharakter haben, denn noch immer scheiden viele Arbeitnehmer mit Rheuma vorzeitig aus dem Berufsleben aus. Meist geschieht dies weniger aus medizinischer Notwendigkeit heraus, als vielfach aufgrund mangelnden Wissens über die zur Verfügung stehenden Möglichkeiten für eine berufliche Integration. Auch darauf möchte die Initiative aufmerksam machen.
Mit welchen Beweggründen unterstützt die BIH den RheumaPreis? Was für eine Bedeutung hat der RheumaPreis für den BIH?
Die berufliche Integration behinderter Menschen ist nicht allein mit Gesetzen und finanziellen Mitteln zu erreichen. Sondern es braucht kreative Ideen, die anderen als Vorbild dienen, so wie die RheumaPreis-Beispiele. Die Initiative verbindet alle Elemente, die auch für die BIH wichtig sind: Einfallsreichtum und Innovation, aber auch Bodenhaftigkeit und Umsetzungswillen. Genau deshalb unterstützen wir den RheumaPreis.
Wie ist das Auswahlverfahren der Preisträger(-innen)? Welche Aspekte berücksichtigen Sie besonders?
Es ist natürlich nicht einfach, die Gewinner aus all den Bewerbungen auszuwählen. Denn die vorgestellten Lösungsansätze sind so verschieden und deshalb schwer miteinander zu vergleichen. Dennoch haben wir feste Kriterien, anhand derer wir unsere Wahl festmachen, damit die Auswahl objektiv bleibt. Grundsätzlich wichtig ist für uns zu sehen, ob die Lösungen auch tatsächlich dauerhaft umsetzbar sind. Mit Blick auf die Zusammenarbeit achten wir besonders auf das Einfühlungsvermögen, Verständnis und Entgegenkommen der Arbeitgeber. Eine positive Einstellung und der Wille nicht aufzugeben sind Faktoren, die wir beim Arbeitnehmer verstärkt berücksichtigen.
Was für eine Bedeutung hat der RheumaPreis für die Gewinner?
Für die Gewinner ist der RheumaPreis sicherlich mehr als nur „ein Preis“. Viele von ihnen mussten in ihrer beruflichen Laufbahn diverse Hürden überwinden, Niederschläge verkraften und haben dennoch niemals aufgegeben. Der RheumaPreis soll den Gewinnern zeigen, dass sich dieser harte Weg gelohnt hat und sie sehr vielen Menschen in Deutschland damit als Vorbild gelten sollten. Er zeichnet ihren Mut, ihr Durchhaltevermögen, ihren Willen und ihren Optimismus in besonderer Weise aus.
Vielen Dank für das Interview.
No tags
In my last summary I forgot to mention, that I will be at WWDC this year. Now WWDC is over, I just got back and if you want to know more, checkout my blog post here. While I was gone, our team was busy publishing all sorts of good stuff!
Let’s start with the release of Android’s FroYo last month! Achim wrote a nice blog post highlighting the noteworthy features:
FroYo is like each previous version a mixture between API Changes, new Userfeatures and some new cool Apps….New API-Features:
- Data Backup API
- Possibility to save passwords secure
New User Features:
- updated Exchange Features
- Remote Wipe
New Apps:
- Camera and Camcorder updated (possible to enable manually the leds for usage within camcorder)
- Android Tethering and Usage as Hotspot
Florian, our Maemo guy, followed our Google Maps theme and published the first part of a nice introduction of Google Maps on Maemo 5:
The idea is quite simple. Webkit will render a webpage insider your app. That webpage consists of javascript methods which use the Google Maps-API. The javascript methods can be triggered from the app. The map class acts as proxy for the communication between your app and the website. Quite simple hm?
This is only a small sneak peak of what’s going on over at the mobile solutions blog. I suggest you add it to your favorite feed reader and check it out regularly.