Hinter den Kulissen: Ein kurzer Einblick in mein Leben

April 2020 | OOP-Kurs in Java

Mitte 2020 nahm ich an einem Kurs über objektorientierte Programmierung in Java teil, der mich an meine oben erwähnten Anfänge in Java erinnerte, mir aber die Möglichkeit gab, die Programmiersprache richtig zu lernen. Nach dem Kurs habe ich immer wieder kleine Programme ausprobiert, wie z.B. einen Passwortgenerator. Nachdem ich etwas mehr Wissen über Kryptographie gesammelt hatte, wurde mir schließlich klar, dass Passwortgenerierung mit einem LCG keine gute Idee ist.

Oktober 2020 | Programmieren mit Sinn

Ende Oktober 2020 hatte ich mit ein paar Freunden ein Problem bei einem Spiel. Man musste immer eine bestimmte Zeit auf eine bestimmte Funktion warten und dann eine Aktion ausführen. Das war das erste Mal, dass ich versucht habe, ein Programm für eine konkrete Anwendung zu entwickeln, und es ist mir gelungen. In den folgenden Monaten verbesserte ich meinen dafür programmierten Timer immer weiter und gab ihn auch an andere weiter.

TODO: Bild einfügen

Dezember 2020 | TooManyEquations

Als ich Ende 2020 im Mathematikunterricht mit Textaufgaben zu kämpfen hatte, deren Lösung mit mehreren Schritten schonmal über fünf Minuten dauern konnte, kam mir die Idee, dass ein Computer das doch viel schneller schaffen sollte. Ich versuchte mein Bestes und kam schließlich zu einem Ergebnis, das ich erstmals als Bibliothek TooManyEquations zusammenfasste. Anfangs bestanden die Algorithmen nur aus langen mathematischen Formeln, aber das sollte sich später ändern.

Februar 2021 | Webseite

Eine Website ist heutzutage natürlich das Aushängeschild einer Person. Aus diesem Grund habe ich versucht, meine eigene Website mit reinem HTML, CSS und Java zu erstellen. Diese habe ich dann immer weiter ausgebaut, bis zu dieser Seite hier wurde.

Februar 2021 | Anfänge in C

Da ich immer wieder von verschiedenen Leuten gehört hatte, dass C eine sehr elegante und systemnahe Sprache sei, wollte ich sie zusätzlich zu Java lernen. Ich begann, sehr einfache Java-Programme wie den Passwortgenerator in C zu übersetzen, und fand schnell Gefallen an der Sprache, obwohl sie sehr kompliziert ist.

April 2021 | Java-Minesweeper

Im April 2021 habe ich mein erstes Java-Projekt abgeschlossen, auf das ich heute noch stolz bin. Es ist ein Ableger des Klassikers Minesweeper. Zum ersten Mal habe ich bei der Entwicklung auch die effiziente objektorientierte Programmierung eingesetzt. Neben dem Spaß am Programmieren hatte ich es endlich geschafft, ein Spiel zu schreiben, das mir selbst Spaß machte.

Juni 2021 | Tetris-Anfänge

Motiviert durch meinen Erfolg mit Minesweeper versuchte ich mich dann an Tetris. Ich merkte schnell, dass es schwieriger war, da ich auf viele Bugs stieß, deren Lösung sehr viel Zeit in Anspruch nahm. Irgendwann war ich an einem Punkt angelangt, den ich nicht mehr lösen konnte. Die Blöcke wurden bei einer kompletten Reihe nicht richtig gelöscht und obwohl ich immer wieder versuchte, den Fehler zu finden, konnte ich mir dieses Verhalten nicht erklären. Also habe ich das Projekt erst einmal auf Eis gelegt.

August 2021 | Lineare Gleichungssysteme

Im Sommer 2021 versuchte ich mich an einem (für mich) komplizierteren mathematischen Algorithmus, dem Gaußschen Eliminationsverfahren. Ziel dieses Algorithmus war es, ein lineares Gleichungssystem der Größe \(n\) zu lösen und die Werte der Variablen \(x_1\) bis \(x_n\) zurückzugeben. An diesem Algorithmus habe ich lange gearbeitet. Zuerst funktionierte mein Programm nur mit ganzen Zahlen, aber später habe ich das geändert. Als ich dann versucht habe, den Algorithmus in eine Android-App zu integrieren, habe ich gemerkt, wie wenig benutzerfreundlich er ist. Also schrieb ich ein weiteres Programm, das Gleichungssysteme wie aus einem Buch in Koeffizientenmatrizen übersetzt. Beide Programme bilden nun das Paket math.lsoe der TooManyEquations-Bibliothek.

September 2021 | TooManyEquations-App

Die TooManyEquations App sollte eine benutzerfreundliche Implementierung der Bibliothek für Android sein. Sie konnte auch von Personen ohne Programmierkenntnisse verwendet werden, um die oben genannten Probleme auf dem Smartphone zu lösen. Es war sehr praktisch, dass ich die Android-App direkt in Java schreiben konnte.

Oktober 2021 | Passwortmanager

Ich wollte schon immer ein Programm in Richtung Kryptographie schreiben, da mich das Thema schon damals sehr interessierte. Ende 2021 habe ich mit meinem Projekt eines Passwortmanagers in Java begonnen, das mir so viel Spaß gemacht hat, dass ich es bis heute (Oktober 2023) weiterentwickelt habe.

