19:04:29 RRSAgent has joined #w3conf-scribe 19:04:29 logging to http://www.w3.org/2011/11/15-w3conf-scribe-irc 19:05:00 rrsagent, make log public 19:09:11 scribe: chaals 19:09:28 Topic: Divya (starting in "media res") 19:09:50 Divya: Multiple columns - a ways to control columns in pages and let test flow through them 19:10:27 ... break-* properties and column-span to let you put headings and stuff into the flow across the columns (like ehadlines in a newspaper) 19:10:50 ... default fill is balance - keep them all the same length. 19:11:02 ... or you can fill a given height first 19:11:12 ... Browser support is good, backward compatibility story works too. 19:11:21 ... have a new spec called Regions. 19:11:35 ... lets you connect different content boxes 19:11:50 [/me thinks of SVG text areas and flow from a decade ago] 19:12:15 Divya: You name a flow, and then associate it to elements. 19:13:32 ... positioning then works relative to the regions defined, not the viewport as a whole 19:13:52 ... there are limited properties you can set directly for the content flowing through regions. 19:14:20 ... There is getNamedFlow API, and getRegionsByContentNode 19:14:41 ... overflow tells you if the region is full, contentNode says which nodes are in a flow. 19:16:36 Divya: Also have exclusions, to take things outside the normal flow, e.g. in the way that magazines layout pictures 19:17:00 ... wrap-flow lets you define where things will flow into and where they won't. 19:17:58 [shows the idea in action] 19:18:13 ... wrap-margin as well 19:18:34 ... and wrap-padding. 19:19:56 ... Shape-outside lets you use SVG-style shapes to wrap things more interesting than rectangular boxes. 19:20:04 ... can also use SVG itself, or an image. 19:20:22 [shows wrapping a star and a circle inside it] 19:20:42 Divya: Grid is another proposal. Everyone loves grids, there have been several proposals and frameworks. 19:21:05 ... http://dec.w3.org/csswg/css3-grid-align 19:21:35 ... shows a demo of what and how. 19:24:12 ... IE10 has support of a current version, but the spec is likely to change. 19:24:25 Divya: Finally flexbox. Who uses it? 19:24:36 ... too bad, it ahs changed so you need to change your work. 19:24:55 ... helps deal with more powerful use of box layout. 19:25:14 ajf has joined #w3conf-scribe 19:25:52 ... instead of a lot of script or complex structures of elements and CSS this simplifies things 19:26:07 rrsagent, pointer? 19:26:07 See http://www.w3.org/2011/11/15-w3conf-scribe-irc#T19-26-07 19:26:15 rrsagent, pointer 19:26:15 See http://www.w3.org/2011/11/15-w3conf-scribe-irc#T19-26-15 19:26:27 oh, I see 19:27:10 ... [talks about triggers for different flows, too fast for scribe to catch] 19:27:25 ... A box can be a region, grid or flexbox, but not all at once. 19:27:36 ... A flexbox can't be something else... 19:27:42 [shows a table that clarifies this] 19:27:50 tantek has joined #w3conf-scribe 19:27:54 stearns has joined #w3conf-scribe 19:28:01 Divya: Be aware that the specs are changing - syntax is in flux, as well as semantics. 19:28:08 martndemus has joined #w3conf-scribe 19:28:15 rbuckton has joined #w3conf-scribe 19:28:19 stearns has left #w3conf-scribe 19:28:19 ... So be *VERY* careful using it in production - experiment, not putting it on stable sites. 19:28:44 ... use feature detection, and make sure that things work whether or not the particuar shiny toy works. 19:29:06 [recommends Nicole Sullivan's article on mediablocks ()@stubbornella)] 19:29:21 Divya: There is also a jQuery plugin called isotope 19:29:27 ... shows what it does. 19:29:44 ... can't do that with CSS *today* easily 19:30:02 rrsagent, draft minutes 19:30:02 I have made the request to generate http://www.w3.org/2011/11/15-w3conf-scribe-minutes.html chaals 19:30:08 hober has joined #w3conf-scribe 19:30:33 ooh 19:30:36 commeentary 19:30:40 Divya: We always want feedback. There is a mailing list - www-style@w3.org 19:30:41 *commentary 19:30:48 s/ooh// 19:31:09 ... most of what is there comes from people who have too much spare time - be prepared to filter the "fire hose" of content. 19:31:30 ... but if you have an issue to raise - unclear wording in a draft, a use case not covered, whatever, that's where to send them so people can figure out what to do. 19:31:44 ... Experiment. Submit Bug Reports to tools 19:31:51 s/commeentary// 19:31:56 s/*commentary// 19:32:12 Divya: That's it. Questions? 19:32:30 Yes, I have a question, are you reading this? 19:32:57 becka11y has joined #w3conf-scribe 19:32:57 Apparently not. 19:33:17 Topic: Vincent Hardy - graphics. 19:33:32 RRSAgent: pointer? 19:33:32 See http://www.w3.org/2011/11/15-w3conf-scribe-irc#T19-33-32 19:33:42 Vincent: I'm passionate about the web and graphics. 19:34:04 ... I spent a lot of time on 2d imperative graphics, then stated to work on SVG 10 years ago. 19:34:18 ... and got a passion for graphics (I learned to do other computation stuff) 19:34:24 Alan has joined #w3conf-scribe 19:34:26 ... Then went to ork on data visualisation. 19:34:37 Alan has left #w3conf-scribe 19:34:44 ... Working with what was available on teh web 5 years ago 19:34:49 s/ork/work 19:35:33 Vincent: Have some thumbnails of intersting demos. Slides will be available so you can peek into the demos including things I can't show during the presentation. 19:36:01 s/intersting/interesting 19:36:02 ... [Shows a graphical clock made with Raphael - JS framework from Dmitry Baranovsky] 19:36:13 s/Have/Here I have 19:36:20 ... [shows some moving blotches that are cool] 19:36:38 ... There are a lot of cool things you can do. So... How? 19:37:03 ... You have 3D capability from WebGL, CSS shaders coming, 2d with SVG and canvas, lots of stuff for animation in CSS and the SVG animation markup. 19:37:20 ... You can choose to work with imperative or declarative models. 19:37:40 ... You can do layout (that's what CSS is for), visual effects, and there is a wide spectrum of JS frameworks. 19:37:47 ... I won't over everything now :) 19:37:53 s/over/cover 19:38:08 ... Most immediate thing is 2D graphics. SVG and canvas are in all browsers today so I will focus on that. 19:38:15 ... There are two models: 19:38:26 ... imperative, which is canvas, and declarative which is SVG 19:38:42 ... (cf Web3D, WebGL for 3D) 19:38:59 ... In an imperative model you have a rectangle, and you draw pixels on it so you have a big array of pixels. 19:39:21 ... In SVG you have something that looks like HTML. You have nodes that you put in a DOM and they behave like HTML nodes do. 19:39:37 ... There are reasons for choosing one or another in a different case. 19:39:45 [who has used each one? A few...] 19:40:02 Vincent: [shows picture] How many circles? 19:40:17 s/circles?/circles are there? 19:40:22 ... [looks like 4, it is 2 in the code, using a different colour to stroke the outline] 19:40:46 ... [shows SVG source - elements for circle, attributes controlling visual rendering] 19:40:55 ... This is declarative - you are not writing a program. 19:41:21 ... Cavas is different. You make a canvas element, and then write scripts to describe how to put pixels into the canvas. 19:41:28 s/Cavas/Canvas/ 19:41:29 s/Cavas/Canvas 19:41:46 [shows more source code, for canvas example] 19:42:12 shepazu has joined #w3conf-scribe 19:42:33 ... [describes what is happening in the code] 19:42:51 ... This is called "immediate mode because you just give instructions, they are done, and what you have left is just a set of pixels. 19:43:07 /s/"immediate mode/"immediate mode" 19:43:30 Vincent: What is rendered? Shapes, text, images are the three basic kinds of object. 19:43:48 ... in SVG you render elements, in canvas drawing calls in script 19:44:02 s/drawing/you make 19:44:10 s/calls/calls to drawing methods 19:44:25 ... There is a rendering context. In canvas it is the context object, in SVG it is implicit. 19:44:40 ... all the things you define resolve into the computed rendering. 19:44:49 ... [notes that CSS works in SVG too] 19:45:12 ... Rendering context has lots of things in it - transforms, styles, text properties, ... 19:46:03 ... You can define things like opacity, compositing a specific piece, ... 19:46:22 ... filter effects are a very cool feature, to blur, create shadows, etc. 19:46:28 ... and masking, clipping, ... 19:46:51 ... Rendering context is not the same in SVG and canvas, but at a high level they do the same basic things 19:47:39 ... Events in canvas means you have to work out what the pixels that got clicked on actually meant in the image. 19:47:53 ... in SVG you're clicking on an object, so it is like HTML - you know what thing got clicked. 19:48:18 ... SVG has pointer-events that let you decide what kind of events will work where. 19:49:13 hiroki has joined #w3conf-scribe 19:49:16 ... e.g. pointer-events: visible-painted means anything visible catches the event - visible-fill catches on visible things that are fill, but not the stroke ... 19:49:26 matt has joined #w3conf-scribe 19:49:52 [more source code...] 19:50:05 Vincent: Some hooks for scripting in canvas and SVG 19:50:36 ... canvas *is* scripting. SVG has a DOM, so you have APIs that let you poke things around with script - text properties, manipulating path data, ... 19:51:23 [demo of randomly putting dots on a defined path. Which is done by getting the path and then scripting things onto it] 19:52:02 Vincent: Animation can be done with scripting (as per last demo). A lot of people resort to that because animation support is not yet universal. 19:52:08 ... and in canvas that is how you do it. 19:52:39 ... In SVG you can use SVG declarative animation (except in IE at the moment), CSS animation coming. 19:52:45 [shows demo] 19:52:57 Tom has joined #w3conf-scribe 19:53:18 Vincent: [explains the code] 19:53:37 ... It can also be further manipulated with the DOM 19:54:00 ... Big fan of CSS animation, but doesn't have timing and synchronisation 19:54:13 ... I have to hook in scripts to do it, and a slight delay can make a mess. 19:54:37 ... Advantage of declarative animation is that I can have one animation start when another is finished, etc. 19:55:02 [more demos - building a newton's cradle with a few lines of SVG animation] 19:55:20 Vincent: Hope we get those features into CSS animation some time. 19:55:40 ... SVG uses CSS styling so you can do things you do in HTML documents 19:56:10 ... So I can easily provide high-contrast, etc. 19:56:27 s/high-contrast/high-contrast mode 19:56:35 Vincent: Multimedia integration is interesting. 19:56:52 ... there is audio tag in HTML5 (and in SVG) 19:57:00 ... so you can get events and manipulate it. 19:57:51 ... Web audio API (in development, currently multiple proposals) is really interesting. Lets you do interesting connection between graphics and audio 19:58:32 [Demo of using graphic effects alongside audio, based on timing the sound and making graphics to match] 19:58:58 -> http://svgwow.org some of these demos 19:59:47 [Next demo triggers directly from the audio to generate objects accoding to particular frequencies being hit] 20:00:20 Vincent: Canvas can render video into a canvas and then let you mess with it... 20:01:06 ... filtering, seeking into some part of the video, ... 20:01:20 ... pretty straightforward DOM programming. 20:02:24 [demos applying a filter effect live to a video] 20:03:19 Vincent: Why do we have two different models? Do we need them? 20:04:00 ... Canvas is low-level, useful, but missing lots of nice features. SVG has all that but no pixel-level access... 20:04:41 ... The debate is false. You *could* do everything with one or the other, but you probably should choose depending on your actual use case 20:05:23 [Demo: graffiti effects and the use cases for mix'n'match] 20:06:13 Vincent: To spray lots of dots canvas is great - simple, quick, while SVG is good for saving a path... 20:06:38 ... Sometimes the two can be combined. 20:06:54 ... How to do that is interesting - how do we mix HTML5, canvas and SVG? 20:07:06 ... HTML5 into SVG via foreignObject 20:08:05 ... To integrate SVG and canvas, can have a canvas in a foreignObject within an SVG 20:08:39 [demo SVG/canvas layer upon layer upon...] 20:09:16 Vincent: Or use toDataURL 20:10:04 hiroki has left #w3conf-scribe 20:10:29 [Demo of rendering a pattern into a canvas, using that to create an image to use as a pattern - much lighter than doing it in pure SVG] 20:11:21 Vincent: planned toBlob will be better - manipulating base64-encoded images is clunky. Hoping this will be widely supported soon. 20:11:43 ... Or use SVG in canvas, since it lets you draw images into it. 20:12:15 [demo using SVG to create part of an image, and canvas to repeatedly paint it for a visual effect] 20:12:51 Vincent: Takeaway - combinging SVG and canvas lets you do things more efficiently. 20:13:05 ... There are also lots of Frameworks you can use... why would you? 20:13:20 ... There are some that implement a feature which is not yet widely supported. 20:13:45 ... Or provide a feature specifically useful to a given domain. Or help portability... 20:14:31 ... Raphael.js is popular, isloates you from platform so it can render to VML in old IE. 20:15:31 ... Paper.js sits on canvas. Easle.js comes from a flash developer, check out his game "pirates love daisies" which he developed the framework for. 20:15:42 ... Follw the D3.js talk later in this conference 20:16:08 ... And there are frameworks to extend support across browsers by faking things not available in some browsers. 20:16:43 ... There are lots more, of course. Choose carefully. 20:17:40 Vincent: Canvas good in all browsers. SVG very good, missing fonts (ff/ie) and animation (ie) still 20:18:00 ... that's unfortunate. Would be nice to get the interoperability to developers. 20:18:19 ... WebGL is coming - some support in most browsers. 20:18:34 ... Also some issues with foreignObject and inline SVG that are still being worked on. 20:18:43 ... Lot of coolness coming, too. 20:19:35 ... e.g. typography, and more. 20:21:05 [Questions bumped to lunchtime] 20:21:20 Ian Jacobs: It is really ahrd to build a large complex platofrm in a standards body. 20:21:42 ...SVG, canvas, etc are developed by groups that are originally different communities. How do we bring them together and make them merge nicely? 20:21:56 ... That's somewhere you the people can help by participating 20:22:01 [LUNCHTIME] 20:22:06 rrsagent, draft minutes 20:22:06 I have made the request to generate http://www.w3.org/2011/11/15-w3conf-scribe-minutes.html chaals 20:23:06 OK er 20:23:11 might want to remove some stuff by me 20:23:33 yeah, it's ignored my corrections 20:23:54 oh 20:24:38 some was ignored, some now 20:24:39 hm 20:41:43 scribe: ajf 20:42:02 scribe: ajf 20:42:11 Someperson: something 20:42:15 ... something else 20:42:20 ... hence 20:42:38 RRSAgent, draft minutes 20:42:38 I have made the request to generate http://www.w3.org/2011/11/15-w3conf-scribe-minutes.html ajf 20:43:05 oh cool, that actually worked 20:43:17 er, enough of my messing with this process. 20:43:40 scribe: chaals, ajf 20:44:57 scribe: chaals 20:45:19 scribenick: chaals 21:08:05 becka11y has joined #w3conf-scribe 21:12:44 s/oh cool, that actually worked// 21:13:04 s/OK er// 21:13:25 s/er, enough of my messing with this process.// 21:13:41 s/might want to remove some stuff by me// 21:13:55 s/yeah, it's ignored my corrections// 21:14:11 s/... hence // 21:14:22 s/... something else// 21:14:35 s/Someperson: something// 21:14:53 s/hm// 21:15:00 s/some was ignored, some now// 21:15:06 s/oh// 21:19:26 shepazu has joined #w3conf-scribe 21:22:51 chaals: gonna draft that again> 21:29:48 chaals has joined #w3conf-scribe 21:30:31 good, you're back 21:30:35 scribe: chaals 21:30:35 rrsagent, pointer? 21:30:35 See http://www.w3.org/2011/11/15-w3conf-scribe-irc#T21-30-35-1 21:30:48 s/chaals: gonna draft that again>// 21:31:42 Topic: Housekeeping... 21:31:54 shepazu has joined #w3conf-scribe 21:32:02 IanJacobs: Pleae limit number of devices used, IPv4 is running out. 21:32:22 ... Video will be linked tonight, and broken into chunks tomorrow. Presentations linked this week. 21:32:30 tantek has joined #w3conf-scribe 21:32:41 ... We will have a feedback form later, please start thinking about your feedback. 21:32:49 Topic: Arvind Jain, Web Performance 21:33:33 Arvind: I work at Google, going to talk about new APIs designed to improve performance on the Web. 21:33:49 ... W3C performance group created last year to build things that make pages fast. 21:34:03 ... To make things faster, you need to know how fast they are now. So we have Web Timing APi. 21:34:18 s/Web/the Web/ 21:34:32 ... show developers what things are using time on what device/browser/... 21:34:34 tantek has joined #w3conf-scribe 21:34:50 ... needs to be detailed information. 21:35:04 ... At multiple levels - network, DOM, ... 21:35:28 ... 4 Specs: Navigation timing, resource timing, user timing and performance timeline. 21:35:44 ... Will talk about this. 21:35:57 tantek has joined #w3conf-scribe 21:36:24 Arvind: Navigation timing allows developer to see timing attributes at network, DOM, HTTP level. 21:36:37 ... and where the page comes from - cache, live navigation, ??? 21:37:00 ... because that is important information to understand what is happening to slow things down. 21:37:03 dsample has joined #w3conf-scribe 21:37:16 [chart of the process that happens to load a page] 21:37:36 Arvind: How long does the DNS lookup take? DOM events? when is the page completely loaded, ...? 21:38:23 ... So now it is possible to get a complete picture instrumenting the entire process. 21:38:55 ... support already in IE, FF, Chrome, Android. Specification is almost through the process (aiming for Proposed Rec this month) 21:39:24 ... Navigation timing isn't fine grained enough. Pages have lots of resources, and fetching them is often most of the time spent. 21:39:47 ... Resource timing API provides time spent on individual resources (images, scripts, ...) 21:40:22 ... How long does it take to connect to the server that hosts a particular resource, etc. 21:41:08 ... attributes like fetchStart, connectEnd, secureConnectionStart, etc... 21:41:26 ... redirectStart is interesting. Sometimes there are a chain of these to follow through. 21:42:05 hiroki has joined #w3conf-scribe 21:42:30 ... User timing provides high precision timer and method to buffer/retrieve information provided. 21:42:48 ... add a mark (name, time value). 21:43:01 ... and measure time between two marks. 21:43:32 ... Performance Timing API is really just a wrapper around the others. 21:43:45 ... give a single interface to access them. 21:44:53 Arvind: Timeline: expect implementation early next year, and then move the specs to Recommendation. 21:44:53 s/give/giving/ 21:45:13 Arvind: Some security things we ran across developing this. 21:45:35 ... with resource timing we allow a resource to send a header back to the browser on a cross-domain request, to get the timing information. 21:45:52 ... It is easier to detect if a user is behind a proxy. 21:46:22 ... Deducing from the relative times to connect. Real concern that browser cannot mitigate. 21:46:45 ... We ended up deciding this isn't a sufficiently big problem to outweight the benefits 21:47:03 ... We think we're not adding much value for fingerprinting attacks. 21:47:49 ... There are live usage of these APIs on the web. 21:48:07 ... allowing developers to find out how fast their apps run. 21:49:07 [shows screenshot and describes Google analytics' use] 21:49:34 sylvaing has joined #w3conf-scribe 21:49:40 Arvind: Page Visibility. This allows developer to know when the visibility of a page changes. 21:50:04 ... quite a few use cases. Many applications are doing a lot of owrk, but if they knew the app was not visible they could scale back resource use. 21:50:25 ... Also allows tracking of how long a user spends on a particular page. 21:50:34 hiroki has left #w3conf-scribe 21:51:08 ... (metrics used to be pretty inaccurate for this) 21:51:55 ... has document.hidden (boolean) or a visibility state that has more info 21:52:27 ... e.g. preview thumbnails, etc. 21:52:38 ... and an event for when things change. 21:52:58 ... similar timeline. 21:54:38 ... Some implementation, more coming. 21:54:54 ... Used in Google Analytics to see exactly what users are looking at. 21:55:13 ... and for preloading content to give it faster. 21:55:27 ... If you guess right what the user is going to look at. 21:56:02 ... Questions? 21:56:56 Ni: Engineer from Disney. We're looking into HTML5 video streaming live. We are using Apple's HLS, but nothing like that for Android. So, what are browser vendors thinking about this? 21:57:16 Arvind: I don't work on it, so can't really comment. Seems like a good standard that could make live streaming work. 21:58:19 Paul Cotton, Microsoft / HTML5 co-chair: W3C's HTML5 and Web/TV Interest groups met 2 weeks ago and had good discussions on making streaming work beter 21:58:30 ... I will be here today tomorrow and happy to talk about this more. 21:58:46 ???, U Washington: Can you use this for usability testing? Is anyone doing this? 21:59:01 Arvind: That is what people are doing - what takes time and how does that affect the user experience? 21:59:55 ... if something takes too long to load there is a performance problem. We can see other interesting things, e.g. how long does it take for a user to click on something as a pointer to whether the right things are there. 22:00:23 ??: Would you encourage using image bundles or keep images as individual resources? 22:01:26 Arvind: More resources == slower load. There is a tendency to consolidate objects. Mostly works well, but it depends on the case. 22:01:39 ... large cacheable images, probably not so helpful. 22:02:05 ... we want to improve this. SPDY an example of trying to minimise the issue for multiple requests. 22:02:13 s/for/of/ 22:02:27 ... hopefully the question becomes irrelevant in the future, with new protocols.... 22:06:39 Ben, UWash: ?? + what about people faking the metrics 22:06:55 Arvind: The benefit is primarily for the publisher, so there isn't that much value in them doing it. 22:07:28 Chaals, Opera: If we keep opening very very small increases in attack surfaces, how do we decide that we've added a lot of them and they add up to a real problem? 22:07:54 Arvind: Difficult question. We really defer this to security people, but we do need to consider it. 22:08:55 Topic: John Allsopp - Appcache and offline apps. 22:08:59 John: G'day. 22:09:34 ... A common criticism of the web is that it only works online, whereas native apps can work offline. 22:09:56 ... But that isn't true. I'll talk about appcache - which also helps performance but I won't talk about that today. 22:10:10 ... To use appcache: create a manifest.html, and then upload and serve it. 22:10:39 ... Appcache manifest is a textfile specifying three kinds of files - those that are always in cache, those taht are never, and those that can do it either way. 22:11:01 s/taht/that/ 22:11:11 [slides, which are online, are pretty clear :) ] 22:11:52 John. Stuff that is always coming from the cache comes from it even if the files are actually available because the network is there 22:12:09 [CMN: That lets you preload and store things to reduce load time eg for large images or something] 22:12:20 s/John./John:/ 22:12:40 John: Network section specifies things that should never be taken from cache. 22:13:23 ... and Fallback - things to use if you can't get a resource from the web. 22:14:59 ... NETWORK includes meaning "bypass the old browser cache, too" 22:18:47 [Tips and tricks, clearly expressed in the slides] 22:20:25 John: Version number in the manifest file being changed causes the manifest to be recached - it's like "touch" 22:20:59 ... I have a mistake here. IE 10 *does* support appcache now. 22:21:18 ... Backward compatibility story is clear. "You're offline - what did you want?" 22:22:34 ... Introduces http://www.westciv.com/manifestr 22:22:59 ... bookmarklet to make pages use appcache. But think when you use it for best results. 22:23:58 ... -> bit.ly/ummSW slides, links, ... 22:24:20 s|bit.|http://bit.| 22:24:34 rrsagent, draft minutes 22:24:34 I have made the request to generate http://www.w3.org/2011/11/15-w3conf-scribe-minutes.html chaals 22:25:23 Topic: Rajesh Lal, apps for mobile and TV world. 22:26:05 Rajesh: The N-Screens problem - you'll hit it developing apps for multiple connected devices 22:27:21 ... talking about mobile smartphone, PC, tablet, TV 22:27:31 [/me wonders where the millions of feature phones went] 22:28:03 Rajesh: When creating an app for these devices, start from the design problem. 22:29:26 [slides describe more - 1' / 3' / 9', differences in input, user focus, etc] 22:29:38 Rajesh: You don't want to get interrupted when watching TV. 22:30:05 ... You have a choice between native and web app. 22:30:33 ... Native is great for THAT device, but expensive. 22:30:48 ... not scalable. 22:31:25 ... Web app solution is the step in the right direction. HTML5 is the engine. (HTML5 was originally called web applications 1.0) 22:32:09 ... Apps can be on the browser, or wrapped in a native container as a hybrid application built in HTML5 but easy to distribute to devices. 22:32:42 [a "history" adding various functionalities at various stages] 22:33:32 Rajesh: Simultaneous with development there was a mobile revolution. 22:34:07 ... Web app - easy to develop, but web platform is work in progress. Challenges in porting to n-screens. 22:35:19 ... Challenges. 1: Feature detection. 22:35:38 ... stop browser sniffing, just look for the feature you want. 22:38:11 goodnight 22:41:28 chaals has joined #w3conf-scribe 22:41:46 s|http://bit.ly/ummSW|http://westciv.com/speakEasy/presentations/appcache/appcache-presentation.html| 22:41:47 ... use Modernizr / jquery 22:41:47 ... 2. Layout detection. Ladder of better and better scenarios. 22:41:47 ... Media queries [example], or use jquery if it isn't there, or ... down to JS window.width etc 22:43:29 ... via viewports, device oreientation/layout, and so on. 22:43:43 ... 3. Advanced graphics. CSS3 etc. 22:44:32 ... you start with -ms-foo -o-foo -mos-foo etc etc, and end up with a standard property. 22:44:41 4. Animation. 22:44:52 s/4./... 4./ 22:45:01 ... WebGL, SVG, Canvas, ... what when? 22:45:23 ... WebGL is awesome if you have it. CSS3 is fantastic. canvas, SVG, javascript. 22:46:46 [shows animation in SVG / canvas] 22:47:04 s/animation/code examples for/ 22:47:34 s/code examples for/explanation of how animation works/ 22:48:45 [CSS3 animation - nice and clean] 22:49:17 Rajesh: I think WebGL is the most awesome 22:49:31 ... 5. Audio/Video. Challenge is the audio. 22:49:43 ... HTML5 tag is limited, can't be used for sound effects 22:50:22 ... flash audio, audio data, some webkit specific thing 22:50:48 ... 6: Ajax for cross domain calls. 22:51:09 ... You need to get things from the cloud. 22:51:33 ... CORS, or write a proxy, or JSONP or a hybrid app 22:51:52 ... (decresing order of preference) 22:53:01 ... hybrid app lets you access cross domain by removing the HTML cross site restriction. 22:53:46 ... 7. Advanced APIs for all screens, and what are polyfills and shapes? 22:54:48 ... polyfills and shims are for falling back from the real API. 22:55:02 ... or all the way down to your javascript code. 22:56:21 [demo of using jquery to find out what is available in different browsers 22:56:33 s/browsers/browsers]/ 22:59:36 ... Point is don't worr about what is the browser or device, detect the features and implement functionality and then fall back for unavailable features. 23:01:32 [demo of layout adapting via media queries instead of changing the page itself] 23:02:23 s|demo of using|-> http://widgets-gadgets.com/html5/ demo of using| 23:02:53 Rajesh: Go look at W3C working groups and other resources 23:03:40 ... William Gibson: The future is here already, it is just not very evenly distributed 23:04:08 rrsagent, draft minutes 23:04:08 I have made the request to generate http://www.w3.org/2011/11/15-w3conf-scribe-minutes.html chaals 23:04:36 Ian Jacobs: Reception st 5.30 tonight - stick around (plus some intersting stuff between now and then :) ) 23:07:39 koalie has joined #w3conf-scribe 23:07:47 RRSAgent, this meeting spans midnight 23:08:12 chaals, done the "don't start new log at midnight utc" trick 23:08:38 you've well deserved your "W3C scribe" pin button, I see from the log! 23:08:44 chaals++ 23:08:58 koalie has left #w3conf-scribe 23:17:18 tantek has joined #w3conf-scribe 23:18:16 tantek_ has joined #w3conf-scribe 23:39:50 rrsagent, pointer? 23:39:50 See http://www.w3.org/2011/11/15-w3conf-scribe-irc#T23-39-50 23:41:00 Ian Jacobs: Using HTML5 on older browsers... 23:41:29 Topic: Ray Bango, polyfills and shims to light up sites in non-modern browsers. 23:41:47 Ray: There are some things to atlk about in supporting non-modern browsers. 23:42:02 ... I work for MS, am a member of JQuery product team. 23:42:12 s/product/project/ 23:42:18 tantek has joined #w3conf-scribe 23:42:33 s/atlk/talk/ 23:43:04 ... I love the HTML5 t-shirt 23:43:30 [slide - a bridge. that has broken...] 23:43:39 Ray: Gap is the non-modern browsers 23:44:33 ... going to talk about the issues, and the solutions that get us across the gap. 23:44:41 ... Biggest problem today is browser support. 23:45:01 ... most people have to support non-modern browsers. 23:45:36 ... From http://caniuse.com I can see stuff, and decide what *is* modern 23:46:17 Ian has joined #w3conf-scribe 23:46:28 ... modern browsers have issues for some browser, too. 23:46:42 ... fast update browsers have varying levels of support in deployed versions. 23:47:21 [market share slide by versions. looks like ants on a white table though] 23:47:46 Ray: 0.24% market share is millions of users... not supporting them has a real cost 23:48:26 ... it is important to give users a *decent* experience (doesn't have to be *the same*) 23:48:45 ... this is a real drag for devlopers. 23:49:04 ... Browser detection is a flawed concept today. 23:49:29 ... Feature detection is a solution. Cool thing about what browsers are doing is that there is a strong roadmap from W3C with a key set of features. 23:49:39 ... checking for thse lets us make our site future-proof. 23:50:07 ... addEventListener is a standards so if I check for it and it is there I'm good. 23:50:28 ... You might not *use* it. Or you can load script in dynamically. 23:50:50 ... You need to manage expectations. There is a responsibility when including someone else's code to mimic API functionality 23:51:34 Ray: Bad way to figure it out: use different event listening based on whether something is an MS browser or not. 23:51:57 ... assumes MS will keep supporting non-standard stuff for ever, and not support standard stuff. 23:52:18 [live coding demo] 23:52:48 [big click me link] 23:53:13 tantek has joined #w3conf-scribe 23:54:21 Ray: Right way s to check for the standard feature. If it is there, use it. And *then* if it isn't there, fall back to some proprietary patch 23:55:32 ... what about when feature detection is pages and pages of code? 23:55:56 ... Modernizr is the best option right now 23:56:28 [Shout-out to Paul Irish for modernizr] 23:56:29 [shows modernizr] 23:58:23 chaals has joined #w3conf-scribe 23:59:23 Ray: "if (modernizr.canvas && modernizr.audio)" is not really complicated... 23:59:48 [demo of a seriously degrading experience if you don't have canvas and audio support] 00:01:03 Ray: Polyfills and shims are cool, but entail responsibility. 00:01:10 shims/shivs/polyfills 00:01:15 polyfix 00:01:34 ... Polyfill replicates the standard itself. Shim replicates the functionality, but changes the API. Which means you have to go back and change stuff as the world moves on. 00:02:22 ... Nice list of polyfills around. Lots of great code. 00:02:44 ... HTML5Shim is a great polyfill 00:03:15 ... When you use a 3r party libray, you have to think about supporting it, even if the developer abandons it. 00:03:21 s/3r/3rd/ 00:03:30 ... you have to make sure it really works as advertised. 00:04:00 ... You want polyfills that support the same API. 00:04:17 ... eg socket.io revamped to match the W3C API, so you on't have to change your code for them. 00:05:07 [demo of a blocky layout using div class="..." where ... are HTML5 semantic tags] 00:06:18 Ray: Old browsers don't recognise the new tags. 00:07:58 ... old IE can't handle new semantic tags. John Resig came up with a workaround. Remy Sharp made it do this for you 00:08:55 ... and they put it into Modernizr. Yay. 00:09:44 [in demo, adding the shim. But still no internal style sheet for new elements in old browsers] 00:10:01 [so adding CSS to extend that too] 00:10:57 Ray: You can offer a degraded experience, IE 6 doesn't have to have the same experience as IE9 00:11:31 ... but I'm going to use jquery to load something to give rounded corners even in browsers that don't have them. 00:11:37 ... this is a shim. 00:11:45 [demo now has rounded corners] 00:12:54 Ray: Video... and codec support 00:14:15 ... you can use in HTML5 00:14:34 ... and you can embed an object element for a plugin too. 00:17:13 [editor: slightly disturbing expression of possibly inappropriate love of an animated rabbit] 00:17:33 [demo of video showing what Ray talked about] 00:18:05 I have made the request to generate http://www.w3.org/2011/11/15-w3conf-scribe-minutes.html Ian 00:19:40 Ray: Conclusion. HTML5 is good, we depend on it. users depend on us. We depend on their money. 00:19:57 ... There are ways to support the world. Use them thoughtfully. 00:20:26 ... Polyfills are more future-proof than shims. 00:21:07 Q: How do you transform videos into different formats? 00:21:14 Rey: There are services that do that. 00:21:31 [apparently http://archive.org ] 00:22:32 Topic: Christopher Slye, Web Typography 00:24:52 [Ironically, the typography of the opening slide looks really bad on the projector. So we have a delay of 2 minutes in a 15 minute talk] 00:25:17 Cristopher: Rich typography is coming to the web, some of it is there, more on the way 00:25:35 ... there are two basic formats: truetype and postscript 00:25:45 ... these are at the root of a lot of compatibility problems. 00:26:03 ... good news is that they will hopefully work the same in future web browsers. 00:26:22 ... truetype was "the web format" for compatibility with IE 8 and less. 00:26:47 ... EOT and WOFF are font containers. EOT for IE only, now we have WOFF. 00:27:21 ... a standard compressed font container with metadata capability. 00:28:20 ... CSS Fonts 3 gives properties (size, weight, ...), font faces, and features (the exciting bit) 00:28:30 ... @font-face really associates a name to a font. 00:29:31 ... Web Font Services handle a lot of scary stuff for you. format, subset, license, update, ... 00:30:50 ... There are users who set their own browser font properties differently, and are then upset about how your website renders. 00:31:13 ... Now we have it, we have to make typography really good 00:31:18 ... on the Web. 00:31:40 ... For the web, opentype layout is about substitution and positioning. 00:31:59 ... glyphs and instructions are not new, but are now exposing themselves to the web. 00:32:11 ... beware - subsetting can break things in opentype layout. 00:33:18 ... There are default behaviours, for ligatures etc. 00:34:28 ... and discretionary features (small caps, arbitrary fractions, ...) 00:34:42 ... Example of tying these together and making them look better. 00:37:28 Christopher: It's about tying a bunch of stuff together. Specifying and implementing things. 00:37:46 ... It's about enabling designers to do real typography and then it is up to them to do it. 00:38:12 [no questions] 00:39:35 Topic: Paul Irish, HTML5 - the foundation of the Web Platform 00:39:54 scribe Ian 00:40:04 scribe: Ian 00:40:28 paul: what html5 means from a browser perspective, and what's going on under the html5 covers 00:40:45 [About Paul....google chrom, modernizr, jquery, html5 boilerplate] 00:40:56 ...starts with the doctype 00:41:20 [Photo of a cafe centro in San Francisco] 00:41:46 [Location of a conversation on doctype between Todd Fahrner and Tantek Celik] 00:42:20 ...tantek proposed to use doctype as switch 00:42:32 ...for clue to standards support. 00:42:48 [Paul reads excerpt from email from todd fahrner] 00:43:11 ...todd proposal modal rendering 00:43:51 ..tantek prototyped it in IE5 Mac 00:44:01 ...at the same time mozilla was discussing with it on bugzilla 00:45:07 ...in html5 they looked at how browsers handle the doctype 00:45:27 ...idea was that if all browsers treat the same way, the shorter it can be: 00:45:36 ...next step is meta charset 00:46:49 ...handled by browsers differently due to how authors were including quotes 00:46:50 ...similarly shortened in html5 to 00:46:52 ...take that as the content type for html5 00:47:03 IMPORTANT: Need to define the character encoding for all documents. AND do so before 00:47:18 <Ian> why? because UTF-7 can be used for a scripting attack. 00:47:28 <Ian> s/attack/exploit/ 00:48:37 <Ian> ...next topic: parsing -> markup to dom 00:49:14 <Ian> [how parsing happens: tokenization, tree construction, check for document.write......document.write is a jerk! 00:49:58 <Ian> ...in 2002, Ian Hickson started to document how browsers handle invalid markup 00:50:35 <Ian> [Paul shows how browsers historically handled invalid markup to create different, non interoperable dom trees] 00:51:00 <Ian> ... in 2006, hixie wrote live dom viewer to show parsing results. 00:51:32 <Ian> ...real-time view of how a browser parses. 00:51:57 <Ian> ..note that view source is not viewing the constructed dom tree. 00:52:11 <Ian> ...firebug appeared shortly thereafter 00:52:54 <Ian> ...the dom viewer in firebug uses angle brackets in the views (though the brackets are not in the tree itself) 00:53:11 <Ian> ...html5 standardizes parsing of arbitrary markup 00:53:49 <Ian> ...now we have the exact same parser in a variety of browsers 00:54:29 <Ian> ...[quoting Bruce from Opera]: consumers can expect fewer interop problems .... 20% of problems in their study disappeared using standardized parsing 00:54:33 <Ian> ...html5lib 00:54:56 <Ian> ...validator.nu has a live dom viewer 00:55:59 <Ian> ...Google Web Toolkit (GWT) implementation of the parsing algorithm. 00:55:59 <Ian> ...I've been documenting ports in various languages 00:55:59 <Ian> ...java, php, ruby, js, 00:56:08 <Ian> ...if you are doing screen scraping, I recommend using one of these libraries. 00:56:12 <Ian> [back to the paul sample file] 00:56:27 <Ian> optional start tags: <html><head><body><colgroup><tbody>.... 00:57:20 <Ian> ...some end tags optional as well (as they were in html4) 00:57:33 <Ian> Paul: I would close your <p> tags...even if optional. 00:58:01 <Ian> [Paul gets all philosophical about end tags....] 00:58:10 <Ian> Paul: what's important is what your team considers maintainable. 00:58:28 <Ian> ...my main point is that this parsing algo is interoperable...you can feel comfortable writing as shown. 00:58:37 <Ian> ...paul shows a minimal HTML5 document. 00:58:41 <Ian> <!doctype html> 00:58:47 <Ian> <meta charset=utf8> 00:58:55 <Ian> <title>Svelte 00:58:59

Cool! 00:59:00 ==== 00:59:25 ...can set language on an element if you want. 00:59:36 ...example of google.com/404 01:02:48 ...next topic: