SlideShare a Scribd company logo
Perth Code Dojo 
5 @willwebst 
#CodeDojo
Check-In 
➔ Your name 
➔ What do you want for Christmas? 
➔ Do you believe in Santa?
Code Dojo Format 
A Coding Dojo is a coding session centered around a 
programming challenge. 
The dojo provides a safe place to learn and experiment 
away from the pressures of business delivery. 
All programmers of varying skill levels meet as equals to 
learn and share.
Software Craftsmanship 
“Deliberate practice is closely related to the 
attained level of performance of many types of 
experts” - Dr. K. Anders Ericsson
Dojo Rules 
➔ Paired Programming 
➔ Simple Design 
➔ Test Driven Development 
➔ Refactoring
XP Practices 
➔ Test Driven Design 
◆ Red - Green - Refactor 
◆ Keep the unit small 
◆ DESIGN / Design by contract 
◆ Flow
XP Practises 
➔ Benefits 
◆ More extensible and maintainable solutions 
◆ Quality improvements / cost of defects 
◆ Automated builds 
◆ Peer reviews / pairing 
◆ Confidence to refactor 
◆ Coverage 
◆ Legacy code
XP Practises 
➔ Disadvantages / challenges 
◆ Requires buy in 
◆ Learning curve 
◆ Purest approach 
◆ Overly loose coupling 
◆ Not always productive 
◆ Potential overconfidence 
◆ Tests require maintenance / refactoring
Pomodoro 
➔ Pomodoro Technique 
◆ 25 mins on, 5 mins off 
◆ http://tomatoi.st/perthcodedojo 
➔ Four iterations
Retro & Pizza 
Closing with Pizza and a mini retrospective 
➔ Share solutions on the big screen 
➔ Discuss challenge / approach 
➔ Feedback on the dojo
Polite Notice 
Please respect each others commitment. 
During a Pomodoro. 
➔ No Facebook 
➔ Mobile phones 
➔ Etc.
Have Fun! 
Most importantly have fun! 
➔ Drinks are available - help yourselves
Objective 
Given a word list, containing one word 
per line. 
Find all the combinations of each word 
which are anagrams.
Objective 
Examples: 
Webster - bestrew 
Software - forwaste
Objective 
Think about the algorithm approach 
● Simplest 
● Fastest 
Test First!
Find Anagrams 
http://codekata.com/data/wordlist.txt 
Find all the anagrams contained within the list for each 
word
Begin! 
25 mins
Stop! 
5 mins
Remove Acronyms 
Remove any non-words 
● ACB 
● BBSes 
● BMW's
Begin! 
25 mins
Stop! 
5 mins
Remove Non-English 
Remove any words which contain non-UFT8 characters 
● étagères 
● Ångströms 
● Österreich's 
Remove an names - starting with uppercase
Begin! 
25 mins
Stop! 
5 mins
Thank You - Dave Thomas 
Credit goes to @PragDave / Ruby community for this 
Katak 
Check out - http://codekata.com/ 
Great source for Code Katas.
Thank you sponsors! 
Code - http://github.com/burlistic 
Slides - http://speakerdeck.com/burlistic 
@willwebst
Mini Retro 
How did everyone find the exercise? 
Small break for Christmas. See you in 2015! 
Next up - Decoupling Logic from the UI

More Related Content

What's hot

Proclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An Introduction
Proclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An IntroductionProclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An Introduction
Proclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An Introduction
Wisnu Adi Nurcahyo
 
How to create short videos
How to create short videosHow to create short videos
How to create short videos
Katelyn Lemay
 
How Non-Profit Organizations Can Create Accessible Video
How Non-Profit Organizations Can Create Accessible VideoHow Non-Profit Organizations Can Create Accessible Video
How Non-Profit Organizations Can Create Accessible Video
3Play Media
 
Screen recorder comparison schillerstrom
Screen recorder comparison schillerstromScreen recorder comparison schillerstrom
Screen recorder comparison schillerstrom
aschillerstrom
 
Engl317 project4 slidedoc4_screencasting_usability_testfinding
Engl317 project4 slidedoc4_screencasting_usability_testfindingEngl317 project4 slidedoc4_screencasting_usability_testfinding
Engl317 project4 slidedoc4_screencasting_usability_testfinding
Zachary Williamson
 
CAT presentation
CAT presentationCAT presentation
CAT presentation
Nathalia Rio Preto
 
WebAssembly: Digging a bit deeper
WebAssembly: Digging a bit deeperWebAssembly: Digging a bit deeper
WebAssembly: Digging a bit deeper
All Things Open
 
