SlideShare a Scribd company logo
1 of 124
Download to read offline
Instant

Loading
Add to 

Home Screen
Push

Noti8cations
Fast Secure Responsive
Responsive
Secure
Secure
Trust
Data integrity
User privacy
HTTP
attackerssensitive
data
HTTP
Best deal!
Only today.
inject advertisement
Instant loading
P R P L
Push critical resources
for the initial URL route
Render initial route
Pre-cache remaining
routes
Lazy-load and create
remaining routes on
demand
App shell Content
<app-drawer-layout>

<app-drawer>

<app-toolbar>Menu</app-toolbar>

<iron-selector selected="[[page]]">

<a name="view1" href="/view1">View One</a>

...

</iron-selector>

</app-drawer>



<app-header-layout>

...

</app-header-layout>

</app-drawer-layout>
<iron-pages selected="[[page]]" attr-for-selected="name">

<my-view1 name="view1"></my-view1>

<my-view2 name="view2"></my-view2>

<my-view3 name="view3"></my-view3>

<my-view404 name="view404"></my-view404>

</iron-pages>
class MyApp extends Polymer.Element {
static get is() {
return ‘my-app';
}
static get properties() {
return {
page: {
type: String,
observer: '_pageChanged',
},
};
}
_pageChanged(page) {
const resolvedPageUrl = this.resolveUrl('my-' + page + '.html');
this.importHref(resolvedPageUrl, null, this._showPage404, true);
}
_showPage404() {
this.page = 'view404';
}
}
HTTP/2
Server Push
h>ps://shop.polymer-project.org
Demo time
Add to Home Screen
<html lang="en">

<head>

<meta charset="utf-8">

<title>GDG DevFest Ukraine 2017</title>

