SlideShare uma empresa Scribd logo
1 de 33
Modern Web Applications with PWA & WASM
- Gaurav Behere, Shashank Sharma
What is a WebApp?
- It’s in the Cloud
- It runs on browsers across platforms (Browsers + OS + Devices)
- Not webapp - A UI software - Thick client / Thin client
How to `good UX`?
Problems
User experience & Browser limitation
Performance – Network latency + stable FPS (~60)
JavaScript limitations on browsers
Knowledge is readily available but key information is not!
Still Buffering ?
How Did We Optimize ?
- Caching – Server Side/ Client Side
- Writing optimized code, SQL queries
- Making use of the power of browser: app cache/ local storage/ indexedDB/ web workers etc
- Reducing network calls by code minification/uglification + combining files, image sprites etc
(There are many)
What’s PWA?
- Mobile App + Web App = PWA
• Reliable - Load instantly and never show the downasaur, even in uncertain network
conditions.
• Fast - Respond quickly to user interactions with silky smooth animations and no janky
scrolling.
• Engaging - Feel like a natural app on the device, with an immersive user experience.
• Linkable/Shareable – PWA is a hosted web app, can be shared with a link, not like an APK.
Why PWA?
Success Stories: https://developers.google.com/web/showcase/region/#asia
How to PWA ?
- PWA Checklist + Lighthouse
- Site is served over HTTPS
- Pages are responsive on tablets & mobile devices
- All app URLs load 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
- ---- etc
- https://developers.google.com/web/progressive-web-apps/checklist
How Stuff Works?
Service Worker is a worker script that works behind the scenes, independent of your app, and
runs in response to events like network requests, push notifications, connectivity changes, and
more. We can handle that event with full control, checking for cached data and returning
immediately, or allowing the request to continue to the remote server. Our script acts as a proxy,
or middleware, for the request.
Showtime
- https://gauravbehere.github.io/pwa-starter-demo
- https://shankscript.github.io/wasm-starter-kit/dist/
History
History
JavaScript (created in 10 days in May 1995,byBrendanEich)
DHTML?
RIA?
Java Applets
ActiveX
Flash
Silverlight
Dart
2018 - JavaScript (still!)
Most used Programming language?
Most criticized one?
[] == false ?
“” == false ?
2018 - JavaScript (still!)
...but the way we are using it has changed
2018 - JavaScript (still!) ...but the way we are using it has changed
We are writing a lot of JavaScript
the Web has become the most ubiquitous application platform ever, and yet by historical
accident the only natively supported programming language for that platform is JavaScript!
History
JavaScript (createdin 10 daysin May 1995,byBrendanEich)
Java Applets
ActiveX
Flash
Silverlight
Dart
2018 - JavaScript (still!)
...but the way weareusingithaschanged
The open standards for WebAssembly are developed in a W3C
Community Group
(that includes representatives from all major browsers) as well as
a W3C Working Group.
Support
WebAssembly Architecture
A stack machine, 4 types, 67 instructions
Designed to support streaming compilation
Simple validation rules
Exports / imports functions
Linear memory is shared with JavaScript
WebAssembly(.WASM) S Expression (.WAT)
func $stackAlloc (param i32) (result i32)
(local i32)
get_global 5
set_local 1
get_global 5
get_local 0
i32.add
set_global 5
get_global 5
i32.const 15
i32.add
i32.const -16
i32.and
set_global 5
get_local 1
end
WebAssembly Language Support (and what people are doing with it)
C/C++ Emscripten Based on LLVM
Rust, C, C++ used in production for performance critical, algorithmic tasks
Webpack
Java, C#, Typescript lots of creative experiments / POCs
Native node modules
GC support
Showtime
- https://shankscript.github.io/wasm-starter-kit
Code walkthrough
What’s next ?
• Heavy weight softwares (Thin client)-
• Photoshop/3D Max/Simulators/IDE/CAD/DSP/AI/NLP/MatLab
• Gaming
• Thin client migration where heavy cloud computing is used
• Existing web apps can be improved and/or can deliver more feature
• CUIC
Take away?
- Some gyan!
- Modern webapp = PWA + WASM
• Service Worker
• Webworker
• Webassembly
• http2
• Web Components
……..
- Minimal starter kits to start playing with PWA/WASM
Thank You !
- PWA Starter Kit:
- https://github.com/gauravbehere/pwa-starter-demo
- WASM Starter Kit
- https://github.com/shankscript/wasm-starter-kit
- Gaurav Behere
- http://gauravbehere.in
- Shashank Sharma
- http://shankscript.me

