SlideShare a Scribd company logo
1 of 265
Refactoring
  Jesse Warden
Who?
Who?

• Jesse Warden
Who?

• Jesse Warden
• Web App Solution
Who?

• Jesse Warden
• Web App Solution
• Flex, Java, and BlazeDS Consulting
What?
What?

• Basic Refactoring
What?

• Basic Refactoring
• Priority Pyramid
What?

• Basic Refactoring
• Priority Pyramid
• Stories
What?

• Basic Refactoring
• Priority Pyramid
• Stories
• Leadership
Why?
Why?

• Coding is more fun
Why?

• Coding is more fun
• People like working with you
Why?

• Coding is more fun
• People like working with you
• Grow in your career
Why?

• Coding is more fun
• People like working with you
• Grow in your career
• Better Software
No seriously...
No seriously...

• I loathe it
No seriously...

• I loathe it
• People have said articles helped them
No seriously...

• I loathe it
• People have said articles helped them
• Mentor Leadership / Stewardship
Basics
Basics

• Exceptions
Basics

• Exceptions
• Architecture
Basics

• Exceptions
• Architecture
• Refactoring Paths
Exceptions
Exceptions

• Synchronous: 100%
Exceptions

• Synchronous: 100%
• Asynchronous: 99%
Exceptions

• Synchronous: 100%
• Asynchronous: 99%
• Null Pointers
Synchronous
Synchronous

• throw new Error(“b00m”);
Synchronous

• throw new Error(“b00m”);
• try/catch
Synchronous

• throw new Error(“b00m”);
• try/catch
• “Road to hell is paved with good intentions.”
Asynchronous
Asynchronous

• dispatchEvent(new ErrorEvent(“b00m”));
Asynchronous

• dispatchEvent(new ErrorEvent(“b00m”));
• addEventListener(“b00m”, onHandle);
Asynchronous

• dispatchEvent(new ErrorEvent(“b00m”));
• addEventListener(“b00m”, onHandle);
• Same as before, don’t swallow.
Uncaught
Uncaught

• loaderInfo.uncaughtErrorEvents
Uncaught

• loaderInfo.uncaughtErrorEvents
• won’t always get a stack trace
Uncatchable
Uncatchable


• Error #2044: Unhandled IOErrorEvent:.
  text=Error #2036: Load Never Completed.
Null Pointers
Null Pointers

• Sir Charles Antony Richard Hoare
Null Pointers

• Sir Charles Antony Richard Hoare
• British Computer Scientist
Null Pointers

• Sir Charles Antony Richard Hoare
• British Computer Scientist
• "I call it my billion-dollar mistake"
Null Pointers

• Sir Charles Antony Richard Hoare
• British Computer Scientist
• "I call it my billion-dollar mistake"
• Programmer Enemy #1
Null Pointers
Null Pointers

• Loose Typing
Null Pointers

• Loose Typing
• External Data
ExternalInterface
ExternalInterface

• Marshall Exceptions
ExternalInterface

• Marshall Exceptions
• set to true
Exceptions
Exceptions

• Crashes
Exceptions

• Crashes
• Unexpected/Unrelated Errors
Exceptions

• Crashes
• Unexpected/Unrelated Errors
• Breed Insecurity
Exceptions

• Crashes
• Unexpected/Unrelated Errors
• Breed Insecurity
• Cause Fire Drills
Exceptions
Exceptions

• Best Defense is a Good Offense
Exceptions

• Best Defense is a Good Offense
• Broken Windows
Fighting Back
Fighting Back

• try/catch
Fighting Back

• try/catch
• log the catch
Fighting Back

• try/catch
• log the catch
• log uncaughtErrors
Fighting Back

• try/catch
• log the catch
• log uncaughtErrors
• Code Review
Loose Typing
Loose Typing
• Object
Loose Typing
• Object
• Dictionary
Loose Typing
• Object
• Dictionary
•*
Loose Typing
• Object
• Dictionary
•*
• Dynamic
Loose Typing
• Object
• Dictionary
•*
• Dynamic
• Interfaces
Object
Object

• Protoyping
Object

• Protoyping
• JSON
Object

• Protoyping
• JSON
• Teaching
Object

• Protoyping
• JSON
• Teaching
• delete slots
Object Solution
Object Solution

• Don’t Use Object
Object Solution

• Don’t Use Object
• Ensure casts aren’t null
Object Solution

