cyber-dojo
executing your code for fun
and not for profit
late 2009
https://github.com/JonJagger/cyber-dojo
Interactive
Dojo
Environment
Integrated
Development
Environment
• team based
• learning focused
• test driven
• work slower
• no time pressure
• repeat work
• have fun
• individual based
• finish focused
• test driven?
• work faster
• time pressure
• don't repeat work
• make money
demo
6x
6x
6x
6x
6x
6x
6x
30 seconds
6x
red == tests ran; 1 or more failed
6x
green == tests ran; all passed
6x
amber == tests didn't run
6x
time's up!
Interactive
Dojo
Environment
Integrated
Development
Environment
• team based
• learning focused
• test driven
• work slower
• no time pressure
• repeat work
• have fun
• individual based
• finish focused
• test driven?
• work faster
• time pressure
• don't repeat work
• make money
• work slower • work faster
FAQ
• learning focused • finish focused
how does it work?
.../katas/B6/A35C8EF4/manifest.json
Java
Cucumber
FizzBuzz
cyber-dojo.org uuidgen == B6A35C8EF4
{
language: "Java, Cucumber",
exercise: "FizzBuzz"
}
B6A35C
cyber-dojo.org
.../katas/B6/A35C8EF4/frog/sandbox/
avatar == frog
.../katas/B6/A35C8EF4/frog/.git/
cyber-dojo.org
.../katas/B6/A35C8EF4/frog/sandbox/source-files
source-files
cyber-dojo.org
.../katas/B6/A35C8EF4/manifest.json
{
language: "Java, Cucumber",
...
}
cyberdojofoundation/java_junit
cyberdojofoundation/java_cucumber
cyberdojofoundation/csharp_nunit
cyberdojofoundation/go_testing
docker containers
cyber-dojo.org
google compute engine instances
gce-node-01
gce-node-02
gce-node-03
cyberdojofoundation/java_cucumber
cyberdojofoundation/java_cucumber
cyberdojofoundation/java_cucumber
cyberdojofoundation/...
cyberdojofoundation/...
cyberdojofoundation/...
cyberdojofoundation/...
cyberdojofoundation/...
cyberdojofoundation/...
cyber-dojo.org
.../katas/B6/A35C8EF4/frog/sandbox/source-files
gce-node-02 /tmp/.../source-files
rsync
cyberdojofoundation/java_cucumber
google compute engine instance
gce-node-02
/tmp/.../source-files
$ eval "$(docker-machine env gce-node-02)"
$ docker run 
--volume=/tmp/.../:/sandbox:rw 
--net=none 
...
cyberdojofoundation/java_cucumber 
/bin/bash "timeout 10s ./cyber-dojo.sh 2>&1"
cyber-dojo.org
cyberdojofoundation/java_cucumber
google compute engine instance
gce-node-02
/tmp/.../source-files
cyber-dojo.org
cyberdojofoundation/java_cucumber
$ eval "$(docker-machine env gce-node-02)"
$ docker run 
--volume=/tmp/.../:/sandbox:rw 
--net=none 
...
cyberdojofoundation/java_cucumber 
/bin/bash "timeout 10s ./cyber-dojo.sh 2>&1"
google compute engine instance
regex
cyber-dojo.org
cyber-dojo.org
git commit
.../katas/B6/A35C8EF4/frog/sandbox/
.../katas/B6/A35C8EF4/frog/.git/
git gotcha!
test_wrapper.sh
summary
Interactive
Dojo
Environment
Integrated
Development
Environment
• team based
• learning focused
• test driven
• work slower
• no time pressure
• repeat work
• have fun
• individual based
• finish focused
• test driven?
• work faster
• time pressure
• don't repeat work
• make money
30,000+ practice-sessions
Bray
thank you
thank yous
Byran Wills-Heath Nadya Sivers Seb Rose
Olve Maudal Dymtro Mindra Mike Long
twitter : @JonJagger
email : jon@jaggersoft.com
blog : http://jonjagger.blogspot.co.uk/
charity : http://cyber-dojo.org

Oslo Day of Docker Opening Keynote