SlideShare ist ein Scribd-Unternehmen logo
1 von 82
Instant and Offline Apps
with Service Worker
Proprietary + Confidential
Changwook Doh
@cwdoh
SKPlanet
Instant Loading
Done.
Proprietary + Confidential
End
Instant Loading*
Asset delivery
…fast
“Every step you
make a user
perform before they
get value out of
your app will cost
you 20% of users”
http://blog.gaborcselle.com/2012/10/every-step-costs-you-20-of-users.html
Performance
= Money
Goals
Goals
1. Don’t be big
Goals
1. Don’t be big
2. Only download
what you need
Goals
1. Don’t be big
2. Only download
what you need
3. Only download
what changed
Best
Practices
! Compression
! Smaller images
○ Multi-sized images
○ Multi-format images
! Reduce Round Trips
○ Redirects
○ Preconnect/Prefetch
! Be interactive
○ async/defer scripts
○ Lazy-load CSS
○ Regioning CSS
○ Defer iFrames
! Good caching
○ Cache forever or not at all
○ Hash in names
! CDNs
! HTTP/2
Compression
goo.gl/hPLUqB
Library Size Compressed size Compression ratio
jquery-1.11.0.js 276 KB 82 KB 70%
jquery-1.11.0.min.js 94 KB 33 KB 65%
angular-1.2.15.js 729 KB 182 KB 75%
angular-1.2.15.min.js 101 KB 37 KB 63%
bootstrap-3.1.1.css 118 KB 18 KB 85%
bootstrap-3.1.1.min.css 98 KB 17 KB 83%
minification	&	gzip
goo.gl/631F31
30% over JPEG
25% over PNG
<picture>

				<source	srcset="washing.webp">

				<source	srcset="washing.jpg">

				<img	src="washing.jpg">

</picture>
<img	sizes="(max-width:	30em)	100vw,

												(max-width:	50em)	50vw,

												calc(33vw	-	100px)"

				srcset="swing-200.jpg	200w,

												swing-400.jpg	400w,

												swing-800.jpg	800w,

												swing-1600.jpg	1600w"

				src="swing-400.jpg"	alt="Kettlebell	Swing">	
goo.gl/Aev18k
Round Trips
+50ms @WiFi
+75ms @LTE
+500ms @3G
+2500ms @2G
Round Trips
100 reqs/site
6 connections
> 833 ms spent in RTT @WiFi
<link	rel="dns-prefetch"	
href="https://example.com/">

<link	rel="preconnect"	
href="https://example.com/">	


<link	rel="preload"		
href="https://example.com/footer.jpg"	
as="image">	
<link	rel="prefetch"		
href="https://example.com/next-page.html"	
as="html">	
goo.gl/Aev18k
Be interactive
<script	async	defer	…>
CSS?
CSS?
github.com/filamentgroup/
loadCSS
Regioning/Critical
…then Rest
https://aerotwist.com/blog/guitar-tuner/
Defer iFrames
<iframe	data-src="https://example.com"></iframe>

<iframe	data-src="https://another.example.com"></iframe>

<script>

document.addEventListener('load',	()	=>	{

		Array.from(document.querySelectorAll('iframe'))

				.forEach(iframe	=>	iframe.src	=	iframe.dataset.src);

});

</script>
github.com/GoogleChrome/simplehttp2server
Offline
Web is a thing like a magic carpet
Your Page
You CAN’T FLY without your page.
Lie-Fi
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Service Worker
Service Worker fundamentally changes how browser works
! Run a script separate from the page itself
! Run the script even without the page open
! Capture network requests from the page
Service Worker Lifecycle
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Browser Network
Registering a Service Worker


		navigator.serviceWorker.register('/sw.js');

Registering a Service Worker
if	(navigator.serviceWorker)	{

		navigator.serviceWorker.register('/sw.js');

}
console.log('Hello');
sw.js
DevTools for Service Worker
DevTools > Resources > Service Workers
Check "Update on reload"
Proprietary + Confidential
self.addEventListener('fetch',	event	=>	{

		debugger;

});
sw.js
sw.js
self.addEventListener('fetch',	event	=>	{

		event.respondWith(

				new	Response('Hello	Seoul')

		);

});
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
No network requests
Browser Service Worker Network
fetch()
fetch('/',	{

		method:	'POST',

		body:	data

}).then(res	=>	{

		return	res.json();

}).then(result	=>	{

		return	result;

},	err	=>	{

		console.error(err);

});
sw.js
self.addEventListener('fetch',	event	=>	{

		event.respondWith(

				fetch(event.request)

		);

});
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Delegating network requests
Browser Service Worker Network
Use cases
! Custom 404 page if not found
! Responsive resource loader
! Cache response and respond without network request
Proprietary + ConfidentialProprietary + Confidential
Proprietary + Confidential
Caching resources
CACHE	MANIFEST