Introducing bdd elements to unit testing.pptx
Introducing bdd elements to unit testing.pptxIntroducing bdd elements to unit testing.pptx
Introducing bdd elements to unit testing.pptx
Anders Hammervold
 
Tf itjsbagg
Tf itjsbaggTf itjsbagg
Tf itjsbagg
Shannon Gallagher
 
Testing javascript
Testing javascriptTesting javascript
Testing javascript
Robert Greiner
 
Agile Software Development for Non-Developers
Agile Software Development for Non-DevelopersAgile Software Development for Non-Developers
Agile Software Development for Non-Developers
hamvocke
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teams
Christian Heilmann
 
Design 101
Design 101Design 101
Design 101
Diego Pacheco
 
A/B Testing That Matters
A/B Testing That MattersA/B Testing That Matters
A/B Testing That Matters
Blake Commagere
 

What's hot (14)

Proclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An Introduction
Proclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An IntroductionProclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An Introduction
Proclub SE Magang! Summer 2020 Goes to Unicorn! Series: 0. An Introduction
 
How to create short videos
How to create short videosHow to create short videos
How to create short videos
 
How Non-Profit Organizations Can Create Accessible Video
How Non-Profit Organizations Can Create Accessible VideoHow Non-Profit Organizations Can Create Accessible Video
How Non-Profit Organizations Can Create Accessible Video
 
Screen recorder comparison schillerstrom
Screen recorder comparison schillerstromScreen recorder comparison schillerstrom
Screen recorder comparison schillerstrom
 
Engl317 project4 slidedoc4_screencasting_usability_testfinding
Engl317 project4 slidedoc4_screencasting_usability_testfindingEngl317 project4 slidedoc4_screencasting_usability_testfinding
Engl317 project4 slidedoc4_screencasting_usability_testfinding
 
CAT presentation
CAT presentationCAT presentation
CAT presentation
 
WebAssembly: Digging a bit deeper
WebAssembly: Digging a bit deeperWebAssembly: Digging a bit deeper
WebAssembly: Digging a bit deeper
 
Introducing bdd elements to unit testing.pptx
Introducing bdd elements to unit testing.pptxIntroducing bdd elements to unit testing.pptx
Introducing bdd elements to unit testing.pptx
 
Tf itjsbagg
Tf itjsbaggTf itjsbagg
Tf itjsbagg
 
Testing javascript
Testing javascriptTesting javascript
Testing javascript
 
Agile Software Development for Non-Developers
Agile Software Development for Non-DevelopersAgile Software Development for Non-Developers
Agile Software Development for Non-Developers
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teams
 
Design 101
Design 101Design 101
Design 101
 
A/B Testing That Matters
A/B Testing That MattersA/B Testing That Matters
A/B Testing That Matters
 

Viewers also liked

Agile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDDAgile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDD
Joey Chen
 
Coding Dojo: Tic-Tac-Toe (2014)
Coding Dojo: Tic-Tac-Toe (2014)Coding Dojo: Tic-Tac-Toe (2014)
Coding Dojo: Tic-Tac-Toe (2014)
Peter Kofler
 
Clojure
ClojureClojure
Clojure
Diego Pacheco
 
ScalaZ
ScalaZScalaZ
Agile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDDAgile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDDAgileCommunity
 
Coding DOJO
Coding DOJOCoding DOJO
Coding DOJO
Diego Pacheco
 
Agile Prague Coding Dojo
Agile Prague Coding DojoAgile Prague Coding Dojo
Agile Prague Coding Dojo
Johannes Brodwall
 
Pykonik Coding Dojo
Pykonik Coding DojoPykonik Coding Dojo
Pykonik Coding Dojo
Rodolfo Carvalho
 
At2009 Coding Dojo ATDD
At2009 Coding Dojo ATDDAt2009 Coding Dojo ATDD
At2009 Coding Dojo ATDD
Emmanuel Hugonnet
 

Viewers also liked (9)

Agile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDDAgile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDD
 
Coding Dojo: Tic-Tac-Toe (2014)
Coding Dojo: Tic-Tac-Toe (2014)Coding Dojo: Tic-Tac-Toe (2014)
Coding Dojo: Tic-Tac-Toe (2014)
 
Clojure
ClojureClojure
Clojure
 
ScalaZ
ScalaZScalaZ
ScalaZ
 
Agile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDDAgile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDD
 
Coding DOJO
Coding DOJOCoding DOJO
Coding DOJO
 
Agile Prague Coding Dojo
Agile Prague Coding DojoAgile Prague Coding Dojo
Agile Prague Coding Dojo
 
