Skip to content

The Ultimate Tic Tac Toe Challenge

Gerd Aschemann edited this page Jan 13, 2015 · 6 revisions

Welcome to the tictactoe wiki!

  • Kudos to Alex Cullum for the nice name "The Ultimate Tic Tac Toe Challenge" (TuT3c)!
  • From here we proceed in German - native speakers of any language are welcome for translations ...

Idee

Im Rahmen einer (eintägigen?) Veranstaltung nach Art eines Barcamps wird auf Basis eines gemeinsamen, sehr einfachen Start-Punkts (TicTacToe-Spiel) ein kleines Software-Projekt von verschiedenen Teams entwickelt bzw. weiterentwickelt. Dabei werden unterschiedliche Aspekte einer Entwicklung, ihres Tests, Betriebes oder auch ihrer Nutzung betrachtet. Falls sich die Teams nicht allzu sehr vom Startpunkt entfernen, können Sie am Ende des Tages Ihre Ergebnisse integrieren. Die Teilnehmer finden sich zu Teams zusammen, die jeweils einen bestimmten Aspekt herausgreifen. Es ist möglich, im Laufe des Events in andere Teams zu wechseln, um das Projekt aus einem anderen Blickwinkel kennenzulernen oder um die spätere Integration vorzubereiten. Wie bei einem Code Retreat soll jeder seine Erfahrung beisteuern und von anderen lernen - ob die Ergebnisse am Ende verworfen werden bleibt bei TuT3c jedoch jedem Teilnehmer selbst überlassen.

Start-Punkt

Als gemeinsame Grundlage ist die vorliegende Tic Tac Toe-Implementierung gedacht. Es kann auch jedes andere Projekt gewählt werden, die Teilnehmer oder der Veranstalter sollte jedoch einen gemeinsamen Start-Punkt festlegen - Am Ende steht schließlich nicht das eigentliche Spiel bzw. seine Implementierung im Vordergrund, sondern die gemeinsame Erweiterung des eigenen Erfahrungshorizontes durch die Teilnehmer.

Aspekte

Die folgenden Aspekte sind als Themenvorschläge für die unterschiedlichen Workshops gedacht. Die Liste ist natürlich offen und kann beliebig ergänzt oder modifiziert werden (bitte Feedback an mich!):

  • Verbesserung/Erweiterung des Protokolls (Spieler gegen Computer: Wer fängt an etc.?)
  • Verbesserung/Erweiterung der Implementierung
  • Testgetriebene Entwicklung
  • Alternative Implementierungen in anderen Programmiersprachen/Plattformen (Perl, PHP, Java, Scala, .NET, C/C++, Visual Basic, als Turing-Maschine, ...)
  • Implementierungen einer Spielstrategie (wenn diese das implizit definierte Protokoll einhalten, könnten sie sogar gegeneinander spielen)
  • Qualitätsmessungen (Code-/Architektur-Qualität, Test-Abdeckung, …)
  • Client/Spieler als Hardware-Gadget
  • Visualisierung (Steine setzen) mit Lego Mindstorms oder anderen Robotik-Toolkits
  • Andere Protokolle (z.B. Socket-basiert mit telnet-Client) und Optimierungen (Funkübertragung mit sehr schmaler Bandbreite?)
  • WebServices (SOAP-XML, REST, …)
  • Cloud-Services (Google, Amazon, …)
  • Mobile Clients
  • Diverse UIs und Visualisierungen (HTML5, GWT, JavaScript, Swing, PerlTK, Eclipse RCP, JavaFX, Swing und andere Fat Clients, …)
  • Technologie-Mix (Server in PHP, Client in Java?)
  • Automatische Integrations-Tests (gegen die verschiedenen Implementierungen)
  • Automatische Lasttests (wer hält länger durch? Wer antwortet schneller?)
  • Betrieb von Services/Spielen im Internet
  • Monitoring/Management von Anwendungen
  • Persistierung von Sessions
  • Failover-Szenarien (Hochverfügbarkeit von Sessions)
  • Bug- und Feature-Tracking (wie setze ich einen Tracker auf? Wie modelliere ich Workflows darin? ...)
  • Schutz-/Sicherheits-Szenarien (wie kann man eine Session übernehmen bzw. sich vor Übernahme schützen? Wie kann ich ggf. personenbezogene Daten schützen? Welche darf ich überhaupt erheben?)
  • Denial-of-Service Attacken (bitte nicht gegen meine Cloud testen ;-)
  • Lizenz-Fragen: Unter welche Lizenz sollte ich (m)eine Implementierung stellen? Unter welcher Lizenz stehen die verwendeten Bibliotheken? Wie finde ich das heraus, insbesondere, wenn ich nur Binär-Distributionen anziehe? Welche infiziert meine Implementierung?
  • Continuous Integration/Continuous Delivery
  • Organisation von Open Source-Projekten
  • Versions-Kontrolle
  • Wie kann ich meine Module anderen zur Verfügung stellen (Source-/Binary-Repositories)? Abhängigkeitsmanagement in verschiedenen "Welten" (Java-Artefakte, Perl-Packages, RPM/deb/... und ihre Schnittstellen?) ...