Mais conteúdo relacionado

Mais procurados

Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page ApplicationKMS Technology
 
Single page applications
Single page applicationsSingle page applications
Single page applicationsDiego Cardozo
 
Wso2 product release webinar introducing jaggery
Wso2 product release webinar   introducing jaggeryWso2 product release webinar   introducing jaggery
Wso2 product release webinar introducing jaggeryWSO2
 
single page application
single page applicationsingle page application
single page applicationRavindra K
 
Single page application and Framework
Single page application and FrameworkSingle page application and Framework
Single page application and FrameworkChandrasekar G
 
introduction to js
introduction to jsintroduction to js
introduction to jsSireesh K
 
Progressive web apps
Progressive web appsProgressive web apps
Progressive web appsFastly
 
Architecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsArchitecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsRasheed Waraich
 
Single Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJSSingle Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJSM R Rony
 
Single Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebSingle Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebChris Canal
 
Webservices: connecting Joomla! with other programs.
Webservices: connecting Joomla! with other programs.Webservices: connecting Joomla! with other programs.
Webservices: connecting Joomla! with other programs.Herman Peeren
 
Web technologies practical guide
Web technologies practical guideWeb technologies practical guide
Web technologies practical guidesamir azazy
 
Anatomy of a Progressive Web App
Anatomy of a Progressive Web AppAnatomy of a Progressive Web App
Anatomy of a Progressive Web AppMike North
 
PWA Roadshow Korea - Service Worker
PWA Roadshow Korea - Service WorkerPWA Roadshow Korea - Service Worker
PWA Roadshow Korea - Service Workerjungkees
 
Scale with Microservices
Scale with MicroservicesScale with Microservices
Scale with MicroservicesVõ Duy Tuấn
 
Component based Progress Programming
Component based Progress ProgrammingComponent based Progress Programming
Component based Progress ProgrammingValentin Duricu
 

Mais procurados (20)

Introduction To Single Page Application
Introduction To Single Page ApplicationIntroduction To Single Page Application
Introduction To Single Page Application
 
Single page applications
Single page applicationsSingle page applications
Single page applications
 
Wso2 product release webinar introducing jaggery
Wso2 product release webinar   introducing jaggeryWso2 product release webinar   introducing jaggery
Wso2 product release webinar introducing jaggery
 
Performance tuning of Websites
Performance tuning of WebsitesPerformance tuning of Websites
Performance tuning of Websites
 
single page application
single page applicationsingle page application
single page application
 
Single page application and Framework
Single page application and FrameworkSingle page application and Framework
Single page application and Framework
 
introduction to js
introduction to jsintroduction to js
introduction to js
 
Progressive web apps
Progressive web appsProgressive web apps
Progressive web apps
 
Architecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsArchitecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web Apps
 
PWA
PWAPWA
PWA
 
Joomla REST API
Joomla REST APIJoomla REST API
Joomla REST API
 
Web 2.0 & Ajax Basics
Web 2.0 & Ajax BasicsWeb 2.0 & Ajax Basics
Web 2.0 & Ajax Basics
 
Single Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJSSingle Page Application (SPA) using AngularJS
Single Page Application (SPA) using AngularJS
 
Single Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebSingle Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.Web
 
Webservices: connecting Joomla! with other programs.
Webservices: connecting Joomla! with other programs.Webservices: connecting Joomla! with other programs.
Webservices: connecting Joomla! with other programs.
 
Web technologies practical guide
Web technologies practical guideWeb technologies practical guide
Web technologies practical guide
 
Anatomy of a Progressive Web App
Anatomy of a Progressive Web AppAnatomy of a Progressive Web App
Anatomy of a Progressive Web App
 
PWA Roadshow Korea - Service Worker
PWA Roadshow Korea - Service WorkerPWA Roadshow Korea - Service Worker
PWA Roadshow Korea - Service Worker
 
Scale with Microservices
Scale with MicroservicesScale with Microservices
Scale with Microservices
 
Component based Progress Programming
Component based Progress ProgrammingComponent based Progress Programming
Component based Progress Programming
 

Semelhante a Web assembly with PWA

WebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the FutureWebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the FutureFrank Greco
 
Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | IntroductionJohnTaieb
 
Introduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and SilverlightIntroduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and SilverlightPeter Gfader
 