Pykonik Coding Dojo
Pykonik Coding DojoPykonik Coding Dojo
Pykonik Coding Dojo
 
At2009 Coding Dojo ATDD
At2009 Coding Dojo ATDDAt2009 Coding Dojo ATDD
At2009 Coding Dojo ATDD
 

Similar to Perth codedojo 5-anagram-algorithm

How does one learn to program?
How does one learn to program?How does one learn to program?
How does one learn to program?
Olmo F. Maldonado
 
How to deliver the right software (Specification by example)
How to deliver the right software (Specification by example)How to deliver the right software (Specification by example)
How to deliver the right software (Specification by example)
Asier Barrenetxea
 
Golang, Python or C/C++, who wins
Golang, Python or C/C++, who wins Golang, Python or C/C++, who wins
Golang, Python or C/C++, who wins
Obed N Muñoz
 
Building an event/conference website like FUDCon.in
Building an event/conference website like FUDCon.inBuilding an event/conference website like FUDCon.in
Building an event/conference website like FUDCon.in
Vaidik Kapoor
 
Xtreme Programming
Xtreme ProgrammingXtreme Programming
Xtreme Programming
Prasad Kancharla
 
What is the best programming language for your web product?
What is the best programming language for your web product?What is the best programming language for your web product?
What is the best programming language for your web product?
MobiDev
 
Single-Sourcing and Localization
Single-Sourcing and LocalizationSingle-Sourcing and Localization
Single-Sourcing and Localization
Laura Dent
 
Software Design Notes
Software Design NotesSoftware Design Notes
Software Design Notes
Diego Pacheco
 
Talk proposal get_accepted
Talk proposal get_acceptedTalk proposal get_accepted
Talk proposal get_accepted
lauraxthomson
 
Perth codedojo 2-checkout
Perth codedojo 2-checkoutPerth codedojo 2-checkout
Perth codedojo 2-checkout
Will Webster
 
Talking about craftsmanship with ensaimadas and katas
Talking about craftsmanship with ensaimadas and katasTalking about craftsmanship with ensaimadas and katas
Talking about craftsmanship with ensaimadas and katas
Rachel M. Carmena
 
Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an Imperative
Fadi Stephan
 
The future of testing magento 2 james cowie from shero commerce - 10 24-20 ...
The future of testing magento 2   james cowie from shero commerce - 10 24-20 ...The future of testing magento 2   james cowie from shero commerce - 10 24-20 ...
The future of testing magento 2 james cowie from shero commerce - 10 24-20 ...
James Cowie
 
BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...
BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...
BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...
BA and Beyond
 
Pair Programming (2015)
Pair Programming (2015)Pair Programming (2015)
Pair Programming (2015)
Peter Kofler
 
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsAmanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Rehgan Avon
 
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
Rachel M. Carmena
 
Pair Programming (2014)
Pair Programming (2014)Pair Programming (2014)
Pair Programming (2014)
Peter Kofler
 
Introducing Pair Programming
Introducing Pair ProgrammingIntroducing Pair Programming
Introducing Pair Programming
Steven Smith
 
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEAN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
Gavin Pickin
 

Similar to Perth codedojo 5-anagram-algorithm (20)

How does one learn to program?
How does one learn to program?How does one learn to program?
How does one learn to program?
 
How to deliver the right software (Specification by example)
How to deliver the right software (Specification by example)How to deliver the right software (Specification by example)
How to deliver the right software (Specification by example)
 
Golang, Python or C/C++, who wins
Golang, Python or C/C++, who wins Golang, Python or C/C++, who wins
Golang, Python or C/C++, who wins
 
Building an event/conference website like FUDCon.in
Building an event/conference website like FUDCon.inBuilding an event/conference website like FUDCon.in
Building an event/conference website like FUDCon.in
 
Xtreme Programming
Xtreme ProgrammingXtreme Programming
Xtreme Programming
 
What is the best programming language for your web product?
What is the best programming language for your web product?What is the best programming language for your web product?
What is the best programming language for your web product?
 
Single-Sourcing and Localization
Single-Sourcing and LocalizationSingle-Sourcing and Localization
Single-Sourcing and Localization
 
Software Design Notes
Software Design NotesSoftware Design Notes
Software Design Notes
 
Talk proposal get_accepted
Talk proposal get_acceptedTalk proposal get_accepted
Talk proposal get_accepted
 
Perth codedojo 2-checkout
Perth codedojo 2-checkoutPerth codedojo 2-checkout
Perth codedojo 2-checkout
 
