Hier finden sich private Projekte und Arbeiten wieder, die in meiner Freizeit, Schule, Studium oder in Praktika von mir erstellt wurden. Projekte aus meiner Erwerbstätigkeit als Softwareentwickler werden in meiner VITA erwähnt.
Nachdem ich bei meinem letzten Arbeitgeber die Gelegenheit hatte sehr viele Erfahrungen in der mobilen Telekommunikationssparte zu sammeln, wende ich diese auf meinen persönliche Website an. Wer heute seine Website allein für Desktop/Laptops entwirft vergeudet Zeit und Geld. Aus diesem Grund entschied ich mich für den Ansatz von MobileFirst und Progressive Enhancement. Dabei werden zuerst die Inhalte einer Website zusammengestellt (Stichwort: ContextFirst) und ein Prototyp für das schwächste/kleinste Gerät entwickelt und getestet. Dieses Vorgehen zwingt schon beim Entwurf, sich über die Kerninhalte/Kernanwendungsfälle gedanken zu machen und sich somit auf das wichtigste zu beschränken. Das Hochskalieren von Mobile zu Desktop wird somit simpel da es wesentlich einfacher ist, weitere oder aufwendigere Inhalte hinzuzufügen als auf diese zu verzichten. Für die Umsetzung entschied ich mich für Bootstrap 3, ein MobileFirst UI Framwork welches genau diesen Ansatz mittels Responive Desgin propagiert. Durch den Einsatz von Responsive Design sieht die Website auf unterschiedlichen Geräteklassen anders aus, die Linkstruktur ist jedoch identisch. Dies reduziert die Komplexität bei der Entwicklung erheblich, da weder eine Client-Detection noch eine kanal-spezifische URL-Struktur (z.B.: http://m.kacperbak.de) gepflegt werden muss. Redundante Inhalte sind somit ausgeschlossen, bidirektionale Verlinkungen zwischen Mobile- und Desktopinhalten werden überflüssig. Nicht umsonst ist diese Methodik der von Google empfohlen Weg für mobile Webseiten.
Ich denke dass jeder von uns in der heutigen Zeit einen Platz hat, wo er seine Erkenntnisse und Notizen festhält. Über die Art und Weise kann man sich nun streiten. Mir als Entwickler ist jedoch platform unabhängiger, einfacher Text am liebsten. Das einzig fehlende an einfachem Text sind die ab und zu doch sehr hilfreichen Auszeichnungsinformationen, z.B. eine Überschrift. Die Lösung bietet die Auszeichnungssprache AsciiDoc. Ihre leichtgewichtige Syntax ist viel effizienter als HTML und kann in jedem Editor erstellt werden. Gleichzeitig steht mit AsciiDoctor eine ToolChain bereit welche diverse Ausgabeformate unterstützt: HTML5, PDF, Unix Man-Page, usw.. PlainText hat den Vorteil, dass er sich sehr einfach Versionieren lässt, z.B. mit Git. Warum also seine Erkenntnisse nicht mit einem einzigen Commit publizieren?
Mein erster Ausflug mit JavaScript richtet sich an alle Anwender des agilen Vorgehensmodells Scrum. Die BrowserApp bzw. Single-Page Application bildet mehrere Kartendecks in HTML5 fähigen Browsern ab und stellt damit ein Werkzeug zur Aufwandsschätzung in agilen Projekten dar. Da heutzutage Kartendecks schwerer aufzutreiben sind als Mobiletelefone, entschloss ich mich meine Pendelzeit im Zug zu nutzen. Der Code ist aus heutiger Sicht ziemlich creepy, im Prinzip handelt es sich um einen primitiven Zustandsautomaten. Ein besserer Ansatz wäre heute der Einsatz eines JavaScript MVC Framworks wie AngularJS, Ember oder React.
Meine erste statische Website welche mein ehemaliger Nachbar heute als Visitenkarte benutzt.
Nachdem ich in meinem Studium mit unterschiedlichen Programmiersprachen in Berührung gekommen war, darunter C/C++, C#, Java, JavaFX, enstschloss ich mich eine weitere kennen zu lernen. Scala eine objektfunktionale Programmiersprache welche zum Entstehungszeitpunkt der Arbeit als Hype galt und Heutzutage immer mehr Anwender in der Praxis findet. Das Unternehmen PENTASYS AG bot mir die Gelegenheit mich mit der Programmiersprache Scala, im Rahmen einer Abschlussarbeit, auseinander zu setzen.
Die Hauptfrage welcher sich jeder Informatiker als erstes stellt ist: Warum sollte ich eine weitere Programmiersprache kennenlernen? Um diese komplexe Frage beantworten zu können wählte ich den Vergleich mit Java als Grundlegende Idee. Die Arbeit zeigt an diversen Stellen wie fortgeschritten Scala gegenüber Java ist, angefangen bei einfachen Sprachfeatures bis hin zu einem Anwendungsbeispiel aus der Parallelisierung von Algorithmen. Das primäre Interesse der PENTASYS AG bestand in der Praxistauglichkeit der Sprache. Dies umfasste die Verwendung eines Build-Werkzeugs (Maven), eine geeignete Entwicklungsumgebung (Eclipse, Netbeans, IntelliJ IDEA), das Testen von Scala-Code, sowie die Kompatibilität zu Java selbst.
Als angehender Anwendungsentwickler belegte ich im 6. Semster das Seminar: 'Muster in der Objektorientierten Programmierung'. Die Hauptaufgabe bestand darin, sich in ein komplexes Muster der OOP selbständig hineinzuarbeiten, dieses zu präsentieren und eine Arbeit darüber zu schreiben. Die Arbeit richtet sich primär an den OOP-Anwendungsentwickler und setzt die Kenntnis des Singleton und Factory Patterns voraus.
Um einen gewissen Grad an Sportlichkeit zu beweisen, wählte ich ein Entwurfsmuster, welches nicht ausschließlich sich selbst repräsentiert, sondern aus weitern Patterns besteht. Hinzu kam die Motivation auf ein Muster gestoßen zu sein, welches die Problematik der Modifikation/Erweiterung in Softwaresystemen behandelt. Die Arbeit beschreibt den prinzipiellen Aufbau des Musters anhand eines Beispieles, welches sich durch die gesamte Arbeit zieht.
Im Hinblick auf mein kommendes IT-Studium, schrieb ich in der 12./13. Klasse diese Arbeit. Als Motivation diente mir der leichtfertige Umgang mit persöhnlichen Daten meiner Mitmenschen und den Verlusten, welche daraus entstehen.
Vorgabe für die Arbeit war das Stichwort: 'Entwicklung'. Passend zeige ich in diesem Werk, neben der Entwicklung von Speichermedien, auch den Trend zur Sicherung von Informationen im Heimbereich bis zum Industriestandard. Zielgruppe für diese Arbeit ist Jedermann mit Basis-Computerwissen. Dem entsprechend werden alle benötigten Grundlagen und Fachbegriffe zuerst erörtert, bevor mit der Hauptproblematik begonnen wird.