<link rel="manifest" href="manifest.json">
...
{

"name": “GDG DevFest Ukraine 2016",

"short_name": “GDG DevFest",

"icons": [{

"src": "images/icons/splash-icon-128.png",

"sizes": "128x128",

"type": "image/png"

},{

"src": "images/icons/splash-icon-192.png",

"sizes": "192x192",

"type": "image/png"

},{

"src": "images/icons/splash-icon-384.png",

"sizes": "384x384",

"type": "image/png"

}],

"start_url": "/",

"display": "standalone",

"background_color": "#607d8b",

"theme_color": "#607d8b"

}
{

"name": “GDG DevFest Ukraine 2016",

"short_name": “GDG DevFest",

"icons": [{

"src": "images/icons/splash-icon-128.png",

"sizes": "128x128",

"type": "image/png"

},{

"src": "images/icons/splash-icon-192.png",

"sizes": "192x192",

"type": "image/png"

},{

"src": "images/icons/splash-icon-384.png",

"sizes": "384x384",

"type": "image/png"

}],

"start_url": "/",

"display": "standalone",

"background_color": "#607d8b",

"theme_color": "#607d8b"

}
{

"name": “GDG DevFest Ukraine 2016",

"short_name": “GDG DevFest",

"icons": [{

"src": "images/icons/splash-icon-128.png",

"sizes": "128x128",

"type": "image/png"

},{

"src": "images/icons/splash-icon-192.png",

"sizes": "192x192",

"type": "image/png"

},{

"src": "images/icons/splash-icon-384.png",

"sizes": "384x384",

"type": "image/png"

}],

"start_url": "/",

"display": "standalone",

"background_color": "#607d8b",

"theme_color": "#607d8b"

}
{

"name": “GDG DevFest Ukraine 2016",

"short_name": “GDG DevFest",

"icons": [{

"src": "images/icons/splash-icon-128.png",

"sizes": "128x128",

"type": "image/png"

},{

"src": "images/icons/splash-icon-192.png",

"sizes": "192x192",

"type": "image/png"

},{

"src": "images/icons/splash-icon-384.png",

"sizes": "384x384",

"type": "image/png"

}],

"start_url": "/",

"display": "standalone",

"background_color": "#607d8b",

"theme_color": "#607d8b"

}
{

"name": “GDG DevFest Ukraine 2016",

"short_name": “GDG DevFest",

"icons": [{

"src": "images/icons/splash-icon-128.png",

"sizes": "128x128",

"type": "image/png"

},{

"src": "images/icons/splash-icon-192.png",

"sizes": "192x192",

"type": "image/png"

},{

"src": "images/icons/splash-icon-384.png",

"sizes": "384x384",

"type": "image/png"

}],

"start_url": "/",

"display": "standalone",

"background_color": "#607d8b",

"theme_color": "#607d8b"

}
{

"name": “GDG DevFest Ukraine 2016",

"short_name": “GDG DevFest",

"icons": [{

"src": "images/icons/splash-icon-128.png",

"sizes": "128x128",

"type": "image/png"

},{

"src": "images/icons/splash-icon-192.png",

"sizes": "192x192",

"type": "image/png"

},{

"src": "images/icons/splash-icon-384.png",

"sizes": "384x384",

"type": "image/png"

}],

"start_url": "/",

"display": "browser",

"background_color": "#607d8b",

"theme_color": "#607d8b"

}
{

"name": “GDG DevFest Ukraine 2016",

"short_name": “GDG DevFest",

"icons": [{

"src": "images/icons/splash-icon-128.png",

"sizes": "128x128",

"type": "image/png"

},{

"src": "images/icons/splash-icon-192.png",

"sizes": "192x192",

"type": "image/png"

},{

"src": "images/icons/splash-icon-384.png",

"sizes": "384x384",

"type": "image/png"

}],

"start_url": "/",

"display": "standalone",

"background_color": "#607d8b",

"theme_color": "#607d8b"

}
{

"name": “GDG DevFest Ukraine 2016",

"short_name": “GDG DevFest",

"icons": [{

"src": "images/icons/splash-icon-128.png",

"sizes": "128x128",

"type": "image/png"

},{

"src": "images/icons/splash-icon-192.png",

"sizes": "192x192",

"type": "image/png"

},{

"src": "images/icons/splash-icon-384.png",

"sizes": "384x384",

"type": "image/png"

}],

"start_url": "/",

"display": "browser",

"background_color": "#607d8b",

"theme_color": "#607d8b"

}
{

"name": “GDG DevFest Ukraine 2016",

"short_name": “GDG DevFest",

"icons": [{

"src": "images/icons/splash-icon-128.png",

"sizes": "128x128",

"type": "image/png"

},{

"src": "images/icons/splash-icon-192.png",

"sizes": "192x192",

"type": "image/png"

},{

"src": "images/icons/splash-icon-384.png",

"sizes": "384x384",

"type": "image/png"

}],

"start_url": "/",

"display": "browser",

"background_color": "#607d8b",

"theme_color": "#607d8b"

}
h>ps://devfest.gdg.org.ua
Demo time
56.83%
Source (Mar 2017): http://caniuse.com/#feat=web-app-manifest
IN DEV IN DEV
OOine access
navigator.serviceWorker.register('/service-worker.js')
.then(reg => {
console.log('Service Worker Registered', reg);
})
.catch(err => {
console.log('Error registering Service Worker', err);
});
Register Service Worker
const cacheName = 'app-shell-cache-v1';
const filesToCache = ['/', '/index.html', ...];
self.addEventListener('install', event => {
event.waitUntil(caches.open(cacheName)
.then(cache => cache.addAll(filesToCache))
.then(() => self.skipWaiting())
);
});
Cache Files
const cacheName = 'app-shell-cache-v1';
const filesToCache = ['/', '/index.html', ...];
self.addEventListener('install', event => {
event.waitUntil(caches.open(cacheName)
.then(cache => cache.addAll(filesToCache))
.then(() => self.skipWaiting())
);
});
Cache Files
self.addEventListener('activate', event => {
event.waitUntil(caches.keys()
.then(keyList => {
return Promise.all(keyList.map(key => {
if (key !== cacheName) {
return caches.delete(key);
}
}));
}));
return self.clients.claim();
});
Remove Outdated Resources
self.addEventListener('activate', event => {
event.waitUntil(caches.keys()
.then(keyList => {
return Promise.all(keyList.map(key => {
if (key !== cacheName) {
return caches.delete(key);
}
}));
}));
return self.clients.claim();
});
Remove Outdated Resources
self.addEventListener('fetch', event => {
event.respondWith(caches.match(event.request)
.then(response => {
return response || fetch(event.request);
}));
});
Return Resources from Cache
self.addEventListener('fetch', event => {
event.respondWith(caches.match(event.request)
.then(response => {
return response || fetch(event.request);
}));
});
Return Resources from Cache
Amsterdam, NL - Go Daddy - Chrome - 3G
First View (3.7s)
Repeat View (0.6s)
h>ps://devfest.gdg.org.ua
Demo time
Browser quota limits
6% of free disk
space per
origin
10% of free
disk space
(shared
across
eTLD+1)
at least 10%
of free disk
space
8GB: 10MB
32GB: 50MB
128GB: 250MB
>128GB: 500MB
62.8%
Source (Mar 2017): http://caniuse.com/#feat=serviceworkers
CONS. IN DEV
Push Noti8cations
Timely Precise Relevant
Check if User
is Subscribed
Ask User
To Subscribe
User
Subscribes
Send
Subscription
Save
Subscription
Browser Server
Subscribing Users
navigator.serviceWorker.register('/service-worker.js')
.then(reg => {
reg.pushManager.getSubscription()
.then(sub => {
console.log('Subscription Info', sub);
});
});
Check for Subscriptions
navigator.serviceWorker.register('/service-worker.js')
.then(reg => {
reg.pushManager.getSubscription()
.then(sub => {
console.log('Subscription Info', sub);
});
});
Check for Subscription
const opts = { userVisibleOnly: true, applicationServerKey: pubKey };
navigator.serviceWorker.getRegistration()
.then(reg => {
reg.pushManager.subscribe(opts)
.then(sub => {
console.log('Update Server with sub obj', sub);
})
.catch(error => {
console.log('Unable to subscribe user', error);
});
});
Subscribe the User
JSONi8ed Subscription Object
{

"endpoint": "https://example.com/push/ddj4Sk3abw:A49b...",

"keys": {

"auth": "qLAYRzG9TnUwbprns6H2Ew==",

"p256dh": "BILXd-c1-zuEQYXH_tc3qmLcqZclw7-Xs0Nlu/sG..."

}

}
navigator.serviceWorker.getRegistration()
.then(reg => {
reg.pushManager.getSubscription()
.then(sub => {
if (sub) {
sub.unsubscribe();
console.log('Update our server to remove subscription');
}
});
})
.catch(error => {
console.log('Error while trying to unsubscribe', error);
});
Unsubscribe the User
Generate
Message
Send to
End Point
Send to
Browser
Received
by Browser
Server BrowserEnd Point
Sending Messages
Push Arrives SW Starts Handle
Message
Show
Notification
Browser
Receiving Messages
self.addEventListener('push', event => {
let data;
if (event.data) {
data = event.data.json();
} else {
// fetch data from server
}
self.registration.showNotification(data.title, {
body: data.body, icon: data.icon, tag: data.tag
});
});
Listen For Messages
self.addEventListener('push', event => {
let data;
if (event.data) {
data = event.data.json();
} else {
// fetch data from server
}
self.registration.showNotification(data.title, {
body: data.body, icon: data.icon, tag: data.tag
});
});
Listen For Messages
{

"body": "Did you make a $1,000,000 purchase at Dr. Evil...",

"icon": "images/card.png",

"vibrate": [200, 100, 200, 100, 200, 100, 400],

"tag": "request",

"actions": [

{ "action": "yes", "title": "Yes", "icon": "images/yes.png" },

{ "action": "no", "title": "No", "icon": "images/no.png" }

]

}
self.registration.showNotification(data.title, {

body: data.body,

icon: data.icons,

tag: data.tag,

actions: [

{action: 'like', title: 'Like', icon: ic_li},

{action: 'reshare', title: 'Reshare', icon: ic_re}

]

});
Add Action Bu>ons
Respond To The User
self.addEventListener('notificationclick', event => {

if (event.action === 'like') {

event.waitUntil(fetch('/like-from-notification'));

} else if (event.action === 'reshare') {

event.waitUntil(fetch('/reshare-from-notification'));

} else {

clients.openWindow(event.srcElement.location.origin);

}

});
h>ps://tests.peter.sh/noti8cation-generator
Demo time
62.33%
Source (Mar 2017): http://caniuse.com/#feat=push-api
IN DEV
Responsive
— 100%
Secure
— 100%
Fast
— 100%
Instant Loading
— 62.8%
Push Noti8cations
— 62.33%
Add to Home Screen
— 56.83%
Lighthouse
Project page: https://github.com/GoogleChrome/lighthouse
Project page: https://github.com/GoogleChrome/lighthouse
Project page: https://github.com/GoogleChrome/lighthouse
Maximize reach
Source (June 2015): https://goo.gl/nArG5B
2.5x
Monthly unique visitors on mobile
8.9
3.3
BROWSER APP
Fewer clicks,
more patience
A seamless
inter-app
experience
Is this the end of 

