SlideShare ist ein Scribd-Unternehmen logo
1 von 79
The PRPL Pattern for
Domino Web Apps
Keith Strickland – Red Pill Now
Our Amazing Sponsors
Keith Strickland
Co-Founder
keith@redpillnow.com
@keithstric
redpillnow.comwww
Atlanta, Georgia
keithstric.me
Challenge the way you think about Notes data
Change the way you approach your next project
Understand the potential of the prpl-pattern
The PRPL Pattern
What is the PRPL Pattern?
Push
Render
Pre-cache
Lazy-load
What is the PRPL Pattern?
The PRPL Pattern is just that,
a pattern which will result in
an awesome web app
experience
What is the PRPL Pattern
It’s really an idea around how
to use underlying technology
to produce a great web app
experience
PRPL - P is for Push
Push Critical Resources
PRPL – R is for Render
Render Initial Route
PRPL – P is also for Pre-cache
Pre-cache remaining
routes
PRPL – L is for Lazy-load
Lazy-load and create
remaining routes on
demand
PRPL Pattern in Use
We can skip some of the pattern
and implement what we need when
we need it
PRPL Pattern in Use
With the exception of
HTTP2 Push capabilities,
The PRPL Pattern works on
any platform using pretty
much any technology
Implementation
Implementing Push
• Because it requires HTTP2,
Push is not available on
Domino
Implementing Push
The server identifies the resources
required by each route and pushes
those resources to the browser
using HTTP2 push
Implementing Push
The server must be aware of
the application’s routes
(push_manifest.json)
Implementing Render Initial Route
Renders the app shell first,
then proceeds to render other
elements
Implementing Render Initial Route
Each page should have it’s
own URL
Implementing Pre-Cache
Decide up front before any
code is written what the
pages of your app will be.
Implementing Pre-Cache
polymer.json file defines your
bundles for each page to build
system
Implementing Pre-Cache
Your build process should
then make each of the page’s
resources into a bundle
Implementing Pre-Cache
Implementing Pre-Cache
sw-precache.json defines
bundles, images, stylesheets,
script files, etc to your service
worker to pre-cache
Implementing Pre-cache
The server and service
worker work together to
pre-cache the app’s
resources
Implementing Lazy-Load
Each page should load it’s
dependencies only once
when stamped into the DOM.
Preferably from the cache.
Implementing Lazy-Load
When the user switches
routes, the application
requests any required
resources that aren’t
cached
Putting it all together
A build system is needed
to split our resources into
bundles, concatenate and
minify files, and build the
service worker
Putting it all together
Service Worker should have
a Unique ID generated by
Build System
Outcomes
Minimal files are required to
load the application
Outcomes
Fast Loading due to pre-cache
and small bundles
Outcomes
We’re well on our way to a
Progressive Web Application
DEMO: Web Bundles
Progressive Web Apps
What is a Progressive Web App (PWA)?
Uses modern web
capabilities to deliver a
native app like experience
to users
Reliable
Loads instantly, even if offline
or with uncertain network
conditions
Fast
• Responds quickly to user
interactions
• Animations should be smooth
with NO JANK
Engaging
Should feel like a native app
and have the ability to be
added to the home screen
Secure
Your app should be served via
HTTPS with no mixed content
PWA: Other Considerations
Accessibility – There should
be some accessibility aspects
to your application. This is a
whole subject unto itself
(Attend Roy’s Session Tomorrow at 9:00 “Web
Accessibility and the Law”)
PWA: Other Considerations
• Best Practices
– Avoid WebSQL Databases
– Use HTTP2
– Avoid using deprecated APIs
– Avoid Render Blocking CSS
Why you should care?
Because you want to delight
your users!!
• Fast, I mean really fast
• Works offline
• Looks and behaves the same
no matter the device
Why you should care?
• Because you want to learn
and work with the latest
technologies
DEMO: Red Pill DIG
Technologies taking advantage of PWAs
Technologies required to produce a PWA
Exploring The Pieces
Modern Web Capabilities
Over the years APIs have
been built around all the different
capabilities of a
mobile device
Modern Web Capabilities
For a full list of Web APIs visit:
https://developer.mozilla.org/
en-US/docs/Web/API
Offline
• Adding a service worker
allows you to:
– Deliver content even if there is no
network
– Background Sync
– Push Notifications
Offline – Network Handlers
• Network Only
• Cache Only (not recommended
for dynamically generated
content)
• Network First
• Cache First
• Fastest
What Offline Isn’t
Offline is not a replacement
for old school replication
What Offline Isn’t
POST, PUT, PATCH, DELETE
There is no means of storing
these requests and then
sending to the server once
the network is available
Fast
• Small web bundles
• If possible pre-fetch the data then
render
Engaging
• Responsive
• Ability to add our app to the
home screen
Secure
All web apps should be
delivered via HTTPS. This
ensures a secure experience
for the user
How does this apply to Domino?
While people really don’t like
the notes client, the
application data is still useful
and stored in an awesome
document database
How does this apply to Domino?
Put old apps on the web,
available from any device at
any time (even offline)
How does this apply to Domino?
• Can surface data without any
backend/java experience using
DDS
– While this is functional to a point
not recommended
How does this apply to Domino?
The PRPL Pattern still
applies, it’s just a
recommended pattern
Demo – Domino App
Troubleshooting Tools
Chrome Developer Tools
Troubleshooting Tools
• Elements Panel
– See your app’s DOM
– Interact manually to see and
manipulate element properties
Troubleshooting Tools
• Console Panel
– Interact with your app, see logging
messages, etc.
Troubleshooting Tools
• Application Panel
– See service worker information
– See what’s in the cache, local and
session storage
– See the manifest.json settings
Troubleshooting Tools
• Lighthouse Extension or
Chrome Canary
– Test your app for PRPL Pattern
and PWA adherence
– Performance Test
– Accessibility Test
– Best Practices Test
Where we’re heading
• The lines between native apps and web apps are
blurring
• I think the future of mobile applications are with web
apps
– Most phone hardware functionality is available to
browser APIs and that list is growing
• JavaScript is quickly becoming a juggernaut and will
be one of the prime players in delivering applications
to any device.
• Where we’re currently seeing JavaScript being
used:
– Backend architecture that previously was the domain
of Java, Python, Ruby on Rails, etc.
– Complex AI hardware like Alexa, Google Home, etc.
– APIs also make Arduino hardware reachable via
JavaScript
– ES6 brings more OOP style programming to
JavaScript along with a lot of syntactical sugar
Where we’re heading
The lines between native apps
and web apps are blurring
Where we’re heading
I think the future of mobile
applications are with web
apps
Where we’re heading
JavaScript is quickly becoming a
juggernaut and will be one of the
prime players in delivering
applications to any device.
Where we’re seeing JavaScript
Where we’re currently seeing
JavaScript being used
Where we’re seeing JavaScript
Backend architecture that
previously was the domain of Java,
Python, Ruby on Rails, etc.
Where we’re seeing JavaScript
Complex AI hardware like Alexa,
Google Home, etc.
Where we’re heading
APIs also make Arduino hardware
reachable via JavaScript
Questions

