The document provides guidance and best practices for developing mobile apps. It discusses prioritizing platforms based on usage share, targeting the needs and behaviors of different user groups, and the advantages of native apps over HTML5 for user experience. It also covers tools for testing across browsers and devices, such as Ringmark, Modernizr, and network monitoring with ARO. Thorough testing on real networks is emphasized to ensure apps degrade gracefully on unstable connections.
This talk is geared towards users of jQuery plugins who are looking to pick the best plugins and plugin authors who would like a holistic review of existing jQuery plugins and what things to consider when making your own plugins. Marketing tactics and approaches to spreading the word about your plugin will also be discussed.
High Performance JavaScript - WebDirections USA 2010Nicholas Zakas
Ever wonder why the page appears frozen or why you get a dialog saying, “this script is taking too long”? Inside of the browser, JavaScript and the page’s UI are very intertwined, which means they can affect each other and, in turn, affect overall page performance. Ensuring the fastest execution time of JavaScript code isn’t about geek cred, it’s about ensuring that the user experience is as fast and responsive as possible. In a world where an extra second can cost you a visitor, sluggishness due to poor JavaScript code is a big problem. In this talk, you’ll learn what’s going on inside the browser that can slow JavaScript down and how that can end up creating a “slow page”. You’ll also learn how to overcome the conspiracy against your code by eliminating performance bottlenecks.
How to implement an app for web, iOS, Android with virtually same code and all the proper bells and whistles: Analytics, Sharing buttons, AdSense/AdMob ads.
Presented at PiterJS meetup on 09 Feb 2017
This talk is geared towards users of jQuery plugins who are looking to pick the best plugins and plugin authors who would like a holistic review of existing jQuery plugins and what things to consider when making your own plugins. Marketing tactics and approaches to spreading the word about your plugin will also be discussed.
High Performance JavaScript - WebDirections USA 2010Nicholas Zakas
Ever wonder why the page appears frozen or why you get a dialog saying, “this script is taking too long”? Inside of the browser, JavaScript and the page’s UI are very intertwined, which means they can affect each other and, in turn, affect overall page performance. Ensuring the fastest execution time of JavaScript code isn’t about geek cred, it’s about ensuring that the user experience is as fast and responsive as possible. In a world where an extra second can cost you a visitor, sluggishness due to poor JavaScript code is a big problem. In this talk, you’ll learn what’s going on inside the browser that can slow JavaScript down and how that can end up creating a “slow page”. You’ll also learn how to overcome the conspiracy against your code by eliminating performance bottlenecks.
How to implement an app for web, iOS, Android with virtually same code and all the proper bells and whistles: Analytics, Sharing buttons, AdSense/AdMob ads.
Presented at PiterJS meetup on 09 Feb 2017
The Cloud Foundry APIs provide a rich set of information for anyone trying to gain insight into the inner workings of the platform. This presentation explores some of the APIs, and provides some practical techniques for non-coder ways of interacting with those APIs.
HTML5 or Android for Mobile Development?Reto Meier
Android apps or the mobile web? It's often a hard choice when deciding where to invest your mobile development resources. While the mobile web continues to grow, apps and app stores are incredibly popular. We will present both perspectives and offer some suggestions for making the most of each platform.
EuroPython 2011 - How to build complex web applications having fun?Andrew Mleczko
Web development is a complexity challenge nowadays. Growing number of functionalities results in customer expectations increase which makes project design more difficult. Using proper tools that suite your customer needs is essential.
This talk is about successful story using closely together Pyramid and Plone. Basing on these examples you will see the main reasons for using Plone as a CMS only and letting Pyramid do the rest (vertical application).
I had the pleasure of talking at @media Ajax London in Westminster on Sept 15th 2008. I talked about the history of Gears and how it is converging with HTML 5 to give developers options.
Flexible UI Components for a Multi-Framework WorldKevin Ball
Slides from Flexible UI Components talk given at Web Unleashed 2017
Build UI components that work seamlessly in every JavaScript Framework.
Your core UI elements shouldn’t have to be different for your marketing site than they are in your application just because the former uses jQuery while the latter is built using Angular or React.
Lessons learned from work on ZURB Foundation 7.
Get Hip with JHipster - Colorado Springs OSS Meetup April 2016Matt Raible
Building a modern web (or mobile) application requires a lot of tools, frameworks and techniques. This session shows how JHipster unites popular frameworks like AngularJS, Spring Boot and Bootstrap. Using Yeoman, a scaffolding tool for modern webapps, JHipster will generate a project that uses Java 8, SQL or NoSQL databases, Spring profiles, Maven or Gradle, Gulp.js, WebSockets and BrowserSync. It also supports a number of different authentication mechanisms: classic session-based auth, OAuth 2.0, or token-based authentication. For cloud deployments, JHipster includes out-of-the-box support for Cloud Foundry and Heroku.
Best Practices in SharePoint Development - Just Freakin Work! Overcoming Hurd...Geoff Varosky
Abstract: “Why am I getting a security error??” “Why does my code work sometimes, but not others?” “I wonder if McDonalds is hiring.” Writing custom code in SharePoint opens up unlimited possibilities but also throws many hurdles in your way that will slow you down if you don’t take them into account. So, before giving up and searching for careers in the fast food industry, equip yourself with the knowledge you need to succeed in writing custom code for SharePoint.
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016Matt Raible
Building a modern web (or mobile) application requires a lot of tools, frameworks and techniques. This session shows how JHipster unites popular frameworks like AngularJS, Spring Boot and Bootstrap. Using Yeoman, a scaffolding tool for modern webapps, JHipster will generate a project that uses Java 8, SQL or NoSQL databases, Spring profiles, Maven or Gradle, Gulp.js, WebSockets and BrowserSync. It also supports a number of different authentication mechanisms: classic session-based auth, OAuth 2.0, or token-based authentication. For cloud deployments, JHipster includes out-of-the-box support for Cloud Foundry and Heroku.
So, you've made the ferpect Single Page Application. It has all the bells and whistles, and uses all the flashing new frameworks.
But how do you know it works, and how do you know that it will continue to work in this world of continuous delivery? This session will try to explain how to do end-to-edn testing of the system, how to test the application server code, and how to test the code the executes on the client.
I gave my first webinar for Codemotion about Progressive Web Apps (PWAs), the future of web development.
Video (soon in my youtube): https://www.youtube.com/watch?v=de1xiqz-BTE
Twitter: https://twitter.com/JGFerreiro
Linkedin: https://www.linkedin.com/in/jgferreiro/
- - -
I think Progressive Web Apps (PWAs) are the next revolution in web development. This practical workshop will explain the basics about PWAs as well as how to integrate it into your own application.
What we will cover:
• Caching requests and caching strategies.
• Setting up your PWA (manifest and progressive metadata)
• Payments Api, Local Web Notifications
• Other PWA functionalities.
- - -
Subscribe: https://www.ferreiro.me/newsletter
on https://www.twitter.com/jgferreiro
on https://www.linkedin.com/in/jgferreiro/
on https://www.instagram.com/jgferreiro/
A session at the Sela Developer Practice delivered jointly with Shai Raiten and Ofir Makmal from Sela. We provided an overview of the three primary mobile development paradigms -- native mobile apps (Windows Phone, iOS, Android), Xamarin, and PhoneGap.
The Cloud Foundry APIs provide a rich set of information for anyone trying to gain insight into the inner workings of the platform. This presentation explores some of the APIs, and provides some practical techniques for non-coder ways of interacting with those APIs.
HTML5 or Android for Mobile Development?Reto Meier
Android apps or the mobile web? It's often a hard choice when deciding where to invest your mobile development resources. While the mobile web continues to grow, apps and app stores are incredibly popular. We will present both perspectives and offer some suggestions for making the most of each platform.
EuroPython 2011 - How to build complex web applications having fun?Andrew Mleczko
Web development is a complexity challenge nowadays. Growing number of functionalities results in customer expectations increase which makes project design more difficult. Using proper tools that suite your customer needs is essential.
This talk is about successful story using closely together Pyramid and Plone. Basing on these examples you will see the main reasons for using Plone as a CMS only and letting Pyramid do the rest (vertical application).
I had the pleasure of talking at @media Ajax London in Westminster on Sept 15th 2008. I talked about the history of Gears and how it is converging with HTML 5 to give developers options.
Flexible UI Components for a Multi-Framework WorldKevin Ball
Slides from Flexible UI Components talk given at Web Unleashed 2017
Build UI components that work seamlessly in every JavaScript Framework.
Your core UI elements shouldn’t have to be different for your marketing site than they are in your application just because the former uses jQuery while the latter is built using Angular or React.
Lessons learned from work on ZURB Foundation 7.
Get Hip with JHipster - Colorado Springs OSS Meetup April 2016Matt Raible
Building a modern web (or mobile) application requires a lot of tools, frameworks and techniques. This session shows how JHipster unites popular frameworks like AngularJS, Spring Boot and Bootstrap. Using Yeoman, a scaffolding tool for modern webapps, JHipster will generate a project that uses Java 8, SQL or NoSQL databases, Spring profiles, Maven or Gradle, Gulp.js, WebSockets and BrowserSync. It also supports a number of different authentication mechanisms: classic session-based auth, OAuth 2.0, or token-based authentication. For cloud deployments, JHipster includes out-of-the-box support for Cloud Foundry and Heroku.
Best Practices in SharePoint Development - Just Freakin Work! Overcoming Hurd...Geoff Varosky
Abstract: “Why am I getting a security error??” “Why does my code work sometimes, but not others?” “I wonder if McDonalds is hiring.” Writing custom code in SharePoint opens up unlimited possibilities but also throws many hurdles in your way that will slow you down if you don’t take them into account. So, before giving up and searching for careers in the fast food industry, equip yourself with the knowledge you need to succeed in writing custom code for SharePoint.
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016Matt Raible
Building a modern web (or mobile) application requires a lot of tools, frameworks and techniques. This session shows how JHipster unites popular frameworks like AngularJS, Spring Boot and Bootstrap. Using Yeoman, a scaffolding tool for modern webapps, JHipster will generate a project that uses Java 8, SQL or NoSQL databases, Spring profiles, Maven or Gradle, Gulp.js, WebSockets and BrowserSync. It also supports a number of different authentication mechanisms: classic session-based auth, OAuth 2.0, or token-based authentication. For cloud deployments, JHipster includes out-of-the-box support for Cloud Foundry and Heroku.
So, you've made the ferpect Single Page Application. It has all the bells and whistles, and uses all the flashing new frameworks.
But how do you know it works, and how do you know that it will continue to work in this world of continuous delivery? This session will try to explain how to do end-to-edn testing of the system, how to test the application server code, and how to test the code the executes on the client.
I gave my first webinar for Codemotion about Progressive Web Apps (PWAs), the future of web development.
Video (soon in my youtube): https://www.youtube.com/watch?v=de1xiqz-BTE
Twitter: https://twitter.com/JGFerreiro
Linkedin: https://www.linkedin.com/in/jgferreiro/
- - -
I think Progressive Web Apps (PWAs) are the next revolution in web development. This practical workshop will explain the basics about PWAs as well as how to integrate it into your own application.
What we will cover:
• Caching requests and caching strategies.
• Setting up your PWA (manifest and progressive metadata)
• Payments Api, Local Web Notifications
• Other PWA functionalities.
- - -
Subscribe: https://www.ferreiro.me/newsletter
on https://www.twitter.com/jgferreiro
on https://www.linkedin.com/in/jgferreiro/
on https://www.instagram.com/jgferreiro/
A session at the Sela Developer Practice delivered jointly with Shai Raiten and Ofir Makmal from Sela. We provided an overview of the three primary mobile development paradigms -- native mobile apps (Windows Phone, iOS, Android), Xamarin, and PhoneGap.
Tools and Techniques for mobile learninggeoff stead
Best Of mLearn: Geoff Stead of Qualcomm presenting an updated version of their mLearnCon2013 session, which was voted the Best Of mLearnCon.
An inside view on some of the apps developed by Qualcomm's mLearning team, why they build them, and some of the tools they use
Top 4 Cross Platform tools for Mobile App Developmenttechugo
Scope of Cross Platform App Development is bright as developers and engineers find it easy and interesting to use a single code base to compile and deploy their app on all major mobile platforms. Top 4 Cross Platform Development tools are discussed here in the presentation, with few of their major pros and cons:
Developing and Designing Native Mobile Apps in Visual StudioXamarin
Xamarin is the only platform that allows you to build native iOS and Android apps in Visual Studio. Xamarin for Visual Studio lets developers use the tools, libraries, and design patterns they already know and love, including TFS and ReSharper, and allows developers to explore iOS and Android APIs fluently with IntelliSense, develop native iOS apps on Windows, and design incredible user interfaces for iOS and Android without leaving Visual Studio.
Join Xamarin Developer Evangelist James Montemagno as he gives an in-depth look at one of the best environments for developing native cross-platform apps for iOS, Android, and Windows phone.
Developing and Designing Native Mobile Apps in Xamarin StudioXamarin
With an inspired development environment comprised of powerful code completion, support for TestFlight and a dynamic, modern debugger, Xamarin Studio allows developers to build better apps for iOS, Android and Mac.
Join Xamarin Developer Evangelist Mike Bluestein as he gives a demo and in-depth look at some of our favorite Xamarin Studio features, including full support for NuGet packages, extensive documentation for the .NET Base Class Libraries (BCL), F# support, and the ability to build native user interfaces with our iOS and Android designers.
In recent days mobile application development has come up with providing a unique solution for the business.
http://www.ndot.in/mobile-application-development.html
This is a presentation to review and summarize the mobile websites that I have involved in. It includes many practical skills and my own experiences in the development of mobile websites.
Building AR and VR Experiences for Web Apps with JavaScriptFITC
It is increasingly important to understand how AR and VR technologies are changing what is possible to do in modern web applications. There are a lot of tools and technologies that you can choose from to tie all of the pieces together to start implementing AR and VR features, but not all of them are JavaScript or web friendly. In this talk Hasan will get into AR and VR development from the perspective of a web app developer who is competent with modern JavaScript and web development tools. He will also introduce a way to share what you build on the growing Oculus platform, and why Oculus is a great entry point for VR.
Objective
Learn how to approach your first feature or project involving AR or VR in your applications that run in browsers and mobile devices, all using JavaScript
Target Audience
Web application developers interested in building AR and VR driven features in their web applications
Assumed Audience Knowledge
JavaScript, web technology
Five Things Audience Members Will Learn
WebGL basics
Intro to React360
Working with Three.js
What types of use cases to apply AR and VR technology to
Building for Oculus
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Ryan Cuprak
Java EE 7 provides a strong foundation for developing the back end for your HTML5 mobile applications. This heavily code-driven session shows you how you can effectively utilize Java EE 7 as a back end for your Apache Cordova mobile applications. The session demonstrates Java EE 7 technologies such as JAX-RS 2.0, WebSocket, JSON-P, CDI, and Bean Validation. It provides an overview of the basics of Apache Cordova as well as the tooling support added in NetBeans 8. The session also demonstrates an integrated approach to rapidly developing HTML5 mobile applications with Java EE 7 and NetBeans and concludes with best practices and pitfalls.
2016: The Year to Align Marketing & IT DepartmentsYottaa
Understanding the importance of marketing and IT alignment is one thing, but setting a plan for execution is a difficult challenge for any enterprise to undertake. This process involves disrupting well-established processes and embracing new, often radical, ideas around how separate teams can work together to deliver web experiences that match the sky-high expectations of the modern Internet user.
These slides explore:
Prescriptive advice to balance engagement & performance
Identification of problematic vendor technologies before they wreak havoc on your site
Proper strategy development to apply personalization based on user context
How IT and Marketers must work together to achieve faster and more profitable websites
Optimizing Website Performance in the Age of Mobile & Social Yottaa
With the rise of social media and targeted ads, marketers and merchandisers increasingly rely on deep linking to increase brand awareness & equity and to drive customer acquisition and retention. Deep linking consists of linking to specific content other than the homepage. For example, brands routinely tweet about special offers or use Pinterest to drive awareness and conversions via specific products or content.
The challenge with deep linking for most enterprises is the ability (or inability) to optimize every page and every piece of content across their websites. In this webinar, Ari Weil of Yottaa will discuss deep linking and how etailers can:
Ensure continuous, real-time acceleration and security for every page
Handle the challenge posed by rapidly-changing or newly-created content that is not optimized for performance across all desktop and mobile use cases
Improve the performance of 3rd party content
Adapt optimizations over time through machine learning from real-world interaction
NextGen CDNs: Webinar with Dan Rayburn of Frost and Sullivan and Ari Weil of ...Yottaa
Today’s customers are an impatient lot. They want the information they need when they need it, at the click of a mouse or a swipe of a tablet or smartphone. You have only milliseconds to grab their attention and complete the transaction.
Traditional approaches to speeding application performance, such as CDNs (content delivery networks) or ADNs (application delivery networks), just don't cut it anymore. These technologies cannot deliver the application experiences users have come to expect.
In this webinar, Dan Rayburn, Principal Analyst at Frost & Sullivan, and Ari Weil, Vice President of Product Marketing for Yottaa, will discuss the next generation of CDNs and describe the elements required to automatically, intelligently and in real time speed the flow of the data each user needs at any time to their specific device.
Mobile Optimization Tips from Yottaa - MEGMeetup #1Yottaa
Google recently announced that it will be changing the way search results are ranked for mobile browsers. tl;dr to webmasters: stop phoning in your mobile site optimizations if you want to...well, reach people on their phones. Google's announcement makes three main points: first, mobile browsing comprises a significant part of web traffic; second, web performance optimization is critical to end user experience; and finally, end users demand a device-specific and complete mobile browsing experience.
In this talk we took a look at the recent and projected growth in mobile browsing, reviewed findings on how perceived and real performance problems impact users' browsing behavior, and provided useful tips and tools to maximize your site's mobile search ranking.
Palestine last event orientationfvgnh .pptxRaedMohamed3
An EFL lesson about the current events in Palestine. It is intended to be for intermediate students who wish to increase their listening skills through a short lesson in power point.
The Art Pastor's Guide to Sabbath | Steve ThomasonSteve Thomason
What is the purpose of the Sabbath Law in the Torah. It is interesting to compare how the context of the law shifts from Exodus to Deuteronomy. Who gets to rest, and why?
Instructions for Submissions thorugh G- Classroom.pptxJheel Barad
This presentation provides a briefing on how to upload submissions and documents in Google Classroom. It was prepared as part of an orientation for new Sainik School in-service teacher trainees. As a training officer, my goal is to ensure that you are comfortable and proficient with this essential tool for managing assignments and fostering student engagement.
How to Create Map Views in the Odoo 17 ERPCeline George
The map views are useful for providing a geographical representation of data. They allow users to visualize and analyze the data in a more intuitive manner.
We all have good and bad thoughts from time to time and situation to situation. We are bombarded daily with spiraling thoughts(both negative and positive) creating all-consuming feel , making us difficult to manage with associated suffering. Good thoughts are like our Mob Signal (Positive thought) amidst noise(negative thought) in the atmosphere. Negative thoughts like noise outweigh positive thoughts. These thoughts often create unwanted confusion, trouble, stress and frustration in our mind as well as chaos in our physical world. Negative thoughts are also known as “distorted thinking”.
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptxEduSkills OECD
Andreas Schleicher presents at the OECD webinar ‘Digital devices in schools: detrimental distraction or secret to success?’ on 27 May 2024. The presentation was based on findings from PISA 2022 results and the webinar helped launch the PISA in Focus ‘Managing screen time: How to protect and equip students against distraction’ https://www.oecd-ilibrary.org/education/managing-screen-time_7c225af4-en and the OECD Education Policy Perspective ‘Students, digital devices and success’ can be found here - https://oe.cd/il/5yV
The Roman Empire A Historical Colossus.pdfkaushalkr1407
The Roman Empire, a vast and enduring power, stands as one of history's most remarkable civilizations, leaving an indelible imprint on the world. It emerged from the Roman Republic, transitioning into an imperial powerhouse under the leadership of Augustus Caesar in 27 BCE. This transformation marked the beginning of an era defined by unprecedented territorial expansion, architectural marvels, and profound cultural influence.
The empire's roots lie in the city of Rome, founded, according to legend, by Romulus in 753 BCE. Over centuries, Rome evolved from a small settlement to a formidable republic, characterized by a complex political system with elected officials and checks on power. However, internal strife, class conflicts, and military ambitions paved the way for the end of the Republic. Julius Caesar’s dictatorship and subsequent assassination in 44 BCE created a power vacuum, leading to a civil war. Octavian, later Augustus, emerged victorious, heralding the Roman Empire’s birth.
Under Augustus, the empire experienced the Pax Romana, a 200-year period of relative peace and stability. Augustus reformed the military, established efficient administrative systems, and initiated grand construction projects. The empire's borders expanded, encompassing territories from Britain to Egypt and from Spain to the Euphrates. Roman legions, renowned for their discipline and engineering prowess, secured and maintained these vast territories, building roads, fortifications, and cities that facilitated control and integration.
The Roman Empire’s society was hierarchical, with a rigid class system. At the top were the patricians, wealthy elites who held significant political power. Below them were the plebeians, free citizens with limited political influence, and the vast numbers of slaves who formed the backbone of the economy. The family unit was central, governed by the paterfamilias, the male head who held absolute authority.
Culturally, the Romans were eclectic, absorbing and adapting elements from the civilizations they encountered, particularly the Greeks. Roman art, literature, and philosophy reflected this synthesis, creating a rich cultural tapestry. Latin, the Roman language, became the lingua franca of the Western world, influencing numerous modern languages.
Roman architecture and engineering achievements were monumental. They perfected the arch, vault, and dome, constructing enduring structures like the Colosseum, Pantheon, and aqueducts. These engineering marvels not only showcased Roman ingenuity but also served practical purposes, from public entertainment to water supply.
Welcome to TechSoup New Member Orientation and Q&A (May 2024).pdfTechSoup
In this webinar you will learn how your organization can access TechSoup's wide variety of product discount and donation programs. From hardware to software, we'll give you a tour of the tools available to help your nonprofit with productivity, collaboration, financial management, donor tracking, security, and more.
Operation “Blue Star” is the only event in the history of Independent India where the state went into war with its own people. Even after about 40 years it is not clear if it was culmination of states anger over people of the region, a political game of power or start of dictatorial chapter in the democratic setup.
The people of Punjab felt alienated from main stream due to denial of their just demands during a long democratic struggle since independence. As it happen all over the word, it led to militant struggle with great loss of lives of military, police and civilian personnel. Killing of Indira Gandhi and massacre of innocent Sikhs in Delhi and other India cities was also associated with this movement.
3. @yottaa #WebPerf
Prioritize based on volume
Share (%) of Smartphone Subscribers
January 2013 April 2013 Delta
Google 52.3% 52.0% -0.3%
Apple 37.8% 39.2% 1.4%
BlackBerry 5.9% 5.1% -0.8%
Microsoft 3.1% 3.0% -0.1%
Symbian 0.5% 0.5% 0.0%
http://bit.ly/1bRw6FC
4. @yottaa #WebPerf
Prioritize further: who are your users?
Your momma’s… got game!
It’s actually Gen-Xers.
Millennials are into
fitness & entertainment
http://blog.flurry.com/
5. @yottaa #WebPerf
What do your target users do and use?
80% of mobile
interaction is via
native apps
HTML5 apps are
great for:
• Productivity
• News
• Generally - forms
http://bit.ly/17G1Ng5
6. @yottaa #WebPerf
Why are only 6% of apps HTML5?
No app store makes
it more difficult to
monetize
Build once, run
everywhere
translates to optimize
everywhere
HTML5’s “good
enough” experience
isn’t always good
enough
7. @yottaa #WebPerf
For LinkedIN it the ecosystem was lacking
2012: HTML5 for efficiency & agility
8-10%
Mobile
users
Apps
running
out of
Memory
Lacked
testing &
profiling
2013: Native for user experience
Majority of
Traffic from
mobile
Better
features (use
HTML5, CSS
for email)
Apple and
Google drive
innovation
http://bit.ly/15NdyAg
8. @yottaa #WebPerf
High-level Overview
Governing body: W3C
• 5 years to ratify…
• 200+ browser
interpretations
More security
vulnerabilities
• Can’t encrypt cached
data
• Encrypting data in motion
compromises
performance
9. @yottaa #WebPerf
High-level Overview
Governing bodies: Apple and
Google
• At least one release/year
• iOS is highly standardized
& regulated
• More Android variety, but
still finite (~30 varieties vs.
over 200 for HTML5)
Better user experience
• Fewer security
vulnerabilities
• Device-specific
functionality is richer
10. @yottaa #WebPerf
OK, to be fair…
http://blog.flurry.com
Over the past two years, Android has had 21 updates to their browser.
11. @yottaa #WebPerf
What do you hold most dear?
1. User experience
2. Performance
3. Monetization
4. X-plat deployment $$
5. Fragmentation
6. Programming expertise
7. Updates & distribution
8. New innovation timeline
9. Security
12. @yottaa #WebPerf
A bit of trivia
http://bit.ly/15iQlqz
STARTUP TIME W/8 TABS
AVERAGE STARTUP TIME
40-TAB LOAD (CACHED, HOT)
WEBKIT SUNSPIDER
JSBENCH
FACEBOOK JSGAMEBENCH
HARDWARE ACCELERATION
PAGE LOAD RELIABILITY
OVERALL WINNER
13. @yottaa #WebPerf
Test…Testing…Testing 1, 2, 3
Question: How do your features
Appear to
your users?
Behave in
the wild?
Impact the
device?
Perform across
networks?
15. @yottaa #WebPerf
To Emulate or Simulate?
Emulator
• Mimics device hardware & software
• Android developers tend to complain about
performance
• Emulates GPU but tends to lag (instructions translated
to x86)
Simulator
• Mimics device software
• Apple stresses device testing b/c disk space, CPU &
memory speed different
• Faster cycle times, but requires recompiling to device
http://bit.ly/17G2hTH
16. @yottaa #WebPerf
How to determine browser features
• UA sniffing
– Poor choice – detects
navigator.userAgent
– User agent string may have changed
– New browser versions or flavors
• Feature detection
– HTML5 + CSS3
– JavaScript
17. @yottaa #WebPerf
rng.io - Ringmark
OSS maintained by Facebook @
https://github.com/facebook/rng.io
Native UX testing & development
Works with existing W3C tests
Full list of supported features across
browsers: http://bit.ly/1c0jDOj
Check whether an API is usable &
produces expected, specified output
18. @yottaa #WebPerf
Grab the brass browser ring
Ring 0
State of the world today.
Actively used mobile web features.
• Application Cache
• Canvas
• CSS 2.1
• CSS 3D Transforms
• CSS3 Animation
• CSS3 Background
• CSS3 Color
• CSS Min, Max
• CSS Opacity
• CSS3 Text
• CSS3 2D Transforms
• CSS3 Transitions
• CSS3 UI
• CSS3 Values
• Data URL
• Doctype
• Geolocation
• JSON
• Masking Images
• Web Messaging
• Progress Event
• Prompts
• Selectors 2
• Video
• Viewport
• Web Storage
Ring 1
Enable 2D game, audio, video, camera
Most popular types of mobile apps today.
• Audio, Multi-Track
• Blob
• CSS3 Background, Standard
• CSS3 Fonts
• CSS3 MediaQueries
• CSS Overflow Scrolling
• CSS Position Fixed
• CSS3 Text, Standard
• CSS3 UI, Standard
• Device Orientation Event
• FileReader
• FormData
• HTML5 Forms, Inputs
• Hashchange
• History
• Media Capture Input
• IndexedDB
• Multi Touch Event
• Offline Mode
• Ring 1 Performance
• Touch Event
• URL
• Web Workers
• XHR2
Ring 2
3D games, messaging, video streaming
Work in progress.
• Animation Timing
• Canvas 3D
• Canvas 3D, Standard
• CSS Unspecified
• CSS3 Animation, Standard
• CSS3 BorderImage
• CSS Element
• CSS3 Flexbox
• CSS3 Flexbox, Standard
• CSS3 Images
• CSS3 Images, Standard
• CSS Overflow Scrolling, Standard
• CSS3 2D Transforms, Standard
• CSS3 Transitions, Standard
• Custom Data Attributes
• Fullscreen
• HTML5 Layout & Semantic
• Iframe Sandboxing
• IndexedDB, Standard
• Performance Timing
• Network Info
• Notifications
• Ring 2 Performance
• SharedWorkers
• SVG
• SVG Animation
• SVG Inline
• Video Tracks
• Vibration
• Page Visibility
• WebRTC (Real time Audio & Video)
20. @yottaa #WebPerf
Lord of the Rings: Dolphin (and BB10)
Also: http://www.browserscope.org/?category=ringmark&v=top-m
http://www.youtube.com/watch?v=8KAXh81hIwY
21. @yottaa #WebPerf
Modernizr
javascript library
For development
with HTML5 + CSS3
Ensure support for
old browsers
Checks for native
browser support of
new web features
Generates custom
object to test what
you need
22. @yottaa #WebPerf
Example method in Modernizr
Polyfills are
scripts that
simulate the
behavior of
native API in
older browsers
This method:
Modernizr.load
has been
released
standalone as
yesnope.js
Modernizr.load([
{
// Logical list of things we would normally need
test : Modernizr.fontface && Modernizr.canvas && Modernizr.cssgradients,
// Modernizr.load loads css and javascript by default
nope : ['presentational-polyfill.js', 'presentational.css']
},
// Functional polyfills
{
// This just has to be truthy
test : Modernizr.websockets && window.JSON,
// socket-io.js and json2.js
nope : 'functional-polyfills.js',
// You can also give arrays of resources to load.
both : [ 'app.js', 'extra.js' ],
complete : function () {
// Run this after everything in this group has downloaded
// and executed, as well everything in all previous groups
myApp.init();
}
},
// Run analytics after you've already run the rest of your app.
'post-analytics.js'
]);
23. @yottaa #WebPerf
Using Modernizr
Modernizr.load([
{
load: '//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js',
complete: function () {
if ( !window.jQuery ) {
Modernizr.load('js/libs/jquery-1.7.1.min.js');
}
}
},
{
// This will wait for the fallback to load and
// execute if it needs to.
load: 'needs-jQuery.js'
}
]);
• Modernizr attempts
to load a script that
requires jQuery
• Immediately after, it
tests to determine
whether the jQuery
object is available
• If not, loads a local
copy of jQuery
WIN: Modernizr.load
handles the execution
order for you.
24. @yottaa #WebPerf
Useful Links
The All-In-One Entirely-Not-Alphabetical No-
Bullshit Guide to HTML5 Fallbacks (yes, really)
http://bit.ly/12griWY
Writing Cross-Browser JavaScript Polyfills
http://addyosmani.com/blog/writing-polyfills/
Ultimate Guide to Mobile Emulators & Simulators
http://www.mobilexweb.com/emulators
25. @yottaa #WebPerf
Has.js
phiggins42./has.js
on Github
For development
with JavaScript
Self-contained tests
& unified framework
Checks for native
browser support of
JavaScript features
Modular/a-la-carte to
test only what you
need
if(has("function-
bind")){
// your enviroment
has a native
Function.prototype.bin
d
}else{
// you should get
a new browser.
}
28. @yottaa #WebPerf
Close Connections
HttpURLConnection getimagecloseconn = (HttpURLConnection)
urln.openConnection();
getimagecloseconn.setRequestProperty("connection", "close");
getimagecloseconn.connect();
String cachecontrol = getimagecloseconn.getHeaderField("Cache-
Control"); InputStream isclose =
getimagecloseconn.getInputStream();
bitmap = BitmapFactory.decodeStream(isclose);
getimagecloseconn.disconnect();
>80% of apps DO NOT close connections!
29. @yottaa #WebPerf
Cache Your Data
• 17% of mobile traffic is duplicate downloads
– Reading from local cache is 75-99% faster than downloading
from the web
– Even when supported, it’s OFF by default!!
• Each file uniquely tagged, revalidated for
reach request
– Requests use the radio, drain the battery
– Also add 500-3,000 ms of latency
• Carefully assign Max-Age times
– App won’t check for the file on server until reached
– Retrieval is strictly file processing: up to 98% faster, no radio
http://soc.att.com/138bhRJ http://yhoo.it/1c6wcHV
30. @yottaa #WebPerf
Manage Connections
if (Tel.getDataActivity() >0){
if (Tel.getDataActivity() <4){
//ok, we are passed the minimum time to check //and we found
network activity-
//download the image here using image getter
imagegetter(counter, numberofimages); //and show the ad
AdRequest adRequest = new AdRequest();
adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
adView.loadAd(adRequest);
// Initiate a generic request to load it with an ad
adView.loadAd(new AdRequest());
Grouping data, ads, analytics can save > 50%
32. @yottaa #WebPerf
DIY - Move Yourself
• Lose the signal
– Find a basement or elevator
• Mix it up
– Walk in and out of WiFi areas
• Have a cuppa
– Find slow, saturated WiFi (coffee shop, train)
• Shut up and drive
– Ride along in a car to swap towers, signals
• Paint a picture
– Map your findings to understand and prioritize
http://bit.ly/14MOmNr
34. @yottaa #WebPerf
Yottaa
Mobile Performance Testing
Understand performance across the globe
See iOS and Android end user rendering (diffs)
Verify graceful degradation across various networks
Mobile Monitoring
Eliminate downtime, errors
Understand site performance & competitive position
Prioritize optimization, feature work w/historical analysis
Mobile Optimization
Overcome slow / variable networks with adaptive infrastructure
Optimize dynamic content: offload bandwidth, intelligently cache, adapt images
Maximize user experience with federated CDN delivery, global server load balancing
Guarantee availability and network elasticity by analyzing and managing traffic
http://www.yottaa.com
35. @yottaa #WebPerf
In Summary
Heavily tested hybrid apps are most likely the ideal solution
Native is more
work, but nets a
better experience
There is no
substitute for real
world testing
If there’s a tool, use
it! ARO, Ringmark,
Modernizr, Yottaa
Mobile networks are
unreliable. Code for
graceful degradation
Appcelerator/IDC’s Q2 2012 survey of 3,600+ developers found that 6% of applications were targeted for development in HTML5 1.25 million native applications versus 75,000 HTML5 applications in production today in public app stores: these are telling statistics.400,000,000 accounts tied to credit cards in Apple’s app store, This is the largest number of participants for a transactional site on the Internet. Consumers have downloaded 30 billion apps and Applehas written checks for over $5 billion to developers. The store is now available in over 155 countries around the world. However, costs can be prohibitive when building native applications on every required OS. In the same developer survey referenced above, 80% of developers expressed the need to deploy their applications on more than one operating system. Development team costs need to be doubled or tripled to deliver this native experience on multiple OSes (if those developers can even be found and hired).
It’s ideal to keep rendered content for instant switching back. However you could only do that if memory management is done optimally. There’s only so much you could keep until the app crashes running out of memory.
Over 28 implementations by multiple manufacturers (e.g. HTC, Samsung, Motorola, Kindle, Google itself, Sony and more), the pains associated with writing an application for Android deployment are well documented.
It works by trying to load in the script, and then immediately after, testing to see if the jQuery object is available. If It’s not, then they load a local copy of jQuery as a fallback. This is generally not that easy in script-loaders, but Modernizr.load has got you covered. You can just use the same logic, and Modernizr.load will handle the execution order for you: