Februar 23rd, 2009 Development, Open Source| 1 Comment »
Man könnte sagen, dass es prinzipiell zwei Wege gibt, bestimmte komplexe aber unabhängige Teilfunktionalitäten eines Systems zu entwickeln:
- Alles selbst entwickeln
- freie Frameworks, APIs und SDKs nutzen und zu einem größeren Ganzen zusammenstecken.
Natürlich ist das auch abhängig von der Art der Software, die man entwickelt, für welche Firma man entwickelt und wie die Rahmenbedingungen aussehen. In meinen Erfahrungen zeigte es sich oft so: Man steht vor einen riesigen Aufgabe, der man aufgrund fehlender Resourcen (sei es Wissen, Zeit oder die Teamgröße) als nicht lösbar erachtet. In einigen Fällen wird man diese Aufgabe komplett ablehnen, in einigen Fällen wird man sich für eine leichtgewichtige Version entscheiden, die nur einen Teil der gestellten Aufgabe abbildet und in einigen Fällen wird man anfangen zu entwickeln und am Ende kläglich an den hohen Anforderungen scheitern.
Der oft einfachste Weg solche Aufgaben ohne Probleme mit den gegebenen Resourcen lösen zu können ist die Nutzung von OpenSource Frameworks. Für beinahe jede Aufgabe gibt es bereits eine angemessene Lösung beziehungsweise eine unterstützende Komponente, die es dem Entwicklerteam ermöglicht sich auf das wichtige konzentrieren.
Ich möchte fünf Beispiele nennen, in denen mir und meinem Team ein oder mehrere OpenSource Produkte halfen Problemlösungen zu entwickeln, für die man normalerweise weitaus mehr Zeit und Manpower benötigen würde.
Beispiel 1: Implementierung einer flexiblen Enterprise-Datenbanksuche für ein bestehendes PHP-MySQL System
Das Problem: Wir hatten es mit einer sehr großen, absolut unperformanten MySQL - Datenbanklösung zu tun: Ein Verbund von ca. 200 Tabellen mit bis zu 18 Mio Einträgen und jeweils 50 Feldern. Die Tabellen sind weder normalisiert noch auf Feldebene optimiert. Suchanfragen können ausschließlich über zwei statische Hash-Werte durchgeführt werden. Jede andere Suchanfrage legt die Datenbank für mehrere Minuten lahm. Dieser Zustand war für den Bestand des Gesamtsystems inakzeptabel, ein komplettes Re-Design der Lösung jedoch aus Kostengründen nicht möglich. Aufgrund der hohen Komplexität des Systems spielt hier auch das Risiko des Unverhersehbaren eine bestimmte Rolle. Des weiteren musste berücksichtigt werden, dass das gesamte Restsystem, in dem Datenbankzugriffe stattfinden, in PHP programmiert wurde. Was tun?
Die Lösung: Lesende Anfragen sollen von der Datenbank gelöst werden. Im gleichen Atemzug sollen Suchanfragenunschärfen zulassen und idealerweise schnell sein, die Datenbank aber nicht weiter belasten. Nach langem überlegen und planen, nach dem Ausschluss diverser zunächst vielversprechender dann aber nicht tauglicher Alternativen sind wir auf eine Lösung gestoßen:

Apache Lucene Solr
Apache Solr. Dabei handelt es sich um einen auf Lucene basierenden Enterprise Suchserver. Durch dieses Produkt konnten wir unsere Ziele allesamt erreichen und benötigten dafür geradeeinmal 2 Entwickler, die drei Wochen an der Integration arbeiteten. Solr erlaubt es anhand einer Webserviceähnlichen Schnittstelle über HTTP Anfragen zu stellen und die flexible Konfiguration der Indexstruktur. Wir haben eine auf Suchanfragen optimierte Struktur geschaffen, und damit die gesamte Datenbankstruktur auf Solr abgebildet. Die Aktualität des Index wird gewährleistet indem wir mit Hilfe von Triggern eine Update Tabelle füllen, die in lurzen Zeitabständen ausgelesen und auf den Index übertragen wird. Um doppelte Datenhaltung zu vermeiden und die Einhaltung der Datenschutzrichtlinien zu gewährleisten sind im Index ausschließlich die Primärschlüssel der Suchergebnisse gespeichert. Im bestehenden System mussten alle lesenden Prozesse durch Anfrage an den Solr-Server abgelöst werden. Mit den Ergebnislisten werden dann die Daten aus der Datenbank geholt. Eine Suchanfrage, für die man bisher ca. 20 Minuten benötigte dauert heute nur noch 0,1 Sekunde. Wir können komplexe Auswertungen erstellen und flexibel auf spezielle Datenbankanfragen von Kunden reagieren. Der größte Vorteil von Solr aber ist seine Unabhängigkeit. Das System, in dem die Suche integriert werden musste, war in PHP geschrieben. Die standardisierte HTTP Schnittstelle, die es erlaubt neben XML auch JSON oder HTML als Ergebnis zu erhalten erlaubte es uns den Dienst separat auf einem eigenen Server aufzubauen und dann einfach über einen HTTPClient einzubinden.
Beispiel 2: Implementierung eines Text-Analyse-Systems zur Extraktion und Überführung von strukturieren Daten aus Freitexten in eine relationale Datenbank.
Das Problem: Bestimmte Prozessentscheidungen beim Kunden erfordern die Einbeziehung srukturierter Informationen, die lediglich in Textform vorliegen. Der manuelle Aufwand der Strukturierung dieser Texte ist allerdings so enorm, dass der Einsatz der Daten sehr teuer ist. Die Implementierung eines Text-Information-Retrieval Systems, welches die Strukturierung automatisiert wäre für ein kleines Team von ca. 10 Programmierern kaum durchfürbar. Eine einfache Lösung ist für die Komplexität der Texte und der Vielfältigkeit der zu strukturierenden Informationen kaum denknar.

Die Lösung: Von der Universität Sheffield wird ein OpenSource System angeboten, welches genau diese Aufgabe lösen kann. GATE.
Hierbei handelt es sich um ein Framework zum einlesen und verarbeiten textueller Information. Neben des eigentlichen Prozessframeworks besteht GATE aus zahlreichen Plugins verschiedener Anbieter, die zu diversen Zwecken eingesetzt werden können. Die wichtigsten GATE Plugins sind unter ANNIE (A Nearly-New Iniformation Extraction system) zusammengefasst. Für unsere Aufgabe haben uns insbesondere zwei Mechanismen geholfen: Der JAPE-Transducer und der sogenannte Gazetteer. Grundlegend ist GATE aus Sprachresourcen (LR) und Processing Resources (PR) aufgebaut. Letztere werden in Pipelines beliebig zusammengebaut und verarbeiten genannte Sprachresourcen (Dokumente bzw. Korpora). Die Inhalte eines Dokuments werden entlang der Processing Pipeline annotiert.
Der Gazetteer fügt Named Entity Annotationen zum Text hinzu. Dazu haben wir diverse Lookupdatenbanken aufgebaut: Vornamen, Nachnamen, Städte, Postleitzahlen, Bundesländer, Rechtsformen, Toplevel Domains etc. Diese Annotationen wiederum werden in diversen JAPE Regeln in ihren Kontexten betrachtet, so dass man auf den Inhalt und Zweck der Daten schließen kann.
Die so ermittelten Daten werden analysiert und rückwirkend auf ihre Qualität bewertet.
Das Ergebnis: Wir können in weniger als 20 Minuten 4000 Dokumente einlesen, auswerten, strukturieren und in einer Datenbank speichern. Aufgrund bestimmter Muster lassen sich sichere von unsicheren Strukurierungen trennen. Unsichere Ergebnisse werden in einem manuellen Prozess nachgeprüft und ggf. angepasst, so dass wir insgesamt eine 100%ige Erkennunsrate erreichen.
Februar 21st, 2009 Communication, Development, Innovation| No Comments »
Leidenschaft ist eine der in meinen Augen wichtigsten Fähigkeiten, die ein Entwickler mitbringen sollte. Leidenschaft für Technologie, Leidenschaft für Lösungen, Leidenschaft für Fortschritt. Mike Peters hat dies kürzlich in seinem Artikel “How to pick a GREAT Software Engineer” eindrucksvoll präzise verdeutlicht. Er schreibt, dass sich “passionierte Entwickler” besonders dadurch auszeichnen, dass Sie in Ihrer Freizeit DZone oder Techcrunch lesen, neue Software testen oder Code schreiben:
Love what you do and pass that love to everyone you deal with.
Always be positive, energetic and make progress, no matter what.
What do you do in your spare time? If you’re not writing code, installing a virtual machine, reading TechCrunch/Slashdot/DZone or testing out the latest version of Windows 7, you are not passionate about technology.
Ich stimme ihm prinzipiell zu. Natürlich gibt es wichtigere Dinge als Technologie (Familie, Freunde, Gesundheit etc.), aber ich denke, dass Passion in diesem Zusammenhang einfach heißt, dass Technologie nicht einfach nur der Job ist, sondern ein Hobby, ein Hobby welches man glücklicherweise zum Job machen konnte. Und wie das so ist mit Hobbies: Sie bestimmen den Charakter, das alltägliche Handeln und sind allgegenwärtig. Vielleicht kann man es so sagen:
Ein Triathlet, ein Fussballfan und ein Technologist (um einen Begriff zu nutzen, der die Leidenschaft besser als die Berufsbezeichnung Sofwareentwickler ausdrückt) machen Strandurlaub mit ihren Kindern und Ehefrauen. Der Triathlet wird, während die Kinder im Meer baden und die Frau sich der Sonne hingibt, seine Beine in die Hand nehmen und am Strand ein paar Kilometer laufen gehen. Der Fussballfan wird sich am Wochenende in Zeitungen, bei anderen Urlaubern oder im Internet über die Ergebnisse seiner Lieblingsmannschaft erkundigen. Und so wird sich der Technologist genüsslich mit einem Buch über Technologie an den Strand legen (letztes Jahr in Südafrika begleitete mich das Buch: The Big Switch von Nicholas Carr) oder sogar den Laptop dabei haben um am Abend, wenn die Familie schläft auf dem Balkon mit Meerblick die wichtigsten Blogs zu verfolgen und vielleicht sogar kurz Eclipse zu starten um das Tutorial für ein ihm noch unbekanntes Framework oder SDK durchzugehen. Alle drei werden mit solchen Tätigkeiten ganz ähnliche Erfahrungen machen: Sie selbst empfinden dabei eine persönliche, subjektive, intrinsisch motivierte Zufriedenheit wobei Freunde oder der Partner nur schwer nachvollziehen können, wie man sich so für etwas anscheinend unwichtiges begeistern kann. Die Frage nach dem Sinn stellt sich dem Triathleten, dem Fussballfan und dem Technologist aber erst als zweites. Und speziell dem Technologist ist es zunächst auch egal ob man Geld damit verdienen kann: Es ist eher ein netter Seiteneffekt.
Um zu dem oben angesprochenen Artikel zurückzukommen. Ich denke, dass es in der Software-Entwicklung sehr wichtig ist passioniert zu sein. Ich selbst habe die Erfahrung gemacht, dass zu viele Entwickler mit denen ich zusammengearbeitet habe, ihren Job tatsächlich als 9to5 Job verstanden. Man kann Projektziele erreichen und durchaus schöne Systeme implementieren. Aber eines fehlt: Spaß und innovatives Potential. Man bleibt auf der Stelle stehen.
Februar 18th, 2009 Uncategorized| No Comments »
Projekte in Unternehmen
Telefondatenlieferung
Bei diesem Projekt geht es um die sinnvolle Wiederverwertung der Daten des Deutschen Telefonbuchs. Es wird eine Komponente entwickelt, die sowohl die Datensicherheit und vor allem den den Schutz der privaten Informationen gewährleistet, als auch eine schnelle Suche und Prozessierung dieser Informationen ermöglicht. Neben der automatisierten Anreicherung der Stammdatenbestände einiger Kunden wird vor allem eine Verwertung von implizit in den Daten verborgener Informationen angestrebt: Extraktion von Branchen-Semantiken, saubere Datenbeständen für Plausibilitätskontrollen, der Aufbau einer qualitativ hochwertigen (anonymisierten) Namensdatenbank im geografischen Kontext etc. Die Suchkomponente und die Datenmanagementkomponente soll zukünftig auch den Zugriff aus anderen Anwendungen (Web, dritt-Anbieter, etc) ermöglichen und wird demnach als Service konzipiert und in einer sich im Aufbau befindlichen serviceorientierten Umgebung integriert.
Insolvenz Mining
Eine auf GATE und WEKA basierende Text Mining Komponente, zur Klassifikation und autmatischen Extraktion relevanter Informationen aus Insolvenzveröffentlichungen. Die von Amtsgerichten veröffentlichten Texte zum Stand privater und geschäftlicher Insolvenzdaten werden durch eine zweiwege - NLP Komponente (Regelbasiert und Machine Learning basiert) analysiert und ür unsere Kunden so aufgearbeitet, dass die für den Kunden relevanten Daten aus den Texten herausgefiltert werden können. Zusätzlich werden die Texte durch verschiedene Verfahren des Data- und Text Mining analysiert um zusätzliche Muster in den Texten erkennen zu können und unseren Kunden dadurch einen gewissen Mehrwert zu bieten.
KTom – Enterprise Konten Transaktionsverwaltung
AJAX basierte Anwendung zur Zuordnung von Kontenbewegungen zu Rechnungen, Aufträgen, Gutschriften und anderen Positionen. Da der Auftraggeber mehrere tausend Kontobewegungen im Monat zu verzeichnen hat, konnte nur ein geringes Grad an Kostentransparenz geschaffen werden. Durch die Software musste die schnelle manuelle Abarbeitung der Zuordnungen gelöst werden. Dazu kam der Softwareergonomie während der Umsetzung ein sehr hoher Stellenwert zu. Ein weiterer Aspekt war die Implementierung schneller Suchalgorithmen um die Kontrolle über die gesamte Datenbasis des Unternehmens abdecken zu können. Die gesamte Anwendung musste buchhalterisch einwandfrei umgesetzt sein und über einen Export-Mechanismus mit einer drittanbieter Software (Datev) integriert werden.
SCRUM Einführung
Wachstum erfodert Veränderung. Durch die Expansion des Unternehmens traten in der Planung und Umsetzung von IT Projekten sowie in der Kommunikation zwischen den IT Verantwortlichen und dem Rest des Unternehmens vermehrt Probleme auf. An dieser Stelle kam SCRUM ins Spiel. Wir implementierten den Ansatz innerhalb von 2 Monaten vollständig in der It Abteilung des Unternehmens und schufen damit die Basis für die erfolgreiche Entwicklung eines stabilen und innovativen IT Teams mit einem hohen Grad an Selbstverantwortung.
Name DB
Namen sind Schall und Rauch. Namen haben verschiedene Schreibweisen, Namen können verschiedenen Geschlechtern zugeordnet werden, Namen werden falsch geschrieben und Namen sind oft abhängig von der Herkunft des Namensträgers. In diesem Projekt habe eine große Namensdatenbank mit statistischen und phonetischen Informationen geschaffen, welche über eine API die Möglichkeit bietet Namensdaten besser handhaben zu können: “Michi” ist eigentlich “Michael”, “Frau Horst Maria” ist eigentlich “Herr Horst Maria” und “Tomas” kann auch “Thomas” oder “Tomasz” geschrieben werden und tritt oft in den Kurzformen “Tom” und “Tommy” auf.
Solr Integration
Die Datenbank als Bottle Neck. Mit einer “organisch” gewachsenen Datenbank und über 20 Mio Einträgen war es dem Auftraggeber beinahe unmöglich die Kontrolle über die Daten zu behalten. Manuelle Suchvorgänge nahmen bis zu 20 Minuten in Anspruch, was zu weniger Kundenzufriedenheit, Mitarbeiterfrustration und nicht zuletzt zur fast vollständigen Blockade der Datenbank für andere Prozesse führte. Die Lösung fand ich in Solr, einem auf Lucene basierenden Volltext Such-Server. Ich entwickelte ein Datenschema um die suchrelevanten Daten so aktuell wie möglich innerhalb des Suchservers zu halten. Dadurch wurden Suchprozesse, die vorher weit mehr als 10 Minuten benötigten, auf wenige Millisekunden reduziert. Der Suchserver ist heute über eine speziell entwickelte API als Service in die Life Anwendung des Auftraggebers integriert.
eThor
Das Land Brunei vergibt jährlich einen IT Award an interessante Entwicklungen und projekte aus dem IT Bereich. Im Jahr 2005 trat die Firma Teleconsult Intl. mit einer prototypischen Software zur Videokommunikation an: eTHOR. Die Planung und Umsetzung dieser Software führte ich in enger Absprache mit Teleconsult und Fachberatern aus der Medizin bzw. der Landwirtschaft vollständig selbstständig durch. Nachdem wir zunächst einen Award von der Regierung Bruneis gewannen, traten wir bei den Asia Pacific ICT Awards an und konnten auch hier den “Special Mention Award” gewinnen.
Petronas Intranet
Im Rahmen meines Auslandspraktikums bei TAO Consulting schulte ich mit zwei Kollegen die MitarbeiterInnen des Petronas IT Teams in DHTML und AJAX Technologien und entwickelte gemeinsam mit ihnen eine prototypische Anwendung innerhalb des Petronas Intranets. In einem 3 tägigen Projekt im Petronas Tower Kuala Lumpur entstand dabei eine ajax basierte Webanwendung für Befragungen und In-House Schulungen von Mitarbeitern des Konzerns.
WebDAV Server
Zur Verbesserung des Dokumententmanagements im EDB Singapore entwickelte ich einen vollständigen WebDAV Server. Dieser Server bietet die Möglichkeit verschiedene Daten Repositories anzubinden. Herkömmliche WebDAV Server sind Dateibasiert und sind vergleichbar mit FTP. Der hier entwickelte Server ist unabhängig von der Datenquelle. Damit können die Inhalte einr Datenbank beispielsweise direkt als Excel-Datei geöffnet und über den WebDAV Server in die Datenbank zurückgeschrieben werden.
(X)Html2Doc Converter
Während meiner Zeit als Entwickler bei Antwerpes und Partner entstand die Idee ein Modul zu entwickeln, mit dessen Hilfe sich aus (X)HTML Seiten dynamisch auch Microsft Word Dokumente generieren lassen sollten. Dazu habe ich mit Hilfe der DCOM Schnittstelle der Microsoft Office Pakete aus PHP heraus auf die Microsoft eigene Dokumentenstruktur zugreifen können. Letztendlich ist ein Modul entstanden, welches über einen SAX Parser die eigehenden XHTML Dokumente ausliest und für jedes im HTML Schema definierte Element eine bestimmte DCOM Anweisung ausführt um iterativ ein Word Dokument aufzubauen.
Studienprojekte
Tama
Eine auf PHP und MySQL basierende Webanwendung für das Projektmanagement. Mit diesem Programm ist es möglich Kunden, Partner und Mitarbeiter anzulegen und zu verwalten und für Projekte und Projektaufgaben zu buchen. Nebden der eigentlichen Verwaltung der Aufgaben und Resourcen beinhaltet das Programm auch verschiedene Standardwerkzeuge aus dem Projektmanagement wie bspw. Gantt Diagramme.
Eagle Eye
Das Projekt “Eagle Eye” ist gemeinsam mit der Firma Luratech entstanden. Es handelt sich um ein Applett zum Streaming, zur Anzeige und zur intelligenten Navigation von bzw. in JPEG2000 Bilddaten. Die gesamte Prozessintelligenz liegt dabei im Applett und nicht auf einem Applikationsserver. Das Applett generiert anhand einer konfigurierten URL eine interaktive Galerie. Solche JPEG200 Bilder können sehr groß sein (1GB und mehr) und sind dementsprechend nicht geeignet um sie vollständig auf Webseiten anzuzeigen. Zur Lösung dieses Problems wurde ein spezielles Streaming-Verfahren in die Anwendung integriert, welches intelligent, anhand des aktuell angezigten Auschnitts bzw. der aktuellen Auflösung des Bildes, entscheidet welche Daten einer Datei vom Server geladen werden können. Dieser Ansatz ist besonders für Anwendungen von Interesse bei der Sateliten- oder andere hochauflösende Bilddaten angezeigt werden sollen.
Mind-Space
Mit Mindspace wurde ein Softwareprototyp geschaffen mit dem eigentlich zweidimensionale Baumstrukturen in einem 3D Raum dargestellt werden können. Grundlage des Projekts war die Mindmap Methode. Das User Interface wurde an Softwarelösungen zur Erstellung herkömmlicher Mindmaps angelehnt. Die MinMap selbst wurde in C++ mit OpenGL umgesetzt und zeigt eine sogenannte Cone Visualisierung der erstellten Mind-Map. Neben der Umsetzung mit OpenGL ist die Navigation im Baum technologisch interessant.
Geo-JXTA
Ein Projekt, welches in Zusammenarbeit mit der Uni Bremen durchgeführt wurde. Ziel war die Implementierung eines Agenten, welcher sich anhand definierter Geo-Pfade auf einer Virtuellen Landkarte bewegt, sich über PeerToPeer Kommunikation mit anderen Agenten in seiner Nähe in Verbindung setzt und Informationen austauscht. Der Informationsfluss soll über die Profilinformationen der Agenten-besitzer gesteuert werden. Mit diesem Semester-Projekt konnte ein erster Prototyp entwickelt werden. Mit diesem Prototypen ist es möglich einen Agenten anhand eingespeister GPRS Daten auf einer Virtuellen Karte zu bewegen. Zur Visualisierung wurde Google Earth in die Anwendung integriert. Die Agentensoftware selbst meldet sich in einem JXTA P2P Netzwerk an (Java Framework für P2P Netze) und macht sich bei anderen Agenten bekannt. Sobald sich ein Agent in der Nähe eines anderen Agenten befindet, findet über ein eigens entwickeltes XML Protokoll ein Informationsaustausch der beiden Agenten statt. Die Kommunikation kann “life” in Google Earth beobachtet werden.
Lehr- und Präsentations DVD - Fraunhofer Institut FOKUS
Die Konzeption verschiedener Medienformate war einer der Hauptbestandteile des Studiums. In diesem Projekt wurde in einem 4 köpfigen Team eine Lehr-DVD für den mobilen Telekomunikationsstandard IMS, der am Fraunhofer Institut für offene Kommunikationssysteme (Fokus) entwickelt wird, realisiert. Neben kurzen Interview Sequenzen wurden Audiokommentare eines professionellen Sprechers in die DVD integriert. Die Implementierung der interaktiven DVD (Mehrsparchigkeit, dynamische Menüführung, Medienauthoring) wurde durch mich durchgeführt. Die DVD wird heute auf Messen und für neue Mitarbeiter des Standards eingesetzt.
Kurzfilme “la lloruna” und “Open Mic Berlin”
Im Grundstudium setzte ich mich neben reinen Informatikthemen besonders mit der Medientheorie und der Konzeption verschiedener Medienformate auseinander. Unter anderem sind dabei zwei Kurzfilme entstanden, bei denen ich im gesamten Prozess involviert war: Planung, Aquise, Dreh, digitale Bearbeitung und Schnitt, Nachbearbeitung, Finalisierung. In einem der Filme wurde eine Dokumentation über die Hip Hop Kultur in Berlin realisiert. Beim zweiten Film handelt es sich um einen experimentellen Kurzfilm.