Native apps?
BROWSERBROWSERBROWSERBROWSERBROWSER
14%
10% 9% 8%
20%
158 162
220
251
300
Q1 2013 Q1 2014 Q2 2015 Q4 2015 Q4 2016
Source (Feb 2017): http://flurrymobile.tumblr.com
US Daily Mobile Time Spent
Progressive web apps have limited
capabilities when it comes to offering
integration with a smartphone or
tablet’s hardware features
Auth
navigator.credentials.get()

navigator.credentials.store()

navigator.credentials.requireUserMediation()
Credential Management API
const cred = new FederatedCredential({

id: id, 

name: name, 

provider: 'https://accounts.google.com', 

iconURL: iconUrl 

});


navigator.credentials.store(cred);
Credential Management API
navigator.credentials.get({

password: true,

federated: {

providers: [

'https://accounts.google.com',

'https://www.facebook.com'

]

},

unmediated: true // `unmediated: true` lets the user automatically sign in

}).then(cred => {

if (cred) // auto sign-in possible

else // auto sign-in not possible

});
Credential Management API
navigator.credentials.get().then(cred => {

if (cred.type === 'federated'

&& cred.provider === 'https://accounts.google.com') {

const auth2 = gapi.auth2.getAuthInstance();



return auth2.signIn({

login_hint: cred.id || ''

}).then(profile => {

...

});

}

});
Credential Management API
Enable users to sign in with just one
tap
Remember the federated account
the user has used to sign in with
Sign users back in when a session
expires
h>ps://credential-management-sample.appspot.com
Demo time
50.08%
Source (Mar 2017): http://caniuse.com/#feat=credential-management
CONS.CONS.
Payments
const request = new PaymentRequest(
methodData, // required payment method data
details, // required information about transaction
options // optional parameter for things like shipping, etc.
);
Payment Request API
const methodData = [{
supportedMethods: [ "basic-card" ],
data: {
supportedNetworks: [ "visa", "mastercard" ]
}
}];
Payment Request API
const details = {
displayItems: [{
label: "Original donation amount",
amount: { currency: "USD", value : "65.00" }, // US$65.00
},
{
label: "Friends and family discount",
amount: { currency: "USD", value : "-10.00" }, // -US$10.00
pending: true // The price is not determined yet
}],
total: {
label: "Total",
amount: { currency: "USD", value : "55.00" }, // US$55.00
}
};
Payment Request API
const options = {
requestShipping: true,
shippingType: "shipping" // "shipping"(default), "delivery" or "pickup"
};
Payment Request API
const request = new PaymentRequest(methodData, details, options);
request.show()
.then(paymentResponse => {
// Process paymentResponse here
paymentResponse.complete("success");
})
.catch(err => {
console.error("Uh oh, something bad happened", err.message);
});
Payment Request API
Standardize the payment
communication flow as much as
possible
Support different secure payment
methods
Integrates into existing checkout
flow
h>ps://emerald-eon.appspot.com
Demo time
25.64%
Source (Mar 2017): http://caniuse.com/#feat=payment-request
FLAGFLAG
Bluetooth
navigator.bluetooth.requestDevice({
acceptAllDevices: true, optionalServices: ['generic_access']
})
.then(device => device.gatt.connect())
.then(server => {
...
})
.catch(error => {
console.log(error);
});
Web Bluetooth API
h>ps://beaufodfrancois.github.io/sandbox/web-bluetooth/eddystone-url-con8g
Demo time
43.32%
Source (Mar 2017): http://caniuse.com/#feat=web-bluetooth
VR
navigator.getVRDisplays().then(displays => {
displays = displays.filter(display => display.capabilities.canPresent);
if (displays.length === 0) {
console.warn('No devices available able to present.');
return;
}
this._vr.display = displays[0];
this._vr.display.depthNear = DemoVR.CAMERA_SETTINGS.near;
this._vr.display.depthFar = DemoVR.CAMERA_SETTINGS.far;
});
WebVR API
h>ps://ad-socks.herokuapp.com/demo.html
Demo time
0%
Source (Mar 2017): http://caniuse.com/#feat=webvr
FLAG FLAG
Share
navigator.share({

title: 'Web Share API Demo',

text: 'Hello, United Dev Conf. #pwa #webShareAPI #webrocks',

url: 'https://web-today.firebaseapp.com/share'

})