openMIC barcamp 11.02.2010
openMIC barcamp 11.02.2010openMIC barcamp 11.02.2010
openMIC barcamp 11.02.2010Patrick Lauke
 
Web II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side developmentWeb II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side developmentRandy Connolly
 
Krug Fat Client
Krug Fat ClientKrug Fat Client
Krug Fat ClientPaul Klipp
 
HTML5: the new frontier of the web
HTML5: the new frontier of the webHTML5: the new frontier of the web
HTML5: the new frontier of the webIvano Malavolta
 
Building Rich Applications with Appcelerator
Building Rich Applications with AppceleratorBuilding Rich Applications with Appcelerator
Building Rich Applications with AppceleratorMatt Raible
 
Get Ahead with HTML5 on Moible
Get Ahead with HTML5 on MoibleGet Ahead with HTML5 on Moible
Get Ahead with HTML5 on Moiblemarkuskobler
 
Making Of PHP Based Web Application
Making Of PHP Based Web ApplicationMaking Of PHP Based Web Application
Making Of PHP Based Web ApplicationSachin Walvekar
 
Html5 workshop part 1
Html5 workshop part 1Html5 workshop part 1
Html5 workshop part 1NAILBITER
 
Workshop HTML5+PhoneGap by Ivano Malavolta
Workshop HTML5+PhoneGap by Ivano Malavolta Workshop HTML5+PhoneGap by Ivano Malavolta
Workshop HTML5+PhoneGap by Ivano Malavolta Commit University
 
WAD - WaveMaker tutorial
WAD - WaveMaker tutorial WAD - WaveMaker tutorial
WAD - WaveMaker tutorial marina2207
 
WaveMaker tutorial with Flash
WaveMaker tutorial with FlashWaveMaker tutorial with Flash
WaveMaker tutorial with Flashmarina2207
 
Building cross platform web apps
Building cross platform web appsBuilding cross platform web apps
Building cross platform web appsITEM
 

Semelhante a Web assembly with PWA (20)

WebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the FutureWebSocket Perspectives and Vision for the Future
WebSocket Perspectives and Vision for the Future
 
Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | Introduction
 
GWT and PWA
GWT and PWAGWT and PWA
GWT and PWA
 
Hybrid mobile apps
Hybrid mobile appsHybrid mobile apps
Hybrid mobile apps
 
Introduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and SilverlightIntroduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and Silverlight
 
openMIC barcamp 11.02.2010
openMIC barcamp 11.02.2010openMIC barcamp 11.02.2010
openMIC barcamp 11.02.2010
 
Web II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side developmentWeb II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side development
 
Krug Fat Client
Krug Fat ClientKrug Fat Client
Krug Fat Client
 
Always on! ... or not?
Always on! ... or not?Always on! ... or not?
Always on! ... or not?
 
HTML5: the new frontier of the web
HTML5: the new frontier of the webHTML5: the new frontier of the web
HTML5: the new frontier of the web
 
Building Rich Applications with Appcelerator
Building Rich Applications with AppceleratorBuilding Rich Applications with Appcelerator
Building Rich Applications with Appcelerator
 
Get Ahead with HTML5 on Moible
Get Ahead with HTML5 on MoibleGet Ahead with HTML5 on Moible
Get Ahead with HTML5 on Moible
 
WaveMaker Presentation
WaveMaker PresentationWaveMaker Presentation
WaveMaker Presentation
 
Making Of PHP Based Web Application
Making Of PHP Based Web ApplicationMaking Of PHP Based Web Application
Making Of PHP Based Web Application
 
Html5 workshop part 1
Html5 workshop part 1Html5 workshop part 1
Html5 workshop part 1
 
Workshop HTML5+PhoneGap by Ivano Malavolta
Workshop HTML5+PhoneGap by Ivano Malavolta Workshop HTML5+PhoneGap by Ivano Malavolta
Workshop HTML5+PhoneGap by Ivano Malavolta
 
WAD - WaveMaker tutorial
WAD - WaveMaker tutorial WAD - WaveMaker tutorial
WAD - WaveMaker tutorial
 
WaveMaker tutorial with Flash
WaveMaker tutorial with FlashWaveMaker tutorial with Flash
WaveMaker tutorial with Flash
 
Building cross platform web apps
Building cross platform web appsBuilding cross platform web apps
Building cross platform web apps
 
Food borne human diseases
Food borne human diseasesFood borne human diseases
Food borne human diseases
 

Último

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
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
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
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
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
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
 
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
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
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
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 

