2016 SCNA

Keynote Presentation

Michael Feathers

  • Consider benefits and tradeoffs

    • Readability\/familiarity vs using new language constructs

      • loops vs reject\/map

  • Conflict between learning and delivering value

    • Importance of trying out things, sketching out solutions

      • Key to software crafting

    • Still being mindful of producing value\/solutions

  • Appreciate and empathize with what we create

  • Over-engineering tension

    • Sometimes we must over-engineer to recognize over-engineering

Learn Better Together (Learning as a Team)

Audrey Troutt

  • She claims 20-70% of development time spent on learning

  • Ashley Johnson High Performing Virtual Team

  • Types of learning as a team

    • Classroom - "Protected Time"

      • "Junior" learning

        • Challenging to adopt to "real-world" environment

  • Coaching through iteration and reflection

  • Learning as you go

    • Brown bag

      • Not recommended because individuals who are forced to go won't really learn

  • Book an expert and organize a hackathon

    • When a challenge presented itself, the group would stop and the expert would talk about it

    • Has the benefits of "protected time" learning

  • Collaborate learning works best with groups of 3-4 people with mixed abilities

  • Spike

    • Spike review is key for sharing knowledge at the conclusion

  • Pair exchange program

    • Take a day to work as a pair in different programs

    • Host gains a new pair of eyes on a problem already being worked

    • Visitor gains new perspective and viewpoint of an unfamiliar project

    • Learning time is still protected

  • Teaching solidifies learning

  • Takeaways

    • Clarify goals

    • Apply immediately

    • Protect learning time

    • Include everyone

      • Learning is social

    • Iterate and reflect

Reviving a Community with Code

Jonathan Graham & Amanda Laucher

  • Mined Minds

  • info@minedminds.org

Panel Discussion

Uncle Bob, Michael Feathers, Amanda Laucher & Ray Hightower

  • Choose software paradigm to fit the problem

    • Waterfall may be good for projects with long lead times

  • Object oriented -> functional -> collections

    • APL?

  • Parallelism vs server-less (AWS)

  • Things to revisit that the software community has abandoned

    • Study some of the roots, such as practicing with assembly code

  • The Structure and Interpretation of Computer Language

  • zip is similar to a deginerate transpose

  • Pre-testing vs post-testing

    • TDD is dead?

Consequences of an Insightful Algorithm

Carina Zona

  • How do we mitigate unintended consequences of using data provided by users?

  • Predictive analysis

  • Deep learning

    • Algorithms for fast, trainable, artifical neural networks

      • Input

      • Execution

      • Output

  • Machine learning fail

    • Target

      • 2nd trimester is a key for advertising because customer brand loyalty is up-for-grabs for not just the woman, but her child

        • Turns out the an algorithm determined that an increased purchase of moisturizer indicates a likelihood that a woman is pregnant

      • Invasion of privacy?

    • Shutterfly

      • False positives (such as a likelihood of a birth) can cause unintended consequences, such as a mailer about newborn photos may be hurtful to someone who miscarried

    • Fitbit

      • Treated all data as equal and public

        • In the early days it had an activity for sexual activity

    • Uber

      • Tracks things such as one-night stands

  • Consder the failure modes, the edges cases

  • Flipping the paradigm

    • Consider decisions' potential impacts

    • Evaluate potential impacts

    • Be honest

    • Be trustworthy

    • Build in recourse

      • Ability for user to correct an bad conclusion

    • Fully disclose limitations

      • Call attention to signs of risk of harm

    • Be visionary about potential biases

    • Anticipate divese ways to screw up

    • Audit outcomes constantly

    • Crowdsource all the time

    • Cultivate informed consent

    • Commit to data transparency

    • Commit to algorithmic transparency

Exploring Parallelism with Parallella and Raspberry Pi

Ray Hightower

  • RayHightower.com

  • Concurrency is not Parallelism

    • Currency: At least two threads are making progress

      • i.e. time partitioning

    • Parallelism: At least two threads are executing simultaneously

  • "Mapping complicated algorithms to massively parallel harward architectures is considered a ..."

  • How to BYOC

  • Useful software

    • LanScan Pro

    • TightVNC

  • Open MPI

  • MPICH

  • mpi4py

  • ssh keygen

  • What can we do with it?

    • hadoop

      • MapReduce

  • Ventusky

    • Javascript implementation of weather forecasting

  • Developments

    • Epiphany building a 32x32 core chip

    • RISC-V is a instruction set that has parallelism built-in

How to Scratch and Itch (in 200 Repos or Less)

Justin Searls

  • Co-founded TestDouble

  • Recognize when it's ok to make a mess

  • Popularity without purpose is toxic

  • Google "TDD failure"

  • fine_ants

  • not winning != not worthwhile

  • Criticism is easier than contributing

  • GPL

  • emoruby

Code Retreat

4 Rules of Simple Design (Kent Beck)

  • Tests Pass

  • Expresses Intent

  • No Duplication

  • Short

Conway's Game of Life

Game Basics

  • A cell can either be alive or dead

  • A cell's state change is dictated by:

    • Any live cell with <2 live neighbors dies of under-population

    • Any live cell with 2 OR 3 live neighbors lives on

    • Any live cell with >3 live neighbors dies of over population

    • Any dead cell with exactly 3 live neighbors comes alive

Problem Set 1

Problem Set 2

  • No primatives across method boundaries

  • Input and output types must be defined by us

Problem Set 3

  • No talking

  • Ian

    • github: @ianDCarrol

    • ian.d.carroll@gmail.com

  • Python test suite

Problem Set 4

  • Programming like it's 1965

    • Can only test the code twice:

      • At the 30 minute mark

      • At the end

Last updated