# Day 3 ## Antipatterns und Missverstaendnisse in der Softwareentwicklung Schlechte Loesungen fuer haeufige Probleme. * Problem * Seal Team 6 * Java * Effekt (ProblemFactory) ### Versionierung * Problem Versionierung mit Filenames * Bastelt mal eben * Git, svn, perforce ... * Jeder darf ueberall einchecken. * Effekt: Leute checken bins ein * e: Leute checken versions filenames ein. #### Besser * Git ist ok * Kleine patches * Features einlesen * Annahmen ueberpruefen, schnell failen * Repos trennen ist hard ### Bugs fallen unterm tisch * Bugs unterm tisch * Bugtracker * Wir haben viele Bugs * Priorisierubg * Alle anderen Bugs bleiben offe Bugwelle #### Idee Bugfreien Code belohnen. *Du Arsch hast einen Bug gemeldet. Jetzt kamm ich meine Hypothek nicht zahlen* Mit Geld keine gute Idee ##### Anti anti pattern Bugs im Bugtracker offen lassen fuer Berufssicherheit. Oder um nicht naechste Aufgabe zu bekommen. ### Geht nur am Entwickler rechner * Geht nur am Entwickler rechner * Buildserver * Alter code aus antiken snapshots, fileshare. * Effekt Build failed: Dev logged sich eim und aendert... * Laeuft auf sehr spezieller Version. - Keine updates auf neue lib/tool versionen #### Rat * Daily build * Deterministisch, repoduzierbar * Agilitaet, rollback. * Fehler muessen schnell erkannt werden ### Build geht, laeuft aber nur am Dev pc * Docker * Irgendwelche images aus dem Internet - Alter versionen * Komponenten werden oft als statische Version eingebunden und nicht geupdated. #### Ratschlag Container * Deterministischer zuschand * Triviale Rollbacks * Am besten Mittagspause * Komponenten isolieren nicht Monsterkontainer * Integration! ### Code geht nicht * Unit tests * Bug wegtesten * Niedirge coverage Unitests sind um zu erkennen ob der Code noch (in der Zulunft geht) geht. * Oft nur positive tests * Bugs meist in der Fehlerbehandlung 100% coverage ist keine Garantie. ### Entwickler vergessen Testfaelle * Tdd * ? (noch nie im Freien gesehen) ### Unbekannt was der Code tut * Dokumentation * Wiki * Navigation? * Noch aktuell? Wiki keine Loesung. ### Kommunikation * Grossraumbueros * Meetings ... * Effekt: kann micht nicht konzentrieren Meetings lieber selten. 1-on-1. ### Wir trauen code nicht * Compilerwarnung weg * Onion Code - Gewrapter code den keiner versteht - Fehler werden in Schichten behoben * Release nur ohne offene Bugs * Vorm release zumachen, danach auf ### Externer Audit * Blackbox pentest Nicht der code sondern Pentester wird getestet. Wohl aus compliance. * Fuzzing Zufaellige Eingaben. Ershuetternd erfolgreich. Fuzzer muss auch alle Kombinationen durchprobiern. Ersetzt nicht andere Massnahmen. ### Welche Massnahme Funktionierende Massnahme oder Messbare. Managment nimmt lieber Messbar. ### Coder ueberfordert * Thread modeling! * Jedes theam macht Thread model Oft am Dev team vorbei. Es ensteht oft nur papier. ### Allgemeine Ratschlaege * Fehlerkultur sonst werdwn Bugs versteckt * Feedback Bug sollte vom Verursacher gefixt werden um lernen zu ermoeglichen. * Werte kommunizieren Guter code besser als Menge. Nur mit Unit tests moeglich. * Zeit zum Lernen geben * Managment sollte nicht die Architektur vorgeben. Wenn sie Offensichtlich ist hilts nicht. Wenn nicht ist es vermutlich nicht die richtige. ### Ratschlaege * Keine Ueberstunden * Keine Unrealistische Vorhaben annehmen * Zeit muss man sich nehmen ## Censorship in the Catalan referendum * A lot of referendum mirrors A lot of political orgs blocked. * DNS tampering * HTTP blocking HTTP DPI with regex. Censorship in place against illegal gambling used for political reason. ## cryptocurrencies, smart contracts, etc. * 1970 - cryptographers acted as activists Turned cryptographie from military secrete into a science. * 2015 - Lightning Network Overcome scaling limits. Fast, cheap, conflicts can still be resolved cia blockchain. Satoshi has clear vision, cash. Both scientific breakthrough. CS thought this was impossible, bitcoin solved it. And economic success. Estimate lost and stolen btc ~10 billion $. https://onchainfx.com/ * bitcoin Very commited. No changes. Basically cult. * Monero Security issues Was inveted before certain cryptography breakthroughs. Also a cult. * ethereum sharding Next thing they will do. Splitting into subnetworks.f ### real or hype? hype not just hype. Lots of new valuable tech. ### will it be used for good or evil? Inherently empowering. Long run, large scale: very good ### Questions? * Only really good reason right now speculation. * Parent child chain approach? - Dunno * Source for figures on cc use for illegal drugs. Rand corp. Counting up drugs. * Proof of stake Interesting/promising. Lock up a part of money to proof. Monies can get redistributed if transaction is proofable incorrect. * Daily use Safety. User experience. Scaleability. * UX super important? 1. Make tools good for us to use. 2. Make everyone like use Didnt work. * Privacy Least favourite tweet. * Outlaw? Some countries have. China, outlawed some uses. * Ceremony Workshop Multiple people stopping each other from itroducing backdoors. General purpose zero knwoledge proof. * Seems like centralised protocls are winning. Scale really well. Self limitting factor. * Uses Donations. Venezuela, fiat inoperable. CryptoKitties * Smart contract/contract Shouldnt have called them programs not smart contracts. * zsnarks Metaphor. Colorblind. Billiard balls. Proofing a truth without revealing addition imformation. * Few people hold most bitcoins Hopeful future tech. * Working with jpmorgan Help make blockchain to use for enterprise usecases. Helpfull for pursoading regulators, startups, enterprises that privacy is important. They cant destroy cryptocurrencies.