Último (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
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...
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
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
 
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...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
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...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

Web assembly with PWA

  • 1. Modern Web Applications with PWA & WASM - Gaurav Behere, Shashank Sharma
  • 2. What is a WebApp? - It’s in the Cloud - It runs on browsers across platforms (Browsers + OS + Devices) - Not webapp - A UI software - Thick client / Thin client
  • 4. Problems User experience & Browser limitation Performance – Network latency + stable FPS (~60) JavaScript limitations on browsers Knowledge is readily available but key information is not!
  • 6.
  • 7. How Did We Optimize ? - Caching – Server Side/ Client Side - Writing optimized code, SQL queries - Making use of the power of browser: app cache/ local storage/ indexedDB/ web workers etc - Reducing network calls by code minification/uglification + combining files, image sprites etc (There are many)
  • 8. What’s PWA? - Mobile App + Web App = PWA • Reliable - Load instantly and never show the downasaur, even in uncertain network conditions. • Fast - Respond quickly to user interactions with silky smooth animations and no janky scrolling. • Engaging - Feel like a natural app on the device, with an immersive user experience. • Linkable/Shareable – PWA is a hosted web app, can be shared with a link, not like an APK.
  • 9. Why PWA? Success Stories: https://developers.google.com/web/showcase/region/#asia
  • 10. How to PWA ? - PWA Checklist + Lighthouse - Site is served over HTTPS - Pages are responsive on tablets & mobile devices - All app URLs load 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 - ---- etc - https://developers.google.com/web/progressive-web-apps/checklist
  • 11. How Stuff Works? Service Worker is a worker script that works behind the scenes, independent of your app, and runs in response to events like network requests, push notifications, connectivity changes, and more. We can handle that event with full control, checking for cached data and returning immediately, or allowing the request to continue to the remote server. Our script acts as a proxy, or middleware, for the request.
  • 13. History History JavaScript (created in 10 days in May 1995,byBrendanEich) DHTML? RIA? Java Applets ActiveX Flash Silverlight Dart 2018 - JavaScript (still!)
  • 14. Most used Programming language? Most criticized one? [] == false ? “” == false ?
  • 15. 2018 - JavaScript (still!) ...but the way we are using it has changed 2018 - JavaScript (still!) ...but the way we are using it has changed We are writing a lot of JavaScript the Web has become the most ubiquitous application platform ever, and yet by historical accident the only natively supported programming language for that platform is JavaScript!
  • 16.
  • 17. History JavaScript (createdin 10 daysin May 1995,byBrendanEich) Java Applets ActiveX Flash Silverlight Dart 2018 - JavaScript (still!) ...but the way weareusingithaschanged
  • 18.
  • 19. The open standards for WebAssembly are developed in a W3C Community Group (that includes representatives from all major browsers) as well as a W3C Working Group.
  • 20.
  • 21.
  • 23. WebAssembly Architecture A stack machine, 4 types, 67 instructions Designed to support streaming compilation Simple validation rules Exports / imports functions Linear memory is shared with JavaScript
  • 24. WebAssembly(.WASM) S Expression (.WAT) func $stackAlloc (param i32) (result i32) (local i32) get_global 5 set_local 1 get_global 5 get_local 0 i32.add set_global 5 get_global 5 i32.const 15 i32.add i32.const -16 i32.and set_global 5 get_local 1 end
  • 25. WebAssembly Language Support (and what people are doing with it) C/C++ Emscripten Based on LLVM Rust, C, C++ used in production for performance critical, algorithmic tasks Webpack Java, C#, Typescript lots of creative experiments / POCs Native node modules GC support
  • 26.
  • 27.
  • 28.
  • 31. What’s next ? • Heavy weight softwares (Thin client)- • Photoshop/3D Max/Simulators/IDE/CAD/DSP/AI/NLP/MatLab • Gaming • Thin client migration where heavy cloud computing is used • Existing web apps can be improved and/or can deliver more feature • CUIC
  • 32. Take away? - Some gyan! - Modern webapp = PWA + WASM • Service Worker • Webworker • Webassembly • http2 • Web Components …….. - Minimal starter kits to start playing with PWA/WASM
  • 33. Thank You ! - PWA Starter Kit: - https://github.com/gauravbehere/pwa-starter-demo - WASM Starter Kit - https://github.com/shankscript/wasm-starter-kit - Gaurav Behere - http://gauravbehere.in - Shashank Sharma - http://shankscript.me