Wiki/congress-34c3-notes/2017-12-29_day3.md
2017-12-29 17:37:52 +01:00

5.7 KiB

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.