SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
Big rewrites without big risks
Flavius Ștef
https://flic.kr/p/9iuMzn
About meI train and coach
people in agile, lean
and leadership
Iterative and
incremental
Images: http://www.yoomee.com/about-agile
Why?
time
risk
time
risk
validate
validate validate validate validate
New skill: story splitting
●
Create-Read-Update-Delete
●
Workflow steps
●
Less usability first
●
etc.
x
x x
x
x
x x
x x x
Splitting
features
is easy
THE PROBLEM OFTHE PROBLEM OF
INCREMENTAL REFACTORINGINCREMENTAL REFACTORING
Sometimes we need a new architecture
●
Go faster
●
Reduce number of bugs
●
Improve an NFR
●
Respond to client demands
●
Respond to market (ex: cloud, mobile, web)
IncrementalIncremental
ArchitectureArchitecture
Refactoring?Refactoring?
Agile doesn't apply here!!!
But the questions remain
How do we know
the app still works?
How do we know
how much is done?
How do we know
when we'll finish?
STRATEGIESSTRATEGIES
Sorry, still
no silver bullet
Get creative!Get creative!
1. Fake it till
you make it
Product 1
Desktop (C#)
Windows
Product 2 ~ Product 1
Desktop (C#)
Windows
Product 3
Desktop (C#)
Windows
Front-end platform
Java, JS
Awesome
NextGen Product
Linux-based
Web UI (Java, JS)
GUI
(C#)
Middleware
(C#)
RPC Hardware
Manager
(C++)
Packet
Generators
RPC
Old Product
WIN CLIENT TRAFFIC GENERATOR
GUI
(C#)
Middleware
(C#)
RPC Hardware
Manager
(C++)
Packet
Generators
RPC
Step 1. Research (1 Sprint)
TRAFFIC GENERATOR
GUI
(C#)
Middleware
(C#)
RPC Hardware
Manager
(C++)
Packet
Generators
RPC
TRAFFIC GENERATOR
GUI
(C#)
Middleware
(C#)
RPC Hardware
Manager
(C++)
Packet
Generators
RPC
TRAFFIC GENERATOR
WIN CLIENT
WIN CLIENT
WIN CLIENT
Step 2. Make MW run on Linux (2 Sprints)
Middleware
(C#)
LINUX CLIENT
Mono
Web
UI
Step 3. Link web UI with middleware (1 week)
Middleware
(C#)
LINUX CLIENT
Mono
Web
UI Send basic message between the two.
Step 3. Link web UI with middleware (1 week)
Middleware
(C#)
LINUX CLIENT
Mono
Web
UI
C# bindings
exist
PROBLEM:
Java bindings
don't exist
RPC
expected
Step 4. Walking skeleton (2 days)
Middleware
(C#)
LINUX CLIENT
Mono
Web
UI
Old MW
(C#)
Configure
different
scenarios Dump to disk
Hack: load dump
Hardware
Manager
(C++)
Packet
Generators
RPC
TRAFFIC GENERATOR
x
Start
Conf. #: 3
Google Chrome
OK!
Step 4. Walking skeleton (2 days)
Middleware
(C#)
LINUX CLIENT
Mono
Web
UI
RPC
Old MW
(C#)
Configure
different
scenarios Dump to disk
Hack: load dump
Hardware
Manager
(C++)
Packet
Generators
RPC
TRAFFIC GENERATOR
x
Start
Conf. #: 3
Google Chrome
Step 5. Read+write configuration (3 weeks)
Middleware
(C#)
LINUX CLIENT
Mono
Web
UI
RPC
Hardware
Manager
(C++)
Packet
Generators
RPC
TRAFFIC GENERATOR
RPC endpoint in C# existed in old product.
New product built Java RPC incrementally.
Read: How many NICs in the configuration?
Read: What are their Ips?
Write: Set IP of NIC #4
Write: Add a machine to configuration
Read: Another statistic
...
B
A
C
K
L
O
G
Timeline
Research
Make it run on Linux
Walking
Skeleton
Stories for demo version10d
20d
7d
15d
About 1 month
2. I just don't love
you anymorehttps://flic.kr/p/rrHjG
Same product, different team
Middleware
(C#)
Mono
Web
UI
RPC
Hardware
Manager
(C++)
Packet
Generators
RPC
TRAFFIC GENERATORLINUX CLIENT
Step 1. Analyze dependencies & possible
replacements (2 Weeks)
Hardware
Manager
(C++)
MFC WinAPI
STL Boost
Find substitutes
Step 2. Proof of concept (2 Months)
Hardware
Manager
(C++)
MFC WinAPI
Hack alternatives for:
- (De)Serialization (MFC)
- IPC (WinAPI)
- …
STL Boost
CString → CMyString
CArray → CMyArray
Step 2. Proof of concept (2 Months)
“Hacked”
Hardware
Manager
STL Boost
Packet
Generators
#ifdef __vm
Implemented ~1% of use cases
- Select only one HW card
- Comment out other code
Step 3. Unit testing (2 Weeks)
CString sut = “foo”; CMyString sut = “foo”;
StringTestvalidate
against
validate
against
Step 4. Performance testing (2 Weeks)
CFile sut; CMyFile sut;
StringPerformanceTest
validate
against
validate
against
for (i=0; i<20000; i++)
CFile (MFC) 20x faster
than CMyFile (Boost)
Step 5. Incrementally remove Win dependency
2m 2m 1m
Remove MFC Remove WinAPI Final
testing
Windows Linux
Process
TRUNK
DEV
...1w
Runtests
Runtests
3d
Code
Freeze
Practices:
●
Software buildable and running at all times
●
Pull weekly from trunk
●
Run regression (10.000+ tests) every 3 days
●
Continuous integration (team level)
3. One bite
at a time
https://flic.kr/p/CaNo1
Rewrite #1
4m 7m
Rewrite #2 Beta
Launch
An interface rewrite
2m
Abort!
Rally:
circa
2008
Rally:
circa
2009
What about
the stories
page?
Oh, there
were
changes...
4. Rewrite the
story book
Three Amigos
Dev QA BA
Feature: ________
Scenario:________
Given ________
When ________
Then _________
Scenarios
PROCESSPROCESS
Set goal
Analyze
architecture
Create
backlog
Talk to QA
Pick
refactoring
RefactorTest
Update
backlog
Stop
Done?
YES
Integrate
NO
Add tests
if needed
Analyze
architecture
Create
backlog
Talk to QA
Pick
refactoring
RefactorTest
Update
backlog
Stop
Done?
YES
Integrate
NO
Add tests
if needed
Business
“Switch database vendors”
“Implement new features faster”
Or Technical
“Support 3000 concurrent connections”
“Centralize security controls”
Set goal
Set goal
Create
backlog
Talk to QA
Pick
refactoring
RefactorTest
Update
backlog
Stop
Done?
YES
Integrate
NO
Add tests
if needed
SWOT Analysis
(Strengths, Weaknesses,
Opportunities, Threats)
- What do we keep?
- What do we drop?
- What do we improve?
Analyze
architecture
Analyze
architecture
Set goal Talk to QA
Pick
refactoring
RefactorTest
Update
backlog
Stop
Done?
YES
Integrate
NO
Add tests
if needed
Architecture Epics
“Remove MFC”
“Move DB code from JSPs”
Create
backlog
Create
backlog
Analyze
architecture
Set goal
Pick
refactoring
RefactorTest
Update
backlog
Stop
Done?
YES
Integrate
NO
Add tests
if needed
What is the testing strategy?
Automation vs. exploratory
How often
Make sure testers are available
Talk to QA
Stop
YES
Talk to QA
Create
backlog
Analyze
architecture
Set goal
Pick
refactoring
RefactorTest
Update
backlog
Done?
Integrate
NO
Add tests
if needed
Mikado Method
Goal
Prerequisite Prerequisite
Prerequisite Prerequisite Prerequisite
The Mikado Method
Mikado Method
Move service
from Windows
to Linux
Fix Win API
compiler errs
Fix MFC
compiler errs
Fix CString
compiler errs
Write
CMyString
Replace CString
invocations
If you need some guidance selecting the
refactoring
http://www.sigs.de/download/oop_08/Stal%20Mi3-4.pdf+ Michael Stal: Architecture Refactoring Catalog
Michael Stal: source of architecture refactorings
●
Rename Entities
●
Remove Duplicates
●
Introduce Abstraction
Hierarchies
●
Remove Unnecessary
Abstractions
●
Substitute Mediation with
Adaptation
●
Break Dependency Cycles
●
Inject Dependencies
●
Insert Transparency Layer
●
Reduce Dependencies with
Facades
●
Merge Subsystems
●
Split Subsystems
●
Enforce Strict Layering
●
Move Entities
●
Add Strategies
●
Enforce Symmetry
●
Extract Interface
●
Enforce Contract
●
Provide Extension
Interfaces
●
Substitute Inheritance with
Delegation
●
Provide Interoperability
Layers
●
Aspectify
●
Integrate DSLs
●
Add Uniform Supp. to
Runtime Aspects
●
Add Configuration Subsystem
●
Introduce the Open/Close
Principle
●
Optimize with Caching
●
Replace Singleton
●
Separate Synchronous and
Asynchronous Processing
●
Replace Remote Methods
with Messages
●
Add Object Manager
●
Change Unidirectional
Association to Bidirectional
CONCLUSIONCONCLUSION
It's hard, but it can be done
Chunk the problem down
Encapsulate, stub, simulate
Work incrementally
Run tests
Validate against the goal
SUMMARY
THANKS!
Flavius Ștef
Twitter: @flaviusstef
Slides: slideshare.net/fstef
www.mozaicworks.com/blog/

Más contenido relacionado

La actualidad más candente

Front-End Modernization for Mortals
Front-End Modernization for MortalsFront-End Modernization for Mortals
Front-End Modernization for Mortals
cgack
 
Drupalcamp Simpletest
Drupalcamp SimpletestDrupalcamp Simpletest
Drupalcamp Simpletest
lyricnz
 

La actualidad más candente (20)

JavaOne 2015 - Swimming upstream in the container revolution
JavaOne 2015 - Swimming upstream in the container revolutionJavaOne 2015 - Swimming upstream in the container revolution
JavaOne 2015 - Swimming upstream in the container revolution
 
有了 Agile,為什麼還要有 DevOps?
有了 Agile,為什麼還要有 DevOps?有了 Agile,為什麼還要有 DevOps?
有了 Agile,為什麼還要有 DevOps?
 
Continuous delivery - tools and techniques
Continuous delivery - tools and techniquesContinuous delivery - tools and techniques
Continuous delivery - tools and techniques
 
EVOLVE'15 | Flash Brief | Cat Reusswig | Adventures in AEM Upgrades
EVOLVE'15 | Flash Brief | Cat Reusswig | Adventures in AEM UpgradesEVOLVE'15 | Flash Brief | Cat Reusswig | Adventures in AEM Upgrades
EVOLVE'15 | Flash Brief | Cat Reusswig | Adventures in AEM Upgrades
 
CI
CICI
CI
 
Development tools at Base
Development tools at BaseDevelopment tools at Base
Development tools at Base
 
2012 07 03 SecondNug - Nos subimos a la nube con Team Foundation Server 2012
2012 07 03 SecondNug - Nos subimos a la nube con Team Foundation Server 20122012 07 03 SecondNug - Nos subimos a la nube con Team Foundation Server 2012
2012 07 03 SecondNug - Nos subimos a la nube con Team Foundation Server 2012
 
Front-End Modernization for Mortals
Front-End Modernization for MortalsFront-End Modernization for Mortals
Front-End Modernization for Mortals
 
The Clash Between Devops and Quality Assurance
The Clash Between Devops and Quality AssuranceThe Clash Between Devops and Quality Assurance
The Clash Between Devops and Quality Assurance
 
Comparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End TestingComparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End Testing
 
PRPL Pattern with Webpack and React
PRPL Pattern with Webpack and ReactPRPL Pattern with Webpack and React
PRPL Pattern with Webpack and React
 
Drupalcamp Simpletest
Drupalcamp SimpletestDrupalcamp Simpletest
Drupalcamp Simpletest
 
Lets cook cucumber !!
Lets cook cucumber !!Lets cook cucumber !!
Lets cook cucumber !!
 
Creative Branching Models for Multiple Release Streams
Creative Branching Models for Multiple Release StreamsCreative Branching Models for Multiple Release Streams
Creative Branching Models for Multiple Release Streams
 
Feature Toggle
Feature ToggleFeature Toggle
Feature Toggle
 
Blazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java UniverseBlazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java Universe
 
GraphQL-ify your APIs
GraphQL-ify your APIsGraphQL-ify your APIs
GraphQL-ify your APIs
 
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
Kostiantyn Yelisavenko "Mastering Macro Benchmarking in .NET"
 
Continuous Delivery: The Dirty Details
Continuous Delivery: The Dirty DetailsContinuous Delivery: The Dirty Details
Continuous Delivery: The Dirty Details
 
WordPress automation and CI
WordPress automation and CIWordPress automation and CI
WordPress automation and CI
 

Similar a Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference

Hands on web development with play 2.0
Hands on web development with play 2.0Hands on web development with play 2.0
Hands on web development with play 2.0
Abbas Raza
 
Sustainable Agile Development
Sustainable Agile DevelopmentSustainable Agile Development
Sustainable Agile Development
Gabriele Lana
 

Similar a Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference (20)

Adtech scala-performance-tuning-150323223738-conversion-gate01
Adtech scala-performance-tuning-150323223738-conversion-gate01Adtech scala-performance-tuning-150323223738-conversion-gate01
Adtech scala-performance-tuning-150323223738-conversion-gate01
 
Adtech x Scala x Performance tuning
Adtech x Scala x Performance tuningAdtech x Scala x Performance tuning
Adtech x Scala x Performance tuning
 
Five Ways Automation Has Increased Application Deployment and Changed Culture
Five Ways Automation Has Increased Application Deployment and Changed CultureFive Ways Automation Has Increased Application Deployment and Changed Culture
Five Ways Automation Has Increased Application Deployment and Changed Culture
 
Web Development Foundation & Team Collaboration
Web Development Foundation & Team CollaborationWeb Development Foundation & Team Collaboration
Web Development Foundation & Team Collaboration
 
improving the performance of Rails web Applications
improving the performance of Rails web Applicationsimproving the performance of Rails web Applications
improving the performance of Rails web Applications
 
"Offline mode for a mobile application, redux on server and a little bit abou...
"Offline mode for a mobile application, redux on server and a little bit abou..."Offline mode for a mobile application, redux on server and a little bit abou...
"Offline mode for a mobile application, redux on server and a little bit abou...
 
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayI Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
 
Accelerating Digital Transformation: It's About Digital Enablement
Accelerating Digital Transformation:  It's About Digital EnablementAccelerating Digital Transformation:  It's About Digital Enablement
Accelerating Digital Transformation: It's About Digital Enablement
 
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayI Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
 
Hands on web development with play 2.0
Hands on web development with play 2.0Hands on web development with play 2.0
Hands on web development with play 2.0
 
Path to continuous delivery
Path to continuous deliveryPath to continuous delivery
Path to continuous delivery
 
Sustainable Agile Development
Sustainable Agile DevelopmentSustainable Agile Development
Sustainable Agile Development
 
Catching-up web technologies - an endless story
Catching-up web technologies - an endless storyCatching-up web technologies - an endless story
Catching-up web technologies - an endless story
 
Serverless in production, an experience report (FullStack 2018)
Serverless in production, an experience report (FullStack 2018)Serverless in production, an experience report (FullStack 2018)
Serverless in production, an experience report (FullStack 2018)
 
Building a Great AEM Team: Time Warner Cable's Journey
Building a Great AEM Team: Time Warner Cable's JourneyBuilding a Great AEM Team: Time Warner Cable's Journey
Building a Great AEM Team: Time Warner Cable's Journey
 
Considerations for Abstracting Complexities of a Real-Time ML Platform, Zhenz...
Considerations for Abstracting Complexities of a Real-Time ML Platform, Zhenz...Considerations for Abstracting Complexities of a Real-Time ML Platform, Zhenz...
Considerations for Abstracting Complexities of a Real-Time ML Platform, Zhenz...
 
DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.
 
Simplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI APISimplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI API
 
Serverless in Production, an experience report (AWS UG South Wales)
Serverless in Production, an experience report (AWS UG South Wales)Serverless in Production, an experience report (AWS UG South Wales)
Serverless in Production, an experience report (AWS UG South Wales)
 
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
 

Más de Mozaic Works

Más de Mozaic Works (20)

Agile Retrospectives
Agile RetrospectivesAgile Retrospectives
Agile Retrospectives
 
Developer Experience to Testing
Developer Experience to TestingDeveloper Experience to Testing
Developer Experience to Testing
 
Story mapping: build better products with a happier team
Story mapping: build better products with a happier teamStory mapping: build better products with a happier team
Story mapping: build better products with a happier team
 
Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015
Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015
Andrea Mocci: Beautiful Design, Beautiful Coding at I T.A.K.E. Unconference 2015
 
Ionuț G. Stan - Let’s write a type checker at I T.A.K.E. Unconference 2015
Ionuț G. Stan - Let’s write a type checker at I T.A.K.E. Unconference 2015Ionuț G. Stan - Let’s write a type checker at I T.A.K.E. Unconference 2015
Ionuț G. Stan - Let’s write a type checker at I T.A.K.E. Unconference 2015
 
Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...
Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...
Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference ...
 
Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015
Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015
Cyrille Martraire: Monoids, Monoids Everywhere! at I T.A.K.E. Unconference 2015
 
Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...
Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...
Andrei Petcu: Rocket vs Docker: Battle for the Linux Container at I T.A.K.E. ...
 
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
 
Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...
Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...
Patroklos Papapetrou: How to Boost Development Team’s Speed at I T.A.K.E. Unc...
 
Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....
Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....
Patroklos Papapetrou: Holding Down Your Technical Debt With SonarQube at I T....
 
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...
Robert Mircea & Virgil Chereches: Our Journey To Continuous Delivery at I T.A...
 
James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...
James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...
James Lewis: Microservices - Systems That Are #neverdone at I T.A.K.E. Unconf...
 
Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...
Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...
Adi Bolboacă: Architecture For Disaster Resistant Systems at I T.A.K.E. Unco...
 
Alex Bolboacă: Why You Should Start Using Docker at I T.A.K.E. Unconference ...
Alex Bolboacă: Why You Should Start Using Docker at I T.A.K.E. Unconference ...Alex Bolboacă: Why You Should Start Using Docker at I T.A.K.E. Unconference ...
Alex Bolboacă: Why You Should Start Using Docker at I T.A.K.E. Unconference ...
 
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
Alex Bolboacă: Usable Software Design at I T.A.K.E. Unconference 2015
 
Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015
Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015
Svetlana Mukhina: Metrics That Bring Value at I T.A.K.E. Unconference 2015
 
Aki Salmi: Object Oriented Views at I T.A.K.E. Unconference 2015
Aki Salmi: Object Oriented Views at I T.A.K.E. Unconference 2015Aki Salmi: Object Oriented Views at I T.A.K.E. Unconference 2015
Aki Salmi: Object Oriented Views at I T.A.K.E. Unconference 2015
 
Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...
Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...
Stefan Kanev: Clojure, ClojureScript and Why They're Awesome at I T.A.K.E. Un...
 
Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015
Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015
Igor Popov: Mutation Testing at I T.A.K.E. Unconference 2015
 

Último

%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 

Último (20)

%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 

Flavius Ștef: Big Rewrites Without Big Risks at I T.A.K.E. Unconference