SoCraMOB 2017-10-07

SoCraMOB was ist das?

SoCraMOB ist eine Abkürzung die für “Software Craftmansship - Münster Osnabrück Bielefeld” steht. Software Craftsmansship ist quasi ein Appell, an die Aufrichtigkeit und Richtigkeit von Programmierern, wie man es von alten Traditionen aus dem Handwerk im Mittelalter kennt. Aus der Idee heraus, dass dem Programmierer sein Werkzeug und sein Ergebnis wichtig sein soll, ist auch das Manifest entstanden:

Not only working software,
    but also well-crafted software
Not only responding to change,
    but also steadily adding value
Not only individuals and interactions,
    but also a community of professionals
Not only customer collaboration,
    but also productive partnerships 

Rund um diese Ideen und Vorstellungen sind Weltweit Usergroups entstanden, unter anderem auch in Osnabrück, Münster & Bielefeld. Diese Gruppierungen organisieren Regelmäßig Events, so ist es zum Beispiel in der MOB-Usergroup Gang und Gäbe, dass einmal pro Quartal ein OpenSpace stattfindet. Die Locations and denen so ein OpenSpace stattfindet sind meißt Firmen, die sich bereit erklären so einen Tag zu sponsoren. Denn ganz ohne Geld und Sponsoring wird es schwer mit Getränken, Kaffee, Pizza und Brötchen. So auch der am 2017-10-07 bei Hellmann in Osnabrück.

OpenSpace am 2017-10-07

OpenSpace klingt erstmal nach einem neuen Bürokonzept, dass als nächsten Buzzword durch die Manager-Landschaft getrieben wird. Aber keine Sorge, so schlimm ist es nicht ;). Es ist eine Beschreibung für den “Unkonferrenz”-Stil der Veranstaltung. Es ist ein Offener Platz für Ideen und entfaltung (- man klingt wie aus dem Lehrbuch). Jemand stellt also Platz (und Essen und Trinken) bereit und der Rest passiert durch die Anwesenden. Es gibt also (fast) keine feste Agenda oder Themenwahl, alles Entwickelt sich vor Ort und gerade so, wie es die Teilnehmer entscheiden.

Es ist nicht das erste mal, dass ich bei einem OpenSpace von SoCraMOB bin. Ich hatte am Anfang bedenken, dass es eine Kaffeefahrt wird, damit Leute aus anderen Firmen ihre tollen, neuen Konzepte vorstellen und diese verkaufen wollen. Aber das ist zum Glück nicht passiert. Es ist vielmehr ein Ort und eine Chance sich über das zu unterhalten was man als Entwickler spannend findet und was einen Beschäftigt.

Pizza

LeanCoffee

Der OpenSpace begann mit einem LeanCoffee. Ein schöner Begriff um zu umschreiben was unvermeidbar ist, wenn viele Entwickler und interessierte bei Kaffee und Brötchen aufeinander Treffen: Sie sprechen über das was Sie interessiert und verbindet und dabei kristallisieren sich Themen heraus, die man spannend findet. (Natürlich ist das nicht ganz so, wie es im echten Leben funktioniert, aber hier sind ja Inhalte spannender als die Methoden ;) Wenn du mehr zu LeanCoffe lesen möchtest, findest du hier mehr dazu).

Marketplace

Nach dem LeanCoffee wird zum Marketplace gerufen. Dabei stellen Sich alle in einem Kreis auf um zu besprechen welche Themen am Tag besprochen werden bzw. zu welchen Themen Sessions abgehalten werden sollen.

Market Place

Dazu nimmt sich jeder der über ein bestimmtes Thema sprechen möchte eine Karte, beschreibt diese mit seinem Wunschthema und hängt sie an eine Tafel, die mit einer Matrix aus Zeitslots und Orten versehen ist. Auf den Karten steht immer das Thema und der Host der Session. Der Host selbst muss keine Ahnung von dem Thema haben, es reicht, wenn er sich mit dem Thema auseinander setzen möchte, die Diskussion darum entsteht dann letztendlich in der Session selbst.

