Computer & IT

IT steht für Informationstechnik, laut Wikipedia „die Informations- und Datenverarbeitung auf Basis dafür bereitgestellter technischer Services und Funktionen“. Die Informatik ist dabei die „Wissenschaft von der systematischen Verarbeitung von Informationen, besonders der automatischen Verarbeitung mit Hilfe von Digitalrechnern“.

Klingt nicht so spannend, oder? Aber gut, das tun Wissenschaften grundsätzlich erst einmal nicht, und was dann dabei alles so passiert kann aber unglaublich spannend sein. Doch wie kam es, dass ich mich 1996 dafür entschied, diese Wissenschaft an der Ludwig-Maximilians-Universität in München zu studieren?

Die Anfänge

cpc464mainMitte der 80er wurden die ersten „Heimcomputer“ populär – etwas, von dem man davor lange geglaubt hatte, dass es niemand benötigen würde – man ging nur von einer sinnvollen Verwendung von Computern im wissenschaftlichen und industriellen Bereich aus (waren ja auch entsprechend große Großrechner, die man sich nicht einfach zu Hause hinstellen hätten können). Auch ich bekam also im Alter von etwa 10 Jahren einen solchen Heimcomputer, einen Schneider CPC464 mit Grün(!)-Monitor (auf Wikipedia heißt es sogar „Im Jahr 1985 wurde der CPC464 zum Computer des Jahres gewählt“), Schulfreunde hingegen hatten eher einen Commodore 64 (besser bekannt als „C64“).

Diese Computer damals verfügten über keine eingebauten Festplatten oder andere Massenspeichergeräte, wie wir sie heute kennen, und selbst Diskettenlaufwerke waren oft noch nicht eingebaut, sondern Kassettenlaufwerke, so dass Programme tatsächlich von Kassetten („Datasette„) geladen wurden mussten (was entsprechend viel Geduld erforderte, da dies natürlich sehr langsam war). Fest eingebaut in den Computer war aber neben dem Betriebssystem auch ein Interpreter zum Programmieren, und zwar in der Programmiersprache BASIC. Man hatte also, wenn man das Gerät eingeschaltet hatte, lediglich die Wahl, ein Programm von Kassette zu laden, oder mit dem Programmieren loszulegen. Ich hatte schon auch einige Spiele auf Kassetten, war aber nie groß der Spieler, viel faszinierender fand ich hingegen, dass mir mit der Möglichkeit zu programmieren ein sehr spannendes Bastelwerkzeug gegeben war. Anleitungen dazu gab es in den diversen Computerzeitschriften und Büchern – Internet gab es ja noch lange nicht. Auch gab es in diesen Zeitschriften seitenweise so genannte „Listings“ von Binärcode (in hexadezimaler Darstellung, sprich nur Ziffern und Buchstaben A-F), die ich immer gerne abgetippt habe, weil sich dahinter jeweils ein interessantes Programm oder Spiel befand (das man so kostenlos bekam). Es war meine große Neugierde, die ich mich hier immer antrieb. Oft aber interessierte mich anschließend das Programm oder Spiel gar nicht wirklich, sondern beschäftigte mich viel mehr die Frage, wie ich so etwas auch programmieren kann. Das hatte den Grundstein gelegt.

Ich entdecke, erforsche und bastel gerne. Und Computer sind ein sehr praktischer und mächtiger „Werkzeugkasten“ dafür. Die Möglichkeiten sind schier unbegrenzt –  wenn man die „Werkzeuge“ einigermaßen beherrscht (allerdings: Wer tut das im Fall von Computern schon wirklich?). Das faszinierte mich von Anfang an, da es einem auch irgendwie das Gefühl von Macht gibt, dass man neue Dinge schaffen und kontrollieren kann. Man muss dabei aber aufpassen, dass man nicht vergisst, dass Programmieren nur ein Mittel zum Zweck ist, dass man das eigentliche Ziel und das „große Ganze“ dabei nicht aus den Augen verliert.

Apropos Augen, ich interessierte mich schon immer sehr bei der Programmierung dafür, dass man davon auch wirklich etwas auf dem Bildschirm sehen konnte, also sehr auf grafische Darstellungen, bzw. ich möchte das auch auf die Ohren erweitern, denn auch alles, das mit Ton zu tun hatte, war schon immer sehr spannend für mich. Es faszinierte mich zum Beispiel, dass damals beim Laden eines Spiels von Datasette den Programmierern gelungen war, statt dem hässlichen binären Ladeton (ähnlich, wie wenn man einem Fax über Minuten zuhören würde) eine schöne Computermusik zu spielen (natürlich entsprechend der damaligen Möglichkeiten).

Das Studium

lmu-logoDie Entscheidung in 1996 zum Informatik-Studium war dennoch nicht einfach und klar, denn zu diesem Zeitpunkt war mein Interesse an Jobs in den Medien (z.B. als Radiomoderator, Toningenieur oder Mediengestalter für Bild und Ton) noch sehr groß, und selbst nach der grundsätzlichen Entscheidung, dass ich auf jeden Fall etwas studieren will (um dadurch das Studentenleben kennen zu lernen), war ich am Überlegen, was das denn sein könnte, da ich einfach unglaublich viele Dinge sehr interessant fand und mir ganz verschiedenes vorstellen konnte. Doch letztlich gewann das Naheliegende, dass ich etwas studiere, das meinen bisherigen primären Interessen entspricht, also am liebsten etwas aus der Kombination von Medien und Computern, doch Medieninformatik gab es zu diesem Zeitpunkt noch nicht als Hochschulstudium. Und in Augsburg gab es noch nicht einmal Informatik als Hauptfach.

Es ging also zum Studieren nach München, doch es blieb noch die Entscheidung, ob ich Informatik an der Technischen Universität (TUM) oder an der Ludwig-Maximilians-Universität (LMU) studiere. Beides hatte seine Vor- und Nachteile, doch vor allem der Umstand, dass ich gerne wenigstens eine Kombination mit einer Medienwissenschaft haben wollte (mein Nebenfach war demnach „Kommunikationswissenschaft„) und dass an der LMU damals in Sachen Informatik alles viel kleiner war (wir waren nur ca. 60 Studenten im Jahrgang), während an der TUM in einigen Vorlesungen tausende Studenten saßen und vor allem trotz großer Computerräume dennoch immer nur wenige Plätze frei waren, sorgte dafür, dass ich mich für die LMU entschied.

Generell ist das Informatik-Studium eine harte Angelegenheit, weil die Basis (das komplette Grundstudium) aus sehr viel Mathematik-Vorlesungen besteht, höhere Mathematik, die irgendwann jeden, der nicht von ganzem Herzen Mathematiker ist, zur Verzweiflung treibt. Aber irgendwie haben wir das auch überstanden und im Hauptstudium konnten wir uns an vielen interessanten fachspezifischen Vorlesungen aus allen Bereichen der Informatik erfreuen. Meine Vertiefung war „Programmierung und Theoretische Grundlagen“ (und hier vor allem „Höhere Programmiersprachen“ und „Markupsprachen“), neben den anderen Bereichen „Systemnahe und Technische Informatik“ und „Anwendungen der Informatik“.

Meine Diplomarbeit trägt den Titel „Generierung von Objektsequenzen anhand von personalisierten multimedialen Bewertungsdaten“, ein typisch kompliziert wissenschaftlich klingender Titel, der eigentlich ein einfach erklärtes System beschreibt: Ein zentrales Dateiarchiv für Multimedia-Dateien (hier Musik) wurde im die Funktion erweitert, einzelne Dateien (hier also Songs) über eine Weboberfläche zu bewerten und auch die Abfolge zweier hintereinander abgespielter Dateien (quasi die Playliste), und aus diesen Bewertungen konnte das System automatisch eine neue Playliste ermitteln (also das, was heutzutage sehr viele Online-Musik-Streaming-Dienste auch anbieten). In 2002 war das aber alles noch sehr neu, und hätte es damals auch schon so eine von den Hochschulen geförderte Startup-Kultur, wie heute gegeben, hätte mich das vielleicht auch motiviert, das wirtschaftlich weiter zu entwickeln.

Aber damals war die Ausbildung an einer Universität, vor allem an der Ludwig-Maximilians-Universität (LMU), noch fast ausschließlich in Richtung wissenschaftliche Karrieren ausgerichtet. Es waren in meinem Studium auch keine Praktika in der Industrie gefordert – ein großer Nachteil, wie ich später empfand. Und so ist es dann auch nicht verwunderlich, dass ich nicht lange zögerte, als ich nach dem Ende meines Studiums erfuhr, dass an der LMU der neue Studiengang „Medieninformatik“ eingeführt wird und dafür am neuen Lehrstuhl wissenschaftliche Mitarbeiter gesucht würden. So konnte ich doch tatsächlich mein reines Informatik-Studium auf diese Weise um das Wissen der Medieninformatik ergänzen, und natürlich machte es mir auch sehr Spaß, diesen Studiengang mit aufzubauen und sogar auch Vorlesungen und Übungen zu halten.

Während meines Studiums, das zum Glück keine Gebühren kostete, musste auch ich nebenbei ein bisschen Geld zum Leben verdienen, doch auch hier ging ich nicht in die Industrie, sondern blieb an der Universität und arbeite in der Rechnerbetriebsgruppe der Informatik. Das sind die Administratoren, die für den Betrieb der Server und Rechner in den Computerräumen sorgen und die Studenten bei ihrer Arbeit an den Computern betreuen (was mir vor allem immer am meisten Freude bereitet hatte). Man muss heute das vielleicht erklären, dass natürlich nicht jeder einfach einen Laptop hatte, mit dem er von überall per WLAN über das Internet arbeiten konnte, nein, man musste tatsächlich in diesen Räumen arbeiten, wenn man an seine Projekte und Dokumente gelangen wollte. Ich habe hier dennoch auch viel Praxiswissen gelernt, zu Rechner-Systemen, Infrastrukturen, Server-Diensten, und auch zum Arbeiten im Team und in einer solchen Organisation. Wir waren ein super Team aus lauter unterschiedlichen Nerds 🙂

Softwareentwicklung

eclipsecodingSoftwareentwicklung (auf Wikipedia als Softwaretechnik bezeichnet) ist nicht einfach nur Programmier-Arbeit, es ist auch kreative Arbeit: Sei es die Wahl der Programmiersprache und Programmierstils, oder die Wahl der Bibliotheken und Frameworks, das Entwicklungsmodell und das Design der Software, bis hin zur Auswahl der verwendeten Methoden und der einzelnen Implementierung eines Algorithmus.
Die Art und Weise zum gleichen Ziel zu kommen kann so vielfältig sein. Es gibt so viele Wege „schlechten Code“ zu schreiben, genau so wie es nicht den einen Weg zu „gutem Code“ gibt. Die Kunst ist, unter den Gegebenheiten den „besten Kompromiss“ zu finden, was mir als Perfektionist leider manchmal etwas schwer fällt. Generell gehe ich nicht gerne Kompromisse ein und suche immer nach der einen allumfassenden besten Lösung… Aber natürlich ist mir klar, dass es die überhaupt nicht gibt, und so finde ich schon auch immer meinen Weg, bei dem ein Ergebnis, ein Produkt heraus kommt, mit dem nicht nur die anderen zufrieden sind.

Aufgrund meiner vielfältigen Interessen, auch alleine im Bereich der IT, wollte ich mich allerdings nie einfach „nur“ mit Softwareentwicklung beschäftigen, denn gerade durch meine Tätigkeit in der Rechnerbetriebsgruppe und durch den privaten Betrieb eigener Server und eigener Dienste hatte ich auch ein gewisses Wissen und Interesse in den technischen Infrastruktur-Themen. Ich kämpfte daher schon immer bei der Jobsuche mit der Frage, ob ich mich nicht vielleicht auch auf Positionen als Systemadministrator bewerben sollte, doch auch wenn mir einige Aspekte bei dieser Art von Tätigkeit vielleicht besser gefielen, als in der reinen Softwareentwicklung, so würde mir auch vieles fehlen, dass ich am Programmieren eben auch sehr schätze. Daher habe ich mich doch dazu entschieden, jeweils als Entwickler zu arbeiten, allerdings bevorzugt in Positionen, die Aufgaben darüber hinaus erforderten. Heute passt der Begriff „Full-Stack-Developer“ sehr gut dazu, der genau das beschreibt, wie ich mich schon immer sah: Als Entwickler, der auch die Ebenen unterhalb der Softwareentwicklung (sprich Datenbanken, Systeme, Infrastruktur, etc.) kennt und beherrscht.

Meine Software-Projekte

Mein erstes größeres Software-Projekt war die Entwicklung eines Webradio-Sendeautomation-System für mein eigenes Webradio HappyRadio, das ich zu meiner Studienzeit aufgebaut und betrieben hatte. Dies bestand allerdings nicht aus einer einzelnen Entwicklung des gesamten Systems in einer Programmiersprache, sondern aus vielen einzelnen Komponenten auf unterschiedlichen Ebenen in unterschiedlichen Sprachen, aber größtenteils in Perl. Die Komponenten, die für das Encoden und Streamen verantwortlich waren, waren natürlich nicht selbst entwickelt.

mixplayd-logoEin wesentlicher Grundbestandteil dieses Systems habe ich als eigenständiges Open-Source-Projekt verfügbar gemacht: mixplayd – a mp3/ogg mixing player daemon
Es handelt sich um ein in C entwickeltes Audio-Abspielsystem, welches als Serverdienst (als Daemon auf einem Linux System) über eine TCP-Verbindung Steuerkommandos zum Abspielen und Zusammenmischen von MP3– und Ogg-Dateien annimmt, die auf diesem Server liegen und über eine (echte oder virtuelle) Soundkarte abgespielt werden. Die Mischfunktion war dabei das wesentlich neue und ermöglichte unter anderem die Crossfades zwischen Musiktitleln und das Einspielen von Jingles für mein Webradio. Eine weitere Funktion war das Einspielen anderer Streams, um damit eine Programmzulieferung von anderen Moderatoren aus ihren jeweiligen „Studios“ zu ermöglichen.

Andere Projekte waren mehr für den privaten Bedarf, wie z.B. das Datei-Synchronisations-Tool „farsync“, geschrieben in Perl, mit dem man ganze Verzeichnisbäume an unterschiedlichen physikalischen Orten anhand der MD5-Summen der Dateien abgleichen kann. Auf diese Weise können sowohl Duplikate leicht entdeckt werden, als auch Dateien, die sich auf der anderen Seite einfach nur an einem anderen Ort befinden oder lediglich einen anderen Dateinamen tragen und daher nicht erneut kopiert, sondern nur verschoben oder umbenannt werden müssen. Die Synchronisierung erfolgt dabei asynchron, sprich die abzugleichenden Datenträger müssen nicht miteinander verbunden sein, da zunächst von beiden Seiten unabhängig ein Index erstellt und dann ein Skript mit den nötigen Aktionen für die abzugleichende Seite erstellt wird und ein Archiv mit den zu übertragenden Dateien gepackt wird, so dass dieses auf einem dritten Datenträger zum Ziel gebracht werden kann, ohne dass eine Online-Verbindung zwischen den beiden Seiten existieren muss. Ich nutzte dies um meine großen Archive mit MP3-Dateien auf verschiedenen Rechnern synchron zu halten ohne immer alles über das Netz übertragen zu müssen.

Dann gab es natürlich auch das Software-Projekt, das ich innerhalb der Rechnerbetriebsgruppe der LMU entwickelte und letztlich auch für meine Diplomarbeit weiter entwickelte: Einen zentralen Multimedia-Dateiablage-Server, der Redundanzen verschiedener Benutzer vermeiden sollte, die bis dato alle ihre MP3-Dateien immer in ihrem jeweiligen Homeverzeichnis abgelegt hatten. Für die Diplomarbeit wurde dieses System um die Funktion der Generierung automatischer Playlisten anhand von Benutzerbewertungen und Beziehungen zwischen Dateien (Songs) erweitert, entwickelt in Perl, PHP und in Ruby.

screenshot0022Meine Arbeit am Forschungszentrum Telekommunikation Wien (ftw.) im Bereich „Interaktives Handy-Fernsehen“ führte ausserdem auch zu zwei Open-Source-Projekten, die aber nur für eine kurze Zeit eine Bedeutung hatten, da sowohl die genutzte Plattform (erste „Smartphones“ mit Symbian als Betriebssystem), als auch die Broadcast-Technik DVB-H heute schon lange keine Bedeutung mehr haben (und sogar auch das Forschungszentrum existiert inzwischen nicht mehr…):
„MiViBES – Mobile interactive Video Browser Extended Software“ war der in C++ geschriebene Symbian-Client, der auf dem Handy lief, und hier ein Videofenster mit einem Live-Stream und einem darunterliegenden Chatfenster ermöglichte.
„LIMBOS – LInux setup for accessing Mobile Broadcast through Online Streaming“ war unser „Trick“, wie wir das über DVB-H übertragene Live-TV-Programm mit Hilfe eines dazwischengeschalteten Linux-Laptops auf einen Stream bringen konnten, der auf dem Handy angezeigt werden konnte.

Aktuell bin ich dabei, meine GitHub-Seite mit aktuelleren Code-Entwicklungen zu füllen, wie z.B. die Implementierung eines Sudoku-Spiel-Lösungsalgorithmus in Javascript.

 

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s