#	2010-06-18:v2



#	Explicitly	cached	'master	entries'.

CACHE:

/favicon.ico

index.html

stylesheet.css

images/logo.png

scripts/main.js



#	Resources	that	require	the	user	to	be	online.

NETWORK:

login.php
Application Cache
cache
self.addEventListener('install',	event	=>	{

		event.waitUntil(

				caches.open('precache-v1')

						.then(cache	=>	cache.addAll([

								'index.html',

								'style.css'

						]))

		);

});
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Caching resources
Browser Service Worker Network
Respond with cache
self.addEventListener('fetch',	event	=>	{

		event.respondWith(

				caches.match(event.request)

						.then(response	=>	response	||	fetch(event.request))

		);

});
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
sw-precache
! Declaratively write list of resources you want to pre-cache (like AppCache).
! Build with gulp or Grunt to generate a SW file.
! Versioning is automatically taken care of.
sw-precache
sw-precache in gulp
gulp.task('generate-service-worker',	function(callback)	{

		var	path	=	require('path');

		var	swPrecache	=	require('sw-precache');

		var	rootDir	=	'app';



		swPrecache.write(path.join(rootDir,	'service-worker.js'),	{

				staticFileGlobs:	[rootDir	+	'/**/*.{js,html,css,png,jpg,gif}'],

				stripPrefix:	rootDir

		},	callback);

});
Proprietary + ConfidentialProprietary + Confidential
Proprietary + Confidential
Dynamic caching
Loading dynamic data
Changes frequently
Structured data
Unpredictably many query variations
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Cache first
Browser Service Worker Network
1
4
3
2
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Network first
Browser Service Worker Network
1
4
2
3
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
sw-toolbox
sw-toolbox
toolbox.router.get('/api',	toolbox.networkFirst);
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Indexed Database
Proprietary + ConfidentialProprietary + Confidential
Proprietary + Confidential
Putting together
Page Shell
Precache required resources at initial load.
You will at least see app shell on page launch.
Contents
Precache required resources at initial load.
You will at least see app shell on page launch.
Load content using dynamic cache approach.
If the content is not available, use cache.
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Application Shell
THANK YOU

Weitere ähnliche Inhalte

Was ist angesagt?

HTML5 Web Workers-unleashed
HTML5 Web Workers-unleashedHTML5 Web Workers-unleashed
HTML5 Web Workers-unleashed
Peter Lubbers
 
Service Worker 201 (en)
Service Worker 201 (en)Service Worker 201 (en)
Service Worker 201 (en)
Chang W. Doh
 

Was ist angesagt? (20)

"Service Worker: Let Your Web App Feel Like a Native "
"Service Worker: Let Your Web App Feel Like a Native ""Service Worker: Let Your Web App Feel Like a Native "
"Service Worker: Let Your Web App Feel Like a Native "
 
Service worker - Offline Web
Service worker - Offline WebService worker - Offline Web
Service worker - Offline Web
 
[1C1]Service Workers
[1C1]Service Workers[1C1]Service Workers
[1C1]Service Workers
 
ServiceWorker: New game changer is coming!
ServiceWorker: New game changer is coming!ServiceWorker: New game changer is coming!
ServiceWorker: New game changer is coming!
 
HTML5 Web Workers-unleashed
HTML5 Web Workers-unleashedHTML5 Web Workers-unleashed
HTML5 Web Workers-unleashed
 
PWA 應用 - 實現網站離線瀏覽
PWA 應用 - 實現網站離線瀏覽PWA 應用 - 實現網站離線瀏覽
PWA 應用 - 實現網站離線瀏覽
 
Testing frontends with nightwatch & saucelabs
Testing frontends with nightwatch & saucelabsTesting frontends with nightwatch & saucelabs
Testing frontends with nightwatch & saucelabs
 
Building a js widget
Building a js widgetBuilding a js widget
Building a js widget
 
Nodejs.meetup
Nodejs.meetupNodejs.meetup
Nodejs.meetup
 
JavaScript Web Workers
JavaScript Web WorkersJavaScript Web Workers
JavaScript Web Workers
 
Node.js & Twitter Bootstrap Crash Course
Node.js & Twitter Bootstrap Crash CourseNode.js & Twitter Bootstrap Crash Course
Node.js & Twitter Bootstrap Crash Course
 