Market Place Programm am Vormittag

Wie diese angeordnet werden hängt natürlich zum einen davon ab, welche Sessions die Leute besuchen möchten und zum anderen, wie viele Leute die Session besuchen wollen. Dieser Marketplace findet 2 mal statt: Einmal am Vormittag und einmal nach dem Essen. Da sich eventuell aus den Sessions am Vormittag neue Themen für den Nachmittag ergeben.

Themen die ich besucht (oder moderiert) habe

Bei vielen Themen fällt es häufig schwer sich für etwas zu entscheiden was man Besuchen oder selbst halten möchte. Zum Glück gab es diesmal nur ein paar große Themen, die scheinbar für viele Interessant waren, weswegen mir die Auswahl nicht schwer viel.

Blockchain #1

Ein Entwickler von Dashcoin war anwesend, den ich schon beim LeanCoffee darauf angesprochen habe, ob er nicht eine Session zur Blockchain halten will. Ein Thema mit dem ich bis zu dem Zeitpunkt noch überhaupt nicht auseinander gesetzt habe.

Zunächst haben wir uns nicht wirklich mit der Blockchain beschäftigt sondern viel mehr mit dem was in der Blockchain steckt: Flipchart zu Blockchain 1

In der Blockchain sind Blöcke von Daten enthalten, im Falle von Bitcoin sind das Transaction-Records. Die Eingänge und Ausgänge eines Transaction-Records sind von der Quelle Signiert. Die Transactions Records werden TX genannt. Die Einänge heißen Inputs und die Ausgänge UTX0. Ein Input und UTX0 besitzt einen Public Key und eine Value.

Diese TX werden zu Blöcken zusammengefasst und von Minern im Netzwerk gehashed. Dies geschieht nach Regeln, die das Netzwerk vorgibt. So kann es z.B. sein, dass zu dem Block ein Hash gesucht wird, der bestimmte Regeln erfüllt (z.B 13 führende 0). Wenn ein solcher Hash von einem Miner zu einem Block gefunden wird, wird er der Blockchain angefügt. Der Hash wird dann vom Netzwerk verifiziert und der nächste Hash vom nächsten Block wird berechnet. Dadurch das die Hashes an mehrere Stellen Kontrolliert werden und nach allen Regeln gleich im Netzwerk berechnet werden, ist es schwierig die Inhalte zu fälschen oder Blöcke zu ändern. Um dies zu tun bräuchte man mehr Rechenpower als das Netzwerk hinter der Blockchain an sich hat.

Man hört die Empfehlung, dass man 6 Blöcke abwarten sollte, bevor bei Bitcoin eine Transaktion als sicher gilt. Das liegt daran, dass man, wenn man einen Block in der Blockchain fälschen und gegenrechnen will, wenn er schon 6 Blöcke alt ist, mehr als die Gesamtleistung aller Miner braucht um es zu schaffen, den Hash und alle darauf basierenden Hashes gültig zu berechnen.

EML & F# - Domain Driven UI

Alpha-Präsentation, die am 11.10.2017 erneut gehalten wird.

F# und EML

Schon der Intro-Text zur Veranstaltung enthält mehr Informationen als ich mir merken konnte. In der Präsentation wurde F# als EML Sprache vorgestellt und welche Pattern man im Domain Dirven UI Development verwenden kann, damit man in Front- und Backend die gleiche “Sprache” verwendet. Sprache ist in dem Fall die wirklich Semantisch sprechende Sprache gemeint, nicht die Programmiersprache. So dass also ein Front- und Backend-Entwickler die gleiche Idee vom Wort “Produkt” haben. Wer sich dafür interessiert, sollte definitiv den Talk besuchen und sich das CQRS näher anschauen. Soweit ich das gerade nachvollziehen kann wurde in der Präsentation eine kleine Beispiel-App vorgestellt.

