SlideShare une entreprise Scribd logo
1  sur  89
Télécharger pour lire hors ligne
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

Contenu connexe

En vedette

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
 

En vedette (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
 

Similaire à Taming the View with String Templates and Slippers

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 (3)
Advicefortheinterns 100721141420-phpapp01 (3)Advicefortheinterns 100721141420-phpapp01 (3)
Advicefortheinterns 100721141420-phpapp01 (3)Nitish Bhardwaj
 
Advicefortheinterns 100721141420-phpapp01 (1)
Advicefortheinterns 100721141420-phpapp01 (1)Advicefortheinterns 100721141420-phpapp01 (1)
Advicefortheinterns 100721141420-phpapp01 (1)Nitish Bhardwaj
 
Polishing Interfaces
Polishing InterfacesPolishing Interfaces
Polishing InterfacesUX Booth
 

Similaire à Taming the View with String Templates and Slippers (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 (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)
 
Polishing Interfaces
Polishing InterfacesPolishing Interfaces
Polishing Interfaces
 

Dernier

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 

Dernier (20)

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 

Taming the View with String Templates and Slippers