Talking about craftsmanship with ensaimadas and katas
Talking about craftsmanship with ensaimadas and katasTalking about craftsmanship with ensaimadas and katas
Talking about craftsmanship with ensaimadas and katas
 
Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an Imperative
 
The future of testing magento 2 james cowie from shero commerce - 10 24-20 ...
The future of testing magento 2   james cowie from shero commerce - 10 24-20 ...The future of testing magento 2   james cowie from shero commerce - 10 24-20 ...
The future of testing magento 2 james cowie from shero commerce - 10 24-20 ...
 
BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...
BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...
BA and Beyond 20 - Elke Steegmans and David Vandenbroeck - Behaviour-driven d...
 
Pair Programming (2015)
Pair Programming (2015)Pair Programming (2015)
Pair Programming (2015)
 
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It IsAmanda Cinnamon - Treat Your Code Like the Valuable Software It Is
Amanda Cinnamon - Treat Your Code Like the Valuable Software It Is
 
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
Talking about craftsmanship with "ensaimadas" and katas (May, 2018)
 
Pair Programming (2014)
Pair Programming (2014)Pair Programming (2014)
Pair Programming (2014)
 
Introducing Pair Programming
Introducing Pair ProgrammingIntroducing Pair Programming
Introducing Pair Programming
 
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEAN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
 

Recently uploaded

Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
Ivo Velitchkov
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
BibashShahi
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 

Recently uploaded (20)

Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
Artificial Intelligence and Electronic Warfare
Artificial Intelligence and Electronic WarfareArtificial Intelligence and Electronic Warfare
Artificial Intelligence and Electronic Warfare
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 

Perth codedojo 5-anagram-algorithm

  • 1. Perth Code Dojo 5 @willwebst #CodeDojo
  • 2. Check-In ➔ Your name ➔ What do you want for Christmas? ➔ Do you believe in Santa?
  • 3. Code Dojo Format A Coding Dojo is a coding session centered around a programming challenge. The dojo provides a safe place to learn and experiment away from the pressures of business delivery. All programmers of varying skill levels meet as equals to learn and share.
  • 4. Software Craftsmanship “Deliberate practice is closely related to the attained level of performance of many types of experts” - Dr. K. Anders Ericsson
  • 5. Dojo Rules ➔ Paired Programming ➔ Simple Design ➔ Test Driven Development ➔ Refactoring
  • 6. XP Practices ➔ Test Driven Design ◆ Red - Green - Refactor ◆ Keep the unit small ◆ DESIGN / Design by contract ◆ Flow
  • 7. XP Practises ➔ Benefits ◆ More extensible and maintainable solutions ◆ Quality improvements / cost of defects ◆ Automated builds ◆ Peer reviews / pairing ◆ Confidence to refactor ◆ Coverage ◆ Legacy code
  • 8. XP Practises ➔ Disadvantages / challenges ◆ Requires buy in ◆ Learning curve ◆ Purest approach ◆ Overly loose coupling ◆ Not always productive ◆ Potential overconfidence ◆ Tests require maintenance / refactoring
  • 9. Pomodoro ➔ Pomodoro Technique ◆ 25 mins on, 5 mins off ◆ http://tomatoi.st/perthcodedojo ➔ Four iterations
  • 10. Retro & Pizza Closing with Pizza and a mini retrospective ➔ Share solutions on the big screen ➔ Discuss challenge / approach ➔ Feedback on the dojo
  • 11. Polite Notice Please respect each others commitment. During a Pomodoro. ➔ No Facebook ➔ Mobile phones ➔ Etc.
  • 12. Have Fun! Most importantly have fun! ➔ Drinks are available - help yourselves
  • 13. Objective Given a word list, containing one word per line. Find all the combinations of each word which are anagrams.
  • 14. Objective Examples: Webster - bestrew Software - forwaste
  • 15. Objective Think about the algorithm approach ● Simplest ● Fastest Test First!
  • 16. Find Anagrams http://codekata.com/data/wordlist.txt Find all the anagrams contained within the list for each word
  • 19. Remove Acronyms Remove any non-words ● ACB ● BBSes ● BMW's
  • 22. Remove Non-English Remove any words which contain non-UFT8 characters ● étagères ● Ångströms ● Österreich's Remove an names - starting with uppercase
  • 25. Thank You - Dave Thomas Credit goes to @PragDave / Ruby community for this Katak Check out - http://codekata.com/ Great source for Code Katas.
  • 26. Thank you sponsors! Code - http://github.com/burlistic Slides - http://speakerdeck.com/burlistic @willwebst
  • 27. Mini Retro How did everyone find the exercise? Small break for Christmas. See you in 2015! Next up - Decoupling Logic from the UI