… geht an Maurice – Herzlichen Glückwunsch!
Maurice hat mit seiner Lösung überzeugt und den zweiten Platz bei der Code Competition “Markdown Parser” erreicht. Herzlichen Glückwunsch!
Im Interview stellt er sich und seine Lösung vor.
IT-Talents: Hallo Maurice, herzlichen Glückwunsch zu Deinem zweiten Platz bei der Code Competition „Markdown Parser“! Erzähl den anderen IT-Talenten doch kurz etwas über Dich.
Maurice: Einfach direkt? Gut. Ich nenne mich selbst immer angehender Schauspieler und Software Entwickler. Aber letzteres ist hier wohl mehr von Bedeutung. Im Grunde bin ich einfach jemand, der kreativ sein will und sich ein klein wenig in Node.js und JavaScript verliebt hat. Und daneben noch alles andere liebt, was modular ist und Projekte auf die Beine bringt. Ansonsten? Ich liebe es, am Ende des Tages auf mein Projekt zu schauen und zu sagen: „Wow, das ist sauber” oder „Wow, dein Algorithmus funktioniert ja tatsächlich“.
IT-Talents: Was hat Dich motiviert, an der Competition teilzunehmen und wie bist Du auf den Wettbewerb aufmerksam geworden?
Maurice: Ich habe die kleinen Werbebanner bei Facebook mitbekommen und mich dafür interessiert. Ich entwickle schon sehr lange, und dachte mir: So etwas wie eine Code-Competition kann ja nicht schaden. Es war tatsächlich meine erste überhaupt. Bis dato waren meine Projekte immer beruflich oder privat. Und außerdem hatte ich unheimliche Lust, mal einen Markdown Parser zu entwickeln. Ich arbeite im Sinne von NPM und GitHub ja täglich mit MD und die Herausforderung gefiel mir. Ich bin grundsätzlich ein Entwickler der es liebt, alles selbst zu machen. Ich sehe es als wichtig an, dass jeder auch Vanilla JavaScript beherrscht besonders bei einer Sprache wie JavaScript die mit NPM die wohl aktivste Community der Welt hat. Ja es gibt für alles ein Framework, aber man sammelt viel Erfahrung wenn man alles auch mal selbst gemacht hat. Außerdem brauchte ich für meine private Website (https://maurice-conrad.eu) noch einen Markdown Parser weil erstens jedes des einzelne Modul, jede einzelne Zeile HTML, CSS und Javascript dort mein vollkommen eigenes Handwerk ist lediglich der Markdown Parser nicht. Außerdem war der nicht sonderlich gut sondern sehr verbuggt.
IT-Talents: Spannende Geschichte! Wie bist Du an die Lösung der Aufgabenstellung herangegangen? Hattest Du schon Erfahrung mit der Arbeit mit Parsern und deren Funktionsweise?
Maurice: Ich habe natürlich vorher noch keinen Md-Parser entwickelt, sonst wäre das, denke ich, langweilig geworden. Allerdings hatte ich zuvor schon mal einfach aus Prinzip einen XML Parser für Node.js entwickelt. Nicht weil es keine gäbe, sondern weil ich es einfach mal machen wollte Ich habe es einfach partout nicht eingesehen, warum ich keinen Xml Parser schreiben könnte. Und ansonsten hat man natürlich immer wieder mit String-Manipulationen zu tun, ein bisschen parsed man ja öfter mal hier und da.
IT-Talents: Du hast Dich für eine Lösung der Aufgabenstellung in JavaScript entschieden, wieso?
Maurice: Weil ich mich in der Umgebung von Javascript am wohlsten fühle. Ich mag die Modularität von Node.js und die ECMA Script 2016 bietet einfach großartige Möglichkeiten. Ich komme am besten mit Javascript klar, Außerdem ist die Sprache, insbesondere Node.js stetig am wachsen.
IT-Talents: Welche Probleme sind bei der Entwicklung der Software aufgekommen? Wie lange hat die Entwicklung gedauert?
Maurice: Die Entwicklung hat im Grunde ca. 4-5 Nachmittage und Nächte gedauert. So genau weiß ich das nicht mehr, daher ist meine Schätzung sehr grob. Ca. 8 – 12 reine Arbeitsstunden. Probleme gab es am Anfang damit, dass ich vorher keine regulären Ausdrücke im großen Stil verwendet hatte. der Xml Parser zum Beispiel basiert fast ausschließlich auf reinen String-Operationen ohne reguläre Ausdrücke. Und manchmal war es schwierig mir klar zu machen, was ich jetzt genau eigentlich will. Z.B. dass ich mich nicht entscheiden konnte, ob gewisse modulare Ideen sinnvoll sind oder nicht. Wenn man sich das Projekt ansieht, stellt man sich fest dass die Möglichkeit zum ‚excluding‘ von Features, die Tatsache dass ich eigene Markdown Spezifikationen dazu erfunden habe und ganz offen in der Dokumentation von ‚custom rules‘ spreche, dass mir Modularität sehr wichtig ist. Natürlich ist meine persönliche Umsetzung des abbr-Tags in Markdown keine weltbewegende Sache, es ging mir mehr ums Prinzip. Und auch meine Umsetzung von summary oder iframe ist eher eine prinzipielle Idee als eine Revolution des Markdown per se. Ich wollte damit und eben auch mit der Erweiterung bestehender Elemente wie den Alphabetic und Roman Liste Items oder der Erweiterung des img-Tag mit {WIDTHxHEIGHT} zeigen, das man kreativ sein kann und Modularität sich bezahlt. Meinen Parser kann man sowohl online unter https://dev.mauriceconrad. eu/markdown kann man den Parser live ausprobieren. Ansonsten befindet er sich noch bei GitHub und NPM (Und kann daher auch als CLI genutzt werden).
IT-Talents: Und was hast Du durch die Entwicklung gelernt?
Maurice: Dass reguläre Ausdrücke gar nicht so böse sind, sie aber gleichzeitig aber auch nicht allmächtig sind, wie manche Menschen glauben, also niemals einen echten eignen Algorithmus ersetzten. Und dass man sogar Code kommentieren kann, wenn man will. Ich habe Kommentare früher nie konsequent gemacht, wurde immer schnell zu faul dafür. Aber diesmal habe ich mich wirklich am Riemen gerissen und versucht alles zu kommentieren 😉
IT-Talents: Zu guter Letzt: Was würdest Du Dir thematisch gerne einmal als Code Competition wünschen?
Maurice: Ich persönlich bin ein großer Fan von OpenData und API’s. Es ist schon vorgekommen, dass mir meine lokale Verkehrsgesellschaft keine API für ihren Routenplaner oder die Echtzeitdaten der Busse und Bahnen gegeben hat und ich mich dann einfach selbst daran gemacht habe, ihren Planer zu crawlen und biete seit dem Tag eine API auf meinem Server an. Das gleiche gilt für die Echtzeitdaten. Ebenso befindet sich auf meinem GitHub und NPM Account ein Modul, welches die API des ZDF Players anzapft und dadurch einen Downloader anbietet. Natürlich ist Crawling von fremden Diensten keine Aufgabe für eine offizielle Code Competition aber wie wäre es, wenn es mal darum ginge eine eigene API zu implementieren? Die Daten könnten ja aus einfachen dafür bestimmten Datensätzen kommen. Ich glaube, das würde viele junge „IT-Talenten“ gefallen.
IT-Talents: Vielen Dank für Deine Teilnahme, das Interview und viel Spaß mit Deinem Gewinn 😉