Ablauf

(Entwurf)

  • 08:30 Einschalten der Kaffeemaschine, gemeinsames Frühstück der Schlaflosen
  • 09:00 Eröffnung/Begrüßung, Vorstellung des gemeinsamen Start-Punktes
  • 09:10 Vorstellung von Aspekten/Ideen für Workshops in 2-Minuten Pitches
  • 09:40 Wahl der Top 5 (oder 7 oder 8 oder 10, je nach Interessen/Räumen) als konkrete Aspekte für die einzelnen Teams und Verteilung auf die Räume
  • 09:45 Los geht's
  • 13:00 Große Stärkung (Pizza oder was Hacker sonst so zum Leben brauchen)
  • 13:30 Und weiter (falls man nicht eh' am Laptop gegessen hat)
  • 15:30 Kleine Pause: Schnell einen Kaffee und ein Stückchen holen
  • 16:30 Letzter Schliff oder nochmal gucken, was die anderen so treiben?
  • 17:30 Ergebnisse im kleinen Kreis mit den Nachbar-Teams austauschen und integrieren?
  • 18:15 Großes Plenum: Vorführung einiger Resultate, Feedback
  • 19:00 Ab nach Hause oder in der Kneipe um die Ecke weiter coden?

Location und Teilnehmer

Ein erster Durchlauf soll im Winter 2013/14 im Rhein-Main-Gebiet (DA oder F) als gemeinsames Event der Java User Groups Darmstadt und Frankfurt und weiterer interessierter Gruppen stattfinden. Wir sind aktuell auf der Suche nach einem geeigneten Ort und Sponsor(en). Wir denken an ca. 35-40 Teilnehmer.

Sinnvoll erscheint aktuell eine Firma oder andere Organisation (Hochschule, IHK, Stadt, ...), die folgendes zur Verfügung stellt

  • Veranstaltungsort:
    • Ein großer Raum mit Beamer für alle Teilnehmer für die Eröffnung und ein Abschluss-Plenum
    • Mehrere kleine(re) Räume für die Teams mit großem Besprechungs-Tisch oder mehreren Schreibtischen
    • White-Boards und/oder Flip-Charts
    • WLAN + Internet-Zugang
  • Leibliches Wohl (Maximalforderung, es darf auch etwas weniger sein):
    • Vormittags als Starter ein paar Brötchen
    • Mittags Pizza
    • Nachmittags ein paar Kaffee-Stückchen
    • Zwischendurch Kekse?
    • Genug Kaffee (vielleicht auch Tee/Wasser/Saft/Mate/...)

Das Event kann auch aus mehreren Quellen leben:

  • Location z.B. durch Hochschule, IHK, Stadt/Schulen/VHS/...,
  • Essen/Getränke durch verschiedene Firmen/Vereine?

Geplante/Durchgeführte Events

Weitere Beiträge

Bestehende Beiträge

Clone this wiki locally
You can’t perform that action at this time.