Responsive Web design challenges Web designers to adapt a new mindset to their design and coding processes. This talk provides an overview of various practical techniques, tips and tricks that you might want to be aware of when working on a new responsive design project.
jQuery is a lightweight JavaScript library that makes HTML document traversal and manipulation, event handling, animation, and Ajax interactions easier. It takes common tasks that require many lines of JavaScript code and wraps them into methods that can be called with a single line of code. Originally created in 2006, jQuery simplifies HTML document navigation and manipulation, as well as event handling, CSS animation, and Ajax interactions for rapid web development. It has a simple syntax of $() selector and action() methods and is now one of the most popular JavaScript libraries.
Make your own Print & Play card game using SVG and JavaScript
Want to leverage your creativity, love of board games, and web platform experience to do something different? Turn your imagination into a Print & Play card game using only a modern web browser, color printer and text editor.
This session will use the Scalable Vector Graphics (SVG) image format and JavaScript programming language to make a deck of cards for a simple game. Creating a few cards in graphics software like Inkscape is one thing, but what about 50 or 100 cards? What happens when you need to update them all? That’s the value of generating your SVG using JavaScript.
We will start with a blank screen, adding color and graphics elements like lines, shapes, text and images. Learn about container elements and defining content for re-use. Understand how units in the SVG coordinate system can transform our on-screen creation into an 8.5 by 11 inch printed page (or PDF). SVG examples will be both in their native XML format and created from JavaScript using Snap.svg, an open source library from Adobe designed for modern web browsers.
You will leave this session with a basic knowledge of SVG concepts, how to programmatically generate SVG using JavaScript, and how to make your SVG creation printer friendly.
SVG (Scalable Vector Graphics) is a XML-based format for defining vector graphics. It allows graphics to be scalable, zoomable and searchable. Common SVG shapes that can be created include circles, rectangles, ellipses, lines, and paths. Attributes like cx, cy, r are used to define properties of circles and ellipses, while x1, y1, x2, y2 define the start and end points of a line. SVG graphics do not lose quality when resized.
Code at http://people.opera.com/cmills/css3book/css3-html5-dnrmn.zip. The browser vendors love them! The browser fans and cutting edge designers are producing some really remarkable stuff, but what do HTML5 and CSS3 really mean for you, the pragmatic designer on the street? If you sidle up to one of those guys and whisper "but what about IE6 support", they are likely to slap you in the face, or run away with their hands clamped over their ears, yelling "la lala lala, I can't hear you." In this talk, Chris Mills will have a look at some of the new features of HTML5 and CSS3 - new semantics, video, media queries, rounded corners, web fonts, drop shadows and more. He will show real world examples, and then look at how they actually perform on those shady older browsers we are often called on to support. He will then look at strategies for providing support for those older browsers, including using JavaScript, fallbacks, and progressive enhancement.
This document introduces Scalable Vector Graphics (SVG) and provides an overview of its history, capabilities, and structure. Key points include:
- SVG was developed as an open standard by the W3C to provide rich, reusable visual content for the web using XML.
- SVG allows for vector graphics that can be scaled, manipulated via scripting, styled with CSS, and more. It provides many advantages over raster graphics.
- As an XML format, SVG files are small in size, resolution-independent, and can be dynamically generated and styled on the client-side via JavaScript.
- The document outlines SVG's emergence and development timeline, its structure as an XML language, and its
HTML5: An Introduction To Next Generation Web Development
HTML5 is the next generation web development standard that improves upon HTML4 and XHTML. It focuses on features rather than syntax, and includes new elements like <article> and <section>, native audio/video support, drawing APIs, geolocation, drag and drop, web forms 2.0, and more. HTML5 aims to improve multimedia capabilities while keeping code readable by humans and machines. It is supported by all major browsers, though support for specific features may vary, and polyfills can help with backwards compatibility.
[SF HTML5] Responsive Cross-Device Development with Web Standards (2013)
This document discusses cross-device development using web standards. It covers the concepts of adaptive design, responsive design, fluid layouts, media queries and responsive images. For layouts, it discusses moving from fixed tables and floats to newer CSS techniques like flexible boxes, multi-column layouts, and CSS grids. It provides examples of fluid layouts using these techniques. It also covers media queries in depth, including using them for breakpoints, device characteristics like orientation and resolution. The document discusses challenges and solutions for responsive images, including resolution switching, art direction, high DPI images, and emerging standards like srcset and the picture element.
Iasi code camp 12 october 2013 responsive images in the wild-vlad zelinschi
The document discusses responsive images and different solutions for optimizing images for responsive design. It begins by providing context on responsive design and the challenges of supporting different devices. It then focuses on images, explaining their importance but also the issues they can cause for performance. The document evaluates several solutions for responsive images including CSS media queries, SVG, Picturefill.js and the proposed picture element. It concludes by noting there is no perfect solution and developers should choose based on their specific needs and constraints.
The document discusses HTML5 and provides an agenda for an HTML5 training session. It introduces HTML5 and covers new HTML5 elements, the <canvas> element for drawing graphics, and how to draw paths, boxes, circles and text on the canvas using JavaScript. It also briefly mentions HTML5 features for media, storage, and forms.
This document provides an introduction to Scalable Vector Graphics (SVG). It begins with an agenda that outlines topics including what SVG is, why it should be used, tools for working with SVG, and sample artwork. The document then discusses the history and standards behind SVG, how it works as a vector format, and why it may be preferable to other formats like JPEG, PNG, Flash or Silverlight. Browser support, manual and programmatic production of SVG files, and related resources are also covered. The document concludes with an invitation for questions.
The document discusses responsive design techniques for desktop and mobile interfaces. It covers:
- Adapting layouts using AlloyUI Viewport and media queries to target different screen sizes.
- Dynamically retrieving data using the Pjax utility and ScrollInfo plugin.
- The future potential of CSS Flexbox layout for complex responsive designs.
7 Things Testers Should Know About The Cloud with Bill Wilder & XBOSoft March...
“Software designed to take advantage of public cloud features is different from traditional software. It stands to reason that testing such software will require some different insights and approaches.”
-- Bill Wilder, Windows Azure, MVP
In this talk, author and cloud consultant Bill Wilder covers 7 Things testing pros ought to know about the public cloud. The tips span cloud tools for better process and execution, walks you through real examples in Windows Azure, and highlights considerations to streamline the process between dev and test.
Whether you want to add some serious eye candy to your XPages Applications or just want to do more with less code, jQuery, the world’s most popular JavaScript framework can help you. Come to this webinar and find out how you can use some of the thousands of jQuery plugins, in harmony with Dojo, within your XPages applications to create a better experience not only for your users, but for you as a developer. In this webinar, we'll look at how jQuery works, how to add it to your XPages, and how a complete JavaScript beginner can take advantage of its power. We'll demonstrate many working examples -- and a sample database will be provided.
HTML5 contains many new interesting features that make the platform a capaple development platform. Sockets, SVG, geolocation, local storage and many more are included in the platform. In this one hour session, we will look at cool implementations of 10 features of HTML5
This document provides an overview of a presentation on using D3 for data visualization on desktops, smartphones, and Google Glass. It discusses how D3 works, examples of basic charts like scatter plots and bar charts using D3, and how to incorporate features like mouse interactions, animations, filters and gradients. It also covers using D3 with technologies like Android, PhoneGap, and Google Glass to create mobile visualizations.
This document provides an overview of a presentation on using D3 for data visualization on desktops, smartphones, and Google Glass. It discusses topics like what D3 is, how it works, examples of creating simple charts and adding interactivity with mouse events, using SVG filters and gradients, and integrating D3 visualizations into Android and Google Glass apps. It also briefly mentions related technologies, resources for learning more, and potential training topics.
Este documento analiza el uso real de datos abiertos ("opendata") en gobiernos. Clasifica los tipos de información que los gobiernos suelen publicar como datos abiertos, como información geográfica, meteorológica, económica, social, de tráfico, turismo y agricultura. También muestra estadísticas sobre qué datos son los más descargados en las comunidades autónomas del País Vasco y Navarra, como calendarios laborales y mapas. El objetivo final es medir el retorno de la inversión de public
Este documento analiza el valor real del uso de datos abiertos (opendata). Presenta un diagrama sobre el "círculo estúpido" de la implementación de opendata por parte de políticos y ciudadanos. Luego enumera diferentes formas en que los datos abiertos podrían generar valor a través de ingresos fiscales, ahorros en servicios sociales, mejoras en productividad, y reducciones en corrupción y evasión fiscal. Finalmente, clasifica los tipos de información pública disponible como datos abiertos en diferentes regiones de España.
This document discusses 3D graphics techniques using CSS3, jQuery, CSS shaders, and WebGL. It provides demonstrations of 3D effects created with only CSS3 and jQuery mobile code. CSS shaders and WebGL allow more complex 3D graphics by using vertex and fragment shaders. Toolkits like Three.js and tQuery.js simplify working with WebGL. The document recommends books and meetups for learning more about these technologies.
The document discusses how open data from cities can enable third party developers to create applications that improve city services and quality of life for citizens. It provides examples of applications developed using open data from various cities, including Barcelona, Amsterdam, and cities around the globe. These applications have been successful and in some cases outcompeted the cities' own applications. The document advocates for cities to release more open data to enable more third party innovation and improve services for citizens.
This document discusses data binding in Android development. It begins by explaining what data binding is, which is connecting UI components to data sources. It then shows how data binding improves upon traditional MVC patterns. The document proceeds to demonstrate how to implement data binding through layout files, view models, and generated binding classes. It explores observable objects, collections, and fields to notify UI of data changes. Attribute bindings and custom bindings are also covered to extend XML and reduce boilerplate code. Overall, the document promotes data binding as a way to write less code, build more maintainable apps, and enable easier testing through separation of UI and logic.
Data binding is a declarative way to bind UI components to application data sources. It minimizes code needed to bind layouts to data and supports MVVM pattern. Data binding engine allows binding layouts to observable data sources and updating UI automatically when data changes. It works on Android 2.1+ and uses XML syntax like <layout> and @{} to bind variables and call methods.
Infinum Android Talks #14 - Data binding to the rescue... or not (?) by Krist...
We're checking out new data binding lib announced on the last Google I/O. We'll go in depth of data binding - goals, benefits and drawbacks. Less code should mean less bugs - in theory.
This document provides an overview of SVG, CSS3, and D3 for beginners. It covers key SVG elements like <line>, <ellipse>, <rect>, <polygon>, and <path> as well as features like gradients, filters, transforms and animation. It also demonstrates CSS3 concepts like rounded corners, gradients and transforms. Examples are provided in HTML files with linked CSS style sheets. The document then introduces D3, an open source JavaScript library for data visualization that uses SVG, HTML and CSS. Key D3 concepts, functionality and use cases are outlined.
The document discusses features of SVG and D3, including different SVG elements, colors/gradients/filters, transforms and animation, and how D3 builds upon SVG to enable data visualization. It provides examples of creating basic SVG shapes and charts with D3, binding data to DOM elements, adding mouse interactions and transitions. It also covers using D3 with other technologies like Angular, working with different data formats and large datasets, and transpires for working with modern JavaScript.
This document provides an introduction and overview of React Native, including what it is, how it works, and how to set it up for both iOS and Android development. It discusses some key differences between React Native and traditional web development, provides code samples and explanations of common React Native components and patterns, and outlines steps for creating a new React Native project. It also addresses common errors and links to additional documentation resources.
This document provides an overview of using NFC (Near Field Communication) on Android devices. It discusses registering an NFC intent filter in the manifest to listen for NDEF tags, handling foreground NFC dispatch, interacting with tags using the NfcAdapter class, and reading the payload of NDEF tags which can contain text, URIs, or other data. Future posts will describe extracting specific information from different tag types.
This document summarizes AngularJS scopes, digest cycles, data binding, dependency injection, and modularity. It discusses how scopes are created and inherited, how to use $digest and $watch, how expressions are evaluated, the benefits of dependency injection, and best practices for managing modules. Key recommendations include trusting the scope hierarchy, using $apply instead of $digest, avoiding non-isolated directives, and structuring code into independent, testable modules.
This document provides an overview of TypeScript, including:
- What TypeScript is and how it supports features like interfaces, classes, and subclasses
- How TypeScript uses a compiler to provide type checking and transpiles code to JavaScript
- Examples of using basic TypeScript syntax like types, functions, classes, and interfaces
- How to set up a TypeScript development environment and use the tsc compiler
- Popular IDEs and resources for learning more about TypeScript
The document discusses testing Android apps using data binding and MVVM. It covers setting up the MVVM architecture with a Note taking app example. It discusses using the Model-View-ViewModel pattern with data binding in Android. It also discusses how to write JVM unit tests for the ViewModel and mock dependencies by using stubs and spies.
This document provides an overview of a workshop on working with ECMA5 and ES6 including promises. The workshop will cover nested functions/closures, arrow functions, promises, and other ECMA5/ES6 features useful for ReactJS and Angular 2. It includes examples of functions, closures, filter, map, reduce, and promises as well as exercises for participants. Promises are introduced as a way to avoid callback hell and determine success/failure asynchronously.
The document discusses using Java with HTML5 and related technologies like CSS3 and WebSockets. It provides an overview of HTML5 features like Canvas, SVG, CSS3 animations, and WebSockets. It describes how these features can be used to build interactive client-side applications and how Java servers can integrate with HTML5 apps by saving/retrieving application state and graphics from the client. Java servers can generate graphics like SVG dynamically based on data from HTML5 clients.
Engin Yağız Hatay gave a presentation on graphics and animation capabilities in web browsers. He discussed several technologies including CSS3, Canvas, SVG, and WebGL, and when each is best suited. He provided details on HTML5 Canvas capabilities and limitations. Hatay also covered browser support for these technologies and recommended several JavaScript libraries that can be used to create graphics and animations, including PaperJS, ProcessingJS, and ThreeJS. He concluded with a discussion of tools and frameworks for mobile graphics development.
Vector graphics allow shapes to be mathematically represented and scaled smoothly, while raster graphics use a grid of pixels. SVG is an XML format for describing vector shapes and is supported natively by modern browsers. DojoX GFX provides a normalized API for creating vector graphics across browsers using SVG, VML, Canvas, or Silverlight depending on browser support. It implements a procedural subset of SVG for creating shapes and text programmatically similar to the canvas API.
This document summarizes different vector graphic options for use on the web. It discusses the differences between vector and raster graphics, and why vectors are preferable for resolution independence and smaller file sizes. It then examines SVG, Canvas, VML, and CSS3 as vector graphic options, outlining browser support, APIs, and common uses for each. While SVG is ideal theoretically, browser support is still limited, so libraries like SVG Web and Raphael.js are recommended to abstract cross-browser differences. In the end, SVG is generally better than Canvas for interactive graphics with events, while Canvas may be better for full-screen animations and games.
Doris Chen is a senior developer evangelist at Microsoft who focuses on web technologies like JavaScript and HTML5. Her presentation covers optimizing Cordova app performance, including measuring startup cost and memory usage, using CSS for gradients instead of images, animating with translate3d instead of left/top, and handling events through bubbling instead of individual listeners. She provides tips like keeping the DOM simple, batching layout changes, and cleaning up unused objects to prevent memory leaks.
Slides for presentation at DrupalCon Munich August 2012
http://munich2012.drupal.org/program/sessions/backbonejs-frontend
Author: David Corbacho
http://corbacho.info
SVG For Web Designers (and Developers) Sara Soueidan
1. The document discusses using SVG for web design, including creating SVG images, optimizing them, and embedding them onto web pages.
2. Designers are advised to use simple shapes over complex paths and to simplify paths when creating SVG images.
3. SVG images can be combined into a single file and referenced on web pages using the <symbol> and <use> elements, providing a method of "spriting" SVG images.
Responsive Web Design: Clever Tips and TechniquesVitaly Friedman
Responsive Web design challenges Web designers to adapt a new mindset to their design and coding processes. This talk provides an overview of various practical techniques, tips and tricks that you might want to be aware of when working on a new responsive design project.
jQuery is a lightweight JavaScript library that makes HTML document traversal and manipulation, event handling, animation, and Ajax interactions easier. It takes common tasks that require many lines of JavaScript code and wraps them into methods that can be called with a single line of code. Originally created in 2006, jQuery simplifies HTML document navigation and manipulation, as well as event handling, CSS animation, and Ajax interactions for rapid web development. It has a simple syntax of $() selector and action() methods and is now one of the most popular JavaScript libraries.
Make your own Print & Play card game using SVG and JavaScriptKevin Hakanson
Want to leverage your creativity, love of board games, and web platform experience to do something different? Turn your imagination into a Print & Play card game using only a modern web browser, color printer and text editor.
This session will use the Scalable Vector Graphics (SVG) image format and JavaScript programming language to make a deck of cards for a simple game. Creating a few cards in graphics software like Inkscape is one thing, but what about 50 or 100 cards? What happens when you need to update them all? That’s the value of generating your SVG using JavaScript.
We will start with a blank screen, adding color and graphics elements like lines, shapes, text and images. Learn about container elements and defining content for re-use. Understand how units in the SVG coordinate system can transform our on-screen creation into an 8.5 by 11 inch printed page (or PDF). SVG examples will be both in their native XML format and created from JavaScript using Snap.svg, an open source library from Adobe designed for modern web browsers.
You will leave this session with a basic knowledge of SVG concepts, how to programmatically generate SVG using JavaScript, and how to make your SVG creation printer friendly.
SVG (Scalable Vector Graphics) is a XML-based format for defining vector graphics. It allows graphics to be scalable, zoomable and searchable. Common SVG shapes that can be created include circles, rectangles, ellipses, lines, and paths. Attributes like cx, cy, r are used to define properties of circles and ellipses, while x1, y1, x2, y2 define the start and end points of a line. SVG graphics do not lose quality when resized.
HTML5 and CSS3: does now really mean now?Chris Mills
Code at http://people.opera.com/cmills/css3book/css3-html5-dnrmn.zip. The browser vendors love them! The browser fans and cutting edge designers are producing some really remarkable stuff, but what do HTML5 and CSS3 really mean for you, the pragmatic designer on the street? If you sidle up to one of those guys and whisper "but what about IE6 support", they are likely to slap you in the face, or run away with their hands clamped over their ears, yelling "la lala lala, I can't hear you." In this talk, Chris Mills will have a look at some of the new features of HTML5 and CSS3 - new semantics, video, media queries, rounded corners, web fonts, drop shadows and more. He will show real world examples, and then look at how they actually perform on those shady older browsers we are often called on to support. He will then look at strategies for providing support for those older browsers, including using JavaScript, fallbacks, and progressive enhancement.
This document introduces Scalable Vector Graphics (SVG) and provides an overview of its history, capabilities, and structure. Key points include:
- SVG was developed as an open standard by the W3C to provide rich, reusable visual content for the web using XML.
- SVG allows for vector graphics that can be scaled, manipulated via scripting, styled with CSS, and more. It provides many advantages over raster graphics.
- As an XML format, SVG files are small in size, resolution-independent, and can be dynamically generated and styled on the client-side via JavaScript.
- The document outlines SVG's emergence and development timeline, its structure as an XML language, and its
HTML5: An Introduction To Next Generation Web DevelopmentTilak Joshi
HTML5 is the next generation web development standard that improves upon HTML4 and XHTML. It focuses on features rather than syntax, and includes new elements like <article> and <section>, native audio/video support, drawing APIs, geolocation, drag and drop, web forms 2.0, and more. HTML5 aims to improve multimedia capabilities while keeping code readable by humans and machines. It is supported by all major browsers, though support for specific features may vary, and polyfills can help with backwards compatibility.
[SF HTML5] Responsive Cross-Device Development with Web Standards (2013)Tomomi Imura
This document discusses cross-device development using web standards. It covers the concepts of adaptive design, responsive design, fluid layouts, media queries and responsive images. For layouts, it discusses moving from fixed tables and floats to newer CSS techniques like flexible boxes, multi-column layouts, and CSS grids. It provides examples of fluid layouts using these techniques. It also covers media queries in depth, including using them for breakpoints, device characteristics like orientation and resolution. The document discusses challenges and solutions for responsive images, including resolution switching, art direction, high DPI images, and emerging standards like srcset and the picture element.
Iasi code camp 12 october 2013 responsive images in the wild-vlad zelinschiCodecamp Romania
The document discusses responsive images and different solutions for optimizing images for responsive design. It begins by providing context on responsive design and the challenges of supporting different devices. It then focuses on images, explaining their importance but also the issues they can cause for performance. The document evaluates several solutions for responsive images including CSS media queries, SVG, Picturefill.js and the proposed picture element. It concludes by noting there is no perfect solution and developers should choose based on their specific needs and constraints.
The document discusses HTML5 and provides an agenda for an HTML5 training session. It introduces HTML5 and covers new HTML5 elements, the <canvas> element for drawing graphics, and how to draw paths, boxes, circles and text on the canvas using JavaScript. It also briefly mentions HTML5 features for media, storage, and forms.
This document provides an introduction to Scalable Vector Graphics (SVG). It begins with an agenda that outlines topics including what SVG is, why it should be used, tools for working with SVG, and sample artwork. The document then discusses the history and standards behind SVG, how it works as a vector format, and why it may be preferable to other formats like JPEG, PNG, Flash or Silverlight. Browser support, manual and programmatic production of SVG files, and related resources are also covered. The document concludes with an invitation for questions.
Dynamic User Interfaces for Desktop and Mobilepeychevi
The document discusses responsive design techniques for desktop and mobile interfaces. It covers:
- Adapting layouts using AlloyUI Viewport and media queries to target different screen sizes.
- Dynamically retrieving data using the Pjax utility and ScrollInfo plugin.
- The future potential of CSS Flexbox layout for complex responsive designs.
7 Things Testers Should Know About The Cloud with Bill Wilder & XBOSoft March...XBOSoft
“Software designed to take advantage of public cloud features is different from traditional software. It stands to reason that testing such software will require some different insights and approaches.”
-- Bill Wilder, Windows Azure, MVP
In this talk, author and cloud consultant Bill Wilder covers 7 Things testing pros ought to know about the public cloud. The tips span cloud tools for better process and execution, walks you through real examples in Windows Azure, and highlights considerations to streamline the process between dev and test.
Whether you want to add some serious eye candy to your XPages Applications or just want to do more with less code, jQuery, the world’s most popular JavaScript framework can help you. Come to this webinar and find out how you can use some of the thousands of jQuery plugins, in harmony with Dojo, within your XPages applications to create a better experience not only for your users, but for you as a developer. In this webinar, we'll look at how jQuery works, how to add it to your XPages, and how a complete JavaScript beginner can take advantage of its power. We'll demonstrate many working examples -- and a sample database will be provided.
HTML5 contains many new interesting features that make the platform a capaple development platform. Sockets, SVG, geolocation, local storage and many more are included in the platform. In this one hour session, we will look at cool implementations of 10 features of HTML5
This document provides an overview of a presentation on using D3 for data visualization on desktops, smartphones, and Google Glass. It discusses how D3 works, examples of basic charts like scatter plots and bar charts using D3, and how to incorporate features like mouse interactions, animations, filters and gradients. It also covers using D3 with technologies like Android, PhoneGap, and Google Glass to create mobile visualizations.
This document provides an overview of a presentation on using D3 for data visualization on desktops, smartphones, and Google Glass. It discusses topics like what D3 is, how it works, examples of creating simple charts and adding interactivity with mouse events, using SVG filters and gradients, and integrating D3 visualizations into Android and Google Glass apps. It also briefly mentions related technologies, resources for learning more, and potential training topics.
Este documento analiza el uso real de datos abiertos ("opendata") en gobiernos. Clasifica los tipos de información que los gobiernos suelen publicar como datos abiertos, como información geográfica, meteorológica, económica, social, de tráfico, turismo y agricultura. También muestra estadísticas sobre qué datos son los más descargados en las comunidades autónomas del País Vasco y Navarra, como calendarios laborales y mapas. El objetivo final es medir el retorno de la inversión de public
Este documento analiza el valor real del uso de datos abiertos (opendata). Presenta un diagrama sobre el "círculo estúpido" de la implementación de opendata por parte de políticos y ciudadanos. Luego enumera diferentes formas en que los datos abiertos podrían generar valor a través de ingresos fiscales, ahorros en servicios sociales, mejoras en productividad, y reducciones en corrupción y evasión fiscal. Finalmente, clasifica los tipos de información pública disponible como datos abiertos en diferentes regiones de España.
This document discusses 3D graphics techniques using CSS3, jQuery, CSS shaders, and WebGL. It provides demonstrations of 3D effects created with only CSS3 and jQuery mobile code. CSS shaders and WebGL allow more complex 3D graphics by using vertex and fragment shaders. Toolkits like Three.js and tQuery.js simplify working with WebGL. The document recommends books and meetups for learning more about these technologies.
How are we working to improve life in our cities?Alberto Abella
The document discusses how open data from cities can enable third party developers to create applications that improve city services and quality of life for citizens. It provides examples of applications developed using open data from various cities, including Barcelona, Amsterdam, and cities around the globe. These applications have been successful and in some cases outcompeted the cities' own applications. The document advocates for cities to release more open data to enable more third party innovation and improve services for citizens.
This document discusses data binding in Android development. It begins by explaining what data binding is, which is connecting UI components to data sources. It then shows how data binding improves upon traditional MVC patterns. The document proceeds to demonstrate how to implement data binding through layout files, view models, and generated binding classes. It explores observable objects, collections, and fields to notify UI of data changes. Attribute bindings and custom bindings are also covered to extend XML and reduce boilerplate code. Overall, the document promotes data binding as a way to write less code, build more maintainable apps, and enable easier testing through separation of UI and logic.
Data binding is a declarative way to bind UI components to application data sources. It minimizes code needed to bind layouts to data and supports MVVM pattern. Data binding engine allows binding layouts to observable data sources and updating UI automatically when data changes. It works on Android 2.1+ and uses XML syntax like <layout> and @{} to bind variables and call methods.
Infinum Android Talks #14 - Data binding to the rescue... or not (?) by Krist...Infinum
We're checking out new data binding lib announced on the last Google I/O. We'll go in depth of data binding - goals, benefits and drawbacks. Less code should mean less bugs - in theory.
This document provides an overview of SVG, CSS3, and D3 for beginners. It covers key SVG elements like <line>, <ellipse>, <rect>, <polygon>, and <path> as well as features like gradients, filters, transforms and animation. It also demonstrates CSS3 concepts like rounded corners, gradients and transforms. Examples are provided in HTML files with linked CSS style sheets. The document then introduces D3, an open source JavaScript library for data visualization that uses SVG, HTML and CSS. Key D3 concepts, functionality and use cases are outlined.
The document discusses features of SVG and D3, including different SVG elements, colors/gradients/filters, transforms and animation, and how D3 builds upon SVG to enable data visualization. It provides examples of creating basic SVG shapes and charts with D3, binding data to DOM elements, adding mouse interactions and transitions. It also covers using D3 with other technologies like Angular, working with different data formats and large datasets, and transpires for working with modern JavaScript.
This document provides an introduction and overview of React Native, including what it is, how it works, and how to set it up for both iOS and Android development. It discusses some key differences between React Native and traditional web development, provides code samples and explanations of common React Native components and patterns, and outlines steps for creating a new React Native project. It also addresses common errors and links to additional documentation resources.
This document provides an overview of using NFC (Near Field Communication) on Android devices. It discusses registering an NFC intent filter in the manifest to listen for NDEF tags, handling foreground NFC dispatch, interacting with tags using the NfcAdapter class, and reading the payload of NDEF tags which can contain text, URIs, or other data. Future posts will describe extracting specific information from different tag types.
This document summarizes AngularJS scopes, digest cycles, data binding, dependency injection, and modularity. It discusses how scopes are created and inherited, how to use $digest and $watch, how expressions are evaluated, the benefits of dependency injection, and best practices for managing modules. Key recommendations include trusting the scope hierarchy, using $apply instead of $digest, avoiding non-isolated directives, and structuring code into independent, testable modules.
This document provides an overview of TypeScript, including:
- What TypeScript is and how it supports features like interfaces, classes, and subclasses
- How TypeScript uses a compiler to provide type checking and transpiles code to JavaScript
- Examples of using basic TypeScript syntax like types, functions, classes, and interfaces
- How to set up a TypeScript development environment and use the tsc compiler
- Popular IDEs and resources for learning more about TypeScript
Testable Android Apps using data binding and MVVMFabio Collini
The document discusses testing Android apps using data binding and MVVM. It covers setting up the MVVM architecture with a Note taking app example. It discusses using the Model-View-ViewModel pattern with data binding in Android. It also discusses how to write JVM unit tests for the ViewModel and mock dependencies by using stubs and spies.
This document provides an overview of a workshop on working with ECMA5 and ES6 including promises. The workshop will cover nested functions/closures, arrow functions, promises, and other ECMA5/ES6 features useful for ReactJS and Angular 2. It includes examples of functions, closures, filter, map, reduce, and promises as well as exercises for participants. Promises are introduced as a way to avoid callback hell and determine success/failure asynchronously.
The document discusses using Java with HTML5 and related technologies like CSS3 and WebSockets. It provides an overview of HTML5 features like Canvas, SVG, CSS3 animations, and WebSockets. It describes how these features can be used to build interactive client-side applications and how Java servers can integrate with HTML5 apps by saving/retrieving application state and graphics from the client. Java servers can generate graphics like SVG dynamically based on data from HTML5 clients.
Engin Yağız Hatay gave a presentation on graphics and animation capabilities in web browsers. He discussed several technologies including CSS3, Canvas, SVG, and WebGL, and when each is best suited. He provided details on HTML5 Canvas capabilities and limitations. Hatay also covered browser support for these technologies and recommended several JavaScript libraries that can be used to create graphics and animations, including PaperJS, ProcessingJS, and ThreeJS. He concluded with a discussion of tools and frameworks for mobile graphics development.
Vector graphics allow shapes to be mathematically represented and scaled smoothly, while raster graphics use a grid of pixels. SVG is an XML format for describing vector shapes and is supported natively by modern browsers. DojoX GFX provides a normalized API for creating vector graphics across browsers using SVG, VML, Canvas, or Silverlight depending on browser support. It implements a procedural subset of SVG for creating shapes and text programmatically similar to the canvas API.
Vector Graphics on the Web: SVG, Canvas, CSS3Pascal Rettig
This document summarizes different vector graphic options for use on the web. It discusses the differences between vector and raster graphics, and why vectors are preferable for resolution independence and smaller file sizes. It then examines SVG, Canvas, VML, and CSS3 as vector graphic options, outlining browser support, APIs, and common uses for each. While SVG is ideal theoretically, browser support is still limited, so libraries like SVG Web and Raphael.js are recommended to abstract cross-browser differences. In the end, SVG is generally better than Canvas for interactive graphics with events, while Canvas may be better for full-screen animations and games.
Doris Chen is a senior developer evangelist at Microsoft who focuses on web technologies like JavaScript and HTML5. Her presentation covers optimizing Cordova app performance, including measuring startup cost and memory usage, using CSS for gradients instead of images, animating with translate3d instead of left/top, and handling events through bubbling instead of individual listeners. She provides tips like keeping the DOM simple, batching layout changes, and cleaning up unused objects to prevent memory leaks.
HTML5 introduces several new features including new semantic elements, support for embedded video and audio, canvas element for 2D/3D graphics, offline web applications, and drag and drop. It also removes some older HTML elements. HTML5 is still a work in progress but is supported by all major browsers. It aims to make web pages more compatible with new technologies and reduce the need for browser plug-ins.
Slides from an HTML5 overview session I presented at work...
This presentation has an accompanying sample webapp project: http://code.google.com/p/html5-playground
This document discusses web vector graphics and compares Canvas and SVG technologies. It provides examples of code for creating shapes with Canvas and SVG. It also analyzes browser support for Canvas and SVG over time, finding that support for both has increased, though SVG support levels have surpassed Canvas. The document recommends libraries like DojoX, ExCanvas, and Raphael that can help support Canvas and SVG across different browsers.
The document discusses the future of CSS layout mechanisms. It describes several proposed CSS modules for layout, including Grid Positioning, Flexible Box, and Template Layout. Each provides advantages for creating explicit grids and separating presentation from structure. The document highlights how these new layout capabilities could improve web design and development by establishing CSS as the framework. It concludes by encouraging learning more and getting involved in the ongoing CSS layout standards work.
This document discusses using SVG icons on websites. It covers different formats for icons like PNG and icon fonts, then focuses on SVG. SVG is explained as scalable vector graphics in XML format that can contain paths and shapes. Benefits of SVG include scalability, performance, accessibility, and ability to style with CSS. The document demonstrates exporting SVG from tools, optimizing with SVGO, embedding SVG in HTML and CSS, using SVG icon systems, and animating SVG with libraries like GreenSock. Resources for further SVG information and use are provided.
SVG is often used for content, linked icons, and buttons. Learn which coding methods perform best across a variety of screen reader and browser combinations. By @DennisL
This document provides an introduction and overview of CSS3 properties and features. It begins with an introduction to CSS3 and discusses how it is backwards compatible with CSS2. It then outlines several new CSS3 properties including border-radius for rounded corners, box-shadow for drop shadows, text-shadow, multiple backgrounds, background-size, text-overflow, and resize. Examples are provided for each property. The document concludes with recommendations for CSS3 style samples and a demo combining HTML5 and CSS3.
CSS3 isn't the future, it's the present. Learn the gamut of CSS3 properties from colors, web fonts, and visual effects, to transitions, animations and media queries. Find the inspiration and resources to go forth and implement the new properties with confidence.
HTML5 is a draft specification from the W3C that adds new elements like canvas, video and audio to HTML and changes some older elements. It is not yet finalized and continues to evolve. HTML5 allows embedding multimedia like video without plugins through new elements like <video> and <audio>. It also introduces new canvas element for drawing 2D graphics and SVG for vector graphics. HTML5 supports local storage and geolocation in the browser.
This document discusses using SVG (Scalable Vector Graphics) for generating professional reports with PHP. It provides an overview of SVG, support for SVG in browsers and tools, and PHP libraries for working with SVG, including PEAR::XML_SVG for building SVG documents programmatically, and PEAR::Image_Canvas and PEAR::Image_Graph for generating charts and graphs in SVG format. Examples of code snippets are provided to demonstrate how to create simple SVG charts and graphs using these PHP libraries.
This PPT is about my best friends, HTML, CSS and JS. Here I am just talk/show few features of them. all three combined make our web site more powerful in this WWW world.
Anatomy of a web app
HTML5
CSS3
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2016.
http://www.ivanomalavolta.com
SVG was first introduced on the web in 2001 and finally came around to being a practical web technology in 2011. Thanks to wide browser support and the popularity of retina screens, SVG is a powerful and flexible technology that everyone should have in their web development toolbox. In this talk, I'll tell you why should be using SVGs now and how to integrate SVGs into responsive websites, use it in iconography for resolution independence, and use JavaScript and CSS to create animations and interactive prototypes.
I gave this talk at Front Porch in Dallas, TX on October 7th. http://frontporch.io/
This document provides an overview of vectors and SVG, discussing their benefits over raster images in terms of scalability, file size and expressiveness. It outlines different ways vectors and SVG can be used in browsers and with tools like Illustrator, and provides tips on optimizing and integrating SVG files. The document concludes that SVG is now the best format for drawing vectors in browsers and encourages readers to start using vectors.
This session for beginners introduces tf.data APIs for creating data pipelines by combining various "lazy operators" in tf.data, such as filter(), map(), batch(), zip(), flatmap(), take(), and so forth.
Familiarity with method chaining and TF2 is helpful (but not required). If you are comfortable with FRP, the code samples in this session will be very familiar to you.
This document provides an overview and introduction to TensorFlow 2. It discusses major changes from TensorFlow 1.x like eager execution and tf.function decorator. It covers working with tensors, arrays, datasets, and loops in TensorFlow 2. It also demonstrates common operations like arithmetic, reshaping and normalization. Finally, it briefly introduces working with Keras and neural networks in TensorFlow 2.
A fast-paced introduction to Deep Learning concepts, such as activation functions, cost functions, back propagation, and then a quick dive into CNNs. Basic knowledge of vectors, matrices, and derivatives is helpful in order to derive the maximum benefit from this session.
A fast-paced introduction to TensorFlow 2 about some important new features (such as generators and the @tf.function decorator) and TF 1.x functionality that's been removed from TF 2 (yes, tf.Session() has retired).
Some concise code samples are presented to illustrate how to use new features of TensorFlow 2.
A fast-paced introduction to TensorFlow 2 about some important new features (such as generators and the @tf.function decorator) and TF 1.x functionality that's been removed from TF 2 (yes, tf.Session() has retired).
Concise code samples are presented to illustrate how to use new features of TensorFlow 2. You'll also get a quick introduction to lazy operators (if you know FRP this will be super easy), along with a code comparison between TF 1.x/iterators with tf.data.Dataset and TF 2/generators with tf.data.Dataset.
Finally, we'll look at some tf.keras code samples that are based on TensorFlow 2. Although familiarity with TF 1.x is helpful, newcomers with an avid interest in learning about TensorFlow 2 can benefit from this session.
This fast-paced session provides a brief history of AI, followed by AI-related topics, such as Machine Learning, Deep Learning and Reinforcement Learning, and the most popular frameworks for Machine Learning. You will learn about some of the successes of AI, and also some of the significant challenges in AI. No specialized knowledge is required, but an avid interest is recommended to derive the maximum benefit from this session.
A fast-paced introduction to Deep Learning concepts, such as activation functions, cost functions, back propagation, and then a quick dive into CNNs, followed by a Keras code sample for defining a CNN. Basic knowledge of vectors, matrices, and derivatives is helpful in order to derive the maximum benefit from this session. Then we'll see a short introduction to TensorFlow 1.x and some insights into TF 2 that will be released some time this year.
Introduction to Deep Learning, Keras, and TensorflowOswald Campesato
A fast-paced introduction to Deep Learning concepts, such as activation functions, cost functions, back propagation, and then a quick dive into CNNs. Basic knowledge of vectors, matrices, and derivatives is helpful in order to derive the maximum benefit from this session. Then we'll see how to create a Convolutional Neural Network in Keras, followed by a quick introduction to TensorFlow and TensorBoard.
Introduction to Deep Learning for Non-ProgrammersOswald Campesato
This session provides a brief history of AI, followed by AI-related topics, such as robots in AI, Machine Learning and Deep Learning, use cases for AI, some of the successes of AI, and also some of the significant challenges in AI. You will also learn about AI and mobile devices and the ethics of AI. An avid interest is recommended to derive the maximum benefit from this session.
An introductory presentation covered key concepts in deep learning including neural networks, activation functions, cost functions, and optimization methods. Popular deep learning frameworks TensorFlow and tensorflow.js were discussed. Common deep learning architectures like convolutional neural networks and generative adversarial networks were explained. Examples and code snippets in Python demonstrated fundamental deep learning concepts.
An introductory document covered deep learning concepts including neural networks, activation functions, cost functions, gradient descent, TensorFlow, CNNs, RNNs, GANs, and tensorflow.js. Key topics included the use of deep learning for computer vision, speech recognition, and more. Activation functions such as ReLU, sigmoid and tanh were explained. TensorFlow and tensorflow.js were introduced as frameworks for deep learning.
A fast-paced introduction to Deep Learning concepts, such as activation functions, cost functions, back propagation, and then a quick dive into CNNs. Basic knowledge of vectors, matrices, and derivatives is helpful in order to derive the maximum benefit from this session. Then we'll see a short introduction to TensorFlow and TensorBoard.
A fast-paced introduction to Deep Learning (DL) concepts, starting with a simple yet complete neural network (no frameworks), followed by aspects of deep neural networks, such as back propagation, activation functions, CNNs, and the AUT theorem. Next, a quick introduction to TensorFlow and TensorBoard, along with some code samples with TensorFlow. For best results, familiarity with basic vectors and matrices, inner (aka "dot") products of vectors, the notion of a derivative, and rudimentary Python is recommended.
Intro to Deep Learning, TensorFlow, and tensorflow.jsOswald Campesato
This fast-paced session introduces Deep Learning concepts, such gradient descent, back propagation, activation functions, and CNNs. We'll look at creating Android apps with TensorFlow Lite (pending its availability). Basic knowledge of vectors, matrices, and Android, as well as elementary calculus (derivatives), are strongly recommended in order to derive the maximum benefit from this session.
This document provides an overview and introduction to deep learning. It discusses key concepts such as neural networks, hidden layers, activation functions, cost functions, and gradient descent. Specific deep learning applications are highlighted, including computer vision, speech recognition, and recommendation systems. Deep learning frameworks like TensorFlow and concepts like convolutional neural networks (CNNs) and generative adversarial networks (GANs) are also explained at a high level. The document aims to introduce attendees to the main ideas and terminology within deep learning.
A fast-paced introduction to Deep Learning concepts, such as activation functions, cost functions, backpropagation, and then a quick dive into CNNs. Basic knowledge of vectors, matrices, and elementary calculus (derivatives), are helpful in order to derive the maximum benefit from this session.
Next we'll see a simple neural network using Keras, followed by an introduction to TensorFlow and TensorBoard. (Bonus points if you know Zorn's Lemma, the Well-Ordering Theorem, and the Axiom of Choice.)
This fast-paced session starts with an introduction to neural networks and linear regression models, along with a quick view of TensorFlow, followed by some Scala APIs for TensorFlow. You'll also see a simple dockerized image of Scala and TensorFlow code and how to execute the code in that image from the command line. No prior knowledge of NNs, Keras, or TensorFlow is required (but you must be comfortable with Scala).
"A fast-paced introduction to Deep Learning (DL) concepts, such as neural networks, back propagation, activation functions, and CNNs. We'll also look at JavaScript-based toolkits (such as TensorFire and deeplearning.js) that leverage the power of WebGL. Basic knowledge of elementary calculus (e.g., derivatives) is recommended in order to derive the maximum benefit from this session.
A fast-paced introduction to Deep Learning that starts with a simple yet complete neural network (no frameworks), followed by an overview of activation functions, cost functions, backpropagation, and then a quick dive into CNNs. Next we'll create a neural network using Keras, followed by an introduction to TensorFlow and TensorBoard. For best results, familiarity with basic vectors and matrices, inner (aka "dot") products of vectors, and rudimentary Python is definitely helpful.
This document provides an overview and introduction to deep learning concepts including linear regression, activation functions, gradient descent, backpropagation, hyperparameters, convolutional neural networks (CNNs), recurrent neural networks (RNNs), and TensorFlow. It discusses clustering examples to illustrate neural networks, explores different activation functions and cost functions, and provides code examples of TensorFlow operations, constants, placeholders, and saving graphs.
Best Practices for Effectively Running dbt in Airflow.pdfTatiana Al-Chueyr
As a popular open-source library for analytics engineering, dbt is often used in combination with Airflow. Orchestrating and executing dbt models as DAGs ensures an additional layer of control over tasks, observability, and provides a reliable, scalable environment to run dbt models.
This webinar will cover a step-by-step guide to Cosmos, an open source package from Astronomer that helps you easily run your dbt Core projects as Airflow DAGs and Task Groups, all with just a few lines of code. We’ll walk through:
- Standard ways of running dbt (and when to utilize other methods)
- How Cosmos can be used to run and visualize your dbt projects in Airflow
- Common challenges and how to address them, including performance, dependency conflicts, and more
- How running dbt projects in Airflow helps with cost optimization
Webinar given on 9 July 2024
How RPA Help in the Transportation and Logistics Industry.pptxSynapseIndia
Revolutionize your transportation processes with our cutting-edge RPA software. Automate repetitive tasks, reduce costs, and enhance efficiency in the logistics sector with our advanced solutions.
The DealBook is our annual overview of the Ukrainian tech investment industry. This edition comprehensively covers the full year 2023 and the first deals of 2024.
Support en anglais diffusé lors de l'événement 100% IA organisé dans les locaux parisiens d'Iguane Solutions, le mardi 2 juillet 2024 :
- Présentation de notre plateforme IA plug and play : ses fonctionnalités avancées, telles que son interface utilisateur intuitive, son copilot puissant et des outils de monitoring performants.
- REX client : Cyril Janssens, CTO d’ easybourse, partage son expérience d’utilisation de notre plateforme IA plug & play.
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxSynapseIndia
Your comprehensive guide to RPA in healthcare for 2024. Explore the benefits, use cases, and emerging trends of robotic process automation. Understand the challenges and prepare for the future of healthcare automation
Measuring the Impact of Network Latency at TwitterScyllaDB
Widya Salim and Victor Ma will outline the causal impact analysis, framework, and key learnings used to quantify the impact of reducing Twitter's network latency.
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfjackson110191
These fighter aircraft have uses outside of traditional combat situations. They are essential in defending India's territorial integrity, averting dangers, and delivering aid to those in need during natural calamities. Additionally, the IAF improves its interoperability and fortifies international military alliances by working together and conducting joint exercises with other air forces.
Coordinate Systems in FME 101 - Webinar SlidesSafe Software
If you’ve ever had to analyze a map or GPS data, chances are you’ve encountered and even worked with coordinate systems. As historical data continually updates through GPS, understanding coordinate systems is increasingly crucial. However, not everyone knows why they exist or how to effectively use them for data-driven insights.
During this webinar, you’ll learn exactly what coordinate systems are and how you can use FME to maintain and transform your data’s coordinate systems in an easy-to-digest way, accurately representing the geographical space that it exists within. During this webinar, you will have the chance to:
- Enhance Your Understanding: Gain a clear overview of what coordinate systems are and their value
- Learn Practical Applications: Why we need datams and projections, plus units between coordinate systems
- Maximize with FME: Understand how FME handles coordinate systems, including a brief summary of the 3 main reprojectors
- Custom Coordinate Systems: Learn how to work with FME and coordinate systems beyond what is natively supported
- Look Ahead: Gain insights into where FME is headed with coordinate systems in the future
Don’t miss the opportunity to improve the value you receive from your coordinate system data, ultimately allowing you to streamline your data analysis and maximize your time. See you there!
Are you interested in dipping your toes in the cloud native observability waters, but as an engineer you are not sure where to get started with tracing problems through your microservices and application landscapes on Kubernetes? Then this is the session for you, where we take you on your first steps in an active open-source project that offers a buffet of languages, challenges, and opportunities for getting started with telemetry data.
The project is called openTelemetry, but before diving into the specifics, we’ll start with de-mystifying key concepts and terms such as observability, telemetry, instrumentation, cardinality, percentile to lay a foundation. After understanding the nuts and bolts of observability and distributed traces, we’ll explore the openTelemetry community; its Special Interest Groups (SIGs), repositories, and how to become not only an end-user, but possibly a contributor.We will wrap up with an overview of the components in this project, such as the Collector, the OpenTelemetry protocol (OTLP), its APIs, and its SDKs.
Attendees will leave with an understanding of key observability concepts, become grounded in distributed tracing terminology, be aware of the components of openTelemetry, and know how to take their first steps to an open-source contribution!
Key Takeaways: Open source, vendor neutral instrumentation is an exciting new reality as the industry standardizes on openTelemetry for observability. OpenTelemetry is on a mission to enable effective observability by making high-quality, portable telemetry ubiquitous. The world of observability and monitoring today has a steep learning curve and in order to achieve ubiquity, the project would benefit from growing our contributor community.
Comparison Table of DiskWarrior Alternatives.pdfAndrey Yasko
To help you choose the best DiskWarrior alternative, we've compiled a comparison table summarizing the features, pros, cons, and pricing of six alternatives.
Blockchain technology is transforming industries and reshaping the way we conduct business, manage data, and secure transactions. Whether you're new to blockchain or looking to deepen your knowledge, our guidebook, "Blockchain for Dummies", is your ultimate resource.
Transcript: Details of description part II: Describing images in practice - T...BookNet Canada
This presentation explores the practical application of image description techniques. Familiar guidelines will be demonstrated in practice, and descriptions will be developed “live”! If you have learned a lot about the theory of image description techniques but want to feel more confident putting them into practice, this is the presentation for you. There will be useful, actionable information for everyone, whether you are working with authors, colleagues, alone, or leveraging AI as a collaborator.
Link to presentation recording and slides: https://bnctechforum.ca/sessions/details-of-description-part-ii-describing-images-in-practice/
Presented by BookNet Canada on June 25, 2024, with support from the Department of Canadian Heritage.
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...Toru Tamaki
Jindong Gu, Zhen Han, Shuo Chen, Ahmad Beirami, Bailan He, Gengyuan Zhang, Ruotong Liao, Yao Qin, Volker Tresp, Philip Torr "A Systematic Survey of Prompt Engineering on Vision-Language Foundation Models" arXiv2023
https://arxiv.org/abs/2307.12980
An invited talk given by Mark Billinghurst on Research Directions for Cross Reality Interfaces. This was given on July 2nd 2024 as part of the 2024 Summer School on Cross Reality in Hagenberg, Austria (July 1st - 7th)
20240702 QFM021 Machine Intelligence Reading List June 2024
Svcc 2013-css3-and-mobile
1. HTML5 and CSS3 and
Mobile Applications
SVCC 2013 (10/05/2013)
Foothill College Los Altos
Oswald Campesato
oswald@swiftbot.com
ocampesato@yahoo.com
2. Main Topics in This Session
CSS3 Features (condensed summary)
CSS3 Graphics/Animation (2D and 3D)
CSS3 and the GPU (must-have support)
Reflow/Repaint (what/when/how/why)
Chrome Continuous Update (CSS3/JS)
CSS3 "Gong" Game (CSS3/jQuery Mobile)
PhoneGap 3.0 Mobile Apps (in 4 lines)
CSS3-base Apps on Glass (also native)
Fun Canvas Demos (video and animation)
3. CSS3 Features (condensed list)
(Perf) Gradients (linear and radial)
(Perf) Rounded corners/drop shadows
CSS3 filters (merged with SVG filters)
Simple shapes (circle/ellipse/rectangle)
(Perf) 2D and 3D animation
Multi-column support
Exclusions and regions
Flexbox (like “grid bag” in Java AWT)
4. CSS3 Transforms (summary)
CSS3 2D transforms:
rotate, scale, translate, matrix, and
perspective, and skew (deprecated)
• CSS3 3D transforms (invoke the GPU):
1) similar to 2D versions (but no „skew‟)
2) also three axis-specific methods:
rotateX, rotateY, rotateZ (and so forth)
• CSS3 animation via keyframes rule
5. Frameworks and Toolkits (1)
• Very good HTML5/CSS3 IDEs:
+ Sencha Animator and Adobe Edge (commercial?)
• JavaScript/SVG toolkits:
+ D3 (modern browsers) and Raphael (supports IE6-8)
+ Inkscape for SVG and iD (for maps)
• JavaScript-based toolkits for Canvas:
+ EaselJS, FabricJS, PaperJS
• http://graphicdesignjunction.com/2013/04/html5-
tools-for-designers-developers/
6. Frameworks and Toolkits (2)
Workless:
+ an HTML5-CSS3 framework for building cross-browsers
websites
+ started as a mashup of Bootstrap + HTML5 Boilerplate
+ https://github.com/iKreativ/Workless
Junior:
+ an HTML5 framework for front-end creating mobile
apps that look and behave like native
+ uses CSS3 transitions and supports swipeable
carousels
+ includes various UI components (from Ratchet)
7. Frameworks and Toolkits (3)
Literally Canvas:
+ an HTML5 open source widget
+ can be integrated into any page
+ enables users to draw online
+ provides with a simple set of tools including:
draw, erase, color-picker, undo, redo, pan and zoom
cgSceneGraph:
+ an OO JavaScript animation framework
+ built on top of HTML5 canvas
+ created for apps and games
+ works cross-browser
+ many built-in nodes (images/text/buttons/shapes)
8. Modular and Scalable CSS (1)
OOCSS: Object Oriented CSS
SMACSS: Scalable and Modular Architecture
for CSS
DRY: Don‟t Repeat Yourself CSS
BEM: Block, Element, Modifier
9. Modular and Scalable CSS (2)
#1 and #2 avoid id (prefer class)
all share common goals
they use different approaches
provide general guidelines (not absolute)
try to understand underlying principles
then take the relevant parts
10. What “Works” with CSS3?
Combine any of these with CSS3 in a Web Page:
SVG and D3 (=Data Driven Documents=JS+SVG)
HTML5 Canvas (bitmap and without a DOM)
For Web applications:
jQuery (cross-browser and cross-platform)
BackboneJS (MVP reduces spaghetti code)
AngularJS (open source from Google)
Basically any JavaScript-based toolkit
11. When CSS3 Alone isn‟t Enough
CSS3 can leverage the power of SVG:
+ reference SVG documents via “url()”
• SVG can leverage CSS3 by:
+ embedding CSS selectors in an SVG doc
use jQuery methods:
+ the css() method for updating properties
• Use jQuery Mobile features:
+ use bindings to handle mouse/touch events
12. Strengths of CSS3/SVG/Canvas
CSS3: a) 2D/3D graphics/animation, b) GPU support, c)
embeddable in SVG <defs> element, d) “easing
functions” for animation, e) animate HTML elements
SVG: a) 2D graphics/animation, b) some GPU support, c)
create arbitrary 2D shapes, d) custom <pattern>s, and e)
grouping via the <g> element, and “easing functions in
D3 (but SVG cannot animate HTML)
Canvas: a) 2D graphics/animation, b) GPU support, c)
good for updating many small objects (games), d) works
with video (use ThreeJS/WebGL for 3D animation)
13. Useful Features of SVG (summary)
An XML-based vocabulary for 2D shapes:
render circles/ellipses/elliptic arcs
squares/rectangles/parallelograms
cubic/quadratic Bezier curves
arbitrary polygons
linear/radial gradients and filters
mouse events and animation support (*)
good for charts/graphs
works well with CSS3
(*) consider using D3.js
14. Other Aspects of SVG
SVG elements are inserted in the DOM so you can
track/manage groups of SVG elements
no blurred/jagged edges when zooming in
Convenient format for import/export between tools
Can apply XSL stylesheets to SVG documents
On the other hand:
• Verbose (what do you expect? It‟s XML)
• Can be difficult/incomprehensible (SVG tiger)
Animation code can be cumbersome/tedious
Consider D3 instead of “pure” SVG
Blog by Patrick Dengler: SVG versus Canvas
17. CSS3 for SVG 3D Effects
#1: create an SVG document
#2: create an SVG <defs> element
#3: create CSS3 selectors with CSS3 3D animation effects
and put them in a <style> element
#4: insert the <style> element in <defs> element
#5: set the “class” attribute in SVG elements so that it
matches a CSS3 selector in the <style> element
Example: 3DSineWave4RG2TurbFilterAnim1.svg
NB: You can also reference an external CSS stylesheet
18. CSS3+SVG or CSS3+D3?
CSS3+SVG: useful when 1) you already have
SVG-based data and 2) you must support IE6
(can do with Raphael toolkit but not D3)
• CSS3+D3: for modern browsers, and also easier
for defining event handlers and animation
(probably also easier to maintain/enhance)
• Notes:
• CSS3+SVG might not have GPU support
• Consider D3 with BackboneJS/AngularJS/etc
19. What about CSS3 and HTML5 Canvas?
Insert a <canvas> element in a Web page
• JavaScript APIs for 2D shapes (similar to Skia)
All shapes are rendered in a <canvas> element
Modern browsers support <canvas> element
“write-and-forget” (no DOM-based “history”)
• CSS3 selectors can match the <canvas> element
• Canvas often faster than SVG for showing
polygons
• Tracing Canvas calls:
http://www.html5rocks.com/en/tutorials/canvas/ins
pection/
20. Which is Faster: CSS3/Canvas/SVG?
• CSS3 is faster than Canvas for simple animation:
http://phrogz.net/tmp/image_move_speed.html
• CSS3 is faster than SVG for gradients
• D3 is better/faster than SVG for “follow the
mouse”
• Canvas is better than SVG for many small objects
• Test/compare performance on mobile devices
21. What is a GPU?
Graphics Processing Unit
A GPU is a single-chip dedicated processor
Boost the performance of video/graphics:
2-D or 3-D graphics
Digital output to flat panel display monitors
Texture mapping
MPEG decoding
Rendering polygons
Hardware overlays
22. Nvidia and GPUs
• The first GPU:
developed by NVidia in 1999 (GeForce 256)
processed 10 million polygons/second
contained more than 22 million transistors
• Nexus 7 2 (Android 4.3):
400MHz Adreno 320 Snapdragon S4 Pro
64 ALU, 400MHz, 57GFLOPS
23. GPU Support in Browsers
the browser must be able to use the driver of the graphics
card installed on the host OS
GPU acceleration for one browser on a given machine
doesn‟t guarantee support for all browsers
Opera: hardware acceleration turned off by default
(might have changed recently)
http://www.useragentman.com/blog/2012/09/23/cross-
browser-gpu-acceleration-and-requestanimationframe-in-
depth/
24. CSS3 and GPU Acceleration
Add a “go faster hack” (aka “null transform”)
common CSS3 transforms to invoke the GPU:
translate3D(0,0,0) or translateZ(0)
• Preceding “no-op” guarantees GPU is invoked
• Absence of such code does not mean that the GPU is not
invoked
• Convert some/all 2D transforms (except skew) to 3D?
25. Chrome and the “Null Transform”
#1) Chrome switches on hardware compositing mode (if
supported and not already “on”)
#2) Chrome creates a new layer and “backing surface”
Comments:
• A “backing surface” (= bitmap?) is a graphics context
(aka texture) into which layers are drawn
• Backing surfaces are uploaded to the GPU
• Layers sometimes share the same “backing surface”
• Rules that Chrome uses for creating new backing surfaces
in the next slide…
26. Chrome + Layers + Backing Surfaces
Chrome creates new backing surface if a layer:
1) uses 3D or perspective transform CSS properties
2) is used by <video> element using accelerated video
decoding
3) is used by a <canvas> element with a 3D context or
accelerated 2D context
4) uses a CSS animation for its opacity or uses an animated
webkit transform
5) uses accelerated CSS filters
6) has a descendant that is a compositing layer
7) has a sibling with a lower z-index which has a compositing
layer (is the layer rendered on top of a composited layer?)
27. Null Transform: can it be slower?
Try this sample code in your browser:
http://dl.dropboxusercontent.com/u/17844821/zeug/
hwtest.html
Contains 4,000 small <div> elements
Original stackoverflow post (04/2012):
http://stackoverflow.com/questions/10014461/why-
does-enabling-hardware-acceleration-in-css3-slow-
down-performance
28. CSS3 Mask + Performance
• Mask results in a new offscreen buffer (OSB)
GPU first writes to the OSB instead of directly to
VRAM (Video RAM)
then the OSB contents are copied to VRAM
VRAM is comparatively limited on mobile
devices and it‟s “easily exhausted”
rounded corners and drop shadows use mask
combination of rounded corners and drop
shadows is extra slow;(
29. What are Reflow and Repaint?
Reflow: process of calculating the position
of elements in a Web page
Repaint: re-rendering pixel colors in a Web page
Compare “display” versus “visibility” in CSS:
+ display: none it‟s neither present nor visible so it
requires reflow and repaint
+ visibility: hidden it‟s still present, so no geometry
change, and only repaint is required
(Performance difference is small in this scenario)
30. What Causes Reflow and Repaint?
scroll and hover
box-shadow and drop shadows
floats and tables
opacity and gradients
border-radius
transparency and transitions
changing the font size
Add/remove/update the DOM
Leaf-side nodes: probably small changes
Top-side nodes: propagation can cause
many changes
31. Chrome and Layout Changes
Chrome "batches" layout changes asynchronously
in order to maximize rendering performance
• Style information causes synchronous updates:
+ offsetTop, offsetLeft
+ offsetWidth, offsetHeight
+ scrollTop/Left/Width/Height
+ clientTop/Left/Width/Height
+ getComputedStyle()
The goal: find and eliminate JavaScript code
and/or CSS selectors that cause synchronous
updates
32. Avoid Synchronous Updates (why?)
#1) Any request for style information about a
node forces the browser to provide the most
up-to-date value.
#2) In order to do so, the browser must apply
all scheduled changes, flush the queue, and
perform a reflow.
Minimize this type of code:
el.style.left = el.offsetLeft + 10 + "px";
33. The Painting Process
browser combines DOM and CSSOM
Involves “Skia” for:
+ rasterizing software with Canvas-like APIs
+ output is set of bitmaps
• bitmaps are sent to the GPU and:
+ GPU composites them (calculates pixel values)
+ renders the output on screen
"Compositing is the process where each of the individual
textures uploaded to the GPU is drawn
out in turn and results in the final page."
34. Using/Examining the Timeline (1)
• Open Web Inspector and click on “Timeline”
• Click the (black) “start button
• search for elements with significant paint time:
look for “long” horizontal bars
Now do this:
toggle the CSS styles of those elements to
determine performance culprit(s)
search for yellow warning icon in the timeline
hover over these records
You will see a “stack trace” that contains:
1) invalidating code, and also
2) code that caused the layout
35. Using/Examining the Timeline (2)
Detailed Timeline instructions:
https://developers.google.com/chrome-
developer-tools/docs/timeline
Some Topics (many others as well):
Analyzing Timeline recordings
Viewing details about a record
Locating forced synchronous layouts
Emulate touch events
36. Using Chrome Continuous Paint (CCP)
• #1: load a Web page into browser
• #2: Web Inspector > Profiles and select:
a) Collect JavaScript CPU Profile or
b) Collect CSS Selector Profile
• #3: “Start CPU Profiling” by clicking on black dot in
lower-left corner
• #4: Navigate around elements in the screen
• #5: “Stop CPU Profiling” by clicking on red dot
• #6: examine the newly generated timeline
• Note: CCP is in Chrome v29
37. CSS3 Flying Borg Cube (Demo)
CSS3 2D skew (for the three cube faces)
CSS3 3D linear/radial gradients
CSS3 2D and 3D transforms
CSS3 3D animation effects (keyframes)
No JS so select CSS profiling in Chrome
38. How Browsers Parse CSS Selectors
browsers read selectors right-to-left:
this is a "bottom up" approach
the “key” selector: the right-most part of a
CSS selector
Why right-to-left is more efficient:
a) element:parent is 1:1 whereas
b) parent:child is many:1
39. Rewriting CSS Selectors (1)
Sample CSS and HTML:
#mylist a { ... }
<ul id="mylist">
<li a=... class="abc" .../>
<li a=... class="abc" .../>
<li a=... class="abc" .../>
….
</ul>
Suppose you have:
1) 100 <a> elements, and
2) you only want the three <a> with an 'abc' class
41. Sample Selector and “Efficient” CSS
calculate/layout/paint in a sample selector:
.results h2 { // recalculate style
height: 25px; // layout
text-shadow: 2px black; // paint
}
fast/efficient CSS (with null transform hack):
scale/translate/rotate/fade (opacity)
• Other operations incur layout and/or paint
• Paul Irish (Performance Tooling):
http://www.youtube.com/watch?v=HAqjyCH_LOE
42. Translate() versus top/left/right/bottom
Factors in favor of translate():
+ tends to perform better
+ translate() does not touch the DOM
+ involves subpixels (and smoother due to blurring effect)
+ use it for “design-y motion” (animating a button press)
Factors in favor of top/left/right/bottom:
+ use when element has relative/absolute/fixed positioning
Note: Both can yield different results on different browsers
+ Detailed articles (Chris Coyier/Paul Irish):
http://css-tricks.com/tale-of-animation-performance/
http://www.paulirish.com/2012/why-moving-elements-with-translate-is-
better-than-posabs-topleft/
43. Bootstrap 3.0 Improvements
Bootstrap 3.0 is twice as fast as BS 2.3.2
Provides a “mobile first” responsive grid
Bootswatch and WrapBootstrap (“full themes”)
Paul Irish checks BS 3.0 using CCP:
http://encosia.com/the-big-change-in-bootstrap-3-that-no-
ones-talking-about/
• Pamela Fox (“When Bootstrap Attacks”):
http://www.youtube.com/watch?v=xbpnqbM6cRk&feature
=youtu.be&goback=%2Egde_2071438_member_265749116#
%21
44. Issues with iOS7 and HTML5
CSS-related requestAnimationFrame animations do not suspend
correctly
Resizing a composited layer (with 3D transforms) sometimes does not
repaint correctly
Performance issues for SVG animation
Launching/quitting same home-screen app several times can hard-
lock your device
Maximiliano Firtman‟s iOS7/HTML5 post:
http://www.mobilexweb.com/blog/safari-ios7-html5-problems-apis-
review
45. CSS3 “Gong” Game (Demo)
Graphics: pure CSS3 (border-radius=50%)
Animation: setTimeout() function
JavaScript: for collision detection
• jQuery Mobile:
+ updating position (jQuery css() function)
+ creating elements (jQuery clone() function)
+ event handlers (jQuery Mobile vmouse)
• Deployed as an Android apk
46. CSS3 on Mobile: Android (Eclipse)
1) Create an Android app Hello and modify the main xml
layout file and Java file (see below)
2) modify $TOP/res/layout/activity_main.xml:
insert a WebView component (shown later)
3) create the directory $TOP/assets/www
4) Copy Hello.html (+ assets) into $TOP/assets/www
5) modify $TOP/src/com/…/HelloActivity.java:
reference Hello.html in the method onCreate()
49. HTML5/CSS3 and PhoneGap
A Plugin to create Hybrid Mobile apps
A JavaScript “bridge”
Available on 6 platforms
PhoneGap 3.0 requires NodeJS
Always creates an index.html Web page
50. Why use PhoneGap?
No compilation required
No Java/Objective-C code
Handles the manual steps for you
Provides access to hardware (camera/etc)
PhoneGap 3.0 camera/sensors/etc support
is available via different modules
51. Create/Compile/Deploy in PhoneGap 3.0
Prerequisites: install NodeJS and PhoneGap
Create/compile/deploy:
#1: phonegap create hello com.demo.hello Hello1
#2: cd hello
#3: phonegap build android [ios …]
#4: phonegap install android [ios …]
Combine #3 and #4 with this step:
phonegap run android ios […]
52. CSS3 Demo on Google Glass
Step #1: create and compile an Android project (let‟s
call it “CSS3Demo”) in Eclipse
Step #2: deploy the Android apk to Glass:
adb install CSS3Demo.apk
Step #3: get the package and main Android Activity:
Let‟s call them “a.b.c” and “CSS3Main”
Step #4: launch from the command line:
adb shell am start -a android.intent.action.MAIN -n
a.b.c/.CSS3Demo
55. Some “Favorite” People
• Tab Atkins
• Eric Bidelman
• Mike Bostock
• Pamela Fox
• Paul Irish
• John Resig
• Alex Russell
• Steve Souders
• Lea Verou
• David Walsh
• Nicholas Zakas
• Vincent Hardy/Brian Leroux/Tony Parisi (*)
56. Some Training Topics
• D3/SVG
• HTML5 (CSS3/Canvas/etc)
jQuery/jQuery Mobile
Android (iOS later)
BackboneJS/PhoneGap
57. Open Source Projects (graphics)
• Graphics Projects on http://code.google.com/p:
+ css3-graphics and html5-canvas-graphics
+ css3-jquery-graphics and d3-graphics
+ svg-graphics and svg-filters-graphics
+ easel-graphics, fabric-graphics, paper-graphics
+ ThreeJS, jQuery, Raphael, Google Go, Android
+ Dart, Dojo, JSF, Two.js, JavaFX 2.0
+ Lua, PHP, Perl, Python, Ruby, SWT graphics
58. Recent/Upcoming Books
1) HTML5 Canvas and CSS3 Graphics (2012)
2) jQuery, CSS3, and HTML5 for Mobile (2013)
3) HTML5 Pocket Primer (2013)
4) jQuery Pocket Primer (2013)
5) HTML5 Mobile Pocket Primer (2014)
6) D3 Pocket Primer (2014)
• “WebGL: Up and Running” (Tony Parisi)
Co-creator of VRML and X3D