Weitere ähnliche Inhalte

Was ist angesagt?

Rendering strategies: Measuring the devil's details in core web vitals - Jam...
Rendering strategies:  Measuring the devil's details in core web vitals - Jam...Rendering strategies:  Measuring the devil's details in core web vitals - Jam...
Rendering strategies: Measuring the devil's details in core web vitals - Jam...Jamie Indigo
 
Measuring Front-End Performance - What, When and How?
Measuring Front-End Performance - What, When and How?Measuring Front-End Performance - What, When and How?
Measuring Front-End Performance - What, When and How?Gareth Hughes
 
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo MeetupWordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo MeetuprtCamp
 
Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018Bastian Grimm
 
Better and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and EnjoymentBetter and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and EnjoymentChris Holland
 
Performance.now() fast but not furious
Performance.now()   fast but not furiousPerformance.now()   fast but not furious
Performance.now() fast but not furiousAnna Migas
 
Super speed around the globe - SearchLeeds 2018
Super speed around the globe - SearchLeeds 2018Super speed around the globe - SearchLeeds 2018
Super speed around the globe - SearchLeeds 2018Bastian Grimm
 
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?Andrew Mleczko
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Vadym Kazulkin
 
17 Web Performance Metrics You Should Care About
17 Web Performance Metrics You Should Care About17 Web Performance Metrics You Should Care About
17 Web Performance Metrics You Should Care AboutEvgeny Tsarkov
 
