04:29 | <zcorpan> | jgraham: why isn't it logical to have attributes on the prototype? |
07:50 | <jgraham> | zcorpan: Attributes are properties of instances. Putting them on the prototype and using getter magic to return the value seems like a very muddy model that depends on implementation details |
07:50 | <JonathanNeal> | hiya |
07:54 | <zcorpan> | jgraham: but it makes feature detection simpler for authors |
07:56 | <jgraham> | Well not if 3/4 browsers don't use the model |
07:56 | <jgraham> | Since you will have to feature detect different things in different places |
07:57 | <jgraham> | Although I would agree in principle if that wasn't the case |
08:22 | <zcorpan> | so with authors > implementors, shouldn't we be moving to that model? |
08:24 | <hsivonen> | I wonder what kind of evil situations I should test with HTML in sync XHR that can be tested relatively deterministically in an automated test... |
08:25 | <hsivonen> | I'm now mainly testing charset stuff and that scripts don't run |
08:34 | <annevk> | <img> not loading? |
08:40 | <hsivonen> | annevk: oh yeah, I'm testing img, iframe, style sheet, video, object and script not loading |
08:41 | <hsivonen> | and the onload attribute in the loaded file doing nothing |
08:41 | <hsivonen> | my sync XHR testing is now on the level "seems to work. good." |
08:57 | <jgraham> | zcorpan: The point is that in the short term it makes things worse for authors. And in the long term it makes the mental model more confusing, although it will improve feature detection once we don't have to care about IE<11 (say) |
09:45 | <annevk> | sicking seems very confused with the proposal |
10:31 | <hsivonen> | annevk: which proposal? |
10:35 | <annevk> | oh sorry |
10:35 | <annevk> | the proposal for easier element creation |
10:49 | <hsivonen> | sigh. the reference maturity level issue just won't go away (now DAP and DOM4) |
10:50 | <annevk> | also see the geolocation list |
10:50 | <jgraham> | hsivonen: Making that issue go away would be admitting that the process is broken. Which it is. But there are still heads in the sand. |
10:50 | <annevk> | someone suggested referencing HTML4 for event handler attributes |
10:51 | <annevk> | trololol |
10:53 | <hsivonen> | Referencing HTML4 is even more sad than referencing DOM < 4 |
10:56 | smaug____ | hasn't even started to look at all the append/element creation proposals yet |
11:21 | hsivonen | finds <!DOCTYPE NETSCAPE-Bookmark-file-1> |
11:26 | <zcorpan> | hsivonen: does firefox use the html5 parser for importing bookmarks these days? |
11:34 | <hsivonen> | zcorpan: not yet |
11:35 | <hsivonen> | zcorpan: that's why I'm looking at a file that has a doctype like that |
11:37 | <zcorpan> | ok |
11:37 | <jgraham> | In unrelated news http://my.opera.com/desktopteam/blog/2011/10/07/ragnarok-css3-radial-gradients |
11:39 | <annevk> | yay for stig james arne et al |
11:39 | <hsivonen> | jgraham: cool |
11:40 | <annevk> | hmm |
11:40 | <annevk> | Opera Next says I'm using the latest snapshot |
11:40 | <annevk> | but I'm clearly not |
11:41 | <hsivonen> | annevk: the Ubuntu/Debian repo is also out of date |
11:41 | <jgraham> | annevk: They don't release the snapshots to autoupdate straight away |
11:41 | <smaug____> | hsivonen: still about parsing. Does the spec say that some elements can be moved in the DOM during parsing |
11:42 | <hsivonen> | smaug____: yes |
11:42 | <jgraham> | smaug____: s/can/must/ |
11:42 | <smaug____> | hsivonen: I mean, are some elements really inserted to DOM and then moved to some other place? |
11:42 | <hsivonen> | smaug____: yes |
11:43 | <hsivonen> | smaug____: however, in the innerHTML case, per spec, that happens in the fragment that gets inserted but our optimization optimizes away the fragment so that it happens in the tree in that case |
11:43 | <smaug____> | right |
11:43 | <smaug____> | I |
11:43 | <hsivonen> | smaug____: which is why I suggested turning off the mechanism that turns notifications into MutationRecords when the fragment parser is running |
11:43 | <smaug____> | I'm thinking about mutations while parsing the page |
11:43 | <hsivonen> | and then faking the MutationRecord right after |
11:43 | <jgraham> | hsivonen: Thanks btw |
11:44 | <hsivonen> | smaug____: while parsing the page from the network, stuff can get moved around per spec |
11:44 | <smaug____> | though, that all happens per spec... |
11:44 | <smaug____> | so if someone listens for mutations before the page is loaded, surprises are ok, I guess |
11:47 | <hsivonen> | smaug____: is the new mechanism so lightweight that reporting parser-made mutations is OK for perf? |
11:47 | <hsivonen> | jgraham: thanks about what? |
11:47 | <smaug____> | hsivonen: well, it is up to the web app to decide whether to use it or not |
11:48 | <jgraham> | hsivonen: 05:42 < hsivonen> jgraham: cool |
11:50 | <annevk> | smaug____, should we really have mutations for the parser inserted elements? |
11:51 | <hsivonen> | jgraham: ah. you're welcome |
11:51 | <smaug____> | annevk: I'm not sure |
11:51 | <hsivonen> | jgraham: are you no longer in Sweden or is just your IRC not in Sweden? |
11:51 | <smaug____> | annevk: that is something I'm trying to figure out |
11:51 | <jgraham> | hsivonen: Just my IRC |
11:51 | <hsivonen> | smaug____: will the Skype extensions be able to use it on every page? |
11:52 | <smaug____> | I sure hope Skype isn't using mutation events anymore |
11:52 | <smaug____> | I somehow thought they moved to our internal mutationobserver thingie |
11:52 | <smaug____> | since skype extension is anyway a binary extension |
11:53 | <jgraham> | hsivonen: I am balancing out the fact that Hixie's IRC is in Norway :) |
11:58 | <hsivonen> | smaug____: ok. my main point is that parse-time perf can be affected for all pages if an extension can request to see the MutationRecords for all pages |
11:59 | <annevk> | smaug____, doesn't sound like a good idea |
11:59 | <smaug____> | annevk: any particular reason why |
12:00 | <annevk> | cause you can already get to the result easily enough |
12:00 | <smaug____> | how ? |
12:00 | <annevk> | just wait until the parser is done |
12:01 | Cradam | likes the version-less html idea |
12:01 | <smaug____> | (again, I don't really have opinion whether it should be possible get mutationrecords during parsing) |
12:02 | <smaug____> | annevk: well, if you have a huge page, like HTML spec, some script might want to decorate elements while the page is still loading |
12:02 | <smaug____> | basically initialize widgets or such during the page load |
12:03 | <annevk> | I think for those you should get mutations |
12:03 | <annevk> | I would expect the parser to use DOM methods that do not affect mutation observers |
12:04 | <annevk> | internal stuff |
12:04 | <smaug____> | I don't understand |
12:04 | <smaug____> | " I think for those you should get mutations" ... "use DOM methods that do not affect mutation observers" |
12:04 | <annevk> | everything the parser does uses internal methods that do not affect mutation observers |
12:05 | <smaug____> | for what should you get mutations ? |
12:05 | <annevk> | but if you have a script that while parsing does a call to insertBefore or some such that would affect them |
12:05 | <smaug____> | so it is not possible to initialize widgets during parsing |
12:06 | <smaug____> | I'm talking about widgets like <div foobar="element_with_foobar_attribute_is_a_widget"> |
12:07 | <Cradam> | eugh i hate those wierd attributes people use |
12:07 | <annevk> | for that we are going to introduce a dedicated mechanism |
12:08 | <annevk> | <div is=something> or some such, see the component model discussion |
12:08 | <annevk> | it seems bad if you need all the overhead of mutation observers just for that |
12:08 | <Cradam> | i also find it wierd how people use "" when they arent needed |
12:09 | <bga_> | Cradam ++ |
12:09 | <bga_> | and close <td> |
12:10 | <annevk> | </td> being optional was a great idea |
12:10 | <bga_> | yes |
12:11 | <Cradam> | tables... who uses them other than for ecommerce |
12:12 | <annevk> | me |
12:13 | <Cradam> | annevk: seriously? |
12:13 | <bga_> | Cradam table layout is easy than div layout |
12:13 | <Cradam> | bga_: :O |
12:13 | <annevk> | Cradam, http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#concept-throw |
12:13 | <Cradam> | NEVER USE TABLES FOR LAYOUT! |
12:14 | <bga_> | :) |
12:14 | <smaug____> | tables are useful |
12:14 | <annevk> | or e.g. http://annevankesteren.nl/2010/07/matterhorn-tour |
12:14 | <annevk> | yeah, they're just annoying to author |
12:14 | <smaug____> | annevk: yes, I can see reasons to not fire create mutation records |
12:14 | <Cradam> | smaug____: yes for tabular data |
12:14 | <smaug____> | but for consistency they should be there... |
12:14 | <smaug____> | but I don't care too much |
12:15 | <smaug____> | I'm trying to get innerHTML + mutationrecords to work better first |
12:15 | <smaug____> | (in the implementation) |
12:16 | <Cradam> | annevk: why do i need that |
12:16 | bga_ | crying each time when write {document.createEvent() ...} |
12:17 | smaug____ | needs to find time to implement event ctors |
12:17 | <Cradam> | i repeat the NEVER part of my comment about not using tables for layout! |
12:17 | <annevk> | Cradam, what? |
12:18 | <Cradam> | annevk: why do i need that link about DOM |
12:18 | <annevk> | because you asked whether I used tables for something other than ecommerce and I said yes and then you asked if I was serious so I decided to give some examples |
12:18 | <hsivonen> | annevk: why can't I set responseType on XHR before the state is OPENED? |
12:19 | <Cradam> | ahh yes |
12:19 | <Cradam> | tables... who uses them other than for ecommerce and tabular data |
12:19 | <annevk> | hsivonen, because open() resets a bunch of things |
12:19 | <Cradam> | tables... who uses them other than for ecommerce and tabular data (other than newbs who don't know better) |
12:19 | <hsivonen> | annevk: hmmkay. failed my intuition |
12:20 | <annevk> | hsivonen, we could make it work I suppose, it kind of depends on how people want this to work |
12:20 | <annevk> | other than extensions there's not much love for XMLHttpRequest from people other than me |
12:21 | <hsivonen> | annevk: hey, I'm giving XHR some text/html love |
12:21 | <annevk> | technically that's an extension, but it's still great and appreciated :) |
13:58 | <hsivonen> | hrm. ES5 String.prototype.trim() affects more than space, tab, CR and LF |
13:58 | <hsivonen> | boo |
13:59 | <jgraham> | hsivonen: You won't liek any of the string stuff in ECMAScript |
14:00 | <jgraham> | It all depends on ever changing unicode standards |
14:00 | <hsivonen> | :-( |
14:02 | <Ms2ger> | hsivonen, and of course we should make HTML number parsing depend on it as well! |
14:03 | <hsivonen> | Can ES5 or Mozilla-specific JS do 64-bit ints these days? |
14:04 | <hsivonen> | maybe I should pass 64-bit ints as stringified in JS |
14:05 | <Ms2ger> | { hi: ..., low: ... }? |
14:06 | <smaug____> | I don't recall 64 bit |
14:06 | <smaug____> | isn't Number 53 bits or something strange like that |
14:07 | <bga_> | Ms2ger i have choosed to have internal charset w/ EOL, a-z, a-Z, 0-9 and $#... its just look like stantdard ascii but i dont trust standards :) and i have abstract class for external charset which can convert string to internal charset and back, have 'isClass' fn like isLowerChar for transforming/parsing w/o convert to internal charset |
14:07 | <bga_> | i'll show you later |
14:07 | <Ms2ger> | Wasn't 53 bits how much SM allows pointers to use? |
14:08 | <hsivonen> | smaug____: Number is a 64-bit IEEE 754 value per spec |
14:08 | <bga_> | hsivonen https://developer.mozilla.org/en/js-ctypes/js-ctypes_reference |
14:09 | <Cradam> | a[href="./"],a:link[href="./"] {} FTW |
14:10 | <smaug____> | hsivonen: yeah, but you can't express all the 64bit values using JS Number |
14:10 | <smaug____> | I mean 64bit int |
14:12 | <hsivonen> | bga_: thanks |
14:14 | <Cradam> | bored and poor = not a good combo |
14:14 | <Ms2ger> | You could write specs |
14:18 | <Cradam> | Ms2ger: ... |
14:18 | <Cradam> | why would anyone respect specs that i write, its not like i have 10 years of experience or a phd |
14:18 | <Ms2ger> | Me neither |
14:19 | <bga_> | Cradam write spec and its will die in draft state :) |
14:21 | <Ms2ger> | There's a lot of stuff that still needs specifications |
14:28 | <Philip`> | Ms2ger: Pointers are 47 bits, I think |
14:29 | <jgraham> | I wonder how many people writing specs *do* have 10 years of experince and a PhD |
14:29 | <Philip`> | (64-bit doubles can store 53-bit integers losslessly) |
14:30 | <Ms2ger> | jgraham, all the people who got us DOM3? :) |
14:30 | <Philip`> | If spec writers had PhDs, surely they'd be more likely to write specs in LaTeX than in HTML |
14:31 | <Cradam> | also how will writing specs relieve boredom of poverty |
14:31 | <Ms2ger> | You have something to do, and Google might end up hiring you |
14:31 | <smaug____> | Ms2ger: not D3E |
14:31 | <Ms2ger> | Don't talk to me about d3e ;) |
14:32 | <smaug____> | Google, or Mozilla or Opera might hire you, perhaps even Microsoft |
14:32 | <Cradam> | *or |
14:32 | <Cradam> | baha google would never hire me |
14:32 | <jgraham> | smaug____: That's just mean |
14:32 | <Cradam> | smaug____: i would NEVER work for MS |
14:33 | <Ms2ger> | Apple? |
14:33 | <bga_> | Oracle :P |
14:34 | <Cradam> | Apple is also not high on my willing to have a job with them |
14:36 | <hsivonen> | when will epoch time as JS Number lose millisecond precision? |
14:36 | <hober> | Cradam: :( |
14:37 | <Cradam> | hober: why? |
14:37 | <Ms2ger> | hober is an Apple employee |
14:38 | <Philip`> | hsivonen: 2^53 msecs = 2^43 secs = quarter of a million years |
14:38 | <hsivonen> | Philip`: ok. good |
14:39 | <Cradam> | hober: i only mean that they sound like they have a very corporate environment, i would rather work for google or mozilla |
14:41 | <gsnedders> | In other news, the HbbTV and OIPF specs are scary. |
14:41 | hsivonen | looks up OIPF |
14:41 | <gsnedders> | hsivonen: No 64-bit ints, just 64-bit doubles. |
14:41 | <hsivonen> | Wikipedia doesn't know what OIPF is |
14:42 | <gsnedders> | Open IPTV Forum |
14:42 | <hsivonen> | Oh Open IPTV Forum |
14:42 | <hsivonen> | gsnedders: who is implementing those specs besides Opera? |
14:42 | <hsivonen> | a dozen WebKit ports? |
14:43 | <gsnedders> | http://www.mediatvcom.com/content.php?page=hbbtv&preview=true&lg=en |
14:43 | <gsnedders> | A lot of them are custom CE-HTML impls |
14:43 | <Cradam> | i think i have upset hober |
14:44 | <hsivonen> | gsnedders: custom CE-HTML impls as in not using a pre-existing Web engine? |
14:44 | <gsnedders> | Yeah. |
14:45 | <hsivonen> | gsnedders: the only browser vendors there that I've heard about are Opera, Access and ANT |
14:45 | <hsivonen> | I wonder how Web-compatible the non-Opera engines are |
14:46 | <gsnedders> | They aren't, pretty much. |
14:46 | <hsivonen> | gsnedders: who provides the content that these engines ingest? cable company extranets? |
14:46 | <gsnedders> | hsivonen: Pretty much. Sometimes widgets as well. |
14:47 | <hsivonen> | I wonder what the sales pitch for the non-Opera vendors is |
14:47 | <gsnedders> | These things do rather help our > 70% marketshare on TVs… |
14:47 | <hsivonen> | oh. the Comedia thing is said to be WebKit |
14:48 | <gsnedders> | I believe there are other WebKit based impls too. |
14:48 | <Cradam> | ie6 usage at 9% FTW |
14:48 | <gsnedders> | But certainly not with any large amount of development resources to practically have a good enough product to sell. |
14:49 | <hsivonen> | Recently, Poland joined Finland, Sweden, Norway and Denmark as a contry with < 1% IE6 usage share |
14:49 | hsivonen | wonders how security patches work with TVs |
14:49 | hsivonen | guesses they don't |
14:49 | <gsnedders> | Depends on the TV. |
14:50 | <gsnedders> | Some TVs have browsers in ROM, so they don't, at al. |
14:50 | <hsivonen> | Since our TV works, I've figured that there wouldn't be much of an upside to connecting it to the Internet and trying a software update |
14:51 | <hsivonen> | though I believe our TV doesn't have a browser |
14:51 | <hsivonen> | IIRC, it came with legal stuff that suggested it has some Mozilla software in it. NSS probably |
14:52 | <gsnedders> | In general Opera-based TVs updates are entirely up to the vendor. |
14:52 | <gsnedders> | Because for a lot of them we merely ship an SDK to the vendor. |
14:52 | <hsivonen> | It would suck to start relying on a browser, find out that it has an XSS-enabling hole and not get a fix |
14:53 | hsivonen | uses Firefox for TV browsing (Firefox running on a Mac Mini) |
14:54 | <Cradam> | hober: i am sorry |
15:07 | <zewt> | i don't think i've ever seen Android update its browser either, except during a full OS update |
15:09 | <Cradam> | i don't understand the use of TV's |
15:09 | <Cradam> | in modern cyber space |
15:12 | <gsnedders> | zewt: Heck, my Android phone has known security bugs in it, because the vendor (HTC) didn't want to support a year old phone. :\ |
15:12 | gsnedders | gets tempted to get involved in web TV standards again, but doesn't really want to inflict that pain on himself |
15:12 | <gsnedders> | But they are such a mess. :\ |
15:12 | <Ms2ger> | You could get involved with the IETF instead |
15:13 | <gsnedders> | Ms2ger: Considerably less painful. |
15:13 | <zewt> | the browser, at least, should be updated by market like every other google-provided app--but I've never once seen that happen |
15:13 | <gsnedders> | zewt: Probably not because WebKit is a system library, and that's where the interesting bits lies. |
15:13 | <gsnedders> | *lie |
15:14 | <gsnedders> | Like, the browser itself is fairly uninteresting, and unlikely to be where any security issues are. |
15:15 | <zewt> | it's pretty astounding that Google didn't set up their mobile OS to allow updating the browser easily, and ship with a solid browser (android's browser is very ... not) |
15:15 | <zewt> | (tried developing simple touchscreen webapps supporting it; not fun at all) |
15:17 | <hsivonen> | zewt: Firefox and Opera Mobile to rescue |
15:18 | <zewt> | google should not be creating new old, unupdated, buggy browsers that almost everyone on a platform uses; we're just getting rid of one of those D: |
15:19 | <hsivonen> | gsnedders: what kind of holes? |
15:20 | <zewt> | i still havn't found a really reliable way to make a webapp go fullscreen on androidbrowser (eg. without the gigantic address bar) |
15:20 | <zewt> | google images seems to do it but I don't think I figured otu how |
15:21 | <hsivonen> | zewt: Google employees could start giving presentations where they call the Android default browser a "boat anchor browser" :-) |
15:44 | <gsnedders> | hsivonen: http://www.dailytech.com/88+Serious+Security+Bugs+Identified+in+Android+22+Froyo/article20060.htm |
15:50 | <smaug____> | <meta http-equiv="X-UA-Compatible" content="IE=8" /> mean that the web site requires IE8 mode, right? |
15:50 | <Ms2ger> | Looks like it |
15:53 | <Cradam> | smaug____: and why would you use it rather than just getting IE8 portable |
15:53 | <smaug____> | I'm not using it |
15:53 | <smaug____> | a web page is using it, and it would apparently actually break without it |
15:54 | <Cradam> | smaug____: check what it looks like with it turned off with your dev tools |
15:54 | <Cradam> | and report whether it breaks |
15:57 | <hsivonen> | smaug____: well, if you see that, you don't really know if it really requires the IE8 mode or if would work in IE9 mode, too |
15:57 | <Cradam> | hsivonen: or you can press f12 and turn it off |
15:59 | <smaug____> | hsivonen: well, in this case I assume it would break in IE9 mode. The problem is what HTMLElement.prototype.onmouseenter = function() {} does |
15:59 | <smaug____> | Gecko and IE9 throws exception per spec |
16:00 | <smaug____> | but the web page doesn't expect that |
16:12 | <hsivonen> | unsuprisingly, the Netscape bookmark format doesn't adhere to HTML vocabulary design patterns |
16:13 | <hsivonen> | there's a boolean attribute that takes the value "true" |
16:13 | <hsivonen> | there are also attribute names with underscores in them |
16:16 | <timeless> | hsivonen: Cable boxes are more exciting for Updates than TVs :) |
16:16 | <timeless> | at least TVs have a UI |
16:16 | <timeless> | but in general, security updates on embedded devices are a disaster |
16:16 | <timeless> | odds generally are that they don't secure the transport |
16:16 | <timeless> | and do a bad job of validating the update package |
16:17 | <timeless> | and yes, it's like Windows 9x, where you probably will have a better chance of being rooted before you can get your box updated :) |
16:42 | <JonathanNeal> | mornin' |
16:49 | <JonathanNeal> | Would anyone be interested in helping me edit diveintohtml5 for accuracy with present technologies? |
17:00 | <timeless> | define edit? |
17:00 | <timeless> | i'm slightly willing to review documents that are less than 3 screens tall |
17:00 | <timeless> | (roughly under 2 printed pages?) |
17:03 | <JonathanNeal> | Well, if you could review some of the wording at http://diveinto.org/html5/ anywhere you please as little or as much as you please, it would be greatly appreciated. |
17:03 | <timeless> | it's easier for me to review in response to a specific request |
17:04 | <timeless> | so, i'll review the literal page you linked, you poke me on Tuesday for another page |
17:04 | <timeless> | ok? :) |
17:06 | <timeless> | actually, that page is too bland :) |
17:06 | <timeless> | http://www.diveinto.org/html5/introduction.html |
17:06 | <timeless> | > But you can detect support for individual features, like canvas, video, or geolocation. |
17:06 | <timeless> | offhand, i think you /might/ want s/or/and/ |
17:06 | <timeless> | > That’s an important part of it, but it’s not the whole story. |
17:06 | <timeless> | I personally do s/it's not/it isn't/g |
17:07 | <timeless> | > The HTML5 specification also defines how those angle brackets interact with JavaScript, through the Document Object Model (DOM). |
17:07 | <timeless> | i'm not sure about the <comma> there, i believe it's valid both ways, but i wonder if it's better without it |
17:08 | <timeless> | > Even Microsoft — rarely known for blazing the trail of standards support — will be supporting most HTML5 features in the upcoming Internet Explorer 9. |
17:08 | <timeless> | IE9 shipped, so that `will be` needs to be redone |
17:09 | <AryehGregor> | What happened to diveintohtml5.org? |
17:09 | <timeless> | Mark disappeared from the face of the earth iiuc |
17:09 | <timeless> | > HTML5 features like geolocation (Chapter 6) and video (Chapter 5) were first provided by browser plugins like Gears or Flash. |
17:09 | <timeless> | s/or/and/ |
17:09 | <AryehGregor> | Really? Does anyone know the circumstances? |
17:10 | <timeless> | i don't, but there are some places that talked about it |
17:10 | <timeless> | i didn't spend the time reading it, i just filed it away as "i should remember that" |
17:10 | <timeless> | i'm not sure if it was the earth or the digital earth fwiw |
17:11 | <AryehGregor> | http://meyerweb.com/eric/thoughts/2011/10/04/searching-for-mark-pilgrim/ |
17:12 | <Cradam> | timeless: mind making your speech easier to read |
17:12 | <annevk> | is he no longer working at Google? |
17:13 | <timeless> | Cradam: sorry, please clarify? |
17:13 | <timeless> | (suggestions welcome) |
17:13 | <timeless> | ... i tend to write using w3 style scribe regexps (s///), which actually mean something to a scribe.pl script |
17:14 | <timeless> | they tend to be easier than diff -u output :) |
17:14 | <timeless> | AryehGregor: ok, thanks for making me read that :) |
17:15 | <timeless> | JonathanNeal: anyway, that's as much time as i can allocate today |
17:15 | <timeless> | poke me Tuesday w/ another page |
17:18 | <JonathanNeal> | thanks timeless |
17:22 | <Cradam> | timeless: yes well we kinda don't want to read regexps |
17:23 | <AryehGregor> | Cradam, some of us are accustomed to it. |
17:24 | <timeless> | i have a couple of editing styles, i can switch to one of the others |
17:24 | <JonathanNeal> | So, is it "HTML 4" and "HTML5"? What's with the sometimes space? |
17:24 | <timeless> | i believe so |
17:24 | <timeless> | google: HTML4 yields About 9,800,000 results (0.17 seconds) |
17:25 | <timeless> | google: "HTML 4" yields About 15,000,000 results (0.19 seconds) |
17:25 | <timeless> | I'm not sure where blame lies for the change |
17:25 | <miketaylr> | are we on "H:TML" or "HTML LS™" now? |
17:25 | <timeless> | it's possible that it's the Media |
17:25 | <timeless> | miketaylr: *sigh*, i'm sure i should recognize those references, but i don't |
17:25 | <Cradam> | i type HTML5 because it is more of a name than a version |
17:26 | <miketaylr> | timeless: oh latter is living standard, former is... i may have just made it up |
17:26 | <timeless> | yeah, i think part of it is that "HTML 4" really referenced the "HTML 4" specification |
17:26 | <Cradam> | HTML LS sounds cool |
17:26 | timeless | has seen : notation *somewhere* |
17:27 | miketaylr | recalls something as well but forgets |
17:28 | <JonathanNeal> | timeless: that was great, I made all the changes you mentioned |
17:28 | <JonathanNeal> | minus the or/and for around "browsers already support" where there wasn't an "or" to replace. |
17:29 | <timeless> | sorry, what's "browsers already support"? which line of context failed? |
17:31 | <AryehGregor> | Is there some way to get the time when the page has been fully laid out and is actually interactive? |
17:31 | <AryehGregor> | Programmatically. |
17:31 | timeless | thought gecko had an event for that |
17:31 | <JonathanNeal> | timeless: nevermind, I found the "or" you were referring to. |
17:31 | <timeless> | do you want an event or a timestamp? |
17:31 | <timeless> | JonathanNeal: cool |
17:32 | <AryehGregor> | Either would do. |
17:32 | <timeless> | please feel free to respond like that indicating a failure, but preferably indicating which line i quoted and the regexp i specified |
17:32 | <JonathanNeal> | Is it wrong to say "HTML4". Should it be "HTML 4" ? |
17:32 | <timeless> | JonathanNeal: it's 3:2 in favor of the latter |
17:32 | <timeless> | since the spec is called the latter, i believe it really should be |
17:33 | <timeless> | probably a page explaining the names for HTML 3.2 / HTML 4 / HTML5 would be useful |
17:33 | <JonathanNeal> | timeless: but it's "HTML5" all together, yes? |
17:33 | <timeless> | you can stick it in an appendix |
17:33 | <timeless> | yeah |
17:33 | <JonathanNeal> | Yea. |
17:33 | <JonathanNeal> | Okay, cool. |
17:36 | <Ms2ger> | HTML LS makes me think of DOM LS |
17:36 | <timeless> | indeed |
17:36 | <timeless> | did you cry or tear your hair out? |
17:37 | <Ms2ger> | I'm used to worse than that ;) |
17:40 | <miketaylr> | oh right, i remember. wasn't there a H:TML for HTML: The Markup Language at some point? |
17:41 | <miketaylr> | oh this guy, http://www.w3.org/TR/html-markup/ |
17:43 | <sicking> | jgraham: i probably misunderstood the proposal |
17:43 | <sicking> | jgraham: will look at your library |
17:43 | <Ms2ger> | Don't, unless you want to poke your eyes out :) |
17:58 | <Hixie> | JonathanNeal: it's just "HTML" :-) |
17:58 | <JonathanNeal> | Right. |
17:59 | <JonathanNeal> | Well, I was meticulous. |
17:59 | <timeless> | HTML5 is just the Media's Brand Name |
18:31 | <Cradam> | its called a buzz word timeless |
18:32 | <timeless> | s/its/it's/ ;-), sure... |
18:34 | <JonathanNeal> | :) |
18:36 | timeless | leaves |
18:36 | <timeless> | גמר חתימה טובה |
18:36 | <AryehGregor> | timeless, same to you. |
18:37 | <AryehGregor> | jgraham, so if I use innerHTML with escaping in that one place, instead of textContent 75,000 times, it drops the time until the load event from about 35s to about 7s. |
18:37 | <AryehGregor> | (in Chrome 15 dev) |
18:37 | <AryehGregor> | In Firefox 8.0a2, it drops it from around 78s to 45s. |
18:41 | <AryehGregor> | jgraham, while I agree that in general it's better to use textContent instead of doing escaping manually, it's justifiable to use less-safe techniques in cases where they provide a large enough performance increase. |
18:41 | <AryehGregor> | FWIW, if I comment out your test suite and do function test(f) {try{f()}catch(e){}} and define assert_* as no-ops, it takes like one second to run the tests. |
18:42 | <AryehGregor> | So the time it's taking is basically all the test suite, not the tests. |
18:44 | <JonathanNeal> | http://www.diveinto.org/html51/ is what I'm putting together thus far. It's juuuuust beginning. |
19:00 | <AryehGregor> | jgraham, diff: http://pastebin.com/wbAazWRk |
19:24 | <AryehGregor> | jgraham, additional proposed change: hide results by default if there are > 1000 rows. This reduces my real-world test-case to about 7 seconds in Chrome from 25 or so, from starting to load it until the page is usable. |
19:24 | <AryehGregor> | http://pastebin.com/YKdPRTem |
19:24 | <AryehGregor> | Of course, checking either of the boxes will freeze the tab for ten seconds or more. |
19:39 | <AryehGregor> | jgraham, I pushed another performance change that should hopefully be unobjectionable. I'll wait for your feedback before pushing the other two. |
19:59 | <Cradam> | one thing i love, PDF |
19:59 | <Cradam> | i love read-only files :P |
19:59 | <Ms2ger> | Philip`, so your PhD is done by now? |
20:00 | <smaug____> | AryehGregor: what is taking 35s in Chrome but 78s in FF ? |
20:00 | smaug____ | would like to profile that |
20:00 | <Ms2ger> | The editcommands tests, I presume |
20:03 | <smaug____> | hmm, that might involve editor. /me leaves testing to ehsan |
20:03 | <Ms2ger> | Very much so |
20:25 | <Philip`> | Ms2ger: Yep |
20:25 | <Ms2ger> | Good, then you can start looking at my bugs :) |
20:25 | <AryehGregor> | smaug____, running 26,000ish tests in jgraham's test harness. I don't think it has anything to do with the tests themselves, it's all test harness overhead AFAICT. |
20:25 | AryehGregor | goes to dig up a stable URL for an example |
20:26 | <smaug____> | ah, it would be interesting to know what in the testharness causes that difference |
20:26 | <AryehGregor> | The exact URLs I'm using are works-in-progress, not useful for me to hand them out to anyone. |
20:26 | <smaug____> | I think I haven't profiled textContent |
20:27 | <AryehGregor> | smaug____, e.g., this takes over twice as long for me in Firefox as Chrome (will freeze Firefox briefly): http://dvcs.w3.org/hg/editing/raw-file/98671dcd5b1f/selecttest/Selection-collapse.html |
20:28 | <AryehGregor> | In that case it's less drastic, since it's only 4-5s in Chrome to start with, 9-10s in Firefox. |
20:28 | <AryehGregor> | Beware, the version of testharness.js included with that will change. I'm in the middle of optimizing it. |
20:29 | <AryehGregor> | So if you want to profile properly, I suggest saving the page and all includes. |
20:30 | <Philip`> | Ms2ger: Hopefully :-) |
20:31 | Philip` | needs to work through a backlog of things |
20:31 | <Ms2ger> | Yeah, I believe you do ;) |
20:32 | <smaug____> | AryehGregor: well, very briefly |
20:32 | <AryehGregor> | ? |
20:33 | <smaug____> | AryehGregor: that test takes like 5s here |
20:33 | <smaug____> | and the freeze is very short |
20:33 | <AryehGregor> | smaug____, I've discovered my CPUs are older and cheaper than most people around here. :) |
20:33 | <AryehGregor> | Freezes for more like 10 seconds for me. |
20:33 | <smaug____> | my macbook is ancient |
20:33 | <AryehGregor> | Well over a minute for longer test-cases. |
20:33 | <AryehGregor> | What CPU does it have? |
20:34 | <smaug____> | (I use macbook only for profiling. For other things I want reasonable UI) |
20:34 | <smaug____> | dunno what cpu |
20:35 | <AryehGregor> | Anyway, obviously, Chrome doesn't freeze at all, except that one tab. One of the biggest reasons I use Chrome right now. |
20:35 | <smaug____> | 2Ghz core 2 duo |
20:36 | <AryehGregor> | I'm using a 2.6 GHz AMD 64 X2. So it's unsurprising that a Core 2 Duo is faster even at a slower clock speed, but a factor of two seems excessive. |
20:36 | <AryehGregor> | Oh well. |
20:38 | <smaug____> | bah, Shark doesn't work |
20:38 | <AryehGregor> | What's Shark? |
20:39 | <smaug____> | the profiler on OSX |
20:42 | <AryehGregor> | Ah |
20:42 | <AryehGregor> | . |
21:27 | <AryehGregor> | jgraham, so with my additional two patches applied, Chrome seems to be spending most of its time on a) actually running the test content and b) doing hard-to-optimize-further things like doing the giant innerHTML set, and make_message/format_value. |
21:28 | <AryehGregor> | (I could probably optimize make_message/format_value some, but it's only like 10% of the profile at this point, so it's not really worth it.) |
21:28 | <AryehGregor> | I.e., I don't see any really low-hanging optimizations at that point. |
21:28 | <AryehGregor> | Firefox is similar, but seems to do a bit worse -- it takes much longer on ancestor_windows for whatever reason, and maybe some others. Firebug's profiling is worse than Web Inspector's, though, so not sure. |
21:30 | <AryehGregor> | Well, let me correct that: I bet I could still massively optimize layout. But I don't have good tools for that. |
21:36 | <AryehGregor> | Hmm . . . it looks like if I defer layout, it takes much longer than if I do it right away. |
21:37 | <AryehGregor> | Probably the "add a bunch of consecutive visible nodes to DOM" case is much more optimized than the "remove display: none from a bunch of existing nodes". |
21:37 | <AryehGregor> | So perhaps we don't want that patch. |
21:38 | AryehGregor | tries to think what could possibly speed up layout here, but has no idea, since he doesn't know how layout works at all |
21:38 | <AryehGregor> | Other than having fewer things to lay out, naturally. |
21:54 | <AryehGregor> | jgraham, consider my second patch (hide results by default if there are >1000 tests) retracted. It seems to do more harm than good. |
21:55 | <AryehGregor> | The innerHTML one still stands, though. |
22:19 | <annevk> | http://lists.w3.org/Archives/Public/public-webapps/2011OctDec/0131.html |
22:19 | annevk | is somewhat surprised |
22:36 | AryehGregor | is only moderately surprised |
22:36 | <AryehGregor> | mpilgrim is a perennially surprising person. |
22:37 | <AryehGregor> | So it tends to dull over time. |
22:44 | <jgraham> | AryehGregor: Sigh. If we must have innerHTML stuff can we at least have a single escaping function |
22:50 | <annevk> | Hixie, you are not defining what happens when you set an event handler that is already non-null? |
22:51 | <annevk> | Hixie, or for that matter, what happens when you set a non-null event handler to null |
22:51 | <Hixie> | nothing happens (other than it gettings its new value) |
22:51 | <Hixie> | getting |
22:52 | <Hixie> | i can say that if you like |
22:52 | <annevk> | the event listeners associated with the EventTarget surely change in some way? |
22:53 | <Hixie> | no |
22:54 | <Hixie> | all that changes is the value of the event handler |
22:54 | <Hixie> | (which i think is already defined) |
22:54 | <Hixie> | (but i can check in a sec) |
22:54 | <Hixie> | the event listener itself is just a small anonymous function that calls the event handler if it's not null |
22:54 | <Hixie> | all event listeners that have ever been set to a non-null value have the same one |
22:54 | <Hixie> | the same anonymous function, i mean |
22:55 | <annevk> | oh interesting |
22:56 | <annevk> | I wonder if that's exposed in any way |
22:56 | <Hixie> | if it wasn't done that way "return false" wouldn't work |
23:09 | <Hixie> | annevk: what does "a Function object" mean in DOM Core? |
23:09 | <Hixie> | a JS Function object? |
23:09 | <Hixie> | or an object implementing the HTML spec's Function interface? |
23:11 | <Hixie> | and is the callback this value for addEventListener() really the target, not the currentTarget? |
23:11 | <Hixie> | for event handlers it's the currentTarget, right? |
23:12 | <annevk> | yeah, ECMAScript |
23:12 | <smaug____> | callback this value must be currentTarget |
23:15 | <smaug____> | (well, of course not if callback is actually an object, not a function) |
23:16 | <annevk> | smaug____, thanks fixed |
23:16 | <annevk> | Hixie, I wasn't sure how to mark up Function |
23:16 | <Hixie> | yeah |
23:17 | <annevk> | Hixie, it's currentTarget for both apparently, didn't test properly :( |
23:17 | <Hixie> | k |
23:17 | <annevk> | but the spec is fixed now |
23:19 | <annevk> | oops, bedtime, ttyl |
23:21 | <michaelw> | if a script element which has async or defer set is removed from the document tree *before* the script actually run, should it still run eventually? |
23:22 | <Hixie> | i believe the answer is no |
23:22 | <Hixie> | wait |
23:22 | <michaelw> | anything else would've raised more questions :) |
23:22 | <Hixie> | it depends on whether the element was inserted by the parser or not |
23:23 | <Hixie> | see a Function object |
23:23 | <Hixie> | er |
23:23 | <Hixie> | see http://www.whatwg.org/specs/web-apps/current-work/#execute-the-script-block |
23:23 | michaelw | looks |
23:25 | <Hixie> | annevk: dom core doesn't pass the Event object to the listener! |
23:37 | <michaelw> | Hixie: hmm, I don't see it in the section you referenced, but in the section directly above (in particular, step 15), I could read it that way, because the defer scripts go to the "list of scripts that will execute when the document has finished parsing" (and async scripts to the "set of scripts that will execute ASAP") |
23:39 | <michaelw> | however, fun starts if a defer script is in that lists, and the document is blown away and a new one is created (which I understand is possible)... |
23:54 | <Hixie> | michaelw: if the document is blown away, the list is never used, is it? |
23:54 | <Hixie> | i don't recall exactly where the list is used |
23:54 | <Hixie> | in the parser is one place |
23:54 | <Hixie> | i think in the script section is the other, there's some text somewhere that talks about it |
23:54 | <Hixie> | this particular part of hte spec is one of the most complicated aspects of the web platform, fwiw |
23:58 | <michaelw> | Hixie: even for the case that a script wants to remove everything from a document, there is no way to avoid executing the (then potentially unneeded) async and defer scripts |
23:58 | <michaelw> | (by everything I mean all nodes) |