Oktober 2021 | Diverse Kurse

Im Oktober und November 2021 habe ich an verschiedenen Kursen über Java und Webtechnologien teilgenommen, um meine Kenntnisse in diesen Bereichen zu vertiefen.

Januar 2022 | C-Bibliothek

Anfang 2022 übersetzte ich die TooManyEquations-Bibliothek von Java nach C. Ich wollte sie weiter verbessern und war mir sicher, dass dies meinen Mangel an C-Praxis ausgleichen würde.

Februar 2022 | Stegano

Anfang 2022 habe ich im Rahmen einer Hausarbeit zum Thema Kryptographie das Programm Stegano entwickelt. Es kann verwendet werden, um geheime Nachrichten in Bilddateien zu verstecken. Der Trick dabei ist, dass unwissende Personen nicht merken, dass Informationen versteckt werden. Dies ist nützlich, wenn Kryptographie verboten ist und nennt sich Steganographie.

März 2022 | WebAssembly

Ich habe damit begonnen, einzelne Teile von TooManyEquations mit einem speziellen C-Compiler in WebAssembly-Binärdateien umzuwandeln. Diese können per JavaScript angesprochen werden und dienen somit der clientseitigen Implementierung von C-Programmen im Web.

April 2022 | Tetris: Fertigstellung

Im April 2022 fiel mir nichts mehr ein, was ich an meinem Passwortmanager, den ich früher oft weiterentwickelt hatte, ändern konnte. Ich erinnerte mich an meine Probleme mit Tetris in Java und beschloss, zwei Fliegen mit einer Klappe zu schlagen. Mit meiner neu gewonnenen Erfahrung schaffte ich es, Tetris fertigzustellen und es als Gelegenheitsspiel in den Passwortmanager einzubauen.

Mai 2022 | Weiterentwicklung Passwortmanager

In den Monaten Mai und Juni habe ich hauptsächlich an meinem Passwortmanager gearbeitet und einige Funktionen implementiert bzw. verbessert. Dazu gehören unter anderem Rückwärtskompatibilitätsprüfungen, automatische Backups über SFTP, ein erweiterter Passwortgenerator und Felder, die die Stärke eines Passworts anzeigen.

Juli 2022 | Webserver

In meinen Sommerferien 2022 bestellte ich mir einen lang ersehnten Raspberry Pi 4. Auf diesem installierte ich mir anschließend ein Linux-System darauf. Anschließend habe ich meinen gesamten Webspace kopiert und einen Nginx-Webserver aufgesetzt. Ebenso konnte ich nun das kostenfreie SSL-Zetifikat von Let’s Encrypt in Anspruch nehmen. Zum Schluss aktivierte ich noch ein dynamisches DNS auf dem neuen Server und verwende inzwischen einen Computer, auf dem ich volle Berechtigungen habe, als Webserver.

August 2022 | Web-Backend

Für die About-Seite, auf der sich auch dieser Eintrag befindet, wollte ich die Einträge schon lange in einer Datenbank speichern. So hätte ich später die Möglichkeit, sie effizient zu bearbeiten oder auch anzuzeigen. Letztendlich habe ich mich für eine MongoDB-Datenbank, einen Go-Server, HTML-Templates und eine REST-Api entschieden. Das Projekt hat mir sehr viel Spaß gemacht, da ich mich schon immer gefragt habe, wie das Web-Backend eigentlich funktioniert.

Januar 2023 | Markdown und Web-Backend

Im Januar 2023 habe ich mich wieder an meinen Webserver gesetzt und das CMS für die Timeline unter about verbessert.

So kann ich nun Inhalte mit Markdown-Syntax schreiben, die dann automatisch in HTML übersetzt werden und alles einfach von einem Web-Frontend aus verwalten. Auch \(\LaTeX\)-Code und Syntax-Highlighting werden unterstützt.

#include <stdio.h>

int main()
{
	prinf("Hallo Welt\n");
	return 0;
}

Mai 2023 | Einrichten einer CI/CD-Pipeline für den Webserver

Um meinen Webserver besser verwalten zu können und vor allem die Systemlogik nicht über SSH in VIM schreiben zu müssen, habe ich eine sogenannte CI/CD-Pipeline eingerichtet. Mit einem Programm, das auf dem Server läuft, kann ein zentrales Git-Repository bei Änderungen automatisch heruntergeladen und deployt bzw. in Betrieb genommen werden. Das erleichtert den Arbeitsprozess sehr und ist aus meiner Sicht ein interessantes Thema.

Oktober 2023 | Aktualisierungen am Passwortmanager

Nachdem ich immer wieder Änderungen an meinem Passwortmanager-Projekt vorgenommen hatte, wollte ich mich an einer etwas größeren Website versuchen. Ich habe versucht, den Passwortmanager wirklich wie ein Produkt auf einer Webseite darzustellen. Der Link dazu ist hier.

Leistungsnachweise

Einführung in das Quantencomputing - Teil 1

Algorithmen und Datenstrukturen in Java

Zum Web-Profi in drei Schritten - Prüfung

Wegweisende Anwendungen im Web

Programmieren fürs Web

Objektorientierte Programmierung in Java