Why every startup built with Ruby on Rails has an upper hand over their compe...
Why every startup built with Ruby on Rails has an upper hand over their compe...Why every startup built with Ruby on Rails has an upper hand over their compe...
Why every startup built with Ruby on Rails has an upper hand over their compe...DreamToIPO
 
HPEC 2021 grblas
HPEC 2021 grblasHPEC 2021 grblas
HPEC 2021 grblasErikWelch2
 
Untangling spring week1
Untangling spring week1Untangling spring week1
Untangling spring week1Derek Jacoby
 
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...Katie Sylor-Miller
 
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...Gáspár Nagy
 

Was ist angesagt? (20)

Rendering strategies: Measuring the devil's details in core web vitals - Jam...
Rendering strategies:  Measuring the devil's details in core web vitals - Jam...Rendering strategies:  Measuring the devil's details in core web vitals - Jam...
Rendering strategies: Measuring the devil's details in core web vitals - Jam...
 
Measuring Front-End Performance - What, When and How?
Measuring Front-End Performance - What, When and How?Measuring Front-End Performance - What, When and How?
Measuring Front-End Performance - What, When and How?
 
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo MeetupWordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
WordPress on the Jamstack by rtCamper Muhammad Muhsin @ WordPress Colombo Meetup
 
Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018
 
Better and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and EnjoymentBetter and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and Enjoyment
 
Performance.now() fast but not furious
Performance.now()   fast but not furiousPerformance.now()   fast but not furious
Performance.now() fast but not furious
 
Super speed around the globe - SearchLeeds 2018
Super speed around the globe - SearchLeeds 2018Super speed around the globe - SearchLeeds 2018
Super speed around the globe - SearchLeeds 2018
 
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
 
Firebase Code Lab - 2015 GDG Buffalo DevFest
Firebase Code Lab - 2015 GDG Buffalo DevFestFirebase Code Lab - 2015 GDG Buffalo DevFest
Firebase Code Lab - 2015 GDG Buffalo DevFest
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...
 
Cloud Spin - building a photo booth with the Google Cloud Platform
Cloud Spin - building a photo booth with the Google Cloud PlatformCloud Spin - building a photo booth with the Google Cloud Platform
Cloud Spin - building a photo booth with the Google Cloud Platform
 
17 Web Performance Metrics You Should Care About
17 Web Performance Metrics You Should Care About17 Web Performance Metrics You Should Care About
17 Web Performance Metrics You Should Care About
 
Supercharge your app with Cloud Functions for Firebase
Supercharge your app with Cloud Functions for FirebaseSupercharge your app with Cloud Functions for Firebase
Supercharge your app with Cloud Functions for Firebase
 
Hacking Web Performance
Hacking Web Performance Hacking Web Performance
Hacking Web Performance
 
Where should I run my code? Serverless, Containers, Virtual Machines and more
Where should I run my code? Serverless, Containers, Virtual Machines and moreWhere should I run my code? Serverless, Containers, Virtual Machines and more
Where should I run my code? Serverless, Containers, Virtual Machines and more
 
Why every startup built with Ruby on Rails has an upper hand over their compe...
Why every startup built with Ruby on Rails has an upper hand over their compe...Why every startup built with Ruby on Rails has an upper hand over their compe...
Why every startup built with Ruby on Rails has an upper hand over their compe...
 
HPEC 2021 grblas
HPEC 2021 grblasHPEC 2021 grblas
HPEC 2021 grblas
 
