SlideShare ist ein Scribd-Unternehmen logo
1 von 89
Downloaden Sie, um offline zu lesen
Taming of the View
                            RubyConf India 2010
                            Sarah Taraporewalla
                              ThoughtWorks




Sunday, 21 March 2010
I will attempt to
                        convince you that:




Sunday, 21 March 2010
I will attempt to
                         convince you that:
                   -    the current template engines are too
                        permissive




Sunday, 21 March 2010
I will attempt to
                         convince you that:
                   -    the current template engines are too
                        permissive
                   -    there are loads of code bases that break
                        fundamental principles




Sunday, 21 March 2010
I will attempt to
                         convince you that:
                   -    the current template engines are too
                        permissive
                   -    there are loads of code bases that break
                        fundamental principles
                   -    you should turn to other template engines



Sunday, 21 March 2010
What is wrong with
                         these examples?


Sunday, 21 March 2010
Example 1




Sunday, 21 March 2010
Example 2




Sunday, 21 March 2010
Example 3




Sunday, 21 March 2010
Example 4




Sunday, 21 March 2010
AGH! This is really
                        really easy in Rails3
                                now!


Sunday, 21 March 2010
Controller




Sunday, 21 March 2010
Why do we get thin
                          controllers?


Sunday, 21 March 2010
Push vs Pull




                                http://www.flickr.com/photos/91772025@N00/444044158/ CC BY-ND 2.0

Sunday, 21 March 2010
Pull

                        View   Controllers   Model




Sunday, 21 March 2010
Pull - over time

                             Controllers   Model
              View




Sunday, 21 March 2010
Push

                        View   Controllers   Model




Sunday, 21 March 2010
Push - over time

                        View                      Model

                                    Controllers




Sunday, 21 March 2010
Push - and then

                        View        Controllers   Services




Sunday, 21 March 2010
What do we want?




Sunday, 21 March 2010
Testable Code




Sunday, 21 March 2010
Testable Code


                        Don’t put logic in your views




Sunday, 21 March 2010
Single Responsibility




Sunday, 21 March 2010
Single Responsibility


                        Don’t let changes in column
                         names effect your views



Sunday, 21 March 2010
Separation of Concerns




Sunday, 21 March 2010
Separation of Concerns


                        Enforce strict separation of
                             model and view



Sunday, 21 March 2010
How do we improve on
                  the examples?


Sunday, 21 March 2010
Example 1 - Before




Sunday, 21 March 2010
Example 1 - Improved




Sunday, 21 March 2010
Example 2 - Before




Sunday, 21 March 2010
Example 2 - Improved




Sunday, 21 March 2010
Example 2 - Improved




Sunday, 21 March 2010
Example 3 - Before




Sunday, 21 March 2010
Example 4 - Before




Sunday, 21 March 2010
Example 3,4 - Improved




Sunday, 21 March 2010
Example 3,4 - Improved




Sunday, 21 March 2010
If you make it easy to
                 do the wrong thing, the
                    wrong thing will be
                          done

Sunday, 21 March 2010
If you make it easy to
                   do the right thing, the
                  right thing will be done


Sunday, 21 March 2010
Haml



Sunday, 21 March 2010
Haml




Sunday, 21 March 2010
Haml

                        Good




Sunday, 21 March 2010
Haml

                        Good
                           But ...



Sunday, 21 March 2010
Haml

                        Good
                           But ...
                                still allows ruby


Sunday, 21 March 2010
String Template



Sunday, 21 March 2010
StringTemplate

               - Strict separation of model & view
               - Fits well with functional programming
               - Written in Java, .Net, Python
                        is NOT Turing complete

Sunday, 21 March 2010
1. Create a StringTemplate Object with
                                  the template




Sunday, 21 March 2010
1. Create a StringTemplate Object with
                                  the template




                                                 string or file




Sunday, 21 March 2010
2. Set attributes and their values




Sunday, 21 March 2010
3. Call toString() to mash attributes onto
                               the template




Sunday, 21 March 2010
Testable?




Sunday, 21 March 2010
Testable? Yes!




Sunday, 21 March 2010
Single Responsibility?




Sunday, 21 March 2010
Single Responsibility?
                                 Yes!