.then(() => console.log('Successful share'))

.catch(error => console.log('Error sharing:', error));
Web Share API
h>ps://justmarkup.com/log/2016/10/using-the-web-share-api
Demo time
0%
Source (Mar 2017): https://paul.kinlan.me/navigator.share
FLAG
Credential Management API
— 50.08%
Payment Request API
— 25.64%
Web Bluetooth API
— 43.32%
WebVR API
— 0%
Web Share API
— 0%
Reduce
development
time
Simple updates
Unified
customer
experience
Easier access
and increased
engagement
104% for new users across all browsers
82% increase in iOS conversion rate
2X more pages visited per session
74% increase in time spent per session
across all browsers
Live: https://aliexpress.com Source: https://developers.google.com/web/showcase/2016/aliexpress
76% higher conversions across browsers
14% more monthly active users on iOS,
30% on Android
4X higher interaction rate from Add to
Homescreen
Live: http://www.alibaba.com Source: https://developers.google.com/web/showcase/2016/alibaba
38% more conversions
40% lower bounce rate
10% longer average session
30% faster page load
Live: https://housing.com Source: https://developers.google.com/web/showcase/2016/housing
Source: https://developers.google.com/web/progressive-web-apps/checklist
Site is served over HTTPS
Pages are responsive on tablets &
mobile devices
The start URL (at least) loads while
offline
Metadata provided for Add to Home
screen
First load fast even on 3G
Site works cross-browser
Page transitions don't feel like they
block on the network
Each page has a URL
Progressive Web App Checklist
https://developers.google.com/web/progressive-web-apps
https://www.youtube.com/user/ChromeDevelopers
https://whatwebcando.today
Learn More
Thank you
Oleh Zasadnyy