High Performance Snippets
High Performance SnippetsHigh Performance Snippets
High Performance Snippets
 
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other ToolsCool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
 
REST to JavaScript for Better Client-side Development
REST to JavaScript for Better Client-side DevelopmentREST to JavaScript for Better Client-side Development
REST to JavaScript for Better Client-side Development
 
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
 
Service Worker 201 (en)
Service Worker 201 (en)Service Worker 201 (en)
Service Worker 201 (en)
 
The Complementarity of React and Web Components
The Complementarity of React and Web ComponentsThe Complementarity of React and Web Components
The Complementarity of React and Web Components
 
webworkers
webworkerswebworkers
webworkers
 
Drupal point of vue
Drupal point of vueDrupal point of vue
Drupal point of vue
 
WordPress 2017 with VueJS and GraphQL
WordPress 2017 with VueJS and GraphQLWordPress 2017 with VueJS and GraphQL
WordPress 2017 with VueJS and GraphQL
 

Andere mochten auch (6)

Grid - 新時代的排版利器
Grid - 新時代的排版利器Grid - 新時代的排版利器
Grid - 新時代的排版利器
 
2016 PIXNET HACKATHON Lightning talk - 做網站不是只有一個人的事
2016 PIXNET HACKATHON Lightning talk - 做網站不是只有一個人的事2016 PIXNET HACKATHON Lightning talk - 做網站不是只有一個人的事
2016 PIXNET HACKATHON Lightning talk - 做網站不是只有一個人的事
 
webpack 入門
webpack 入門webpack 入門
webpack 入門
 
前端界流傳的神奇招式
前端界流傳的神奇招式前端界流傳的神奇招式
前端界流傳的神奇招式
 
網站建置初探
網站建置初探網站建置初探
網站建置初探
 
網站建置流程
網站建置流程網站建置流程
網站建置流程
 

Ähnlich wie Instant and offline apps with Service Worker

Optimising Web Application Frontend
Optimising Web Application FrontendOptimising Web Application Frontend
Optimising Web Application Frontend
tkramar
 
Chanhao Jiang And David Wei Presentation Quickling Pagecache
Chanhao Jiang And David Wei Presentation Quickling PagecacheChanhao Jiang And David Wei Presentation Quickling Pagecache
Chanhao Jiang And David Wei Presentation Quickling Pagecache
Ajax Experience 2009
 

Ähnlich wie Instant and offline apps with Service Worker (20)

Disrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applicationsDisrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applications
 
Building performance into the new yahoo homepage presentation
Building performance into the new yahoo  homepage presentationBuilding performance into the new yahoo  homepage presentation
Building performance into the new yahoo homepage presentation
 
Performance on the Yahoo! Homepage
Performance on the Yahoo! HomepagePerformance on the Yahoo! Homepage
Performance on the Yahoo! Homepage
 
SocketStream
SocketStreamSocketStream
SocketStream
 
Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011
 
Alexey Kupriyanenko "The State of Modern JavaScript and Web in 2020 - Real us...
Alexey Kupriyanenko "The State of Modern JavaScript and Web in 2020 - Real us...Alexey Kupriyanenko "The State of Modern JavaScript and Web in 2020 - Real us...
Alexey Kupriyanenko "The State of Modern JavaScript and Web in 2020 - Real us...
 
Developing High Performance Web Apps
Developing High Performance Web AppsDeveloping High Performance Web Apps
Developing High Performance Web Apps
 
Optimising Web Application Frontend
Optimising Web Application FrontendOptimising Web Application Frontend
Optimising Web Application Frontend
 
Pinkoi Mobile Web
Pinkoi Mobile WebPinkoi Mobile Web
Pinkoi Mobile Web
 
Web Performance Part 4 "Client-side performance"
Web Performance Part 4  "Client-side performance"Web Performance Part 4  "Client-side performance"
Web Performance Part 4 "Client-side performance"
 
"Progressive Web Apps" by Riza Fahmi (Hacktiv8)
"Progressive Web Apps" by Riza Fahmi	(Hacktiv8)"Progressive Web Apps" by Riza Fahmi	(Hacktiv8)
"Progressive Web Apps" by Riza Fahmi (Hacktiv8)
 
Progressive Web Apps. What, why and how
Progressive Web Apps. What, why and howProgressive Web Apps. What, why and how
Progressive Web Apps. What, why and how
 
Performance and UX
Performance and UXPerformance and UX
Performance and UX
 