• Don’t Use Object
• Ensure casts aren’t null
• Same for Dynamic & Interface
Dictionary
Dictionary

• Easier lookups vs. ByteArray
Dictionary

• Easier lookups vs. ByteArray
• Strict Equality on Keys
Dictionary Solution
Dictionary Solution


• Wrap
Star
Star


•*
Star Solution
Star Solution

• Don’t Use It
Star Solution

• Don’t Use It
• Log It
Star Solution

• Don’t Use It
• Log It
• Ensure Consumers Guard
External Data
External Data

• Factories
External Data

• Factories
• Value Object / Data Transfer Object
External Data

• Factories
• Value Object / Data Transfer Object
• Parsing
Parsing
Parsing

• Poison Entire System
Parsing

• Poison Entire System
• When in doubt, return null
Parsing

• Poison Entire System
• When in doubt, return null
• Proactive: throw meaningful error
Parsing

• Poison Entire System
• When in doubt, return null
• Proactive: throw meaningful error
• Uber Proactive: Unit Test
Parsing
Parsing


• Holy S$*(%&: Null Pattern
Architecture
Architecture

• Encapsulation
Architecture

• Encapsulation
• Testability
Encapsulation
Encapsulation

• Black Box
Encapsulation

• Black Box
• Manages its own internal state
Bad Encapsulation
Bad Encapsulation

• Global Variables / Singletons
Bad Encapsulation

• Global Variables / Singletons
• No Accessors/API for Data Models
Bad Encapsulation

• Global Variables / Singletons
• No Accessors/API for Data Models
• No API so you dig
Testability
Testability

• Easy to test
Testability

• Easy to test
• not welded together
Testability

• Easy to test
• not welded together
• not spaghetti code
Services
Services

• Service Inside the Proxy
Services

• Service Inside the Proxy
• Not a service, just a loader
Services

• Service Inside the Proxy
• Not a service, just a loader
• No centralized error reporting
Service Solutions
Service Solutions

• Create a base class
Service Solutions

• Create a base class
• log all errors
Service Solutions

• Create a base class
• log all errors
• create an integration suite
Big Ole’ Commands
Big Ole’ Commands


• switch
Refactoring Paths
Refactoring Paths

• What do you build now?
Refactoring Paths

• What do you build now?
• What do you change to later?
Refactoring Paths

• What do you build now?
• What do you change to later?
• When?
Refactoring Paths

• What do you build now?
• What do you change to later?
• When?
• Not Architecting
Refactoring Path
Refactoring Path

Ability to code now, satisfy non-programmers
for trust earning, with assurance you haven’t
coded yourself into a corner.
Marriage
Marriage


Compromise
Good Book
It’s Ok. It’ll Be Ok.
It’s Ok. It’ll Be Ok.

• Lose some battles...
It’s Ok. It’ll Be Ok.

• Lose some battles...
• ...as long as you win the war.
Detractors
Detractors

• Don’t have their Poetic License
Detractors

• Don’t have their Poetic License
• Fear
Detractors

• Don’t have their Poetic License
• Fear
• Understand the Rules & Ramifications
Detractors
Detractors

• Ivory Zealots
Detractors

• Ivory Zealots
• Scars
Detractors

• Ivory Zealots
• Scars
• Don’t Believe in their Refactoring Ability
Detractors

• Ivory Zealots
• Scars
• Don’t Believe in their Refactoring Ability
• or Yours
Refactoring Paths
Refactoring Paths

• Refactoring is Temporal
Refactoring Paths

• Refactoring is Temporal
• Architecture is not
Refactoring Paths

• Refactoring is Temporal
• Architecture is not
• Architecture is Plan
Refactoring Paths

• Refactoring is Temporal
• Architecture is not
• Architecture is Plan
• Refactoring is a Strategy
Refactoring Path
Refactoring Path

• Know the rule(s) ur breaking
Refactoring Path

• Know the rule(s) ur breaking
• do it
Refactoring Path

• Know the rule(s) ur breaking
• do it
• document what needs to change
Refactoring Path

• Know the rule(s) ur breaking
• do it
• document what needs to change
• when you have time, fix it
Refactoring Paths
Refactoring Paths

• Use a *
Refactoring Paths

• Use a *
• Cast It
Refactoring Paths
Refactoring Paths

• Make an Object
Refactoring Paths

• Make an Object
• Make a ValueObject
Refactoring Path
Refactoring Path


• Event with public var data:*;
Refactoring Path
Refactoring Path

• Scouting
Refactoring Path

• Scouting
• Bear Bait
Refactoring Path

• Scouting
• Bear Bait
• Intentional Parsing Throws
Refactoring Path

• Scouting
• Bear Bait
• Intentional Parsing Throws
• Intentional Grenades
Refactoring Path
Refactoring Path
• if if if if if if
Refactoring Path
• if if if if if if
• then then then then
Refactoring Path
• if if if if if if
• then then then then
• badger badger badger badger
Refactoring Path
• if if if if if if
• then then then then
• badger badger badger badger
• make a switch
Refactoring Path
• if if if if if if
• then then then then
• badger badger badger badger
• make a switch
• make functions
Refactoring Paths
Refactoring Paths

• <s:Component> vs Item Renderer
Refactoring Paths

• <s:Component> vs Item Renderer
• Passive
Priority Pyramid
Priority Pyramid
1. Report
Priority Pyramid
1. Report
2. Understanding
Priority Pyramid
1. Report
2. Understanding
3. Trust
Priority Pyramid
1. Report
2. Understanding
3. Trust
4. Lead
Priority Pyramid
Priority Pyramid
5. Build
Priority Pyramid
5. Build
6. Explosions
Priority Pyramid
5. Build
6. Explosions
7. Diagnostics
Priority Pyramid
5. Build
6. Explosions
7. Diagnostics
8. Architecture
Priority Pyramid
5. Build
6. Explosions
7. Diagnostics
8. Architecture
9. Workflow
Pyramid: Report
Pyramid: Report

• Who is my boss?
Pyramid: Report

• Who is my boss?
• What will make you happy when I leave?
Pyramid: Understanding
Pyramid: Understanding

• Listen
Pyramid: Understanding

• Listen
• What’s the True Goal?
Pyramid: Understanding

• Listen
• What’s the True Goal?
• What are the problems?
Pyramid: Understanding

• Listen
• What’s the True Goal?
• What are the problems?
• What are the challenges?
Pyramid: Understanding
Pyramid: Understanding

• Explore & Document
Pyramid: Understanding

• Explore & Document
 • Learn Data Model
Pyramid: Understanding

• Explore & Document
 • Learn Data Model
 • Learn Framework
Pyramid: Understanding

• Explore & Document
 • Learn Data Model
 • Learn Framework
 • Understanding the Story
Pyramid: Understanding
Pyramid: Understanding


 • Looking for Red Flags
Pyramid: Understanding


 • Looking for Red Flags
 • Looking for Mines
Pyramid: Understanding


 • Looking for Red Flags
 • Looking for Mines
 • Looking for Validation
Pyramid: Understanding
Pyramid: Understanding


 • Dissect People
Pyramid: Understanding


 • Dissect People
 • What makes them tick?
Pyramid: Understanding


 • Dissect People
 • What makes them tick?
 • Who listens to who?
Pyramid: Trust
Pyramid: Trust

• Make Friends
Pyramid: Trust

• Make Friends
• Provide Immediate Value
Pyramid: Trust
Pyramid: Trust

• Check in code into source control 1st week
Pyramid: Trust

• Check in code into source control 1st week
• fix a problem
Pyramid: Trust

• Check in code into source control 1st week
• fix a problem
• Only get 1 change at 1st impression
Pyramid: Trust

• Check in code into source control 1st week
• fix a problem
• Only get 1 change at 1st impression
• Under Promise, Over Deliver
Pyramid: Trust
Pyramid: Trust

• Stop Fire Drills
Pyramid: Trust

• Stop Fire Drills
• Empower Through Diagnostic Tools
Pyramid: Trust

• Stop Fire Drills
• Empower Through Diagnostic Tools
• Easy to use, visible logger
Pyramid: Trust

• Stop Fire Drills
• Empower Through Diagnostic Tools
• Easy to use, visible logger
• Easy to use, visible environment info
Pyramid: Trust
Pyramid: Trust

• Update on Direction
Pyramid: Trust

• Update on Direction
• Provide Transparency
Pyramid: Trust

• Update on Direction
• Provide Transparency
• What, why, and when
Pyramid: Trust

• Update on Direction
• Provide Transparency
• What, why, and when
• Plan A, Plan B
Pyramid: Lead
Pyramid: Lead

• Be Positive
Pyramid: Lead

• Be Positive
• Short Term Goals
Pyramid: Lead

• Be Positive
• Short Term Goals
• Long Term Goals
Pyramid: Lead
Pyramid: Lead

• Plan
Pyramid: Lead

• Plan
• 1 thing at a time
Pyramid: Lead

• Plan
• 1 thing at a time
• Assess Problems
Pyramid: Lead

• Plan
• 1 thing at a time
• Assess Problems
• Document
Pyramid: Lead
Pyramid: Lead


• Re-prioritize as needed
Pyramid: Lead
Pyramid: Lead

• Delegate
Pyramid: Lead

• Delegate
• Help
Pyramid: Lead

• Delegate
• Help
• Divide & Conquer
Pyramid: Lead

• Delegate
• Help
• Divide & Conquer
• Short Term Branches: 3 days
Experiences
Hearts & Minds
Fight Only to Win
People on Pedestals
Idle Hands
Winston Wolfe
    [show video]
      [dissect]
Conclusions
Conclusions

• Exceptions: Catch & Log
Conclusions

• Exceptions: Catch & Log
• Refactoring: Remember The Paths
Conclusions

• Exceptions: Catch & Log
• Refactoring: Remember The Paths
• Listen, Build Trust, and Lead
Thank You! Questions?
Thank You! Questions?

 Jesse Warden
Thank You! Questions?

 Jesse Warden
 webappsolution.com
Thank You! Questions?

 Jesse Warden
 webappsolution.com
 jessewarden.com
Thank You! Questions?

 Jesse Warden
 webappsolution.com
 jessewarden.com
 @jesterxl

More Related Content

What's hot

LeanStartup:Research is cheaper than development
LeanStartup:Research is cheaper than developmentLeanStartup:Research is cheaper than development
LeanStartup:Research is cheaper than development
John McCaffrey
 
Interconnected gear pieces smart arts process 6 stages style 1 powerpoint pr...
Interconnected gear pieces  smart arts process 6 stages style 1 powerpoint pr...Interconnected gear pieces  smart arts process 6 stages style 1 powerpoint pr...
Interconnected gear pieces smart arts process 6 stages style 1 powerpoint pr...
SlideTeam.net
 
prdc10-tdd-patterns
prdc10-tdd-patternsprdc10-tdd-patterns
prdc10-tdd-patterns
Amir Barylko
 
CodeCamp 2012-mvc-vs-ror-2
CodeCamp 2012-mvc-vs-ror-2CodeCamp 2012-mvc-vs-ror-2
CodeCamp 2012-mvc-vs-ror-2
Amir Barylko
 
PRDC-ror-trilogy-part1
PRDC-ror-trilogy-part1PRDC-ror-trilogy-part1
PRDC-ror-trilogy-part1
Amir Barylko
 

What's hot (15)

Becoming a more productive Rails Developer
Becoming a more productive Rails DeveloperBecoming a more productive Rails Developer
Becoming a more productive Rails Developer
 
LEMON - On Drupal diseases and cures
LEMON - On Drupal diseases and curesLEMON - On Drupal diseases and cures
LEMON - On Drupal diseases and cures
 
Different ways of integrating React into Rails - Mikhail Bortnyk
Different ways of integrating React into Rails - Mikhail BortnykDifferent ways of integrating React into Rails - Mikhail Bortnyk
Different ways of integrating React into Rails - Mikhail Bortnyk
 
LeanStartup:Research is cheaper than development
LeanStartup:Research is cheaper than developmentLeanStartup:Research is cheaper than development
LeanStartup:Research is cheaper than development
 
Interconnected gear pieces smart arts process 6 stages style 1 powerpoint pr...
Interconnected gear pieces  smart arts process 6 stages style 1 powerpoint pr...Interconnected gear pieces  smart arts process 6 stages style 1 powerpoint pr...
Interconnected gear pieces smart arts process 6 stages style 1 powerpoint pr...
 
Doing cool stuff with WordPress
Doing cool stuff with WordPressDoing cool stuff with WordPress
Doing cool stuff with WordPress
 
Selfish Accessibility — WordCamp Europe 2017
Selfish Accessibility — WordCamp Europe 2017Selfish Accessibility — WordCamp Europe 2017
Selfish Accessibility — WordCamp Europe 2017
 
Becoming a more Productive Rails Developer
Becoming a more Productive Rails DeveloperBecoming a more Productive Rails Developer
Becoming a more Productive Rails Developer
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
Japanese CloudSearch Use-Cases and Tech Deep Dive
Japanese CloudSearch Use-Cases and Tech Deep DiveJapanese CloudSearch Use-Cases and Tech Deep Dive
Japanese CloudSearch Use-Cases and Tech Deep Dive
 
prdc10-tdd-patterns
prdc10-tdd-patternsprdc10-tdd-patterns
prdc10-tdd-patterns
 
CodeCamp 2012-mvc-vs-ror-2
CodeCamp 2012-mvc-vs-ror-2CodeCamp 2012-mvc-vs-ror-2
CodeCamp 2012-mvc-vs-ror-2
 
PRDC-ror-trilogy-part1
PRDC-ror-trilogy-part1PRDC-ror-trilogy-part1
PRDC-ror-trilogy-part1
 
Ruby Masters 2011
Ruby Masters 2011Ruby Masters 2011
Ruby Masters 2011
 
Developing With Django
Developing With DjangoDeveloping With Django
Developing With Django
 

Viewers also liked

Asynchronous programming
Asynchronous programmingAsynchronous programming
Asynchronous programming
Chester Hartin
 

Viewers also liked (8)

Webcast: Asynchronous Programming Demystified
Webcast: Asynchronous Programming DemystifiedWebcast: Asynchronous Programming Demystified
Webcast: Asynchronous Programming Demystified
 
Asynchronous programming
Asynchronous programmingAsynchronous programming
Asynchronous programming
 
Code Refactoring
Code RefactoringCode Refactoring
Code Refactoring
 
Refactor your Java EE application using Microservices and Containers - Arun G...
Refactor your Java EE application using Microservices and Containers - Arun G...Refactor your Java EE application using Microservices and Containers - Arun G...
Refactor your Java EE application using Microservices and Containers - Arun G...
 
Refactoring 101
Refactoring 101Refactoring 101
Refactoring 101
 
Refactoring - An Introduction
Refactoring - An IntroductionRefactoring - An Introduction
Refactoring - An Introduction
 
Refactoring Tips by Martin Fowler
Refactoring Tips by Martin FowlerRefactoring Tips by Martin Fowler
Refactoring Tips by Martin Fowler
 
Refactoring: Improve the design of existing code
Refactoring: Improve the design of existing codeRefactoring: Improve the design of existing code
Refactoring: Improve the design of existing code
 

Similar to Refactoring RIA Unleashed 2011

No Show 2012 - Heather Decker-Davis and Luke Dicken - Procedural Processes
No Show 2012 - Heather Decker-Davis and Luke Dicken - Procedural ProcessesNo Show 2012 - Heather Decker-Davis and Luke Dicken - Procedural Processes
No Show 2012 - Heather Decker-Davis and Luke Dicken - Procedural Processes
No Show Conference
 
Austin NoSQL 2011-07-06
Austin NoSQL 2011-07-06Austin NoSQL 2011-07-06
Austin NoSQL 2011-07-06
jimbojsb
 
The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing code
Zivtech, LLC
 
'An Evolution Into Specification By Example' by Adam Knight
'An Evolution Into Specification By Example' by Adam Knight'An Evolution Into Specification By Example' by Adam Knight
'An Evolution Into Specification By Example' by Adam Knight
TEST Huddle
 

Similar to Refactoring RIA Unleashed 2011 (20)

No Show 2012 - Heather Decker-Davis and Luke Dicken - Procedural Processes
No Show 2012 - Heather Decker-Davis and Luke Dicken - Procedural ProcessesNo Show 2012 - Heather Decker-Davis and Luke Dicken - Procedural Processes
No Show 2012 - Heather Decker-Davis and Luke Dicken - Procedural Processes
 
WebGL Camp 4 - A3 3D Engine
WebGL Camp 4 - A3 3D EngineWebGL Camp 4 - A3 3D Engine
WebGL Camp 4 - A3 3D Engine
 
Austin NoSQL 2011-07-06
Austin NoSQL 2011-07-06Austin NoSQL 2011-07-06
Austin NoSQL 2011-07-06
 
The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing code
 
My Little Webap - DevOpsSec is Magic
My Little Webap - DevOpsSec is MagicMy Little Webap - DevOpsSec is Magic
My Little Webap - DevOpsSec is Magic
 
Why puppet? Why now?
Why puppet? Why now?Why puppet? Why now?
Why puppet? Why now?
 
Tackling Testing Telephony
Tackling Testing Telephony Tackling Testing Telephony
Tackling Testing Telephony
 
Functional Ruby
Functional RubyFunctional Ruby
Functional Ruby
 
Trending with Purpose
Trending with PurposeTrending with Purpose
Trending with Purpose
 
3 years with Clojure
3 years with Clojure3 years with Clojure
3 years with Clojure
 
'An Evolution Into Specification By Example' by Adam Knight
'An Evolution Into Specification By Example' by Adam Knight'An Evolution Into Specification By Example' by Adam Knight
'An Evolution Into Specification By Example' by Adam Knight
 
Cloud conference - mongodb
Cloud conference - mongodbCloud conference - mongodb
Cloud conference - mongodb
 
In-house web automation?
In-house web automation?In-house web automation?
In-house web automation?
 
Xtext Best Practices
Xtext Best PracticesXtext Best Practices
Xtext Best Practices
 
Domain Driven Design Demonstrated
Domain Driven Design Demonstrated Domain Driven Design Demonstrated
Domain Driven Design Demonstrated
 
Tweakers Anonymous
Tweakers AnonymousTweakers Anonymous
Tweakers Anonymous
 
TDC2016SP - Otimização Prematura: a Raíz de Todo o Mal
TDC2016SP - Otimização Prematura: a Raíz de Todo o MalTDC2016SP - Otimização Prematura: a Raíz de Todo o Mal
TDC2016SP - Otimização Prematura: a Raíz de Todo o Mal
 
My Parents Configured Their Living Room
My Parents Configured Their Living RoomMy Parents Configured Their Living Room
My Parents Configured Their Living Room
 
onGameStart
onGameStartonGameStart
onGameStart
 
6 reasons Jubilee could be a Rubyist's new best friend
6 reasons Jubilee could be a Rubyist's new best friend6 reasons Jubilee could be a Rubyist's new best friend
6 reasons Jubilee could be a Rubyist's new best friend
 

More from Jesse Warden (7)

System webpack-jspm
System webpack-jspmSystem webpack-jspm
System webpack-jspm
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overview
 
Technical debt in space jesse warden - 100yss 2015
Technical debt in space   jesse warden - 100yss 2015Technical debt in space   jesse warden - 100yss 2015
Technical debt in space jesse warden - 100yss 2015
 
Mobile Gaming: Corona SDK & Adobe AIR RIA Unleashed 2011
Mobile Gaming: Corona SDK & Adobe AIR RIA Unleashed 2011Mobile Gaming: Corona SDK & Adobe AIR RIA Unleashed 2011
Mobile Gaming: Corona SDK & Adobe AIR RIA Unleashed 2011
 
Getting Complex Designs into Flex - FITC 2011
Getting Complex Designs into Flex - FITC 2011Getting Complex Designs into Flex - FITC 2011
Getting Complex Designs into Flex - FITC 2011
 
How to Launch a Small Software Product
How to Launch a Small Software ProductHow to Launch a Small Software Product
How to Launch a Small Software Product
 
Robotlegs on Top of Gaia
Robotlegs on Top of GaiaRobotlegs on Top of Gaia
Robotlegs on Top of Gaia
 

Recently uploaded

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 

Refactoring RIA Unleashed 2011

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n
  130. \n
  131. \n
  132. \n
  133. \n
  134. \n
  135. \n
  136. \n
  137. \n
  138. \n
  139. \n
  140. \n
  141. \n
  142. \n
  143. \n
  144. \n
  145. \n
  146. \n
  147. \n
  148. \n
  149. \n
  150. \n
  151. \n
  152. \n
  153. \n
  154. \n
  155. \n
  156. \n
  157. \n
  158. \n
  159. \n
  160. \n
  161. \n
  162. \n
  163. \n
  164. \n
  165. \n
  166. \n
  167. \n
  168. \n
  169. \n
  170. \n
  171. \n
  172. \n
  173. \n
  174. \n
  175. \n
  176. \n
  177. \n
  178. \n
  179. \n
  180. \n
  181. \n
  182. \n
  183. \n
  184. \n
  185. \n
  186. \n
  187. \n
  188. \n
  189. \n
  190. \n
  191. \n
  192. \n
  193. \n
  194. \n
  195. \n
  196. \n