2016 SCNA
Links
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 transposePre-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-populationAny live cell with
2 OR 3
live neighbors lives onAny live cell with
>3
live neighbors dies of over populationAny dead cell with
exactly 3
live neighbors comes alive
Problem Set 1
No constraints
Ray Joseph De Castro
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
nose
import nose.util
Problem Set 4
Programming like it's 1965
Can only test the code twice:
At the 30 minute mark
At the end
Last updated
Was this helpful?