Sunday, 21 March 2010
Separation of
                         Concerns?




Sunday, 21 March 2010
Separation of
                             Concerns? Yes!


                        It is the essence of its philosophy




Sunday, 21 March 2010
Other cool things...




Sunday, 21 March 2010
Templates (Partials)




Sunday, 21 March 2010
Iterators




Sunday, 21 March 2010
Iterators




Sunday, 21 March 2010
Renderers




Sunday, 21 March 2010
Localisation




Sunday, 21 March 2010
But, we do Ruby



Sunday, 21 March 2010
Slippers



Sunday, 21 March 2010
Slippers




Sunday, 21 March 2010
Slippers & Ramaze




Sunday, 21 March 2010
Slippers - Example




Sunday, 21 March 2010
Slippers - Example




Sunday, 21 March 2010
Slippers - Example




Sunday, 21 March 2010
Slippers - Example
                                                      index.st




          person/index.st


                                      person/age.st
Sunday, 21 March 2010
Slippers - Example
                                      person/age_renderer.rb




    controller/role_renderer.rb




Sunday, 21 March 2010
Slippers - Example




Sunday, 21 March 2010
Slippers - Testable?

                   • Holes are correctly plugged
                   • Correct instance variables set
                   • Renderers


Sunday, 21 March 2010
Slippers - Testable?

                   • Holes are correctly plugged
                   • Correct instance variables set
                   • Renderers


Sunday, 21 March 2010
Slippers - Testable?




Sunday, 21 March 2010
Slippers - Testable?




Sunday, 21 March 2010
Slippers - Testable?




Sunday, 21 March 2010
Slippers - Testable?

                   • Holes are correctly plugged
                   • Correct instance variables set
                   • Renderers


Sunday, 21 March 2010
Slippers - Testable?




Sunday, 21 March 2010
Slippers - Testable?




Sunday, 21 March 2010
Slippers - Testable?




Sunday, 21 March 2010
Slippers - Testable?

                   • Holes are correctly plugged
                   • Correct instance variables set
                   • Renderers


Sunday, 21 March 2010
Slippers - Testable?




Sunday, 21 March 2010
Slippers




Sunday, 21 March 2010
Slippers
                   • Can be found at:
                    ‣ http://slippersRb.com
                    ‣ http://github.com/starapor/slippers
                    ‣ http://gemcutter.org/gems/slippers
                   • Ramaze view template
                    ‣ http://ramaze.net
Sunday, 21 March 2010
Have I convinced you
                                that:




Sunday, 21 March 2010
Have I convinced you
                                that:
                   -    the current template engines are too
                        permissive




Sunday, 21 March 2010
Have I convinced you
                                that:
                   -    the current template engines are too
                        permissive
                   -    there are loads of code bases that break
                        fundamental principles




Sunday, 21 March 2010
Have I convinced you
                                that:
                   -    the current template engines are too
                        permissive
                   -    there are loads of code bases that break
                        fundamental principles
                   -    we should turn to other template engines



Sunday, 21 March 2010
questions?



Sunday, 21 March 2010

Weitere ähnliche Inhalte

Andere mochten auch

Web Widgets & Your PLE
Web Widgets & Your PLEWeb Widgets & Your PLE
Web Widgets & Your PLEAsako Yoshida
 
Ruby versus Rails
Ruby versus RailsRuby versus Rails
Ruby versus Railsasheren
 
how to rate a Rails application
how to rate a Rails applicationhow to rate a Rails application
how to rate a Rails applicationehuard
 
Minimum Viable User Experience
Minimum Viable User ExperienceMinimum Viable User Experience
Minimum Viable User ExperienceGrace Ng
 
eZ Publish & Deployment of a multi-site platform
eZ Publish & Deployment of a multi-site platformeZ Publish & Deployment of a multi-site platform
eZ Publish & Deployment of a multi-site platformKaliop-slide
 
Top 10 ways to survive homework in middle
Top 10 ways to survive homework in middleTop 10 ways to survive homework in middle
Top 10 ways to survive homework in middledenised75
 
Get Organised IS Power Hour
Get Organised IS Power HourGet Organised IS Power Hour
Get Organised IS Power Hourhwulib
 
