| 01:36 | <Hixie> | i accidentally wrote </li> instead of </ol> and the validator said "error fatal: Too many messages" after spewing about one error per paragraph in html5 |
| 01:36 | <Hixie> | i may have to admit that the html5 parser's recovery is not necessarily what a validator should try to do |
| 06:55 | <heycam> | "A person's name is not the title of a work — even if people call that person a piece of work" -- heh |
| 08:09 | <hsivonen> | Hixie: I found obsolete attributes useful today: http://hsivonen.iki.fi/performance-mistake/ |
| 08:10 | <hsivonen> | Hixie: what would have been the right way to do the table cell alignment? |
| 08:11 | <hsivonen> | huh? is the W3C establishing a new *Activity* for EOT? |
| 08:22 | <virtuelv> | hsivonen: url? (that eot thing) |
| 08:22 | <hsivonen> | virtuelv: http://lists.w3.org/Archives/Public/www-archive/2008Aug/att-0010/EOT-charter-draft-1.html |
| 08:24 | virtuelv | shall refrain from commenting further |
| 09:08 | <zcorpan> | Hixie: "and required that if two of these attributes are specified (or if all three are specified, in text/html), they have the same value." -- afaict it's not allowed to specify all 3 per the spec |
| 09:09 | <zcorpan> | "Authors must not use the xml:lang attribute (that is, the lang attribute with the xml prefix in the http://www.w3.org/XML/1998/namespace namespace) in HTML documents." |
| 09:10 | <hsivonen> | xml:lang causes so much trouble |
| 09:11 | <hsivonen> | in retrospect, XML 1.0 should have reserved id, class and lang |
| 09:13 | <zcorpan> | hsivonen: i've came to that conclusion too |
| 09:13 | <zcorpan> | s/came/come/ |
| 09:14 | hsivonen | decides to start measuring the performance cost of the HTML5 tree construction layer |
| 10:44 | <Hixie> | hsivonen: i think we may want to expose charoff on col or td |
| 10:44 | <Hixie> | hsivonen: but there's not much point before UAs have any intention of implementing it |
| 10:45 | <Hixie> | zcorpan: yeah i guess you can't include all three on one element without violating another rule before worrying about the values anyway |
| 10:45 | <hsivonen> | Hixie: how about getting to use align conformingly in the mean time? |
| 10:45 | <Hixie> | what's wrong with the css equivalent? |
| 10:46 | <Hixie> | td + td { text-align: right; } |
| 10:47 | <Hixie> | anyway bed time now |
| 10:55 | <hsivonen> | Hixie: that violates the separation of content and style. I the rules in the style sheet should not have to depend on what number of columns my tables have and which columns have which alignment |
| 12:47 | <takkaria> | hsivonen: interesting the results you got with your performance changes |
| 12:48 | <takkaria> | hsivonen: because in hubbub, I was briefly toying with having a buffer only when required and switching to it if NULs/CRs/entities were encountered |
| 12:49 | <takkaria> | hsivonen: turns out it added a lot of extra macros, removed clarity, and it ended up easier and about as fast to do unconditional buffer writes |
| 12:50 | <hsivonen> | takkaria: I guess it's comforting that C is like that, too, and this isn't just a Java thing ;-) |
| 12:51 | <takkaria> | I wish I knew x86 well enough to speculate on why it's the case |
| 12:52 | <hsivonen> | today, I measured the perf cost of the HTML5 tree builder compared to an XML-ish tree builder |
| 12:52 | <hsivonen> | I'll blog about that later |
| 12:53 | <hsivonen> | executive summary: the Validator.nu HTML Parser's tokenizer is almost as fast as Xerces without the HTML tree builder complexity |
| 12:55 | <takkaria> | that's pretty speedy |
| 12:56 | <takkaria> | Hubbub's tokeniser tokenises HTML5 in about 0.5s |
| 12:56 | <takkaria> | which is something like 5MB/s |
| 12:58 | <takkaria> | however, libxml tokenises and produces a tree in 0.8s. so there's quite a lot of scope for improvement, or so I hope |
| 13:03 | <hsivonen> | takkaria: do you count IO when benchmarking the tokenizer? |
| 13:04 | <takkaria> | I have some perf tests around which basically mmap() a file into memory and then pass the memory thus mapped to libxml2/hubbub |
| 13:05 | <takkaria> | I guess I could read an entire file properly rather than letting the OS do it, but I don't think it would make that much difference |
| 13:06 | <takkaria> | at some point it would be nice to do proper somewhat-scientific benchmarks, though right now getting hubbub fully-funtional takes more priority |
| 13:11 | <hsivonen> | with Java, IO details make a huge difference |
| 13:12 | <hsivonen> | which is why I run benchmarks from RAM when I don't want to benchmark IO |
| 13:14 | <hsivonen> | (I already tweaked IO earlier) |
| 13:14 | <hsivonen> | (It might not be a bad idea to rerun tests with IO included) |
| 13:27 | <takkaria> | my benchmarking is really unscientific, and consists of writing test apps and running them through `time` on the command-line |
| 13:28 | <takkaria> | otoh, mmap() after a couple of runs results in fairly unchanging data, so it's good enough for me |
| 13:32 | <hsivonen> | I do timing inside Java and warm the VM up first |
| 13:32 | <takkaria> | yeah, you have the advantage there :) |
| 13:36 | <hsivonen> | performance tuning on HotSpot is pretty annoying |
| 13:37 | <hsivonen> | because doing the wrong thing can lead to HotSpot not JITting stuff |
| 13:37 | <hsivonen> | which means about tenth the performance |
| 13:54 | <hsivonen> | I wonder how much I could speed up the tokenizer if I removed all the run-time configurability |
| 14:37 | <Lachy> | JohnResig, yt? |
| 14:39 | <Lachy> | JohnResig, your selectors api testsuite is trying to load "data/iframe.html" in an iframe, but it's returning 404. http://ejohn.org/apps/selectortest/data/iframe.html |
| 14:42 | <JohnResig> | Lachy: correct - the URL wasn't important to the test itself |
| 14:47 | <Lachy> | JohnResig, ok. So can the iframe be removed, or the src attribute removed? |
| 14:48 | <JohnResig> | Lachy: the src is probably safe to remove |
| 14:48 | <Lachy> | ok. It still works when I remove it. |
| 14:49 | <Lachy> | the test suite is actually working in gogi now, so it appears we fixed whatever bug was causing it to abort the test earlier |
| 14:49 | <JohnResig> | Lachy: cool |
| 14:49 | <Lachy> | except, there's some weird bug with the stylesheet |
| 14:50 | <Lachy> | If I leave this style in the page: .unitTest, .test { height: 10px; } then I don't get any scrollbar |
| 14:50 | <JohnResig> | weird |
| 14:50 | <Lachy> | it doesn't appear to be important, so I just removed it so I could see all the results |
| 14:51 | <Lachy> | oh, it's because body has a class of unitTest, so it's getting set to a height of 10px. |
| 14:52 | <Lachy> | oh, no, that's not it. |
| 14:59 | <Lachy> | JohnResig, was the test suite updated after support for namespaces were removed from the spec? |
| 15:00 | <JohnResig> | Lachy: I'm updating it now |
| 15:00 | <Lachy> | ok, thanks. |
| 15:00 | <JohnResig> | Lachy: we had a copy that we were using, I'm pushing itlive |
| 15:00 | <JohnResig> | *it live |
| 15:00 | <zcorpan> | interesting, http://simon.html5.org/test/html/semantics/video/events.htm doesn't finish loading in firefox (the parser stops after the first script block) |
| 15:01 | <Lachy> | alright. Let me know when it's up |
| 15:07 | <jgraham> | zcorpan: It seems to load OK for me, but then it crashes the browser |
| 15:09 | <jgraham> | when you click play |
| 15:19 | <Lachy> | JohnResig, can you add a feature that allows me to show only failed test results? If you add class="pass" and class="fail" to each <li>, then add a checkbox or something that applies the style: .pass {display: none;}, or similar, that woud work |
| 15:26 | <JohnResig> | Lachy: done: http://ejohn.org/apps/selectortest/#target |
| 15:27 | <Lachy> | thanks |
| 15:28 | <zcorpan> | jgraham: i updated my firefox and now it loads and plays but it seems to play the video too fast |
| 15:30 | <jgraham> | zcorpan: Which platform? |
| 15:30 | jgraham | is using today's Linux build |
| 15:31 | <zcorpan> | jgraham: windows |
| 15:31 | <Lachy> | JohnResig, that scrolling bug in gogi no longer occurs, and it looks like you changed the offending css. Did that turn out to be a bug in your CSS, or is it still something wrong with gogi that I should get fixed? |
| 15:31 | <zcorpan> | jgraham: but i got the same results on ubuntu yesterday |
| 15:31 | <zcorpan> | (played too fast) |
| 15:32 | jgraham | goes to file a bug |
| 15:32 | <JohnResig> | Lachy: probably something wrong in Gogi, but it wasn't necessary in my tests |
| 15:34 | <Lachy> | ok. I still have a copy of the old file, so I'll investigate it later |
| 15:38 | <Lachy> | cool, looks like we're failing the following: stringifying null/undefined, various attribute selectors, :enabled, :disabled, :checked, and all DocumentFragment tests |
| 15:41 | <Lachy> | JohnResig, can you add <label> around the Show Failing Tests checkbox |
| 15:43 | <JohnResig> | Lachy: done |
| 17:03 | <virtuelv> | question (barely related to anything, really) |
| 17:03 | <virtuelv> | I have an element with top:0 and height:100% |
| 17:04 | <virtuelv> | fixed position |
| 17:04 | <virtuelv> | now, assume that I use full-screen zoom |
| 17:05 | <virtuelv> | If I now zoom, should offsetHeight of the element change? |
| 17:10 | <virtuelv> | nevermind, what should happen to window.innerHeight? |
| 17:39 | hsivonen | finds http://apache.org/xml/features/standard-uri-conformant Default: false |
| 17:54 | <hsivonen> | whoa! Namespace processing in Xerces is relatively more expensive than HTML5 tree building in the Validator.nu HTML Parser |
| 20:19 | <jgraham> | Wow I like the comment "anything [complex enough to require workers] is [...] valuable enough to be commercial software - and therefore requiring protection against illicit copying" |
| 20:20 | <jgraham> | Because no one ever wrote any open source software that needs threads... |
| 20:23 | <Lachy> | jgraham, who said that? |
| 20:23 | <jgraham> | Lachy: Shannon on the whatwg list. You may have stopped reading the thread... |
| 20:23 | <Lachy> | yeah, I haven't read much on whatwg lately |
| 20:25 | <csarven> | What do you guys think: 10 GETs vs. 1 GET + 50k |
| 20:25 | <Lachy> | ? |
| 20:25 | <jgraham> | I would reply and mention the existence of Erlang and use cases for long running background tasks for things like web-based image editors but I don't think it would help |
| 20:25 | <jgraham> | 50kb? |
| 20:26 | jgraham | suspects that 1 get + 50kb would be faster for most people |
| 20:26 | <jgraham> | If that was the question |
| 20:26 | <jgraham> | But I have no reason for thinking that |
| 20:33 | <virtuelv> | csarven: ? use case? |
| 20:34 | <virtuelv> | but in general, unless the 1 request locks up the browser/page UI, I'd propose going for it |
| 20:34 | <virtuelv> | 10 requests add at the very least 3kb extra of data to download |
| 20:35 | <csarven> | jgraham virtuelv I'm applying data: URI scheme to images in CSS. |
| 20:35 | <roc> | every time someone mentions Erlang I reach for my gun |
| 20:36 | <jgraham> | roc: ? |
| 20:36 | jgraham | is quite scared |
| 20:37 | <roc> | too many people seem to believe that Erlang invented message passing |
| 20:37 | <virtuelv> | csarven: I'm probably slow, given that my body is in a different timezone than the one I'm actually in, without having travelled across timezones |
| 20:37 | <virtuelv> | csarven: but you're including images using data: |
| 20:38 | <virtuelv> | if you have 50 K of image data in data: URI's, I'd say you're doing it wrong |
| 20:38 | <jgraham> | roc: I don't know who invented message passing but Erlang is probably the most famous example of a system that uses it heavilly, right? |
| 20:38 | <roc> | wrong |
| 20:38 | <jgraham> | So what is right? |
| 20:39 | <roc> | well, thanks to the Erlang fanboys you may in fact be right at this point, but that's self-fulfilling ignorance |
| 20:39 | <jgraham> | roc: A lot of fame seems to be based around that concept... |
| 20:40 | <jgraham> | Anyway, I am curious about the other, better, examples |
| 20:40 | <virtuelv> | csarven: if your stylesheet is big, as 50 kB is, you are at some point going to end up with FOUC on a slow connection |
| 20:41 | <virtuelv> | csarven: I'd rather see if the images could be combined, using some variant of CSS sprites, to keep the number of requests down |
| 20:41 | <roc> | Mach was extremely famous and uses message passing |
| 20:42 | <csarven> | virtuelv I'm already using CSS sprites |
| 20:43 | <csarven> | It appears to be that the resulting total weight of the page is 50k more when I use data: |
| 20:43 | <jgraham> | roc: That's a microkernel, right? I guess it wouldn't be the right example to use if you were trying to convince a skeptic that message passing is a good idea on the web (but I don't disagree that it's pretty famous) |
| 20:43 | <roc> | but well before that, there were well-known programming models like actors and CSP that are focused on shared-nothing message passing |
| 20:44 | <virtuelv> | csarven: then you have a lot of image data, ~250kb, or so? |
| 20:45 | <virtuelv> | a possible optimization at that point is to store the images at a different domain/subdomain |
| 20:45 | <csarven> | Actually not that much no. |
| 20:46 | <csarven> | I must be incorrectly calculating this. |
| 20:51 | <virtuelv> | hm, or I might be off here, the overhead is 3/2 |
| 20:51 | <virtuelv> | or so |
| 20:57 | <csarven> | Images weigh-in about: 45k |
| 20:58 | <csarven> | The ones that get to be used for data: |
| 20:59 | <csarven> | With data:uri ~200k total page weight, without data:uri ~150k |
| 20:59 | <csarven> | Firebug results. |
| 21:09 | <zcorpan> | hmm.. it would be nice if it wasn't possible to set website and signature until you have at least 1 post on the forums |
| 21:12 | <zcorpan> | Hixie: you think you could comment out the "Website" and "Signature" rows in http://forums.whatwg.org/profile.php?mode=register&agreed=true ? |
| 21:46 | <takkaria> | hsivonen: you may find http://takkaria.org/dmoz/ useful |
| 21:50 | <Hixie> | zcorpan: done |
| 21:51 | <Hixie> | hsivonen: separation of content and style doesn't imply that the style is in a vacuum, the tyle always depends on the structure of the content. |