Programme
Diese Seite soll eine Übersicht über alle Programme anbieten, an denen ich arbeite. Gleichzeitig soll die Seite aber auch Informationen sammeln, die mich beim Programmieren unterstützen, um darüber offensichtliche Fehler zu vermeiden.
Gliederung
Projekte
Arbeitsanwendungen
- Dashboard (2013-): Meine Webseite ist der Versuch, mein eigenes Wissen kritisch hinterfragbar zu machen, um damit zu besseren Überzeugungen und Methoden zu gelangen und Probleme systematisch zu lösen.
- TiddlyWiki für den Haushalt (2020-): Eine HTML-Datei für die gemeinsame Haushaltsplanung.
- TiddlyWiki für die Schulorganisation (2020-): Eine HTML-Datei für die Vorbereitung von Unterrichtseinheiten und die Planung eines Schuljahres. Oder generell für das systematische Lernen.
- FastWriter (2020): Ein Programm für schnelles, strukturiertes Schreiben mit Countdown-Funktion und verschiedenen Teilabschnitten.
- Freunde-treffen-Bot (2022): Ein Discord-Bot, der dazu gedacht ist, freie Zeiten innerhalb eines Kanals zu sammeln, um darüber festzustellen, wer Zeit und Lust für ein Treffen hat.
Computerspiele
- blues (2015): Ein Spiel über den Umgang mit Trennung; in einem C64-Stil, abstrakt und emotional
- Lost Path (2016-)
- Adventure Cards (2021-): Es handelt sich um einen rundenbasierten Deckbuilder mit einem stärkeren Fokus auf taktische Positionierungen und der Verbindung von Fähigkeiten und Kartenkategorien.
- Sandsteamers (2022-)
- Storm Island (2022-)
Konzepte
- Design- und Optimierungsperspektive: Jedes Programmierkonzept besitzt die Möglichkeit, neue Codeideen vorzugeben [Designperspektive] und bisherigen Code zu verbessern [Optimierungsperspektive]. Diese Einteilung hilft dabei, genauer zu bestimmen, wann ein bestimmtes Konzept sinnvoll genutzt werden kann.
- Code wird durch das Ziel bestimmt: Code kann zu schnellen, sicheren und verwaltbaren Programmen führen. Häufig wird ein konkretes Ziel festgelegt und dieses bestimmt dann, wie eine Programmiererin eine Entscheidung für den Code trifft. Schnelle Programme sind nicht immer gut verwaltbar. [Designperspektive, Optimierungsperspektive]
- Komplexität vermeiden: Eines meiner obersten Ziele besteht darin, Komplexität beim Schreiben von Code zu vermeiden. Komplexität meint dabei die Anzahl von abstrakten Beschreibungen sowie die Anzahl von Technologien, die gleichzeitig aktiv sind. [Designperspektive, Optimierungsperspektive]
- Wiederholtes Schreiben desselben Codes vermeiden: Programmierung sollte dazu tendieren, Aufgaben zu vereinfachen und zu automatisieren. Wenn man denselben Code immer und immer wieder schreibt, sollte man überlegen, wie dieser vereinheitlicht werden kann. [Optimierungsperspektive]
- Modularität: Wenn ich etwas programmiere, stellt sich häufig die Frage, wie häufig eine Sache an anderer Stelle wiederverwendet werden soll. Modularität erlaubt es, ein Programm aus einzelnen Bestandteilen zusammenzusetzen. Dadurch wird verhindert, dass man sich in der Beschreibung von Objekten wiederholen muss. [Designperspektive]
- Interoperabilität: Interoperabilität ist die Fähigkeit, dass zwei Systeme ohne größere Schwierigkeiten zusammenarbeiten können. Im Besonderen ist damit gemeint, dass die Nutzerdaten eines Systems in ein anderes System übertragen werden können. [Designperspektive]
- Geschwindigkeit erhöht Immersion: Eine hohe Immersion führt zu einem Gefühl von Mühelosigkeit, welche Stocker bei der Benutzung der Anwendung verhindern, was wiederum negativen Assoziationen insgesamt vorbeugt. Programme mit einer hohen Reaktionsgeschwindigkeit fühlen sich eher wie eine Erweiterung des eigenen Körpers an und stehen dementsprechend bei einer Arbeit nicht im Weg.
- Interpretabilität
Nützliches
- Bézier-Kurve: Eine Bézier-Kurve beschreibt eine Krümmung anhand von Punkten anstatt durch die 1-zu-1-Zuordnung einer Funktion. Dies ist nützlich, um beliebig komplizierte Kurven zu beschreiben.
- Sigmoid-Funktion: Die Sigmoid-Funktion ist eine Zuordnung eines Wertes zu annähernd 0 oder 1, wobei der Übergangs-Bereich um 0 herum ein Verlauf ist. Damit kann ein Bool'scher Zusammenhang ohne starke Grenze dargestellt werden.
Diskussionen
- Bewertungssysteme: Ein Bewertungssystem soll einem Nutzer die Möglichkeit bieten, schneller darüber entscheiden zu können, ob etwas nützlich sein könnte, indem es einen Punktestand (Score) zuweist, um Objekte nach der Höhe ihrer Platzierung sortieren zu können.
- Freundeskreise: Beim Teilen von Inhalten wird häufiger über eine Funktion nachgedacht, die dafür verantwortlich ist, den Zugang nur bestimmten Gruppen zugänglich zu machen. Der Vorteil besteht darin, an einer Stelle alles mit anderen teilen zu können, anstatt diese Funktion auf verschiedene Dienste zu verteilen. Das Hauptproblem einer solchen Funktion besteht darin, dass es bei einem gleichbleibenden Design sehr anstrengend sein kann, genau zu bestimmen, wer was sehen soll. Darüber hinaus muss eine Taxonomie von Freundschaften explizit gepflegt werden
- Checkboxen sollten eine Nichts-von-allem-Auswahlmöglichkeit besitzen, um Fehlverhalten von Anwendern zu minimieren. Das offizielle Designblog der britischen Regierung schlägt dieses Verhalten nach einer Reihe von empirischen Überprüfungen vor.