Get Yourself Organised!! Part 3 RSS Feeds
Get Yourself Organised!!  Part 3 RSS FeedsGet Yourself Organised!!  Part 3 RSS Feeds
Get Yourself Organised!! Part 3 RSS FeedsBGS Library
 
Carrington CMS Theme Framework for WordPress
Carrington CMS Theme Framework for WordPressCarrington CMS Theme Framework for WordPress
Carrington CMS Theme Framework for WordPressalexkingorg
 
Web Development With Ruby - From Simple To Complex
Web Development With Ruby - From Simple To ComplexWeb Development With Ruby - From Simple To Complex
Web Development With Ruby - From Simple To ComplexBrian Hogan
 
Getting Started with Meteor (TCF ITPC 2014)
Getting Started with Meteor (TCF ITPC 2014)Getting Started with Meteor (TCF ITPC 2014)
Getting Started with Meteor (TCF ITPC 2014)Michael Redlich
 
Cercone TCC presentation_2010
Cercone TCC presentation_2010Cercone TCC presentation_2010
Cercone TCC presentation_2010Kathleen Cercone
 
Brenna & Rozlyn
Brenna &  RozlynBrenna &  Rozlyn
Brenna & Rozlynhreynolds0
 

Andere mochten auch (18)

Web Widgets & Your PLE
Web Widgets & Your PLEWeb Widgets & Your PLE
Web Widgets & Your PLE
 
Ruby versus Rails
Ruby versus RailsRuby versus Rails
Ruby versus Rails
 
how to rate a Rails application
how to rate a Rails applicationhow to rate a Rails application
how to rate a Rails application
 
Minimum Viable User Experience
Minimum Viable User ExperienceMinimum Viable User Experience
Minimum Viable User Experience
 
簡単なTYPO3エクステンションの作成
簡単なTYPO3エクステンションの作成簡単なTYPO3エクステンションの作成
簡単なTYPO3エクステンションの作成
 
eZ Publish & Deployment of a multi-site platform
eZ Publish & Deployment of a multi-site platformeZ Publish & Deployment of a multi-site platform
eZ Publish & Deployment of a multi-site platform
 
Top 10 ways to survive homework in middle
Top 10 ways to survive homework in middleTop 10 ways to survive homework in middle
Top 10 ways to survive homework in middle
 
rails3 @ rsonrails - 2010.08.21
rails3 @ rsonrails - 2010.08.21rails3 @ rsonrails - 2010.08.21
rails3 @ rsonrails - 2010.08.21
 
Get Organised IS Power Hour
Get Organised IS Power HourGet Organised IS Power Hour
Get Organised IS Power Hour
 
Get Yourself Organised!! Part 3 RSS Feeds
Get Yourself Organised!!  Part 3 RSS FeedsGet Yourself Organised!!  Part 3 RSS Feeds
Get Yourself Organised!! Part 3 RSS Feeds
 
Carrington CMS Theme Framework for WordPress
Carrington CMS Theme Framework for WordPressCarrington CMS Theme Framework for WordPress
Carrington CMS Theme Framework for WordPress
 
Designing responsively
Designing responsivelyDesigning responsively
Designing responsively
 
Intro for RoR
Intro for RoRIntro for RoR
Intro for RoR
 
Opal a new_hope
Opal a new_hopeOpal a new_hope
Opal a new_hope
 
Web Development With Ruby - From Simple To Complex
Web Development With Ruby - From Simple To ComplexWeb Development With Ruby - From Simple To Complex
Web Development With Ruby - From Simple To Complex
 
Getting Started with Meteor (TCF ITPC 2014)
Getting Started with Meteor (TCF ITPC 2014)Getting Started with Meteor (TCF ITPC 2014)
Getting Started with Meteor (TCF ITPC 2014)
 
Cercone TCC presentation_2010
Cercone TCC presentation_2010Cercone TCC presentation_2010
Cercone TCC presentation_2010
 
Brenna & Rozlyn
Brenna &  RozlynBrenna &  Rozlyn
Brenna & Rozlyn
 

Ähnlich wie Taming The View for Rubyconf India

Social metadata on the web
Social metadata on the webSocial metadata on the web
Social metadata on the webHendrik Dacquin
 