KeyCloak - Identity und Access Management

Nach der Mittagspause habe ich mir etwas über KeyCloak und Identity und Access Management angehört. KeyCloak kommt von Redhat und ist ein Quelloffenes System zum Verwalten von Identitäten und Zugriffs-Systemen.

Man kann in KeyCloak einen Realm anlegen der verschiedene Systeme verwaltet (z.B. FaceBook, Google, OpenID, LDAP usw.). KeyCloak kann dabei als Proxy fungieren um diese Systeme zu einem Zentralen System zusammenzufassen. Dabei kann man den nutzern auch direkt Rollen über verschiedene Systeme mitgeben, dies funktioniert allerdings nur mit zusätzlicher Konfiguration und Anpassung des Systems.

Der Nachteil an KeyCloak ist, dass die Übergabe der Parameter in Form von HTTP-Headern funktioniert. Damit ist die Größe beschränkt und somit auch die Anzahl der Eigenschaften die ein Nutzer haben kann. Man kann das ganze allerdings auch via Cookies machen. Die Informationen sind in Form eines gehashten JWT-Token vorhanden.

Leider ist die Thread-Model-Übersicht ein wenig schmal und Angriffe, wie ein Abfangen des Tokens und damit eine Anmeldung über zweite Anwendungen und übername des Nutzers, DNS-Spoofing oder Man-In-The-Middle-Attacks sind leider nicht beschrieben.

Für Interne Anwendungen zur zusammenfassung der Identitäten aus mehreren Systemen kann spannend sein, als öffentlich verfügbare Anwendung würde ich da allerdings investigativ an die Sache gehen.

Passwörter, wer braucht das noch?

Ich habe eine Session zum Thema Passwörter gehalten und mir die Frage gestellt, ob man Passwörter in der heutigen Zeit noch braucht und welchen Sinn diese überhaupt erfüllen.

Wir haben über verschiedene Passwort-Management-Systeme gesprochen um die Flut an Zugängen sicher zu verwalten und über 2-Faktor-Authentifizierungen, wie die von GitHub oder Google. Des weiteren haben wir noch über OTP-Applikationen gesprochen, wie sie von machen Banken verwendet werden.

Jedoch sind wir zu dem Entschluss gekommen, dass alle Systeme die bekannt sind immer eine Form von Passwort oder PIN brauchen, da man etwas braucht was einen Nutzer identifiziert. Leider gibt es nicht besseres als das Passwort, da das etwas ist, was einen Nutzer digital als genau diese erfassen lässt. Alle anderen Systeme die am Markt sind (Biometrie u.Ä.) sind leider nicht fälschungssicher; Ein Passwort was auch als solches gehandelt wird, allerdings schon. Schade eigentlich.

Blockchain 2.0

Blockchain 2

In der zweiten Session zur Blockchain haben wir über den wirklichen Nutzen der Blockchain gesprochen, gerade auch im Einsatzgebiet neben der Crypto-Währung.

Blockchain 2

Der Vorteil der Blockchain ist ein gleicher Datenstand bei untereinander nicht vertrauenden Systemen. Aber wann hat man die überhaupt und wo liegt dieser Anwendungszweck? Im Business tut es häufig auch einfach eine Datenbank zu nutzen und die Einträge darin von den jeweiligen Authoritäten signieren zu lassen, da hier immer irgend eine Art vertrauen entstehen muss.

Eine eigene Blockchain zu starten macht auch wenig Sinn, da man viel Rechenleistung braucht, damit diese gegen externe Angriffe geschützt ist. Damit man das hinbekommt muss man recht viel Geld investieren.

Damit man keine eigene Blockchain aufmachen muss, gibt es solche Dinge wie Etherium. Hierbei kauft man sich in die Blockchain ein um seine eigenen Programme (sog. Smart Contracts) über eine etablierte Blockchain abzuwickeln.