Geschrieben

Blog

Notizen aus sieben Jahren Basteln, Bauen und Betreiben: Discord-Bots, Webdienste, Server und ein Minecraft-Netzwerk. Was funktioniert hat, was kaputtgegangen ist und was ich daraus gelernt habe.

41 Beiträge zum Thema „yurna“.

Beiträge

  1. D

    Die Lizenzverwaltung war seit Wochen funktionslos

    Genehmigen, Ablehnen, Sperren, Entsperren — nichts davon tat etwas. Die Ursache war eine Zeile in der Eingabeprüfung, und der Grund, warum es niemand merkte, ist die eigentliche Lehre.

    • yurna
    • api
    • fehlersuche
    5 Min. Lesezeit
  2. Ö

    Ökosystem-Review: eine Ticket-Route ohne Wache

    Ein zweiter Durchgang, diesmal über alle Projekte statt nur über eins. Der Fund: dieselbe Lücke, die ich sechs Tage vorher behoben hatte, an einer benachbarten Stelle.

    • sicherheit
    • yurna
    • audit
    5 Min. Lesezeit
  3. S

    Sicherheitsaudit: fünf schwere Treffer im eigenen Code

    Einmal alles durchsehen, aufschreiben, einstufen, abarbeiten. Was ich gefunden habe, was mich am meisten geärgert hat und warum kein einziger Fund exotisch war.

    • sicherheit
    • yurna
    • audit
    5 Min. Lesezeit
  4. D

    Das Schema neu aufsetzen, wenn niemand hinsieht

    Sechs Jahre Migrationsgeschichte, Reste aus drei Datenbanksystemen, Tabellen ohne Nutzer. Wie ich das Datenmodell auf einen sauberen Anfangszustand gebracht habe — ohne Daten zu verlieren.

    • datenbank
    • yurna
    • wartung
    5 Min. Lesezeit
  5. O

    OAuth-Token verschlüsseln, bevor jemand danach fragt

    Wer sich über Discord anmeldet, hinterlässt bei mir ein Zugriffstoken. Was damit möglich wäre, wie ich es verschlüssele — und der Fehler, den ich dabei jahrelang im Code hatte.

    • sicherheit
    • yurna
    • architektur
    5 Min. Lesezeit
  6. V

    Venator: eine Idee, die liegen blieb

    Ein Rollenspielsystem, das Spielwelten mit Discord verbindet. Datenmodell steht, Schnittstelle steht, benutzt wird es nicht. Über Projekte, die man nicht zu Ende bringt.

    • yurna
    • produkt
    • persoenlich
    5 Min. Lesezeit
  7. D

    Drei Prozesse, eine Datenbank

    Bot, Dashboard und Verwaltung laufen getrennt und sprechen nie direkt miteinander. Warum diese Architektur für ein Ein-Personen-Projekt genau richtig ist — und wo ihre Grenzen liegen.

    • yurna
    • architektur
    • betrieb
    5 Min. Lesezeit
  8. D

    Die Admin-API wird eigenständig

    Wenn der Bot abstürzt, soll man trotzdem nachsehen und steuern können. Warum ich die Verwaltung vom laufenden Discord-Client entkoppelt habe — und wie Befehle an einen abwesenden Bot funktionieren.

    • yurna
    • architektur
    • api
    5 Min. Lesezeit
  9. V

    Von Postgres nach SQLite — der unpopuläre Umzug

    Fast alle Wege führen von SQLite zu Postgres. Ich bin den umgekehrten gegangen, aus Gründen, die mit Last nichts zu tun haben — und würde es wieder tun.

    • datenbank
    • architektur
    • yurna
    5 Min. Lesezeit
  10. V

    Vier Jahre Yurna

    Auf den Tag genau vier Jahre nach dem ersten Commit: was aus fünf Befehlen geworden ist, welche Entscheidungen sich gehalten haben und welche ich rückgängig gemacht habe.

    • yurna
    • rueckblick
    • persoenlich
    5 Min. Lesezeit
  11. P

    Premium: zum ersten Mal über Geld nachdenken

    Serverkosten, Zeit und die Frage, ob ein kostenloses Projekt dauerhaft tragfähig ist. Wie ich über Bezahlmodelle nachgedacht habe — und warum ich mich gegen das naheliegendste entschieden habe.

    • yurna
    • produkt
    • wirtschaft
    5 Min. Lesezeit
  12. T

    Ticket-System v2: Transkripte, Kategorien, Automatik

    Aus einem Knopf, der einen Kanal erzeugt, wurde ein System mit Abschriften, Bewertungen, Notizen und Regeln. Der größte Einzelbrocken des Jahres — und die Fragen, die dabei nicht technisch waren.

    • yurna
    • discord
    • architektur
    5 Min. Lesezeit
  13. F

    Feature-Wildwuchs aufräumen, ohne Nutzer zu vergraulen

    Dreißig Befehle standen zur Disposition. Wie ich entschieden habe, was bleibt, wie das Abschalten abgelaufen ist — und welche Reaktion mich am meisten überrascht hat.

    • yurna
    • produkt
    • wartung
    5 Min. Lesezeit
  14. 1

    150 Befehle sind kein Ziel, sondern eine Warnung

    Auf der Startseite stand „über 150 Befehle“ wie eine Auszeichnung. Als ich nachgesehen habe, welche davon tatsächlich benutzt werden, war das Ergebnis unangenehm.

    • yurna
    • meinung
    • produkt
    5 Min. Lesezeit
  15. P

    Postgres für einen Bot war eine Nummer zu groß

    Ich hatte eine ausgewachsene Datenbank für ein System mit überschaubarer Last. Was das gekostet hat, was es gebracht hat — und warum die Entscheidung trotzdem erst später fiel.

    • yurna
    • datenbank
    • architektur
    5 Min. Lesezeit
  16. S

    Statistiken, die niemand liest — und die drei, die zählen

    Ich habe zwei Wochen an einer Statistikseite gebaut, die keiner benutzt hat. Über den Unterschied zwischen interessanten und nützlichen Zahlen.

    • yurna
    • daten
    • meinung
    5 Min. Lesezeit
  17. D

    discord.js v14: was der Umstieg wirklich gekostet hat

    Umbenannte Aufzählungen, veränderte Rechteprüfungen, ein neues Modul für Einbettungen. Ein Wochenende Umstellung, das drei Wochen gedauert hat — und warum ich trotzdem früh umgestiegen bin.

    • yurna
    • discord
    • migration
    5 Min. Lesezeit
  18. R

    Reaction Roles und die Tücke der Events

    Auf ein Emoji klicken, eine Rolle bekommen. Das einfachste Feature überhaupt — bis man merkt, dass Discord Ereignisse für alte Nachrichten gar nicht erst liefert.

    • yurna
    • discord
    • architektur
    5 Min. Lesezeit
  19. E

    Economy ohne Inflation: Zahlen, die nicht explodieren

    Eine Bot-Währung ist in zwei Stunden gebaut und in zwei Wochen wertlos. Über Geldquellen, Geldsenken, Arbeitsbefehle mit Abklingzeit und die Frage, wofür man überhaupt Geld braucht.

    • yurna
    • spielmechanik
    • discord
    5 Min. Lesezeit
  20. W

    Wer Self-Hosting anbietet, schreibt Dokumentation — oder bekommt Tickets

    Den eigenen Bot selbst betreiben zu können klingt großzügig. Es bedeutet aber: Jeder Fehler in fremden Umgebungen wird zu deiner Aufgabe, wenn die Anleitung Lücken hat.

    • yurna
    • doku
    • community
    5 Min. Lesezeit
  21. D

    Die Domain yurna.info und was ein Name ausmacht

    Zwei Jahre lief das Projekt unter einem Arbeitstitel. Der Tag, an dem es einen Namen und eine Domain bekam, hat mehr verändert, als mir lieb ist — und einiges an Arbeit ausgelöst.

    • yurna
    • marke
    • persoenlich
    5 Min. Lesezeit
  22. M

    Mehrsprachigkeit von Anfang an wäre billiger gewesen

    Über hundert Befehle mit Texten mitten im Code, dazu Zahlen, Daten und Pluralformen. Was das Nachrüsten von zwei Sprachen tatsächlich gekostet hat.

    • yurna
    • i18n
    • architektur
    5 Min. Lesezeit
  23. M

    Monorepo oder nicht — ich habe mich falsch entschieden und dann richtig

    Bot, Dashboard und gemeinsamer Code lagen in drei Repositories. Jede Änderung an geteilten Funktionen war eine Kopieraktion. Wie ich das zusammengelegt habe und was dabei schiefging.

    • architektur
    • werkzeuge
    • yurna
    5 Min. Lesezeit
  24. S

    Sharding verstehen, bevor man es braucht

    Ab 2500 Servern muss ein Discord-Bot seine Verbindungen aufteilen. Ich war weit davon entfernt — und habe mich trotzdem damit beschäftigt. Was ich dabei über verteilte Zustände gelernt habe.

    • yurna
    • discord
    • skalierung
    5 Min. Lesezeit
  25. M

    Musikbots sterben, und ich habe meinen freiwillig abgeschaltet

    Als die großen Musikbots abgeschaltet wurden, hatte ich selbst einen. Warum ich ihn entfernt habe, statt weiterzumachen — und was das über Abhängigkeiten von fremden Diensten sagt.

    • yurna
    • discord
    • meinung
    5 Min. Lesezeit
  26. D

    Das erste Ticket-System — und warum ich es zweimal gebaut habe

    Ein Knopf, ein Kanal, ein Gespräch. Die erste Fassung hat sechs Wochen gehalten, dann kamen die Fragen, die ich nicht bedacht hatte: Verlauf, Kategorien, Rechte, Löschen.

    • yurna
    • discord
    • architektur
    5 Min. Lesezeit
  27. G

    Giveaways sind schwerer, als sie aussehen

    Eine Verlosung ist ein Zeitgeber, eine Teilnehmerliste und ein Zufallsgriff. Klingt nach einer Stunde Arbeit — und ist der Befehl, der mich am meisten über Zustand, Neustarts und Fairness gelehrt hat.

    • yurna
    • discord
    • architektur
    5 Min. Lesezeit
  28. P

    Prisma statt handgeschriebener Queries

    Warum ich meine SQL-Strings aufgegeben habe, was ein Schema als einzige Wahrheit bringt — und die zwei Stellen, an denen ich bis heute lieber selbst SQL schreibe.

    • yurna
    • datenbank
    • werkzeuge
    5 Min. Lesezeit
  29. D

    Das Dashboard wird echt: Next.js und Discord-OAuth

    Von der Skizze zur laufenden Weboberfläche: Anmeldung über Discord, Serverauswahl, Einstellungen. Und die drei Sicherheitsfragen, die ich vorher nicht auf dem Zettel hatte.

    • yurna
    • web
    • nextjs
    5 Min. Lesezeit
  30. S

    Slash-Commands: die große Umstellung

    Fünfundvierzig Befehle, zwei Aufrufwege, ein halbes Jahr Übergangszeit. Was bei der Umstellung auf Anwendungsbefehle wirklich Arbeit war — und was überraschend einfach ging.

    • yurna
    • discord
    • migration
    5 Min. Lesezeit
  31. J

    Jahresrückblick 2020: das Jahr, in dem Yurna entstand

    Ein neues Repository im Februar, ein Umzug auf einen gemieteten Server, eine Datenbank statt Dateien, achtzig Leute im Discord und ein dreitägiger Ausfall. Was 2020 bei mir passiert ist.

    • rueckblick
    • jahr
    • yurna
    5 Min. Lesezeit
  32. E

    Ein Dashboard wäre schön — erste Skizze

    Bots werden über Chatbefehle konfiguriert, und das ist für alles jenseits von drei Einstellungen zu wenig. Wie ich mir eine Weboberfläche vorgestellt habe, bevor ich wusste, was sie kostet.

    • yurna
    • web
    • planung
    5 Min. Lesezeit
  33. R

    Rate-Limits verstehen, bevor Discord es einem beibringt

    Ein Befehl, der zwanzig Nachrichten schickt, eine gesperrte Anwendung und ein Nachmittag mit HTTP-Kopfzeilen. Wie Rate-Limits funktionieren und wie man sie einhält, ohne alles zu verlangsamen.

    • yurna
    • discord
    • api
    5 Min. Lesezeit
  34. W

    Warum ich Präfixe satt hatte, bevor es Slash-Commands gab

    Ein Ausrufezeichen vor jedem Befehl war jahrelang Standard. Was daran im Alltag nervt, welche Notlösungen es gab — und warum die Ankündigung von Slash-Commands für mich ein Befreiungsschlag war.

    • yurna
    • discord
    • meinung
    5 Min. Lesezeit
  35. D

    Der Bot war drei Tage offline und niemand hat es mir gesagt

    Ein Absturz um zwei Uhr nachts, ein Prozess, der nicht wieder hochkam, und drei Tage Stille. Über den Unterschied zwischen „läuft“ und „ich weiß, dass es läuft“.

    • yurna
    • betrieb
    • ueberwachung
    5 Min. Lesezeit
  36. B

    Bilder im Bot erzeugen, ohne den Bot einzufrieren

    Ranglisten-Karten, Willkommensbilder, Profilgrafiken: Wie man in Node.js Bilder zeichnet — und warum meine erste Fassung den ganzen Bot für Sekunden anhielt.

    • yurna
    • javascript
    • leistung
    5 Min. Lesezeit
  37. X

    XP und Level: meine erste Formel, die keiner verstand

    Ein Levelsystem ist in einer Stunde gebaut und in drei Wochen kaputtgespielt. Über Kurven, Abklingzeiten, Spam-Anreize und die Frage, wofür man eigentlich Punkte vergibt.

    • yurna
    • discord
    • spielmechanik
    5 Min. Lesezeit
  38. M

    Moderationsbefehle und die Frage, wer eigentlich was darf

    Kick, Bann, Timeout — technisch in einer Stunde gebaut. Die eigentliche Arbeit steckt in der Frage, wer sie benutzen darf, und in dem, was man hinterher noch nachvollziehen kann.

    • yurna
    • discord
    • rechte
    5 Min. Lesezeit
  39. V

    Von JSON-Dateien zu einer richtigen Datenbank

    Zwei beschädigte Dateien, ein verlorener Punktestand und die Frage, warum eigentlich alle Datenbanken benutzen. Der Umzug von JSON auf MySQL — mit allem, was ich dabei zum ersten Mal verstanden habe.

    • yurna
    • datenbank
    • architektur
    6 Min. Lesezeit
  40. V

    Vom if-Wald zum Command-Handler

    Wie aus einer 400-Zeilen-Verzweigung ein System aus einzelnen Dateien wurde — und warum diese Umstellung die wichtigste des ganzen Jahres war.

    • yurna
    • javascript
    • architektur
    5 Min. Lesezeit
  41. Y

    Yurna fängt an: ein Bot, der eigentlich nur Memes posten sollte

    Am 24. Februar 2020 habe ich das Repository angelegt, aus dem später Yurna wurde. Warum ich auf einer offenen Vorlage aufgesetzt habe statt bei null anzufangen — und was das langfristig gekostet hat.

    • yurna
    • discord
    • projektstart
    6 Min. Lesezeit