Present and Future of Programming Languages - ola bini
Present and Future of Programming Languages - ola biniPresent and Future of Programming Languages - ola bini
Present and Future of Programming Languages - ola biniThoughtWorks
 
Advice for the interns
Advice for the internsAdvice for the interns
Advice for the internsedward boches
 
eLearning in Tourism
eLearning in TourismeLearning in Tourism
eLearning in TourismSara Vannini
 
Affordances in Modern Web Design
Affordances in Modern Web DesignAffordances in Modern Web Design
Affordances in Modern Web DesignUX Booth
 
Paper to Pixels: Breaking down the barriers between print and interactive design
Paper to Pixels: Breaking down the barriers between print and interactive designPaper to Pixels: Breaking down the barriers between print and interactive design
Paper to Pixels: Breaking down the barriers between print and interactive designClockwork Active Media
 
The Future of Computing, TEDx Austin
The Future of Computing, TEDx AustinThe Future of Computing, TEDx Austin
The Future of Computing, TEDx Austinfrog
 
Advicefortheinterns 100721141420-phpapp01 (3)
Advicefortheinterns 100721141420-phpapp01 (3)Advicefortheinterns 100721141420-phpapp01 (3)
Advicefortheinterns 100721141420-phpapp01 (3)niti slideman
 
Advicefortheinterns 100721141420-phpapp01 (1)
Advicefortheinterns 100721141420-phpapp01 (1)Advicefortheinterns 100721141420-phpapp01 (1)
Advicefortheinterns 100721141420-phpapp01 (1)Nitish Bhardwaj
 
Advicefortheinterns 100721141420-phpapp01 (3)
Advicefortheinterns 100721141420-phpapp01 (3)Advicefortheinterns 100721141420-phpapp01 (3)
Advicefortheinterns 100721141420-phpapp01 (3)Nitish Bhardwaj
 
Polishing Interfaces
Polishing InterfacesPolishing Interfaces
Polishing InterfacesUX Booth
 

Ähnlich wie Taming The View for Rubyconf India (12)

Reflex FATC
Reflex FATCReflex FATC
Reflex FATC
 
Social metadata on the web
Social metadata on the webSocial metadata on the web
Social metadata on the web
 
Present and Future of Programming Languages - ola bini
Present and Future of Programming Languages - ola biniPresent and Future of Programming Languages - ola bini
Present and Future of Programming Languages - ola bini
 
Advice for the interns
Advice for the internsAdvice for the interns
Advice for the interns
 
eLearning in Tourism
eLearning in TourismeLearning in Tourism
eLearning in Tourism
 
Affordances in Modern Web Design
Affordances in Modern Web DesignAffordances in Modern Web Design
Affordances in Modern Web Design
 
Paper to Pixels: Breaking down the barriers between print and interactive design
Paper to Pixels: Breaking down the barriers between print and interactive designPaper to Pixels: Breaking down the barriers between print and interactive design
Paper to Pixels: Breaking down the barriers between print and interactive design
 
The Future of Computing, TEDx Austin
The Future of Computing, TEDx AustinThe Future of Computing, TEDx Austin
The Future of Computing, TEDx Austin
 
Advicefortheinterns 100721141420-phpapp01 (3)
Advicefortheinterns 100721141420-phpapp01 (3)Advicefortheinterns 100721141420-phpapp01 (3)
Advicefortheinterns 100721141420-phpapp01 (3)
 
Advicefortheinterns 100721141420-phpapp01 (1)
Advicefortheinterns 100721141420-phpapp01 (1)Advicefortheinterns 100721141420-phpapp01 (1)
Advicefortheinterns 100721141420-phpapp01 (1)
 
Advicefortheinterns 100721141420-phpapp01 (3)
Advicefortheinterns 100721141420-phpapp01 (3)Advicefortheinterns 100721141420-phpapp01 (3)
Advicefortheinterns 100721141420-phpapp01 (3)
 
Polishing Interfaces
Polishing InterfacesPolishing Interfaces
Polishing Interfaces
 

Kürzlich hochgeladen

Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
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.pptxRemote DBA Services
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
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 2024Victor Rentea
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
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.pptxRustici Software
 

Kürzlich hochgeladen (20)

Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
+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...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
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
 

Taming The View for Rubyconf India