Chanhao Jiang And David Wei Presentation Quickling Pagecache
Chanhao Jiang And David Wei Presentation Quickling PagecacheChanhao Jiang And David Wei Presentation Quickling Pagecache
Chanhao Jiang And David Wei Presentation Quickling Pagecache
 
Presentation Tier optimizations
Presentation Tier optimizationsPresentation Tier optimizations
Presentation Tier optimizations
 
Beyond Breakpoints: Improving Performance for Responsive Sites
Beyond Breakpoints: Improving Performance for Responsive SitesBeyond Breakpoints: Improving Performance for Responsive Sites
Beyond Breakpoints: Improving Performance for Responsive Sites
 
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...
 
IBM Connect 2016 - Break out of the Box
IBM Connect 2016 - Break out of the BoxIBM Connect 2016 - Break out of the Box
IBM Connect 2016 - Break out of the Box
 
JavaScript performance patterns
JavaScript performance patternsJavaScript performance patterns
JavaScript performance patterns
 
How NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscapeHow NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscape
 

Mehr von Chang W. Doh

Kotlin, 어떻게 동작하나요
Kotlin, 어떻게 동작하나요Kotlin, 어떻게 동작하나요
Kotlin, 어떻게 동작하나요
Chang W. Doh
 

Mehr von Chang W. Doh (20)

Exploring what're new in Web for the Natively app
Exploring what're new in Web for the Natively appExploring what're new in Web for the Natively app
Exploring what're new in Web for the Natively app
 
Kotlin의 코루틴은 어떻게 동작하는가
Kotlin의 코루틴은 어떻게 동작하는가Kotlin의 코루틴은 어떻게 동작하는가
Kotlin의 코루틴은 어떻게 동작하는가
 
Hey Kotlin, How it works?
Hey Kotlin, How it works?Hey Kotlin, How it works?
Hey Kotlin, How it works?
 
Kotlin, 어떻게 동작하나요
Kotlin, 어떻게 동작하나요Kotlin, 어떻게 동작하나요
Kotlin, 어떻게 동작하나요
 
introduction to Web Assembly
introduction to Web Assembly introduction to Web Assembly
introduction to Web Assembly
 
PWA Roadshow Seoul - Keynote
PWA Roadshow Seoul - KeynotePWA Roadshow Seoul - Keynote
PWA Roadshow Seoul - Keynote
 
PWA Roadshow Seoul - HTTPS
PWA Roadshow Seoul - HTTPSPWA Roadshow Seoul - HTTPS
PWA Roadshow Seoul - HTTPS
 
CSS 다시 파서 어디에 쓰나
CSS 다시 파서 어디에 쓰나CSS 다시 파서 어디에 쓰나
CSS 다시 파서 어디에 쓰나
 
Natively Web App & Service Worker
Natively Web App & Service WorkerNatively Web App & Service Worker
Natively Web App & Service Worker
 
초보 개발자를 위한 웹 프론트엔드 개발 101
초보 개발자를 위한 웹 프론트엔드 개발 101초보 개발자를 위한 웹 프론트엔드 개발 101
초보 개발자를 위한 웹 프론트엔드 개발 101
 
Service Worker 201 (한국어)
Service Worker 201 (한국어)Service Worker 201 (한국어)
Service Worker 201 (한국어)
 
Service Worker 101 (en)
Service Worker 101 (en)Service Worker 101 (en)
Service Worker 101 (en)
 
Service Worker 101 (한국어)
Service Worker 101 (한국어)Service Worker 101 (한국어)
Service Worker 101 (한국어)
 
What is next for the web
What is next for the webWhat is next for the web
What is next for the web
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
 
Polymer Codelab: Before diving into polymer
Polymer Codelab: Before diving into polymerPolymer Codelab: Before diving into polymer
Polymer Codelab: Before diving into polymer
 
알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations
 
SOSCON 2014: 문서 기반의 오픈소스 기여하기
SOSCON 2014: 문서 기반의 오픈소스 기여하기SOSCON 2014: 문서 기반의 오픈소스 기여하기
SOSCON 2014: 문서 기반의 오픈소스 기여하기
 
Chromium: NaCl and Pepper API
Chromium: NaCl and Pepper APIChromium: NaCl and Pepper API
Chromium: NaCl and Pepper API
 
Cache in Chromium: Disk Cache
Cache in Chromium: Disk CacheCache in Chromium: Disk Cache
Cache in Chromium: Disk Cache
 

Kürzlich hochgeladen

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
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Kürzlich hochgeladen (20)

DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
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
 
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
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
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
 
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
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
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
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
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
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 

Instant and offline apps with Service Worker