Statustafeln sind für „Projektmanager“! Vergelten Sie ein kaputtes Gebäude mit einer Flut von Schaumraketen.
Retaliation ist ein Jenkins CI-Build-Monitor, der automatisch einen Gegenangriff mit Schaumraketen gegen den Entwickler koordiniert, der „den Build kaputt macht“. Dazu wird eine vorprogrammierte Steuersequenz an einen USB-Schaumraketenwerfer abgespielt, um den betreffenden Code-Affen anzugreifen.
Auf einer tieferen Ebene ist Retaliation mehr als nur ein „einfaches Python-Skript“. Es handelt sich um ein radikales Umdenken bei der Verwaltung von Softwareentwicklungsteams und dem Softwareentwicklungslebenszyklus. Es funktioniert auf einer tiefgreifenden psychologischen Ebene und bietet Produktivitätsverbesserungen, die bei all den anderen „extremen Programmierungen“, von denen externe Berater sprechen, nicht zu sehen sind. Die ursprüngliche Bedrohung der gegenseitig zugesicherten Zerstörung, die in der Psyche jedes Programmierers lauert, stellt sicher, dass selbst Ihre schlampigsten Entwickler nie wieder vergessen werden, „diese fehlende Datei einzuchecken“!
Die Vergeltung brachte uns die Produktivitätssteigerung, die das Pair-Programming versprochen hatte, aber nie liefern konnte! Wir haben seit der Implementierung einen Rückgang der Build-Abstürze um 13,37 % festgestellt.
Will, Chef-Code-Hacker
Mal ehrlich: Würden Sie in einem Entwicklerteam mit einem Lava Lamp Build Notifier arbeiten? Was kommt als nächstes? Nyan Cat-Mauspads? Echte Programmierer arbeiten unter der Androhung von Vergeltungsmaßnahmen!
Matt, Codiermaschine
Hält, was auf der Verpackung steht. Ich habe Verbesserungen in meinem Team gesehen und wir haben es noch nicht einmal installiert! Allein die bloße Bedrohung hat die Programmierung meines Teams auf den Kopf gestellt.
Tom, Chef-Code-Captain
In diesem Video können Sie Retaliation in Aktion sehen.
Montieren Sie Ihren Dream Cheeky Thunder USB-Raketenwerfer an einem zentralen und festen Ort.
Laden Sie das Skript „retaliation.py“ auf das System herunter, das mit Ihrem Raketenwerfer verbunden ist.
Ändern Sie Ihre COMMAND_SETS
im retaliation.py
-Skript, um Ihre Targeting-Befehle für jeden Ihrer Build-Brake-Codierer (deren Benutzer-ID, wie in Jenkins aufgeführt) zu definieren. Ein Befehlssatz ist eine Reihe von Bewegungs- und Feuerbefehlen. Es wird empfohlen, jeden Befehlssatz mit einem „Null“-Befehl zu beginnen. Dadurch wird der Werfer an einer bekannten Position geparkt (unten links). Sie können dann „oben“ und „rechts“ gefolgt von einer Zeit (in Millisekunden) verwenden, um Ihr Feuer zu positionieren.
Sie können einen Satz testen, indem Sie „retaliation.py“ mit dem Zielnamen aufrufen. z.B:
python retaliation.py "[developer's user name]"
Versuch und Irrtum ist der beste Ansatz. Erwägen Sie, dies heimlich nach Feierabend zu tun, um die besten Ergebnisse zu erzielen!
Richten Sie das Jenkins-Benachrichtigungs-Plugin ein. Definieren Sie einen UDP
Endpunkt auf Port 22222
der auf das System verweist, retaliation.py
hostet. Tipp: Stellen Sie sicher, dass Ihre Firewall UDP an diesem Port nicht blockiert.
Beginnen Sie mit der Überwachung auf fehlgeschlagene Build-Ereignisse, indem Sie den folgenden Befehl ausführen:
python retaliation.py stalk
(Erwägen Sie, dies als Boot-/Startskript einzurichten. Starten Sie unter Windows mit pythonw.exe
, damit es im Hintergrund ausgeblendet läuft.)
Warten Sie auf DEFCON 1 – Lasst die Kriegsspiele beginnen!
Vielen Dank an das Entwicklerteam von PaperCut (das an Druckverwaltungssoftware arbeitet), das beim Testen „ein paar im Kopf erledigt“ hat!
Wählen Sie den Montageort sorgfältig aus. Wählen Sie einen zentralen Standort in Ihren Büroräumen. Versuchen Sie, den Winkelabstand zwischen den Zielen zu maximieren. Dadurch verringert sich die Wahrscheinlichkeit von Friendly Fire-Vorfällen ... aber auch das ist Teil des Territoriums und Teil des Spaßes!
Erwägen Sie, den Launcher mit doppelseitigem Klebeband festzukleben, um seine Position zu fixieren. Dies verringert die Wahrscheinlichkeit, dass jemand einen „physischen Hack“ anwendet, um das Koordinatenzielsystem zu stören.
Wenn sich Ihr Täter aus nächster Nähe befindet, empfehlen wir aus Gesundheits- und Sicherheitsgründen, auf seine Tastatur oder seinen Monitor statt auf seinen Kopf zu zielen.
Wenn Sie ein großes Gebiet abdecken müssen, sollten Sie mehrere Raketenstarts in Betracht ziehen (z. B. Cluster-Unterstützung!). Richten Sie das Skript auf mehreren Computern ein und konfigurieren Sie mehrere Endpunktbenachrichtigungen in Jenkins.
Damit dies unter Windows funktioniert, müssen Sie PyUSB und libusb-win32 installieren. Das kann etwas knifflig sein, aber wenn Sie CI-Build-Skripte beherrschen, sollte es einfach sein!
Wenn Ihr Entwicklerteam in Down Under ist und Sie feststellen, dass die Vergeltung ihre Wirkung verliert, versuchen Sie, jede Rakete in etwas Vegemite zu tauchen, um die Schlagkraft zu erhöhen :-)
retaliation.py
dient auch als Befehlszeilen-Skript-API für den Dream Cheeky USB Missile Launcher . Sie können es wie folgt aufrufen, um das Gerät über ein Skript oder eine Befehlszeile zu steuern:
retaliation.py reset
retaliation.py right 3000
retaliation.py up 700
retaliation.py fire 1
Wenn Ihnen weitere coole Einsatzmöglichkeiten oder Ideen für Vergeltungsmaßnahmen einfallen, teilen Sie uns bitte Ihre Geschichte mit!