@ozasadnyy

More Related Content

What's hot

A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019Matt Raible
 
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019Matt Raible
 
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011Shreedhar Ganapathy
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web AppsFITC
 
Spark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RSSpark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RSArun Gupta
 
High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)Nicholas Zakas
 
Building an HTML5 Video Player
Building an HTML5 Video PlayerBuilding an HTML5 Video Player
Building an HTML5 Video PlayerJim Jeffers
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5dynamis
 
webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)Hendrik Ebbers
 
High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010Nicholas Zakas
 
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!David Gibbons
 
Our application got popular and now it breaks
Our application got popular and now it breaksOur application got popular and now it breaks
Our application got popular and now it breaksColdFusionConference
 
Learning from the Best jQuery Plugins
Learning from the Best jQuery PluginsLearning from the Best jQuery Plugins
Learning from the Best jQuery PluginsMarc Grabanski
 
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Matt Raible
 
The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)David Gibbons
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitAriya Hidayat
 
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...Matt Raible
 
Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)Nicholas Zakas
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13Fred Sauer
 

What's hot (20)

A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
 
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019
 
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
Spark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RSSpark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RS
 
High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)
 
Building an HTML5 Video Player
Building an HTML5 Video PlayerBuilding an HTML5 Video Player
Building an HTML5 Video Player
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5
 
webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)
 
High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010
 
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!
 
Web Components
Web ComponentsWeb Components
Web Components
 
Our application got popular and now it breaks
Our application got popular and now it breaksOur application got popular and now it breaks
Our application got popular and now it breaks
 
Learning from the Best jQuery Plugins
Learning from the Best jQuery PluginsLearning from the Best jQuery Plugins
Learning from the Best jQuery Plugins
 
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021
 
The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
 
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
 
Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
 

Similar to Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become thinner"

[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWD[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWDChristopher Schmitt
 
[rwdsummit2012] Adaptive Images in Responsive Web Design
[rwdsummit2012] Adaptive Images in Responsive Web Design[rwdsummit2012] Adaptive Images in Responsive Web Design
[rwdsummit2012] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
[html5tx] Adaptive Images in Responsive Web Design
[html5tx] Adaptive Images in Responsive Web Design[html5tx] Adaptive Images in Responsive Web Design
[html5tx] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
How We Build NG-MY Websites: Performance, SEO, CI, CD (Thai version)
How We Build NG-MY Websites: Performance, SEO, CI, CD (Thai version)How We Build NG-MY Websites: Performance, SEO, CI, CD (Thai version)
How We Build NG-MY Websites: Performance, SEO, CI, CD (Thai version)Seven Peaks Speaks
 
How We Build NG-MY Websites: Performance, SEO, CI, CD
How We Build NG-MY Websites: Performance, SEO, CI, CDHow We Build NG-MY Websites: Performance, SEO, CI, CD
How We Build NG-MY Websites: Performance, SEO, CI, CDSeven Peaks Speaks
 
Pinkoi Mobile Web
Pinkoi Mobile WebPinkoi Mobile Web
Pinkoi Mobile Webmikeleeme
 
[cssdevconf] Adaptive Images in Responsive Web Design
[cssdevconf] Adaptive Images in Responsive Web Design[cssdevconf] Adaptive Images in Responsive Web Design
[cssdevconf] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web Design[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
Responsive Web in Brief
Responsive Web in BriefResponsive Web in Brief
Responsive Web in BriefEPAM
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and ImprovedTimothy Fisher
 
[rwdsummit] Adaptive Images in Responsive Web Design
[rwdsummit] Adaptive Images in Responsive Web Design[rwdsummit] Adaptive Images in Responsive Web Design
[rwdsummit] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
Honeynet Project Workshop 2014 - Thug: a low-interaction honeyclient
Honeynet Project Workshop 2014 - Thug: a low-interaction honeyclientHoneynet Project Workshop 2014 - Thug: a low-interaction honeyclient
Honeynet Project Workshop 2014 - Thug: a low-interaction honeyclientAngelo Dell'Aera
 
Implementation of GUI Framework part3
Implementation of GUI Framework part3Implementation of GUI Framework part3
Implementation of GUI Framework part3masahiroookubo
 
[HEWEBAR 2012] Adaptive Images in Responsive Web Design
[HEWEBAR 2012] Adaptive Images in Responsive Web Design[HEWEBAR 2012] Adaptive Images in Responsive Web Design
[HEWEBAR 2012] Adaptive Images in Responsive Web DesignChristopher Schmitt
 

Similar to Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become thinner" (20)

[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design
 
[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWD[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWD
 
[rwdsummit2012] Adaptive Images in Responsive Web Design
[rwdsummit2012] Adaptive Images in Responsive Web Design[rwdsummit2012] Adaptive Images in Responsive Web Design
[rwdsummit2012] Adaptive Images in Responsive Web Design
 
Introduction to Html5
Introduction to Html5Introduction to Html5
Introduction to Html5
 
[html5tx] Adaptive Images in Responsive Web Design
[html5tx] Adaptive Images in Responsive Web Design[html5tx] Adaptive Images in Responsive Web Design
[html5tx] Adaptive Images in Responsive Web Design
 
How We Build NG-MY Websites: Performance, SEO, CI, CD (Thai version)
How We Build NG-MY Websites: Performance, SEO, CI, CD (Thai version)How We Build NG-MY Websites: Performance, SEO, CI, CD (Thai version)
How We Build NG-MY Websites: Performance, SEO, CI, CD (Thai version)
 
How We Build NG-MY Websites: Performance, SEO, CI, CD
How We Build NG-MY Websites: Performance, SEO, CI, CDHow We Build NG-MY Websites: Performance, SEO, CI, CD
How We Build NG-MY Websites: Performance, SEO, CI, CD
 
Pinkoi Mobile Web
Pinkoi Mobile WebPinkoi Mobile Web
Pinkoi Mobile Web
 
[cssdevconf] Adaptive Images in Responsive Web Design
[cssdevconf] Adaptive Images in Responsive Web Design[cssdevconf] Adaptive Images in Responsive Web Design
[cssdevconf] Adaptive Images in Responsive Web Design
 
[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web Design[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web Design
 
Responsive Web in Brief
Responsive Web in BriefResponsive Web in Brief
Responsive Web in Brief
 
Progressive What Apps?
Progressive What Apps?Progressive What Apps?
Progressive What Apps?
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and Improved
 
[rwdsummit] Adaptive Images in Responsive Web Design
[rwdsummit] Adaptive Images in Responsive Web Design[rwdsummit] Adaptive Images in Responsive Web Design
[rwdsummit] Adaptive Images in Responsive Web Design
 
Honeynet Project Workshop 2014 - Thug: a low-interaction honeyclient
Honeynet Project Workshop 2014 - Thug: a low-interaction honeyclientHoneynet Project Workshop 2014 - Thug: a low-interaction honeyclient
Honeynet Project Workshop 2014 - Thug: a low-interaction honeyclient
 
AspNetWhitePaper
AspNetWhitePaperAspNetWhitePaper
AspNetWhitePaper
 
AspNetWhitePaper
AspNetWhitePaperAspNetWhitePaper
AspNetWhitePaper
 
Implementation of GUI Framework part3
Implementation of GUI Framework part3Implementation of GUI Framework part3
Implementation of GUI Framework part3
 
[HEWEBAR 2012] Adaptive Images in Responsive Web Design
[HEWEBAR 2012] Adaptive Images in Responsive Web Design[HEWEBAR 2012] Adaptive Images in Responsive Web Design
[HEWEBAR 2012] Adaptive Images in Responsive Web Design
 
Presentation Tier optimizations
Presentation Tier optimizationsPresentation Tier optimizations
Presentation Tier optimizations
 

More from IT Event

Denis Radin - "Applying NASA coding guidelines to JavaScript or airspace is c...
Denis Radin - "Applying NASA coding guidelines to JavaScript or airspace is c...Denis Radin - "Applying NASA coding guidelines to JavaScript or airspace is c...
Denis Radin - "Applying NASA coding guidelines to JavaScript or airspace is c...IT Event
 
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"IT Event
 
Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...IT Event
 
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "IT Event
 
Konstantin Krivlenia - "Continuous integration for frontend"
Konstantin Krivlenia - "Continuous integration for frontend"Konstantin Krivlenia - "Continuous integration for frontend"
Konstantin Krivlenia - "Continuous integration for frontend"IT Event
 
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"IT Event
 
Evgeny Gusev - "A circular firing squad: How technologies drag frontend down"
Evgeny Gusev - "A circular firing squad: How technologies drag frontend down"Evgeny Gusev - "A circular firing squad: How technologies drag frontend down"
Evgeny Gusev - "A circular firing squad: How technologies drag frontend down"IT Event
 
Vladimir Grinenko - "Dependencies in component web done right"
Vladimir Grinenko - "Dependencies in component web done right"Vladimir Grinenko - "Dependencies in component web done right"
Vladimir Grinenko - "Dependencies in component web done right"IT Event
 
Dmitry Bartalevich - "How to train your WebVR"
Dmitry Bartalevich - "How to train your WebVR"Dmitry Bartalevich - "How to train your WebVR"
Dmitry Bartalevich - "How to train your WebVR"IT Event
 
James Allardice - "Building a better login with the credential management API"
James Allardice - "Building a better login with the credential management API"James Allardice - "Building a better login with the credential management API"
James Allardice - "Building a better login with the credential management API"IT Event
 
Fedor Skuratov "Dark Social: as messengers change the market of social media ...
Fedor Skuratov "Dark Social: as messengers change the market of social media ...Fedor Skuratov "Dark Social: as messengers change the market of social media ...
Fedor Skuratov "Dark Social: as messengers change the market of social media ...IT Event
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"IT Event
 
Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"IT Event
 
Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"
Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"
Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"IT Event
 
Наш ответ Uber’у
Наш ответ Uber’уНаш ответ Uber’у
Наш ответ Uber’уIT Event
 
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"IT Event
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"IT Event
 
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...IT Event
 
Mete Atamel "Resilient microservices with kubernetes"
Mete Atamel "Resilient microservices with kubernetes"Mete Atamel "Resilient microservices with kubernetes"
Mete Atamel "Resilient microservices with kubernetes"IT Event
 
Andrew Stain "User acquisition"
Andrew Stain "User acquisition"Andrew Stain "User acquisition"
Andrew Stain "User acquisition"IT Event
 

More from IT Event (20)

Denis Radin - "Applying NASA coding guidelines to JavaScript or airspace is c...
Denis Radin - "Applying NASA coding guidelines to JavaScript or airspace is c...Denis Radin - "Applying NASA coding guidelines to JavaScript or airspace is c...
Denis Radin - "Applying NASA coding guidelines to JavaScript or airspace is c...
 
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
 
Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...
 
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
 
Konstantin Krivlenia - "Continuous integration for frontend"
Konstantin Krivlenia - "Continuous integration for frontend"Konstantin Krivlenia - "Continuous integration for frontend"
Konstantin Krivlenia - "Continuous integration for frontend"
 
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
 
Evgeny Gusev - "A circular firing squad: How technologies drag frontend down"
Evgeny Gusev - "A circular firing squad: How technologies drag frontend down"Evgeny Gusev - "A circular firing squad: How technologies drag frontend down"
Evgeny Gusev - "A circular firing squad: How technologies drag frontend down"
 
Vladimir Grinenko - "Dependencies in component web done right"
Vladimir Grinenko - "Dependencies in component web done right"Vladimir Grinenko - "Dependencies in component web done right"
Vladimir Grinenko - "Dependencies in component web done right"
 
Dmitry Bartalevich - "How to train your WebVR"
Dmitry Bartalevich - "How to train your WebVR"Dmitry Bartalevich - "How to train your WebVR"
Dmitry Bartalevich - "How to train your WebVR"
 
James Allardice - "Building a better login with the credential management API"
James Allardice - "Building a better login with the credential management API"James Allardice - "Building a better login with the credential management API"
James Allardice - "Building a better login with the credential management API"
 
Fedor Skuratov "Dark Social: as messengers change the market of social media ...
Fedor Skuratov "Dark Social: as messengers change the market of social media ...Fedor Skuratov "Dark Social: as messengers change the market of social media ...
Fedor Skuratov "Dark Social: as messengers change the market of social media ...
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
 
Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"
 
Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"
Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"
Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"
 
Наш ответ Uber’у
Наш ответ Uber’уНаш ответ Uber’у
Наш ответ Uber’у
 
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
 
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
 
Mete Atamel "Resilient microservices with kubernetes"
Mete Atamel "Resilient microservices with kubernetes"Mete Atamel "Resilient microservices with kubernetes"
Mete Atamel "Resilient microservices with kubernetes"
 
Andrew Stain "User acquisition"
Andrew Stain "User acquisition"Andrew Stain "User acquisition"
Andrew Stain "User acquisition"
 

Recently uploaded

Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 

Recently uploaded (20)

Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become thinner"