Blog

  • Entwicklung eines BVG Transit Timer Plugins mit Claude.ai

    Die tägliche Pendelei zur Arbeit brachte mich auf die Idee, ein WordPress-Plugin zu entwickeln, das mir den optimalen Zeitpunkt zum Verlassen des Büros anzeigt. Die Umsetzung gestaltete sich dank der KI Claude.ai überraschend einfach und schnell.

    In weniger als einer Stunde haben wir gemeinsam ein Plugin entwickelt, das die Abfahrtszeiten der U5 vom Büro zum Umsteige-Punkt und den Anschluss mit dem Bus zu meiner Heimatstation berechnet. Die KI verstand sofort meine Anforderungen und erstellte nicht nur den Code, sondern auch eine benutzerfreundliche Oberfläche und die notwendige WordPress-Integration.

    Das Plugin berücksichtigt Gehzeiten zur U-Bahn, die Fahrzeit mit der U5, Umsteigezeiten und die Busfahrt. Besonders praktisch: Verspätungen werden in Echtzeit angezeigt, sobald die VBB-API angebunden ist.

    Aktuell warte ich noch auf die Zugangsdaten für die VBB-API. Die Anfrage ist raus, und sobald ich den Zugang habe, kann das Plugin in den Livebetrieb gehen. Claude half auch hier und formulierte eine professionelle E-Mail an die VBB.

    Das Ergebnis scheint ein vollwertiges WordPress-Plugin mit sauberem Code und guter Dokumentation zu sein.

    Auch diesen Beitrag hat Claude.ai generiert und hier ist das Plugin als Shortcode integriert:

    BVG Verbindungsplaner

    🚇 U5: U Frankfurter Allee → U Friedrichsfelde
    🚌 Bus 194: U Friedrichsfelde → Merler Weg
    Lade Verbindungen…
  • Einstieg in Processing

    Processing ist eine Open-Source-Programmierumgebung, die speziell dafür entwickelt wurde, Programmierung für Künstler:innen, Designer:innen, Kreative und alle Interessierten zugänglich zu machen.

    Ursprünglich wurde es 2001 von Casey Reas und Ben Fry an der MIT Media Lab entwickelt und ist heute ein beliebtes Werkzeug für kreative und visuelle Projekte.

    Hier gibt es jetzt einen kleinen Programmiereinstig in diese nice Software.

    Starte mit dem Download und der Installation:

    Erledigt? Dann kann es ja los gehen 🙂


    Die wichtigsten Teile der Processing-Umgebung (IDE)

    1. Der Editor:
      • Hauptbereich, in dem du deinen Code schreibst.
      • Code-Highlighting erleichtert das Lesen und Verstehen deines Programms.
      • Einfacher „Play“-Button, um dein Programm direkt auszuführen.
    2. Die Toolbar:
      • Oben in der IDE findest du Buttons für häufige Aktionen:
        • Play (): Führt dein Programm aus.
        • Stop (): Stoppt die Programmausführung.
        • Open/Save: Öffnet oder speichert Projekte.
    3. Das Ausgabefenster:
      • Hier wird dein Programm als interaktive oder grafische Anwendung angezeigt.
      • Standardmäßig ist das Fenster eine weiße Leinwand, die du mit deinen Ideen füllst.
    4. Die Konsole:
      • Ein Bereich unterhalb des Editors, der Textausgaben zeigt.
      • Wird verwendet, um Debugging-Informationen oder Fehlermeldungen anzuzeigen.
    5. Sketches:
      • Processing-Projekte werden „Sketches“ genannt. Jeder Sketch ist ein einzelnes Programm und wird in einem eigenen Ordner gespeichert.

    „Hello, Canvas!“ – Deine erste Zeichnung

    Willkommen in der Welt der kreativen Programmierung

    Lerne die Grundlagen von Processing, indem du einfache Formen zeichnest und Farben hinzufügst.

    Neue Befehle

    • size(width, height): Definiert die Größe des Zeichenfensters.
    • background(color): Legt die Hintergrundfarbe fest.
    • fill(color): Setzt die Füllfarbe für Formen.
    • ellipse(x, y, w, h): Zeichnet einen Kreis oder eine Ellipse.
    • rect(x, y, w, h): Zeichnet ein Rechteck.

    Code

    void setup() {
      size(400, 400); // Fenstergröße
      background(255); // Weißer Hintergrund
    }
    
    void draw() {
      fill(255, 0, 0); // Rote Füllfarbe
      ellipse(200, 200, 100, 100); // Kreis in der Mitte
      fill(0, 255, 0); // Grüne Füllfarbe
      rect(150, 150, 100, 50); // Rechteck über dem Kreis
    }

      „Lass es bewegen!“ – Interaktive Animation

      Neue Befehle

      • mouseX und mouseY: Speichern die aktuelle Position der Maus.
      • draw(): Wiederholt kontinuierlich den Zeichenprozess (Animationsloop).

      Code

      void setup() {
        size(400, 400); // Fenstergröße
        background(255); // Weißer Hintergrund
      }
      
      void draw() {
        fill(255, 0, 0); // Rote Füllfarbe
        ellipse(200, 200, 100, 100); // Kreis in der Mitte
        fill(0, 0, 255); // Blaue Füllfarbe
        rect(150, 150, 100, 50); // Rechteck über dem Kreis
      }

      „Farbexplosion“ – Dynamische Farben

      Neue Befehle

      • random(max): Gibt eine Zufallszahl zwischen 0 und max zurück.
      • mousePressed(): Wird aufgerufen, wenn die Maus gedrückt wird.

      Code

      void setup() {
        size(400, 400);
      }
      
      void draw() {
        background(0);
      }
      
      void mousePressed() {
        fill(random(255), random(255), random(255));
        ellipse(mouseX, mouseY, 100, 100); // Zufällige Farben bei Klick
      }

      „Das Tanzende Netz“ – Linien und Muster

      Neue Befehle

      • stroke(color): Legt die Farbe für Linien und Umrandungen fest.
      • line(x1, y1, x2, y2): Zeichnet eine Linie von Punkt (x1, y1) zu Punkt (x2, y2).
      • for: Eine Schleife, um wiederholte Aktionen auszuführen.

      Code

      void setup() {
        size(400, 400);
      }
      
      void draw() {
        background(20);
        stroke(255);
        for (int i = 0; i < width; i += 20) {
          line(i, 0, mouseX, mouseY); // Linien laufen auf Mauszeiger zu
        }
      }

      „Pixel-Art“ – Dein kreatives Raster

      Neue Befehle

      • Verschachtelte for-Schleifen: Zwei Schleifen in Kombination, um ein Raster zu erstellen.

      Code

      void setup() {
        size(400, 400);
      }
      
      void draw() {
        for (int x = 0; x < width; x += 20) {
          for (int y = 0; y < height; y += 20) {
            fill(random(255), random(255), random(255));
            rect(x, y, 20, 20); // Farbige Quadrate
          }
        }
      }

      „Partikel-Tanz“ – Simulationen verstehen

      Neue Befehle und Konzepte

      • Klassen: Eine Struktur, um Objekte wie Partikel zu erstellen.
      • Arrays: Speichern mehrere Objekte in einer Liste.
      • random(min, max): Gibt eine Zufallszahl im Bereich von min bis max zurück.

      Code

      Particle[] particles = new Particle[100];
      
      void setup() {
        size(400, 400);
        for (int i = 0; i < particles.length; i++) {
          particles[i] = new Particle(random(width), random(height));
        }
      }
      
      void draw() {
        background(0);
        for (Particle p : particles) {
          p.update();
          p.display();
        }
      }
      
      class Particle {
        float x, y, vx, vy;
        Particle(float x, float y) {
          this.x = x;
          this.y = y;
          vx = random(-2, 2);
          vy = random(-2, 2);
        }
      
        void update() {
          x += vx;
          y += vy;
          if (x < 0 || x > width) vx *= -1;
          if (y < 0 || y > height) vy *= -1;
        }
      
        void display() {
          fill(255);
          ellipse(x, y, 5, 5);
        }
      }

      „Kaleidoskop-Magie“ – Symmetrie und Spiegelung

      Neue Befehle

      • translate(x, y): Verschiebt den Ursprung des Koordinatensystems.
      • rotate(angle): Rotiert die Zeichnung um einen Winkel.
      • TWO_PI: Eine Konstante für 360° in Radiant.

      Code

      void setup() {
        size(400, 400);
        background(0);
      }
      
      void draw() {
        translate(width / 2, height / 2);
        for (int i = 0; i < 6; i++) {
          rotate(TWO_PI / 6);
          ellipse(mouseX - width / 2, mouseY - height / 2, 20, 20);
        }
      }

      „Soundvisualisierung“ – Musik trifft auf Kunst

      Neue Befehle und Bibliotheken

      • import processing.sound.*: Importiert die Sound-Bibliothek.
      • SoundFile: Lädt und spielt Sounddateien ab.
      • FFT: Analysiert Frequenzen eines Audiosignals.

      Code

      import processing.sound.*;
      
      SoundFile file;
      float[] spectrum = new float[512];
      FFT fft;
      
      void setup() {
        size(400, 400);
        file = new SoundFile(this, "dein_sound.mp3");
        file.loop();
        fft = new FFT(this, spectrum.length);
        fft.input(file);
      }
      
      void draw() {
        background(0);
        fft.analyze(spectrum);
      
        for (int i = 0; i < spectrum.length; i++) {
          stroke(255);
          line(i, height, i, height - spectrum[i] * 100);
        }
      }

    1. Neustart Nummer 1000

      Also ich habe schon so oft neue Blogs angefangen, dass die gesamte Installation manuell weniger als eine Stunde gedauert hat. Dazu zählte die:

      1. Suche und der Kauf der Domain
      2. Zuweisen des SSL Zertifikates
      3. Einrichten der MariaDB Datenbank
      4. Herunter- und Heraufladen von WordPress
      5. Einrichtung der neuen Email-Adresse
      6. Installation von WordPress
      7. Aktivierung von Akismet

      Tja und nun schreibe ich meinen ersten Beitrag. Aber irgendeiner muss der erste sein und ich hoffe, dass ich auch weiterhin am Ball bleibe. Früher hatte ich damit totalen Spaß und ich bin irgendwie hobbylos. Die Vorzeichen stehen also erstmal gut 😀

    2. Hallo Welt!

      Willkommen bei WordPress. Dies ist dein erster Beitrag. Bearbeite oder lösche ihn und beginne mit dem Schreiben!