Untangling spring week1
Untangling spring week1Untangling spring week1
Untangling spring week1
 
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
 
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
Behavior Driven Web UI Automation with Selenium and Cucumber/SpecFlow (BDDx L...
 

Ähnlich wie The PRPL Pattern

Supercharge Application Delivery to Satisfy Users
Supercharge Application Delivery to Satisfy UsersSupercharge Application Delivery to Satisfy Users
Supercharge Application Delivery to Satisfy UsersNGINX, Inc.
 
Cloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSCloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSaspyker
 
How to be Successful with Responsive Sites (Koombea & NGINX) - English
How to be Successful with Responsive Sites (Koombea & NGINX) - EnglishHow to be Successful with Responsive Sites (Koombea & NGINX) - English
How to be Successful with Responsive Sites (Koombea & NGINX) - EnglishKoombea
 
Basic Understanding of Progressive Web Apps
Basic Understanding of Progressive Web AppsBasic Understanding of Progressive Web Apps
Basic Understanding of Progressive Web AppsAnjaliTanpure1
 
Untangling fall2017 week1
Untangling fall2017 week1Untangling fall2017 week1
Untangling fall2017 week1Derek Jacoby
 
Exploring pwa for shopware
Exploring pwa for shopwareExploring pwa for shopware
Exploring pwa for shopwareSander Mangel
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQLKonstantin Gredeskoul
 
Is Serverless The New Swiss Cheese? - AWS Seattle User Group
Is Serverless The New Swiss Cheese? - AWS Seattle User GroupIs Serverless The New Swiss Cheese? - AWS Seattle User Group
Is Serverless The New Swiss Cheese? - AWS Seattle User GroupChase Douglas
 
Drupal 8 Lessons From the Field: Part 3 - The Drupal Backend
Drupal 8 Lessons From the Field: Part 3 - The Drupal BackendDrupal 8 Lessons From the Field: Part 3 - The Drupal Backend
Drupal 8 Lessons From the Field: Part 3 - The Drupal BackendAcquia
 
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Vadym Kazulkin
 
Dictionary Within the Cloud
Dictionary Within the CloudDictionary Within the Cloud
Dictionary Within the Cloudgueste4978b94
 
Meet.js Summit 2019 - PWA in practice
Meet.js Summit 2019 - PWA in practiceMeet.js Summit 2019 - PWA in practice
Meet.js Summit 2019 - PWA in practiceŁukasz Romanowicz
 
Let's Talk ProIV and Alexa
Let's Talk ProIV and AlexaLet's Talk ProIV and Alexa
Let's Talk ProIV and AlexaAndrew Turner
 
Progressive web apps
Progressive web appsProgressive web apps
Progressive web appsAkshay Sharma
 
Building for, perceiving and measuring performance for mobile web
Building for, perceiving and measuring performance for mobile webBuilding for, perceiving and measuring performance for mobile web
Building for, perceiving and measuring performance for mobile webRobin Glen
 
REST - What's It All About? (SAP TechEd 2012, CD110)
REST - What's It All About? (SAP TechEd 2012, CD110)REST - What's It All About? (SAP TechEd 2012, CD110)
REST - What's It All About? (SAP TechEd 2012, CD110)Sascha Wenninger
 
Simple Web Services with PHP
Simple Web Services with PHPSimple Web Services with PHP
Simple Web Services with PHPJohn Paul Ada
 

Ähnlich wie The PRPL Pattern (20)

Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
Supercharge Application Delivery to Satisfy Users
Supercharge Application Delivery to Satisfy UsersSupercharge Application Delivery to Satisfy Users
Supercharge Application Delivery to Satisfy Users
 
Progressive Web App
Progressive Web AppProgressive Web App
Progressive Web App
 
Modern Web Applications
Modern Web ApplicationsModern Web Applications
Modern Web Applications
 
Cloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSCloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSS
 
How to be Successful with Responsive Sites (Koombea & NGINX) - English
How to be Successful with Responsive Sites (Koombea & NGINX) - EnglishHow to be Successful with Responsive Sites (Koombea & NGINX) - English
How to be Successful with Responsive Sites (Koombea & NGINX) - English
 
Basic Understanding of Progressive Web Apps
Basic Understanding of Progressive Web AppsBasic Understanding of Progressive Web Apps
Basic Understanding of Progressive Web Apps
 
Untangling fall2017 week1
Untangling fall2017 week1Untangling fall2017 week1
Untangling fall2017 week1
 
Exploring pwa for shopware
Exploring pwa for shopwareExploring pwa for shopware
Exploring pwa for shopware
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL
 
Is Serverless The New Swiss Cheese? - AWS Seattle User Group
Is Serverless The New Swiss Cheese? - AWS Seattle User GroupIs Serverless The New Swiss Cheese? - AWS Seattle User Group
Is Serverless The New Swiss Cheese? - AWS Seattle User Group
 
Drupal 8 Lessons From the Field: Part 3 - The Drupal Backend
Drupal 8 Lessons From the Field: Part 3 - The Drupal BackendDrupal 8 Lessons From the Field: Part 3 - The Drupal Backend
Drupal 8 Lessons From the Field: Part 3 - The Drupal Backend
 
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
 
Dictionary Within the Cloud
Dictionary Within the CloudDictionary Within the Cloud
Dictionary Within the Cloud
 
Meet.js Summit 2019 - PWA in practice
Meet.js Summit 2019 - PWA in practiceMeet.js Summit 2019 - PWA in practice
Meet.js Summit 2019 - PWA in practice
 
Let's Talk ProIV and Alexa
Let's Talk ProIV and AlexaLet's Talk ProIV and Alexa
Let's Talk ProIV and Alexa
 
Progressive web apps
Progressive web appsProgressive web apps
Progressive web apps
 
Building for, perceiving and measuring performance for mobile web
Building for, perceiving and measuring performance for mobile webBuilding for, perceiving and measuring performance for mobile web
Building for, perceiving and measuring performance for mobile web
 
REST - What's It All About? (SAP TechEd 2012, CD110)
REST - What's It All About? (SAP TechEd 2012, CD110)REST - What's It All About? (SAP TechEd 2012, CD110)
REST - What's It All About? (SAP TechEd 2012, CD110)
 
Simple Web Services with PHP
Simple Web Services with PHPSimple Web Services with PHP
Simple Web Services with PHP
 

Mehr von Red Pill Now

M is for modernization
M is for modernizationM is for modernization
M is for modernizationRed Pill Now
 
Take 5 Modernization Workshop
Take 5 Modernization WorkshopTake 5 Modernization Workshop
Take 5 Modernization WorkshopRed Pill Now
 
Reusability is the goal
Reusability is the goalReusability is the goal
Reusability is the goalRed Pill Now
 
The internet of (Notes) Things
The internet of (Notes) ThingsThe internet of (Notes) Things
The internet of (Notes) ThingsRed Pill Now
 
Countdown to Domino 2025
Countdown to Domino 2025Countdown to Domino 2025
Countdown to Domino 2025Red Pill Now
 
Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...
Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...
Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...Red Pill Now
 
Design for the Visually Impaired
Design for the Visually ImpairedDesign for the Visually Impaired
Design for the Visually ImpairedRed Pill Now
 
Migration Verus Modernization
Migration Verus ModernizationMigration Verus Modernization
Migration Verus ModernizationRed Pill Now
 
I Smell a RAT: Rapid Application Testing
I Smell a RAT: Rapid Application TestingI Smell a RAT: Rapid Application Testing
I Smell a RAT: Rapid Application TestingRed Pill Now
 
IBM XPages: The Next Step in Your Life As a Notes Developer
IBM XPages: The Next Step in Your Life As a Notes DeveloperIBM XPages: The Next Step in Your Life As a Notes Developer
IBM XPages: The Next Step in Your Life As a Notes DeveloperRed Pill Now
 
FIVE Reasons Not To Use Red Pill Now
FIVE Reasons Not To Use Red Pill NowFIVE Reasons Not To Use Red Pill Now
FIVE Reasons Not To Use Red Pill NowRed Pill Now
 
Influencing Behavior Through Color and Page Design
Influencing Behavior Through Color and Page DesignInfluencing Behavior Through Color and Page Design
Influencing Behavior Through Color and Page DesignRed Pill Now
 
Big Data With Graphs
Big  Data With GraphsBig  Data With Graphs
Big Data With GraphsRed Pill Now
 
The Internet of (Notes) Things
The Internet of (Notes) ThingsThe Internet of (Notes) Things
The Internet of (Notes) ThingsRed Pill Now
 
Big Data With Graphs
Big Data With GraphsBig Data With Graphs
Big Data With GraphsRed Pill Now
 
The Lotus Position : 3 Degrees Of Freedom
The Lotus Position : 3 Degrees Of FreedomThe Lotus Position : 3 Degrees Of Freedom
The Lotus Position : 3 Degrees Of FreedomRed Pill Now
 
Getting your hands on graphs
Getting your hands on graphsGetting your hands on graphs
Getting your hands on graphsRed Pill Now
 

Mehr von Red Pill Now (20)

M is for modernization
M is for modernizationM is for modernization
M is for modernization
 
Take 5 Modernization Workshop
Take 5 Modernization WorkshopTake 5 Modernization Workshop
Take 5 Modernization Workshop
 
Reusability is the goal
Reusability is the goalReusability is the goal
Reusability is the goal
 
The internet of (Notes) Things
The internet of (Notes) ThingsThe internet of (Notes) Things
The internet of (Notes) Things
 
Countdown to Domino 2025
Countdown to Domino 2025Countdown to Domino 2025
Countdown to Domino 2025
 
Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...
Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...
Red Pill Now - Taking the Guesswork Out of Selecting a Solution for Modernizi...
 
Design for the Visually Impaired
Design for the Visually ImpairedDesign for the Visually Impaired
Design for the Visually Impaired
 
Migration Verus Modernization
Migration Verus ModernizationMigration Verus Modernization
Migration Verus Modernization
 
I Smell a RAT: Rapid Application Testing
I Smell a RAT: Rapid Application TestingI Smell a RAT: Rapid Application Testing
I Smell a RAT: Rapid Application Testing
 
IBM XPages: The Next Step in Your Life As a Notes Developer
IBM XPages: The Next Step in Your Life As a Notes DeveloperIBM XPages: The Next Step in Your Life As a Notes Developer
IBM XPages: The Next Step in Your Life As a Notes Developer
 
FIVE Reasons Not To Use Red Pill Now
FIVE Reasons Not To Use Red Pill NowFIVE Reasons Not To Use Red Pill Now
FIVE Reasons Not To Use Red Pill Now
 
Influencing Behavior Through Color and Page Design
Influencing Behavior Through Color and Page DesignInfluencing Behavior Through Color and Page Design
Influencing Behavior Through Color and Page Design
 
Big Data With Graphs
Big  Data With GraphsBig  Data With Graphs
Big Data With Graphs
 
The Internet of (Notes) Things
The Internet of (Notes) ThingsThe Internet of (Notes) Things
The Internet of (Notes) Things
 
Digging for Gold
Digging for GoldDigging for Gold
Digging for Gold
 
Big Data With Graphs
Big Data With GraphsBig Data With Graphs
Big Data With Graphs
 
The Lotus Position : 3 Degrees Of Freedom
The Lotus Position : 3 Degrees Of FreedomThe Lotus Position : 3 Degrees Of Freedom
The Lotus Position : 3 Degrees Of Freedom
 
Rethinking Notes
Rethinking NotesRethinking Notes
Rethinking Notes
 
Getting your hands on graphs
Getting your hands on graphsGetting your hands on graphs
Getting your hands on graphs
 
Beyond XPages
Beyond XPagesBeyond XPages
Beyond XPages
 

Kürzlich hochgeladen

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
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
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
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
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 

Kürzlich hochgeladen (20)

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
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
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

The PRPL Pattern

Hinweis der Redaktion

  1. Domino does not support HTTP2 Push. Proxy requests handled by: NGINX Apache Apache Tomcat node-http2
  2. When a route is visited, the server will push dependencies to the browser Requires an application server NodeJs Apache Tomcat Liberty etc
  3. The app shell is just the layout (i.e. Header, Footer, Sidebar, Content Area, etc) Unfortunately since most of your site is defined here, dependency management is critical
  4. For example for a typical domino app. Each view will be a page and each document type will be a page
  5. Each bundle should only include the minimum dependencies so that the element can be placed in the DOM as quickly as possible. All other dependences should be requested on demand once the element is registered with the browser and stamped into the DOM
  6. The service worker will then pre-cache these files for quick retrieval if they aren’t already cached or the file’s UNID has changed
  7. When the page is registered with the browser and stamped into the DOM it should request it’s dependencies or those dependencies should be pushed to the browser via HTTP2 Push.
  8. (1 for each route essentially and any external dependencies)
  9. GPS Access for location services Camera Access Gyroscope Access (Version 60 of Chrome) Bluetooth
  10. This is where our next dragon lives, offline access can be easy to implement, however picking the correct paradigm is sometimes tricky and isn’t realized until real world use or with extensive testing
  11. However, if web components are used, this can be built into your components
  12. Modern JS frameworks and libraries, Web Components Service Workers Different from Notes/Domino (But that doesn’t mean you can’t surface Domino Data from an NSF)
  13. Web components / Polymer AngularJS, Ember, React, Backbone/Marionette Any modern frontend framework
  14. Frontend framework of some kind Gulp or some other build system Web Bundles Service Worker Generation Automated Testing Service Worker Offline REST Service of some sort (doesn’t really matter here, any REST service capable of servicing your app’s needs will work) Data layer
  15. GPS Camera Gyroscope Bluetooth etc The Web Animation API is also a great API for delivering modern performant animations. However CSS Transform is also a good tool but a bit more tedious
  16. Uses the Cache API Is unaware of the Frontend UI Think of it as a proxy server Intercepts all requests being made from the browser to the network. If the request url is stored in the cache, deliver that. If it’s not in the cache, get from the network, update the cache and deliver the network response.
  17. Fastest – Make 2 requests: 1 to the cache and 1 to the network. Whichever comes back first wins and the cache is updated from the network request. (Recommended strategy, however does have some dragons to slay. The most complex strategy due to testing effort)
  18. Idea: Since a Service Worker continues to run even after the app is closed (to service push notifications), it may be possible to cache the requests and monitor for the network to return and then submit the requests. However, consideration must be taken to ensure workflows, notifications, etc. would still continue to work. Would require you to custom roll your own service worker which is not entirely that complicated
  19. we no longer deliver HUGE payloads that contain the entire application in a single file. We now have smaller payloads made up of only the things we need for each route/page. Everything else is fetched when needed. Deliver from the cache Pre-Cache the routes and App Shell Lazy Load any other dependencies when they’re needed
  20. Modern web applications should adapt to what device they’re being displayed on and shouldn’t require a different version for each type of device (i.e. Android, iOS, Browser, etc) We should be able to add our application to the home screen of our phone or tablet This gets rid of the address bar and produces a cleaner more engaging experience It should be well designed and easy to use. Icons placed too close together makes things harder to touch and be confident you are touching the right thing, so be aware of your touch targets Depending on your design criteria, colors should be bold and images should be high-def. But should be optimized for the web. Functionality should be grouped in an easy to understand, intuitive manner, not scattered all over the screen (Web Components address this very nicely) Animations should be a confirmation of what the user did and should be smooth with no jank
  21. A requirement for http2 push, service worker and offline access
  22. No User API No way to tie in backend workflow, sending of emails/notifications Learn about and use the OpenNTF Domino API (ODA)
  23. No User API No way to tie in backend workflow, sending of emails/notifications Learn about and use the OpenNTF Domino API (ODA)
  24. Most phone hardware functionality is available to browser APIs and that list is growing