| 00:02 | <Philip`> | Does Gmail have a "next unread message in folder" button? (I want to find the 6 unread out of ~2000, and don't fancy paging through the whole list...) |
| 00:04 | <Lachy> | can't you sort by read status? |
| 00:05 | <Philip`> | I can't see any way to sort by anything |
| 00:05 | <Lachy> | really? |
| 00:06 | <Philip`> | Yes |
| 00:06 | <Philip`> | I hope I'm not just missing something obvious... |
| 00:06 | <Lachy> | wow, one more reason not to use gmail |
| 00:06 | <Lachy> | I can't see a way to sort the list of spam in my gmail inbox either. |
| 00:06 | <Philip`> | I guess the idea is that you search instead of sorting |
| 00:07 | <Lachy> | yeah, but what keyword do you use for unread messages? |
| 00:07 | <Lachy> | I just use IMAP. Although Thunderbird has some annoyng limitiations that I hope they fix soon |
| 00:08 | <Philip`> | Hmm, the advanced search thing lets you search for unread messages with e.g. a certain From address |
| 00:08 | <Philip`> | It doesn't seem to let me search for unread messages with a certain label (because 'unread' and labels are all choices in a single drop-down list), but the From thing works well enough here |
| 00:09 | <Lachy> | LOL |
| 00:09 | <Lachy> | I thought google would at least know how to make a usable search interface |
| 00:10 | <Lachy> | although, I must admit that gmail's search ability is superior to that of any mail client on the desktop |
| 00:10 | <Philip`> | Aha, I can use the search box with "label:blah is:unread", which is entirely unintuitive and seemingly undocumented |
| 00:10 | <Philip`> | (although admittedly I haven't tried looking for documentation, but I'm just a normal lazy user so that's the documentation's fault for not coping with me) |
| 00:11 | <Lachy> | aha, so you want a help system that pops up and gives you exactly what you want when you need it? |
| 00:11 | <Lachy> | ... like Clippy! :-) |
| 00:12 | <Philip`> | Not quite like that, since Clippy gives me exactly what I don't need when I don't want it |
| 00:15 | <Hixie> | jwalden: odd. are you logged in? |
| 00:16 | <jwalden> | Hixie: yes |
| 00:16 | <Hixie> | odd |
| 00:16 | <Hixie> | i've filed the bug |
| 00:16 | <jwalden> | cool |
| 00:17 | <jwalden> | does Google have any external bug-reporting system, other than employee connections? |
| 00:17 | <jwalden> | ;-) |
| 00:17 | jwalden | suspects not |
| 00:19 | <Hixie> | jwalden: yeah, there's a feedback form somewhere |
| 00:20 | <Philip`> | It's irritating when you don't get any feedback from your feedback |
| 00:20 | <jwalden> | not quite the same, for ^ reason |
| 00:21 | <Hixie> | yeah |
| 00:21 | <Hixie> | i know |
| 00:21 | <Philip`> | It's nice reporting Mozilla bugs because you can see that someone has actually looked at what you wrote |
| 00:21 | <Hixie> | we have public bug reporting systems for all our open source projects |
| 00:22 | <Hixie> | but can you imagine the spam we'd get if we made the main google search engine have a public bug reporting system... |
| 00:22 | <Hixie> | not that i think that's a reason to not have one |
| 00:23 | <Philip`> | (Being public isn't always sufficient - I tried reporting some IE8 bugs (including one crash) via the only apparent route (posting on the newsgroup), and as far as I can tell my posts got ignored entirely and not entered into any bug tracking system) |
| 00:23 | <jwalden> | it's certainly understandable, just not pleasing |
| 00:23 | <Philip`> | (Complaining on IRC with developers present is a far more effective solution) |
| 00:23 | <Hixie> | ie has some public bug system |
| 00:23 | <Hixie> | i could never get it to work right though |
| 00:24 | <Philip`> | It's read-only to general members of the public, from what I read and from what I tried |
| 00:24 | <Philip`> | or maybe you can still write comments and vote on issues, but can't file new bug reports |
| 00:25 | <Hixie> | how do i spec showModalDialog() without making the web worse |
| 00:26 | <Philip`> | Define it to be modal only with respect to the page content, and not with respect to other tabs or browser chrome? |
| 00:27 | <Philip`> | (so it's not much worse than overlaying a giant invisible div over your page to stop people interacting with it) |
| 00:27 | <Philip`> | I suppose it's too late to use the lessons from XHR and make showModalDialog asynchronous |
| 00:33 | <tomg> | asynchronous how? |
| 00:33 | <Philip`> | I have no idea |
| 00:34 | <tomg> | how isn't it asynchronous? |
| 00:37 | <Philip`> | It's not asynchronous because the function call doesn't return until much later |
| 00:38 | <tomg> | showModelessDialog then |
| 00:39 | <jwalden> | == open? |
| 00:40 | <Philip`> | I suppose it could block all user interaction, but return immediately and still run scripts in the background window |
| 00:40 | <tomg> | no |
| 00:40 | <tomg> | showModelessDialog opens an always-on-top dialog where you can still interact with the original opening page |
| 00:40 | <Philip`> | (though showModalDialog couldn't do that without totally breaking anyone who currently uses it) |
| 00:42 | <Philip`> | Hmm, the very first page I found that uses showModalDialog is complaining that the 'arguments' array doesn't accept strings longer than 4K, so it's splitting its input string into a load of 4K chunks to pass them into the dialog |
| 00:42 | <Philip`> | (http://www.icrc.net/ ) |
| 00:43 | <Philip`> | s/'arguments' array/'arguments' argument/ |
| 00:44 | <tomg> | showModalDialog is fundamentally very poorly designed |
| 00:45 | <tomg> | awful IE4 hack on |
| 00:45 | <tomg> | with truly bizarre syntax |
| 00:46 | <Philip`> | I hope the documentation is wrong when it says the last two arguments are each independently optional |
| 00:47 | <tomg> | hmm |
| 00:47 | <Philip`> | ("vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])" - does that mean I can say showModalDialog(url, features)?) |
| 00:47 | <Philip`> | (I can't see how that would work without mind-reading) |
| 00:48 | <jwalden> | I think it means the last argument, if multiple args are present, is the features |
| 00:48 | <jwalden> | still, miscommunicated |
| 00:48 | <Hixie> | Philip`: don't question msdn |
| 00:49 | <Hixie> | Philip`: once you start down that road, you'll have decades of work ahead of you |
| 00:49 | <Philip`> | http://www3.asmenet.it/opencms/opencms/asmenet/caloveto/ - window.showModalDialog(TitleModal,sURL,sparam); - looks like they forgot to check what arguments the function actually takes |
| 00:50 | <tomg> | msdn is a bit like the bible |
| 00:51 | <Philip`> | We need an MSDN5 |
| 00:51 | <Hixie> | Philip`: later on that msdn page: |
| 00:51 | <Hixie> | "You can set the default font settings the same way you set Cascading Style Sheets (CSS) attributes (for example, "font:3;font-size:4"). To define multiple font values, use multiple font attributes. |
| 00:51 | <Hixie> | " |
| 00:53 | <takkaria> | Humphrey Lyttelton has died. :( |
| 00:53 | <tomg> | yes :( |
| 00:53 | <tomg> | MSDN is wrong by the way, you can't set features without an argument |
| 00:58 | <Philip`> | MSDN is wrong?! |
| 00:59 | <tomg> | I know |
| 00:59 | <tomg> | first time for everything |
| 00:59 | <tomg> | quick, billg⊙mc |
| 01:02 | <takkaria> | append "sorry to hear your profits dropped 11% this quarter" |
| 01:04 | <Philip`> | Hixie: Hmm, font-size (and font) do seem to work, but I can't find any other CSS properties that do anything |
| 01:04 | <Philip`> | "font-size:4" is a bit silly since it uses 4pt font |
| 01:04 | <Philip`> | s//a / |
| 01:13 | <Philip`> | I like how Syck gives me excellent error messages when parsing probably-broken YAML |
| 01:14 | <Philip`> | like "Segmentation fault", and, uh, that's about its whole range |
| 01:15 | <Dashiva> | Such an informative error at that |
| 01:17 | <Philip`> | Aha, PyYAML is much better (but much much slower) and points me at line 4495 and tells me exactly what I've done wrong |
| 02:05 | <Hixie> | showModalDialog can be used for cross-domain communication! |
| 02:05 | <Hixie> | crazy |
| 02:13 | <othermaciej_> | it can? |
| 02:13 | <othermaciej> | oh |
| 02:13 | <othermaciej> | because you can show something from another domain as a modal dialog and it can return a value |
| 02:13 | <othermaciej> | wacky |
| 02:19 | <Hixie> | othermaciej: and you can pass a value |
| 02:19 | <Hixie> | i'm amazed nobody has used this before |
| 02:19 | <Hixie> | i mean you get some flicker, sure |
| 02:19 | <Hixie> | but that never stopped people before |
| 02:28 | <Hixie> | holy batman |
| 02:28 | <Hixie> | you can send strings to other domains in firefox using returnValue without creating a window |
| 02:29 | <Hixie> | oh but you have to have created the window using showModalDialog() |
| 02:33 | <Hixie> | you can't navigate the browsing context in ie |
| 02:38 | <mcarter> | othermaciej, Hixie, another concern about the connect() function vs. constructor connecting arugment: if a TCPConnection constructor causes a network access, then prototype-based subclassing becomes impossible. Maybe thats intended? |
| 02:39 | <Hixie> | and fragment identifiers don't work at all |
| 02:39 | <Hixie> | mcarter: why does it become impossible, and why is that a problem? |
| 02:39 | <othermaciej> | mcarter: prototype-based subclassing of builtin DOM classes does not seem super important |
| 02:40 | <Hixie> | how would you override the XMLHttpRequest constructor or the Image constructor? |
| 02:41 | <othermaciej> | you could make an object that has an XMLHttpRequest instance or an HTMLImageElement instance as its prototype |
| 02:41 | <othermaciej> | although I do not know why you would want to |
| 02:41 | <mcarter> | well, you generally would do SubClassTCPConnection.prototype = new TCPConnection() |
| 02:41 | <mcarter> | its just a thought, It probably has no bad implications -- I just don't know much about how often native types are subclassed |
| 02:42 | <Hixie> | how does that work with any constructor that does any work at all? |
| 02:42 | <Hixie> | e.g. Image(width) |
| 02:43 | <othermaciej> | it is certainly not very useful |
| 02:43 | <Hixie> | k, i won't worry about it :-) |
| 02:43 | <othermaciej> | SubClassImage.prototype = new Image() would still leave you with only one read HTMLImageElement |
| 02:43 | <Hixie> | showModalDialog is insanity in a bottle |
| 02:43 | <othermaciej> | and it wouldn't be insertable into the DOM or anything |
| 02:43 | <othermaciej> | Hixie: it's high on my list of most-loathed feature that we had to actually implement |
| 02:44 | <Hixie> | the browsers all do it differently -- go figure, no spec, no interop |
| 02:45 | <Hixie> | http://www.whatwg.org/specs/web-apps/current-work/#showmodaldialog |
| 02:45 | <Hixie> | is what i have so far |
| 02:49 | <heycam> | Hixie, s/the the/the/ a couple of times in that section 4.4 |
| 02:49 | <heycam> | actually, just search for "the the" in the document there are a few more instances |
| 02:49 | <heycam> | (though a couple aren't typos) |
| 02:49 | <Hixie> | thanks, will fix |
| 02:51 | <Hixie> | heycam: so returnValue brings up an interesting problem |
| 02:51 | <Hixie> | i need a DOM attribute that is not there unless a particular condition is in effect |
| 02:51 | <Hixie> | window.returnValue is nothing at all unless the browsing context was created by showModalDialog |
| 02:52 | <heycam> | so ('returnValue' in window) has to be false? |
| 02:54 | <Hixie> | typ |
| 02:54 | <Hixie> | yup even |
| 02:54 | <Hixie> | and true if the Window was created by showModalDialog |
| 02:54 | <Hixie> | actually no |
| 02:54 | <Hixie> | true if the Window is for a browsing context that was created by showModalDialog |
| 02:56 | <Hixie> | i guess i can just say it's an interface implemented by those windows |
| 02:56 | <Hixie> | that's what mozilla does |
| 02:56 | <heycam> | hmm |
| 02:57 | <heycam> | i guess that solves it |
| 03:00 | <Hixie> | IE doesn't send these dialogArguments cross-origin at all |
| 03:01 | <Hixie> | hmm |
| 03:01 | <Hixie> | dinner first |
| 03:01 | <Hixie> | bbl |
| 05:40 | <inimino> | mcarter: is there a mailing list for the TCPConnection stuff you're implementing? |
| 06:57 | <mcarter> | inimino, the best mailing list to use is http://groups.google.com/group/orbited-users |
| 06:58 | <mcarter> | inimino, its all a part of an upcoming release |
| 06:59 | <inimino> | mcarter: thanks, subscribed |
| 07:00 | <mcarter> | inimino, keep in mind, thats also a end-user-facing list |
| 07:00 | <inimino> | inimino: right |
| 07:02 | <inimino> | btw I tried implementing something like what othermaciej was talking about earlier in Apache and it looked like it would involve writing a new MPM at the time |
| 07:02 | <othermaciej> | what is MPM? |
| 07:03 | <inimino> | the Apache modules that handle actual the actual sockets, processes, threads |
| 07:04 | <inimino> | "multi-processing module" is the expansion |
| 07:05 | <inimino> | you don't have enough control in a plain vanilla module to hold the socket open and do Comet-type stuff |
| 07:07 | <inimino> | at least not efficiently |
| 07:08 | <othermaciej> | are MPMs harder to write? |
| 07:09 | <inimino> | othermaciej: yes, and Apache can only use one MPM at a time |
| 07:11 | <inimino> | othermaciej: the main ones are the worker MPM, event MPM, prefork MPM |
| 07:11 | <inimino> | each one has it's own strategy for handling sockets, spawning worker threads, etc |
| 07:13 | <inimino> | I was hoping the newer Event MPM would let me do what I wanted with Comet in an efficient way, but Apache really isn't written to support long-term connections |
| 07:15 | <mcarter> | inimino, some of the work we're doing with orbited is all about integrating synchronous webservers with comet |
| 07:16 | <othermaciej> | inimino: so none of the MPMs gives regular type modules a raw connected socket to play with? |
| 07:16 | <mcarter> | inimino, for instance, we have it setup so you can do full duplex to your webapp. when you do browser->server, it results in an HTTP callback hitting your web server (the orbited server makes the http call), and when you do server->browser you use a custom client to dispatch back to the browser via orbited |
| 07:18 | <inimino> | othermaciej: I'm trying to recall the exact problems I ran into, I ended up not using Apache so the details are a little fuzzy |
| 07:19 | <inimino> | mcarter: so orbited is acting like a reverse proxy in front of e.g. Apache? |
| 07:20 | <mcarter> | inimino, sort of. you still make static requests directly to apache |
| 07:20 | <mcarter> | inimino, you can use orbited for purely downstream if you want. in which case you make xhr requests directly to apache |
| 07:21 | <inimino> | mcarter: so orbited runs on a different port? |
| 07:21 | <inimino> | I guess I should install it and read the docs ;-) |
| 07:22 | <mcarter> | inimino, heh, it does run on a different port |
| 07:22 | <inimino> | ok |
| 07:22 | <mcarter> | inimino, right now the 0.3 release that we have is very experimental. we're waiting on the next release to be much more stable, as well as support the TCPConnection api |
| 10:52 | <hsivonen> | Philip`: are there non-linked pages under http://canvex.lazyilluminati.com/misc/stats/ ? |
| 10:52 | <hsivonen> | I'm trying to navigate to your charset analysis and I don't find it |
| 10:53 | annevk | thought modal dialogs were evil and would not be supported by HTML5 |
| 10:54 | <hsivonen> | at it was http://philip.html5.org/data/charsets.html |
| 11:18 | <hsivonen> | http://www.w3.org/mid/481226BB.1000108⊙ac |
| 11:31 | <annevk> | seems people still don't understand that attributes are not in a namespace |
| 11:31 | <Lachy> | I don't get why he thinks chameleon namespaces are a good idea |
| 11:45 | <hsivonen> | I replied |
| 11:52 | <annevk> | you know, it would be fun if we had journalists for our little markup wars |
| 11:52 | <annevk> | for day-to-day reports, that is |
| 11:53 | <hsivonen> | annevk: having one issue or another up on Slashdot from time to time would be a more regular thing if we had embedded journalists |
| 11:54 | <annevk> | that doesn't seem bad per se |
| 12:05 | <annevk> | hmm, the Forms WG is still busy to retrofit XForms to fit HTML syntax |
| 12:05 | <annevk> | http://lists.w3.org/Archives/Public/public-forms/2008Apr/0108.html |
| 12:06 | <hsivonen> | annevk: what's there to gain from such retrofitting compared to WF2? |
| 12:07 | <annevk> | I think the idea is that: 1) Everything will map to XForms and can be implemented by an XForms processor. 2) XForms will become easier to learn. |
| 12:08 | <hsivonen> | annevk: so what do authors or implementors gain if there's an 'XForms processor' compared to a WF2 processor? |
| 12:08 | <hsivonen> | or scripting and XHR |
| 12:09 | <annevk> | So the perceived gain is that XForms will still be around I suppose. |
| 12:09 | <annevk> | I think the sunk cost fallacy might apply here as well. |
| 12:09 | <hsivonen> | oh yes indeed |
| 12:16 | <hsivonen> | Philip`, takkaria: I just checking in a refactoring on the parsing algorithm that needs no lookahead and breaks entity consumption and all into main loop states |
| 12:17 | hsivonen | proceeds to refactor the code some more |
| 12:18 | <hsivonen> | actually, parseErrorUnlessPermittedSlash is still a method |
| 12:18 | <hsivonen> | I'll remove it in due course as I implement the MathML stuff |
| 12:23 | <Philip`> | hsivonen: http://philip.html5.org/data.html links to most of my stuff |
| 12:23 | <hsivonen> | Philip`: thanks |
| 12:24 | <Philip`> | (except "most" means there's still a load that I haven't bothered linking to) |
| 12:24 | <Philip`> | (which I should get around to at some point) |
| 12:25 | <hsivonen> | it's fun how goto is considered harmful, but switch/continue programming is essentially goto and it's really useful for tokenization |
| 12:25 | <annevk> | Philip`, could you remove a { color: inherit; text-decoration: inherit; } and a:hover { text-decoration: underline; } from that page? |
| 12:25 | <hsivonen> | though switch/continue only produces natural loops, so I guess it's better for compilers than unrestricted goto |
| 12:26 | <Philip`> | annevk: I was trying to avoid having the entire page be underlined, since pretty much all the text is links and that'd look ugly |
| 12:26 | <hsivonen> | Philip`: the text now lacks the clickability affordance |
| 12:27 | <Philip`> | I think I agree the current solution is more ugly than the alternative :-) |
| 12:28 | <Philip`> | Fixed |
| 12:29 | <hsivonen> | Philip`: thanks |
| 12:29 | hsivonen | sees the spec is moving from en-GB-x-hixie to en-US-x-hixie |
| 12:32 | <Philip`> | hsivonen: switch/continue is much more constrained than goto, so it's not subject to lots of the possible abuses of goto |
| 12:32 | <Philip`> | e.g. you can only jump out of switch blocks, you can't jump into them |
| 12:35 | <Philip`> | I think I read somewhere that ANTLR was changing from generating Java code to generating JVM bytecode, mostly so it could use 'goto' and generate more efficient parsers |
| 12:41 | <hsivonen> | Philip`: I have two main patterns: state = State.FOO; continue consume; and state = State.FOO; continue reconsume; |
| 12:41 | <hsivonen> | Philip`: the former means: goto read character, then goto FOO. |
| 12:41 | <hsivonen> | Philip`: the latter means goto FOO |
| 12:42 | <hsivonen> | I suppose bytecode rewriting the latter case to pure goto wouldn't be a big win |
| 12:42 | <hsivonen> | I don't know if the former could be rewritten to gotos. that is, I don't know if the Java byte code allows holding a jump position in a variable |
| 12:43 | <hsivonen> | for doing goto FOO after first doing goto read |
| 12:43 | <hsivonen> | anyway |
| 12:44 | <Lachy> | I just noticed htmlfive.net now appropriately says this at the top: "Please bear with me as this site is constructed. As of now, most of the content from this site comes from the official WHATWG blog. Please note that this site does not contain original content, and is a central location for all known news concerning HTML5. All articles and pages on this blog, unless explicitly stated otherwise, are licensed under the MIT license. " |
| 12:44 | <Lachy> | I wonder if that was there before and we just didn't notice it |
| 12:47 | <hsivonen> | Philip`: it seems to me that Java byte code-level inline rewriters are out of fashion even though generating JVM byte code from non-Java languages is on the rise |
| 12:50 | <hsivonen> | Philip`: do you know if Antlr will do something that a generic byte code rewriter are a smarter javac couldn't do with switch/continue pattern recognition? |
| 12:51 | <hsivonen> | one would think that setting the switch condition variable and saying continue immediately would be a pattern that a compiler *could* be written to pick up |
| 12:52 | <hsivonen> | s/rewriter are/rewriter or/ |
| 12:52 | <hsivonen> | it's scary that I now make typos that look like speech-to-text errors |
| 12:54 | <Philip`> | Hmm, might be http://www.antlr2.org/blog/antlr3/codegen.tml under "October 19, 2004" that I was thinking of |
| 12:56 | <hsivonen> | I sure hope a massive switch is no longer "slow as death" compared to "slow" method calls |
| 12:56 | <hsivonen> | on HotSpot |
| 12:57 | <Philip`> | It would be nice if "hope" could be replaced by something more reliable, like benchmarks :-) |
| 12:57 | <hsivonen> | Philip`: oh I do intend to run a benchmark in due course |
| 12:57 | <hsivonen> | Philip`: but it will suck if the result is that the new code is slower than the old code |
| 13:04 | <hsivonen> | hmm. I wonder how I can run a valid Java6 or Java7 benchmark on x86_64 server VM when the my Linux system is virtualized |
| 13:05 | Philip` | likes being able to do large changes to a thousand of lines of tokeniser code (e.g. to add inner loops for runs of characters inside each state) just by adding a dozen lines of OCaml to his tokeniser-generator :-) |
| 13:09 | <hsivonen> | it'll be fun to update all the tokenizer tests to include a selfClosing flag... |
| 13:12 | <hsivonen> | Philip`: profiling suggested that having multiple call sites to read() might be a problem, so I'm going to inline read and make it appear in the code only once |
| 13:12 | <hsivonen> | since it's easy to do when the tokenizer states are in a switch |
| 13:13 | <hsivonen> | read() itself is huge, so apparently inlining it on multiple call sites wouldn't be smart |
| 13:18 | <hsivonen> | does anyone know if running Linux under Parallels is a valid benchmark setup if the OS X side is mostly idle? |
| 13:19 | <hsivonen> | hmm. I wonder if Parallels only does 32-bit guest OSs... |
| 13:21 | <Philip`> | It ought to be reliable for purely user-space code |
| 13:23 | <Philip`> | (though it's kind of hard to write purely user-space code, if you do things like access enough pages of memory) |
| 13:24 | <hsivonen> | so far I've found that crossing to file system in FileInputStream is a big deal, so anything benchmarking purely tokenizer CPU should read from a byte[] |
| 13:25 | <hsivonen> | I gained quite a bit of perf by reducing the number of times the IO goes out of the JVM |
| 13:29 | <Philip`> | It's always a pain when you want to do clever algorithm optimisations, but the bottleneck is just in getting data into the program |
| 13:31 | <hsivonen> | when I benchmarked the Validator.nu HTML parser vs. Xerces, I found that first I had to do better in terms of IO buffering |
| 13:31 | <hsivonen> | only then the rest starts to matter |
| 13:31 | Philip` | once made a program of his run about ten times faster just by switching from 'wxFile' to 'wxFFile' (which is functionally very similar but seems to have a much more appropriate implementation) |
| 13:31 | <hsivonen> | even if parsing is IO-bound anyway, the CPU time above IO can still be made better |
| 13:32 | <hsivonen> | eliminating Schematron will dramatically alter the compute/IO interleaving in Validator.nu |
| 13:34 | <Philip`> | Do shared hosting services put a limit on how much IO you can use, like they do with CPU? |
| 13:34 | <hsivonen> | I have no idea |
| 13:34 | <hsivonen> | in fact, I have almost no idea of the characteristics of the Validator.nu host Xen VM except for the RAM size |
| 13:35 | <hsivonen> | I don't know what CPU or IO throttles there may be |
| 13:35 | <hsivonen> | so far it has worked well enough |
| 13:37 | <hsivonen> | interestingly, RAM seems to be what's expensive in Xen hosting |
| 13:38 | <hsivonen> | if you want a lot of RAM on Xen, Amazon EC2 starts looking a lot cheaper relative to other offerings |
| 13:43 | gsnedders | is starting to find Python to be more and more limiting for the spec-ge |
| 13:43 | <gsnedders> | *gen |
| 13:47 | <Philip`> | Limiting in functionality, or in performance? |
| 13:48 | <gsnedders> | Philip`: performance. |
| 13:49 | <Philip`> | gsnedders: By how many orders of magnitude? |
| 13:49 | <Philip`> | It seems worthwhile to have something that actually works, even it'll need lots of optimisation later |
| 13:49 | <Philip`> | s//if / |
| 13:49 | <gsnedders> | Philip`: well, things like html5lib are are far slower than something like WebKit's HTML parser |
| 13:50 | <gsnedders> | and there's the fact that I did to do looping over every Node in the document, multiple times |
| 13:50 | <gsnedders> | And large amounts of execution are slow in any interpreted language, really |
| 13:50 | <hsivonen> | gsnedders: try Jython and the Validator.nu HTML parser :-) |
| 13:50 | <Philip`> | gsnedders: html5lib can be fixed by doing a chtml5lib, which is somebody else's problem |
| 13:51 | <gsnedders> | neither of those solve the looping problem :) |
| 13:52 | <Philip`> | You could modify your code to do less looping :-) |
| 13:53 | <gsnedders> | Philip`: How do I build a TOC without looping over the document? :) |
| 13:53 | <gsnedders> | hmm… |
| 13:53 | <Philip`> | You don't need to loop over every node, only over every heading |
| 13:54 | <gsnedders> | Philip`: How do I find the headings? |
| 13:54 | <Philip`> | Use a fancy treebuilder that lets you do fast XPath to find elements :-) |
| 13:54 | <gsnedders> | XPath is hard to do quickly :) |
| 13:54 | <Philip`> | Or do the TOC-looping at the same time as all the other looping, to avoid the "multiple times" problem |
| 13:54 | <hsivonen> | the great thing is that an XPath impl. does no looping :-) |
| 13:54 | <Philip`> | gsnedders: It's easier when it's implemented in a C library |
| 13:55 | <gsnedders> | Philip`: That's what I've been doing. Multiple times remains two loops, though :) |
| 13:56 | <gsnedders> | hsivonen: how do you impl. XPath without looping? |
| 13:56 | <hsivonen> | gsnedders: note the ':-)' |
| 13:56 | <gsnedders> | Ah. You mean it in that way :) |
| 13:57 | <Philip`> | gsnedders: How slow is the script, anyway? |
| 13:58 | <gsnedders> | Philip`: I can't exactly quantify it, but I can say it is far too slow on a large document like HTML 5 :) |
| 13:58 | <Philip`> | The multipage spec splitter already iterates through the entire minidom tree once (to fix up href=#... links), and that's not insanely slow |
| 13:59 | <Philip`> | gsnedders: "time python specgen.py source"? :-p |
| 13:59 | <gsnedders> | Philip`: It's not really much quicker than the pre-existing W3C spec-gen, which parses the document about 10 times (in C) |
| 13:59 | <gsnedders> | Philip`: It's too incomplete for it to be overly meaningful :P |
| 13:59 | <gsnedders> | Philip`: And I just started rewriting a bit of it and it currently doesn't really work much at all :P |
| 14:00 | <Philip`> | gsnedders: Surely you have it in some version control system so you can still get a version that doesn't not work? :-) |
| 14:00 | <gsnedders> | Philip`: Yeah, but I'm lazy :) |
| 14:02 | <gsnedders> | Philip`: And it's an excuse to actually write some C++ myself :P |
| 14:02 | <Philip`> | I suppose I mostly just think that trying to write it in C++ would be insane and complex; Java/Jython would be a much better way to avoid the interpret overhead |
| 14:03 | <Philip`> | *interpreter |
| 14:03 | <gsnedders> | I don't think it would. |
| 14:03 | <gsnedders> | The complex parts can be solved by using WebKit for HTML and DOM. |
| 14:04 | <Philip`> | That's not solving complexity, it's just swapping complexity for other complexity |
| 14:04 | <hsivonen> | If you run the java process as a long-running service process that you send stuff to through a socket, you'll have the code compiled down to native code with JVM start penalty |
| 14:04 | <gsnedders> | It's somebody else's problem. That'll do :) |
| 14:05 | <Philip`> | gsnedders: The complexity is in integrating their code with yours, which is your problem |
| 14:05 | <Philip`> | (Or do they just have a public API for "parse this string of bytes into a Document object"?) |
| 14:06 | <gsnedders> | Philip`: I haven't looked at it that closely, but what I've seen of WebKit makes me expect it to be simple enough |
| 14:09 | Philip` | is not yet convinced :-p |
| 14:48 | <hsivonen> | hmm. it seems to me that keeping the ability to switch decoders on the fly is more trouble than it's worth |
| 14:49 | <hsivonen> | because efficient buffered character decoding will have most often read ahead anyway so that the decoder has already hit non-ASCII after meta |
| 16:34 | <Philip`> | Ooh, Konqueror does canvas shadows |
| 16:34 | <Philip`> | so there's two mostly-interoperable implementations now |
| 16:49 | <Philip`> | http://www.freepatentsonline.com/y2006/0005114.html |
| 16:53 | <takkaria> | what a horrible patent |
| 16:55 | Philip` | guesses this is what http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2007-March/010129.html referred to |
| 17:15 | <Philip`> | Hixie: "The tabIndex DOM attribute must reflect the value of the tabIndex content attribute." - the second tabIndex should be lowercase |
| 20:02 | <annevk> | Philip`, I think you already raised the shadows thing (making it mandatory) |
| 20:03 | <annevk> | Philip`, also, CSS3 UI has nav-index to specify "tab" order through CSS |
| 20:08 | <Philip`> | annevk: I only remember (/could find emails referring to) making gradients mandatory |
| 20:10 | <annevk> | ah, maybe I misremembered |
| 20:57 | <Philip`> | http://philip.html5.org/tests/canvas/misc/cross-domain-pattern.html - Opera (9.5) loses |
| 23:03 | <jwalden> | sigh |
| 23:05 | <Philip`> | jwalden: Is that a sigh of "I used the wrong address for the WHATWG list again", or a different one? |
| 23:05 | <jwalden> | no |
| 23:05 | <jwalden> | see latest |
| 23:06 | <jwalden> | just the sigh of "isn't this stuff done yet?" |
| 23:07 | <Philip`> | Ah |
| 23:07 | <Philip`> | I guess one problem with addEventListener is that it won't work in IE8 |
| 23:07 | <jwalden> | I feel like we're near a precipe past which we fall into bikeshedding |
| 23:07 | <jwalden> | and I don't know which side we're on |
| 23:07 | <jwalden> | what's new? |
| 23:07 | <Philip`> | and it'd be nice if people could write simple code that works in all implementations |
| 23:07 | <othermaciej> | I think people are familiar with using the attachEvent workaround for events in IE |
| 23:11 | <Philip`> | Hmm, my canvas security-check tests give random results in WebKit |
| 23:11 | <jwalden> | nice! |
| 23:12 | <othermaciej> | random? |
| 23:12 | <othermaciej> | I didn't think we used an RNG for domain security checks |
| 23:12 | <Philip`> | It changes each time I reload the pages |
| 23:13 | <Philip`> | I'm not sure it's exactly a cryptographically-strong source of randomness, but it's not as constant as I'd like |
| 23:15 | <Philip`> | It only seems to happen when I run the tests inside iframes |
| 23:15 | <Philip`> | and only when they're on the local network, not over the internet |
| 23:15 | <jwalden> | darn |
| 23:15 | <jwalden> | that rules out my chance to reimplement Math.random |
| 23:18 | <othermaciej> | Philip`: oh, we have problems with reloads of frames off local disk sometime, could be that |
| 23:18 | <othermaciej> | but also we give local files universal access rights to all remote resources |
| 23:19 | <Philip`> | othermaciej: It's not local disk (except for maybe cached), it's across the (local) network |
| 23:19 | <Philip`> | Looks like a random one of the nine iframes on the page is allowed to called toDataURL on a tainted canvas |
| 23:20 | <othermaciej> | weird |
| 23:22 | <Philip`> | Hmm, either I was interpreting it wrong or it changed, since all but one are allowed to call toDataURL now that I've changed my tests around |
| 23:23 | <Philip`> | and now it's not happening at all |
| 23:27 | <Philip`> | Someone can have fun trying to debug this... |
| 23:29 | <Philip`> | Oh, now it does work over the internet for me |
| 23:30 | <Philip`> | Does anyone see http://philip.html5.org/misc/iframe-canvas-security/iframes.html not having nine identical iframes in WebKit? |
| 23:32 | <jwalden> | something trunk-like (a touch old) is showing nine frames each containing a single continuous yellow rectangle |
| 23:33 | <Philip`> | There should be either two yellow rectangles, or one plus a "data:image/png,..." line |
| 23:33 | <jwalden> | Firefox trunk is showing nine frames with two yellow rectangles each |
| 23:33 | <jwalden> | and JavaScript error: , line 0: uncaught exception: [Exception... "Security error" code: "1000" nsresult: "0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)" location: "http://philip.html5.org/misc/iframe-canvas-security/06.html Line: 12"] in the console |
| 23:33 | <jwalden> | x9 |
| 23:33 | <Philip`> | Firefox is giving the intended behaviour |
| 23:34 | <othermaciej> | the results randomly change for me when I reload |
| 23:34 | <othermaciej> | only one frame shows two rectangles and it changes which |
| 23:34 | <Philip`> | othermaciej: Aha, then it looks like I'm not crazy and it's a real bug |
| 23:34 | <jwalden> | so I assumed given seems consistent here |
| 23:34 | <othermaciej> | hello f a weird bug |
| 23:34 | jwalden | updates tree, sees if that makes a dif |
| 23:35 | <Philip`> | jwalden: I'm not sure what would cause only a single yellow rectangle, unless you're using Safari 1 and don't have <canvas> support |
| 23:35 | <hasather> | Philip`: on first load, most of the upper squares were black, on reload everything is yellow |
| 23:35 | <jwalden> | no, this was a svn checkout that's no more than a month old, I think |
| 23:35 | <Philip`> | hasather: Oh, that sounds dodgy in a different way |
| 23:36 | <hasather> | Philip`: may be, it's WebKitGtk (r32531) |
| 23:36 | <Philip`> | (Argh, stupid non-existence of print-screen key on Apple keyboards...) |
| 23:37 | <jwalden> | swedish campground-shift-3 I think |
| 23:38 | <hasather> | jwalden: it's not for campgrounds ;) |
| 23:38 | <Philip`> | I'm using Windows so that doesn't work :-( |
| 23:39 | <hasather> | jwalden: although I see http://www.folklore.org/StoryView.py?project=Macintosh&story=Swedish_Campground.txt says that |
| 23:39 | <jwalden> | hasather: http://folklore.org/StoryView.py?story=Swedish_Campground.txt |
| 23:39 | Philip` | tries remembering his password to report a bug |
| 23:39 | <jwalden> | jinx! |
| 23:41 | <hasather> | jwalden: it's mostly used for stuff like viking graves and things like that |
| 23:43 | <Philip`> | http://philip.html5.org/misc/iframe-canvas-security/webkit-r32574.png |
| 23:45 | <Philip`> | hasather: Ah, I can imagine WebKitGtk might have lots of differences - I'll have to add it to my test-results page some time |
| 23:45 | <Philip`> | (Still seems dodgy if it thinks drawing a yellow bitmap onto a transparent canvas results in black, though) |
| 23:55 | <Hixie> | jwalden: i'll change the spec to match whatever you decide on |
| 23:55 | <Hixie> | jwalden: firing at window is good with me |
| 23:56 | <jwalden> | dangt |
| 23:56 | <jwalden> | s/t/it/ |
| 23:56 | <jwalden> | where'd othermaciej go? |
| 23:57 | <jwalden> | Hixie: still no bubbling, tho, to be clear? |
| 23:58 | <Hixie> | i'd rather it didn't bubble; it's like 'load' and other such "document-wide" events that don't bubble |
| 23:58 | <jwalden> | well, I suppose it doesn't really matter if it's on window, does it? |
| 23:58 | <Hixie> | indeed |
| 23:58 | <jwalden> | Hixie: I'm fine with it dispatching at window |
| 23:59 | jwalden | goes to update those bloody tests again |
| 23:59 | <Hixie> | on the long term if we put it on window then that allows me to make the event dispatch to window and body like with, e.g., 'load', without breaking compat |
| 23:59 | <Hixie> | so i like the change |
| 23:59 | <Hixie> | i mostly was leaving it on document to not give you pain :-) |