SlideShare a Scribd company logo
1 of 89
Download to read offline
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

More Related Content

Viewers also liked

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
 

Viewers also liked (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
 

Similar to 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
 

Similar to 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
 

Recently uploaded

Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 

Recently uploaded (20)

Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 

Taming the View with String Templates and Slippers