00:05 | <dbaron> | TabAtkins, so by "concrete object" do you mean "box" or do you mean something else? |
00:05 | <dbaron> | TabAtkins, I was assuming you meant "box". |
00:05 | dbaron | is wondering whether to introduce cement objects and bricks |
00:06 | <jcranmer> | cinder blocks |
00:12 | <dbaron> | I should probably just unsubscribe from www-style. |
00:12 | <dbaron> | It's full of people arguing about things that nobody's even said or written down anywhere. |
00:25 | <roc> | just be selective about which threads you read |
00:54 | <rniwa> | sicking: yt? |
00:59 | <sicking> | rniwa: pong |
01:01 | <rniwa> | sicking: hi |
01:01 | <rniwa> | sicking: do you have a time now? |
01:01 | <sicking> | rniwa: just about to head into a meeting, shouldn't be more than an hour, will you still be around? |
01:02 | <rniwa> | sicking: oh sure |
01:02 | <rniwa> | sicking: I'll probably be around 'til 6:30 |
01:02 | <rniwa> | sicking: if not 7 |
01:02 | <sicking> | cool |
01:02 | <sicking> | ping me at 6 if i haven't pinged you already |
01:02 | <rniwa> | sicking: ok |
01:32 | <sicking> | rniwa: back |
01:32 | <rniwa> | sicking: hi |
01:32 | <rniwa> | sicking: so I was sort of looking at the big picture of undoManager |
01:33 | <rniwa> | sicking: and I've started to think that maybe we've taken a wrong path in certain things |
01:33 | <sicking> | rniwa: oh? |
01:33 | <rniwa> | sicking: right now, we're going to have undoManger.automaticTransact and undoManager.manualTransact, right? |
01:33 | <rniwa> | sicking: and then we'll have two separate interfaces for those objects |
01:33 | <sicking> | yup |
01:34 | <sicking> | sort of |
01:34 | <rniwa> | sicking: but then, we'll need to expose those in [] |
01:34 | <sicking> | i don't actually know that we need real interfaces |
01:34 | <rniwa> | sicking: that would mean that the return value of [] would either be Object |
01:34 | <sicking> | they're more like pure JS-objects |
01:34 | <rniwa> | sicking: or we have to define some AbstractInterface for it |
01:34 | <sicking> | rniwa: oh |
01:35 | <sicking> | rniwa: i think it's fine to use Object. If we indeed even are going to use interfaces here at all |
01:35 | <rniwa> | sicking: but this would really ingrains the concept of automatic/manual transaction into undomnager |
01:35 | <rniwa> | sicking: in the sense, undo manager needs to know all |
01:35 | <rniwa> | sicking: in my original proposal, I tried to de-couple those concepts so that undomanager doesn't need to know anything about automatic transaction |
01:36 | <rniwa> | sicking: undomanager would just call apply, unapply, reapply |
01:36 | <rniwa> | sicking: which is nice from implementor's perspective |
01:36 | <sicking> | rniwa: hmm |
01:36 | <rniwa> | sicking: with current approach, we have to end up adding bindings for undoManger.automaticTransact and undoManager.manualTransact and then share code somehow |
01:36 | <rniwa> | sicking: because most of steps in those are identically equal |
01:36 | <sicking> | rniwa: i don't really care what's nice from an implementation perspective though. It's much more important to have a good API |
01:37 | <sicking> | rniwa: to a certain extent of course, it shouldn't be completely insane to implement |
01:37 | <rniwa> | sicking: in the sense the only difference between automaticTransact and manualTransact is how it calls apply |
01:37 | <rniwa> | sicking: or what object it takes |
01:38 | <rniwa> | sicking: so I've started to think that it might be better to provide an API that creates automatic transaction instead |
01:38 | <rniwa> | sicking: i.e. we'll have createAutomaticTransaction function or just new AutomaticTransaction |
01:38 | <rniwa> | sicking: that'll create an object with unapply/reapply functions given apply function |
01:38 | <rniwa> | (function names are pending) |
01:39 | <rniwa> | sicking: this would allow us to have simple transact function again |
01:39 | <sicking> | rniwa: is there a reason to do this other than save a few lines of code in the implementation? |
01:39 | <rniwa> | sicking: I think this makes the interface conceptually simpler |
01:39 | <sicking> | rniwa: i think it's much more important to look at what's a good API from a usability point of view first |
01:39 | <rniwa> | sicking: because all transactions are just transactions |
01:40 | <sicking> | rniwa: what happens if someone calls reapply multiple times in a row on a automatic transaction? |
01:40 | <sicking> | rniwa: or unapply and then apply? |
01:41 | <sicking> | rniwa: hmm.. actually |
01:41 | <rniwa> | sicking: I guess it could ignore subsequence calls |
01:42 | <sicking> | rniwa: so how would this work, would createAutomaticTransaction run the "execution function"? |
01:42 | <rniwa> | sicking: no, it'll just create a transaction object |
01:43 | <rniwa> | sicking: e.g. you do undoManager.transact(createAutomaticTransaction(myCommand, 'typing')) |
01:43 | <rniwa> | sicking: in some sense, automaticTransact is a syntactic sugar for this |
01:43 | <rniwa> | sicking: but I found that having one function for doing things is better than having two |
01:44 | <sicking> | rniwa: from an implementation point of view, or from a usability point of view? |
01:44 | <rniwa> | sicking: e.g. this would allow author's script to pass transactions around |
01:44 | <rniwa> | sicking: from author's point of view as well |
01:44 | <rniwa> | sicking: so in the current design, you need to know whether you're creating an automatic transaction or manual transaction |
01:44 | <rniwa> | sicking: if you've just got a transaction object from some helper function |
01:44 | <rniwa> | sicking: e.g. |
01:45 | <rniwa> | sicking: var transaction = createMyTransaction(...); |
01:45 | <sicking> | that makes some sense i agree |
01:45 | <rniwa> | sicking: and then I wouldn't know whether I should call automaticTransact or manualTransact |
01:45 | <sicking> | right |
01:45 | <rniwa> | sicking: if we have createAutomaticTransaction, then we can always call transact |
01:46 | <sicking> | rniwa: still is a lot to type every time you create a automatic transaction though :( |
01:46 | <rniwa> | sicking: yeah, that's one drawback |
01:46 | <sicking> | rniwa: i wonder if we can also add a helper function that does the work for you |
01:46 | <rniwa> | sicking: also it's harder to add properties in this syntax |
01:46 | <sicking> | rniwa: that's a good point |
01:46 | <sicking> | very good even |
01:47 | <rniwa> | sicking: yeah so I'm not sure which way is better at this point |
01:47 | <sicking> | rniwa: i think we can help with the typing by creating a helper function |
01:47 | <sicking> | rniwa: but the properties part is worse |
01:47 | <rniwa> | sicking: right. |
01:47 | <rniwa> | sicking: so one thing I was thinking is that we can make createAutomaticTransaction take some object |
01:47 | <rniwa> | sicking: and let the resultant transaction object retrieve all properties the original object had |
01:48 | <rniwa> | sicking: but that's a very strange object |
01:48 | <sicking> | rniwa: i.e. we can add a function like addAutomatic(func) { return this.transact(createAutomaticTransaction(func)) } to the interface |
01:48 | <rniwa> | sicking: yeah |
01:48 | <sicking> | rniwa: that sounds hacky |
01:48 | <sicking> | (the automatic copying that is) |
01:48 | <rniwa> | sicking: but I'm suspecting that many use cases of automatic transaction doesn't require adding new properties |
01:48 | <sicking> | rniwa: you'll loose things like the prototype chain |
01:48 | <rniwa> | sicking: right |
01:49 | <sicking> | rniwa: which i believe Alex Russel really wants to use to be able to do things like manager.transact(new MyOwnTransactionClass(...)); |
01:49 | <rniwa> | sicking: on the other hand, we could have createAutomaticTransaction just add/assign unapply/reapply properties |
01:49 | <rniwa> | sicking: instead of creating of new object |
01:49 | <rniwa> | creating new |
01:50 | <rniwa> | sicking: yeah, that'll nice |
01:50 | <rniwa> | 'll be* nice |
01:50 | <sicking> | having the DOM monkey-patch your objects seems somewhat unfortunate |
01:51 | <rniwa> | sicking: so if we'll have createAutomaticTransaction(x)=x but x will get extra properties |
01:51 | <rniwa> | sicking: yeah |
01:51 | <rniwa> | sicking: it's not particularly clean either |
01:51 | <rniwa> | sicking: alternatively, we could add "automatic" boolean to transaction object |
01:51 | <rniwa> | sicking: so instead of having two methods |
01:51 | <rniwa> | sicking: we'll just have a boolean that determines whether it's automatic or not |
01:52 | <rniwa> | sicking: in the object itself |
01:52 | <sicking> | rniwa: yeah, that seems ok |
01:52 | <sicking> | rniwa: i do like the idea of being able to return a transaction |
01:52 | <rniwa> | sicking: yeah |
01:52 | <sicking> | rniwa: but i *really* liked the syntax you guys had in your original email that came up with the transaction objects as they are now |
01:52 | <rniwa> | sicking: so we'll have undoManager.transact({apply:~~, automatic:true}) |
01:53 | <rniwa> | sicking: which one? |
01:53 | <sicking> | rniwa: the one that introduced the syntax as it is now |
01:53 | <rniwa> | sicking: oh undoManager.transact({apply:~~, automatic:true}) ? |
01:54 | <sicking> | nono, much much earlier |
01:54 | <sicking> | nevermind, i think our irc'ing just crossed paths :) |
01:54 | <sicking> | rniwa: i like the automatic:true idea |
01:55 | <sicking> | rniwa: that seems like it would take care of the original use case |
01:55 | <rniwa> | sicking: mn... like undoManager.transact(new ManagedTransaction(...)) ? |
01:56 | <sicking> | you just lost me :) |
01:57 | <rniwa> | sicking: http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2011-August/032766.html ? |
01:57 | <rniwa> | sicking: ok |
01:58 | <sicking> | rniwa: what I'm saying is that the undoManager.transact({ apply: ..., automatic: true }) seems to solve the use case of having code like: transact = someFunctionThatGeneratesTransactions(); undoManager.transact(transact); |
01:58 | <rniwa> | sicking: yeah |
01:58 | <rniwa> | sicking: ok, I'll post something up on whatwg and make this change subsequently |
01:58 | <rniwa> | sicking: this will lets us just have one implicit interface |
01:58 | <rniwa> | sicking: and one transact |
01:58 | <rniwa> | :D |
01:59 | <sicking> | rniwa: yup. Might be good to come up with something shorter than "automatic" though. Maybe just "auto"? |
01:59 | <sicking> | i'll leave the bikeshedding to others :) |
01:59 | <rniwa> | sicking: yeah, auto works |
01:59 | <sicking> | rniwa: also, i'm still not sold on apply+reapply. I still think just apply is better :) |
01:59 | <sicking> | with a boolean argument |
02:00 | <rniwa> | sicking: hmm.... I still make the same argument AryehGregor made and say booleans are bad |
02:00 | <rniwa> | sicking: I find a function that does both do & undo to be semantically hard to understand |
02:01 | <rniwa> | sicking: unfortunately, there are no good precedents for this because most of Undo API just provide functions for undo/redo |
02:01 | <rniwa> | sicking: and not the initial execution |
02:01 | <sicking> | rniwa: sure, i wouldn't propose to merge do/undo |
02:01 | <rniwa> | sicking: oops I meant do/redo |
02:01 | <sicking> | rniwa: booleans are bad on the callsite generally |
02:01 | <rniwa> | sicking: I'm not buying the idea that developers would duplicate code |
02:01 | <rniwa> | sicking: when he can just call apply |
02:01 | <sicking> | rniwa: but here the callsite is inside the browser code, so that's not a problem |
02:02 | <sicking> | rniwa: but he can't call apply, you brought up good reasons for why they should be slightly different |
02:02 | <rniwa> | sicking: also arv made an argument that booleans are hard to remember which one is which |
02:02 | <sicking> | rniwa: again, that's generally true on the caller side, not on the callee side |
02:02 | <rniwa> | sicking: so he can do reapply: function() { /* some work! */ this.apply(); } |
02:03 | <sicking> | rniwa: i don't think you can do selection like that |
02:03 | <sicking> | rniwa: also, look at the examples that you sent to the list, they all duplicated code |
02:03 | <rniwa> | sicking: or reapply: function() { this.apply(); /* some work */ } |
02:04 | <rniwa> | but should I define function(isApply) {...} or function(isReapply) {...}? |
02:05 | <sicking> | rniwa: Either way, it'll be obvious when you look at any example |
02:05 | <sicking> | rniwa: the problem with boolean arguments is that you can't tell on the caller side: apply(false) |
02:05 | <sicking> | rniwa: but on the callee side it's always documented using the variable name |
02:06 | <sicking> | rniwa: i'm also not convinced that the differences between apply/reapply are always so simple that you can implement them before and/or after |
02:06 | <rniwa> | sicking: so the argument was that it's hard to remember which boolean it was when you write the function for the first tie |
02:06 | <rniwa> | time* |
02:06 | <sicking> | though i'd have to think to come up with an example |
02:07 | <sicking> | rniwa: how would you do that without looking at docs or examples? |
02:07 | <rniwa> | sicking: well, you probably remember it was undoManager |
02:07 | <rniwa> | sicking: and on firebug or developer console, you can see that it has transact method |
02:08 | <rniwa> | sicking: and maybe I'll vaguely remember it takes apply function |
02:08 | <zewt> | if that's a person's way of learning an api, they're going to get confused no matter what the type of the argument :) |
02:08 | <rniwa> | zewt: well, I almost always use developer tools to figure out property names, etc... |
02:08 | <rniwa> | zewt: too lazy to search |
02:09 | <rniwa> | zewt: most of the times, properties I find do what their name suggest to do |
02:09 | <rniwa> | anyways |
02:09 | <zewt> | seems like a strange reason to abolish bools, heh |
02:09 | <rniwa> | zewt: I guess |
02:10 | <zewt> | if there was more info to send i'd suggest passing an object, like events, but that's a bit overkill if that's all there is |
02:10 | <sicking> | rniwa: i'm not convinced that it'll be easier to remember that there's both a "apply" and a "reapply" function, than to remember that it takes a isReapply boolean argument |
02:11 | <rniwa> | sicking: I've talked to a couple of developers internally and they told me they'd prefer apply/reapply simply because they don't like booleans |
02:11 | <rniwa> | sicking: but then they also told me they'll be fine with booleans |
02:11 | <zewt> | if an api made me provide two separate functions that are very similar, i'm pretty sure i'd quick patch it away so i don't have to deal with that |
02:12 | <zewt> | (i havn't looked closely enough to know why "apply" and "reapply" are separate concepts, though) |
02:12 | <rniwa> | zewt: if you don't supply reapply, it falls back to apply |
02:12 | <zewt> | ah |
02:12 | <rniwa> | zewt: apply is called when you call undoManager.transact |
02:12 | <jamesr_> | how's that better than having a bool? if authors forget about reapply, in both cases their apply() function is called |
02:12 | <rniwa> | zewt: reapply is called, well, when a user triggers redo |
02:13 | <zewt> | i guess as someone who's typed "int main(int argc, char *argv[])" a few thousand times, worrying about this seems minor :) |
02:13 | <rniwa> | zewt: I can never remember which comes first although I've been writing c programs over a decade |
02:13 | <zewt> | if i think about it i'd probably forget--i just let my fingers type it |
02:14 | <zewt> | digit coprocessors |
02:14 | <rniwa> | mn.. maybe I'll like it better if we renamed apply/reapply |
02:14 | <rniwa> | sicking: how about executeDo and executeUndo? |
02:15 | <rniwa> | sicking: or execute and executeUndo? |
02:15 | <sicking> | rniwa: i like apply/unapply/reapply better |
02:15 | <rniwa> | sicking: ? |
02:15 | <rniwa> | sicking: you like apply/unapply better? |
02:15 | <sicking> | rniwa: the names that is |
02:15 | <rniwa> | sicking: I think the problem is that apply appears to indicate that it's only called for the first time |
02:16 | <sicking> | rniwa: oh, i see |
02:16 | <jamesr_> | do/undo/redo? |
02:16 | <sicking> | rniwa: i generally try to stay out of naming issues |
02:16 | <rniwa> | jamesr: I think we want to get rid of redo function |
02:16 | <sicking> | :) |
02:16 | <rniwa> | jamesr: do/undo seems fine |
02:17 | <rniwa> | jamesr: but might be too generic? |
02:17 | <rniwa> | jamesr: we want to let duck type it so user may want to inherit from some other objects |
02:17 | <zewt> | do is a keyword :) |
02:17 | <rniwa> | zewt: oh that won't work :( |
02:17 | <sicking> | zewt: that's ok in ES5 |
02:17 | <sicking> | rniwa: no, that's not a problem in ES5 |
02:18 | <rniwa> | sicking: probably better to avoid it though |
02:18 | <zewt> | why is it okay, that sounds gross, heh |
02:18 | <rniwa> | sicking: you never know which JIT compiler has bugs |
02:18 | <rniwa> | sicking: good principle > i generally try to stay out of naming issues |
02:18 | <rniwa> | sicking: makes you productive :) |
02:19 | <sicking> | rniwa: we have functions called 'delete' in indexedDB |
02:19 | <rniwa> | sicking: oh dear |
02:23 | <rniwa> | sicking: but I think the problem here is that do is defined by author |
02:23 | <rniwa> | sicking: so you'll writ something like undoManager.transact{do: funciton(redo) {..}, undo: funciton() {..}) |
02:23 | <rniwa> | sicking: I guess it's fine in this simple case but might be annoying in more complicated case |
02:23 | <rniwa> | sicking: how old is ES5 support among browsers? |
02:23 | <rniwa> | sicking: I don't want to make library author's life harder but I don't want to worry about backward compat. if it's form ages ago |
02:23 | <sicking> | rniwa: JIT's don't matter here, only ecmascript parsers |
02:23 | <sicking> | rniwa: it was renamed from 'remove' to 'delete' based on developer input |
02:23 | <sicking> | rniwa: past the parser it's just strings |
02:23 | <sicking> | rniwa: one option would be to do both things |
02:23 | <sicking> | rniwa: have apply/reapply/unapply, pass a boolean argument to apply/reapply, and do the fallback to apply if reapply doesn't exist |
02:23 | <sicking> | rniwa: that way, if you have really different implementations between apply/reapply you can split it into two functions |
02:23 | <sicking> | rniwa: but if you don't, you can just add a few branches |
02:23 | <sicking> | s/but if you don't/but if the differences are small/ |
02:23 | <rniwa> | sicking: that's what I meant :) |
02:24 | <rniwa> | sicking: > parsers |
02:24 | <dglazkov> | zewt: ftfy https://encrypted.google.com/ |
02:24 | <rniwa> | sicking: should have said engine* |
02:24 | <sicking> | hmm... seems like i have connectivity issues |
02:24 | <sicking> | rniwa: did you get my last message? |
02:24 | <rniwa> | sicking: yeah |
02:24 | <rniwa> | sicking: that might be a good idea |
02:24 | <sicking> | rniwa: the "s/but if you don't/but if the differences are small/" one? |
02:24 | <rniwa> | sicking: having both* |
02:25 | <sicking> | cool |
02:25 | <rniwa> | sicking: okay, let's do that for now |
02:25 | <zewt> | dglazkov: :D |
02:25 | <sicking> | rniwa: for what it's worth, if you do { "do": function(...) { ... } }, that will work even in ES3 parsers |
02:25 | <rniwa> | sicking: sorry about the delay in responses, I want to be more responsive but I've been blocked by regressions from my Apple-style-span removals |
02:25 | <rniwa> | sicking: oh that's a good point |
02:26 | <rniwa> | sicking: mn... come to think of it |
02:26 | <rniwa> | sicking: maybe we don't need automatic boolean |
02:26 | <rniwa> | sicking: maybe we should just rename apply for automatci function to execute |
02:26 | <sicking> | ok, gotta run, circus class! |
02:27 | <rniwa> | sicking: so that manual transaction would have apply(bool), unapply, and optionally reapply |
02:27 | <rniwa> | sicking: and automatic transactoin would have execute |
02:27 | <rniwa> | sicking: ah, ok. |
02:27 | <rniwa> | ttyl |
02:27 | <sicking> | rniwa: that might work too |
02:27 | <rniwa> | guess I'll post that on whatwg and see what others think |
09:54 | <Ms2ger> | http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-September/033136.html |
09:54 | <Ms2ger> | http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-September/033257.html |
09:54 | <Ms2ger> | So does Opera support script onload? |
09:56 | <bga_> | small css proposal. resampling-filter: lanczos | bicubic | linear | ... |
09:59 | <zcorpan> | Ms2ger: hmm! |
09:59 | <Ms2ger> | I'd look at the code, but you guys are evil ;) |
10:01 | <zcorpan> | Ms2ger: seems my testing was bogus |
10:14 | <annevk> | "hot mutato" |
10:15 | annevk | is trying to work out the component model minutes |
10:20 | <asmodai> | Mmm, had SPDY been put forth for an IETF RFC by now (given how Mozilla added it to ff as well in recent builds)? |
10:20 | <asmodai> | s/had/has/ |
10:23 | <annevk> | "(shouting match--declarative will be there)" |
10:23 | <annevk> | So far it seems sufficient people in the room were in favor of a trimmed XBL2 |
10:28 | <smaug____> | I missed that meeting, but I was told that Mozilla and Apple had pretty similar ideas, and Google something a bit different |
10:29 | <smaug____> | Though, I think someone needs to still figure out sane event handling for shadow trees / bindings |
10:29 | <annevk> | From the minutes I just read on public-webapps that appears to be the case, yes |
10:29 | <smaug____> | (event retargeting is just quite error prone) |
10:30 | <annevk> | Mozilla/Apple participants want a trimmed XBL2; Google wants simpler JS libraries |
10:30 | <annevk> | The specifics were not nailed down |
10:30 | <annevk> | That is, all the hard questions are still there I guess :) |
10:30 | <smaug____> | indeed |
10:31 | <annevk> | I proposed a unconference session for TPAC |
10:31 | <annevk> | Maybe we can make some progress then... |
10:31 | smaug____ | tries to not attend TPAC |
10:32 | <smaug____> | too much flying |
10:34 | <woef> | on rel="next" and rel="prev" |
10:34 | <woef> | Google says: "Send users to the most relevant page/URL—typically the first page of the series." |
10:35 | <woef> | Why would they do that and is there any way to step them from going through with it? |
11:54 | <annevk> | Curious to see whether this will have any effect: http://infrequently.org/2011/09/things-the-w3c-should-stop-doing/ |
11:54 | <annevk> | Seems kind of pointless to suggest XML should be removed as it is unlikely to be removed from browsers, but overall it's a valid point |
12:05 | <Neiluj> | Hi |
12:07 | <Neiluj> | is there a plan to support other date/time format for inputs ? like <input type="time" format="time-hour:time-minute"/> or <input type="date" format="date-mday/date-month/date-fullyear"/> ? |
12:09 | <annevk> | do you mean UI-wise or submission-wise? |
12:09 | <annevk> | submission-wise: no |
12:10 | <annevk> | UI-wise: vague ideas exist |
12:10 | <Neiluj> | what means submission-wise ? what coming out from the form ? |
12:10 | <annevk> | yeah, what the server gets |
12:10 | <Neiluj> | ok, so no only UI-wise |
12:11 | <annevk> | we don't really have a good idea yet |
12:11 | <annevk> | at the moment UI is up to browsers |
12:12 | <Neiluj> | ok :) |
12:12 | <Neiluj> | hope it will come one day, thx :) |
12:12 | <smaug____> | hopefully browsers can pickup the "right" UI based on the page's language |
12:13 | <smaug____> | similarly to <input type="number"> handling |
12:13 | <smaug____> | (where decimal separator can be . or ,) |
12:13 | <Neiluj> | but what if the format is not about language convention, like not showing seconds for time inputs |
12:14 | <smaug____> | that is indeed some extra hint which UA should get from the page |
12:14 | <annevk> | Neiluj, that you can control already using step I think |
12:14 | <annevk> | well, showing is another matter I guess |
12:14 | <Neiluj> | annevk: indeed, with time, it's ok, that was for the example and that's a trick |
12:16 | <Neiluj> | thinking this may be some CSS property responsability actually... |
12:16 | <annevk> | on public-webapps⊙wo there is some discussion going on on how we want to allow developers to extend/replace elements with their own implementation |
12:17 | <Neiluj> | as it won't change the data but only the UI... |
13:45 | <annevk> | For everyone who wants to use Anolis with cross-specification cross-references, it's quite easy: http://wiki.whatwg.org/wiki/Anolis |
13:59 | <annevk> | http://shiki.esrille.com/2011/09/es-acid1.html seems Shiki is writing a browser in ECMAScript and it now passes Acid1 |
13:59 | <annevk> | that's pretty neat |
15:01 | <rillian_> | foolip, we're not having a meeting now, right? |
15:11 | rillian_ | guesses not |
16:30 | <annevk> | oh Björn had his spiel again about XMLHttpRequest not having a test suite |
16:30 | <annevk> | trololol |
16:34 | <hsivonen> | I thought you wrote a test suite for XHR |
16:35 | <annevk> | yeah Ms2ger pointed that out |
16:40 | <smaug____> | oh, test suites |
16:41 | <smaug____> | I need to look at my notes about invalid EventSource tests |
16:42 | <smaug____> | annevk: but in any case, thanks for writing tests! |
16:42 | <annevk> | smaug____, they've been around for a year now... |
16:43 | <smaug____> | xhr and eventsource? |
16:43 | <smaug____> | do you happen to have tests for xhr.timeout already? |
16:43 | <smaug____> | (someone is implementing that) |
16:44 | <annevk> | I have not written tests for any of the new features and I don't think I should |
16:44 | <annevk> | It's bad to write both the spec and the tests |
16:45 | <smaug____> | true |
16:52 | <Ms2ger> | annevk, so what should I recommend instead of replaceWholeText? |
16:57 | <annevk> | Ms2ger, parentNode.normalize() and then setting data? |
16:58 | <annevk> | or maybe just say to use textContent |
17:00 | <Ms2ger> | Takk |
17:01 | <annevk> | graag gedaan |
17:04 | <karlcow> | http://www.onderhond.com/blog/work/rel-next-prev-google |
17:14 | <zewt> | "verbose" |
17:15 | <annevk> | also seems like what Google is doing is the whole point behind having such attribute values |
17:15 | <annevk> | that you can offer different UI |
17:19 | <Hixie> | hsivonen: ooh, second time an "assistant-resolved" bug got escalated :-) |
17:24 | <annevk> | oh hey |
17:24 | <annevk> | deadline coming up |
17:24 | <annevk> | http://lists.w3.org/Archives/Public/public-html/2011May/0162.html |
17:24 | <annevk> | sort of forgot about that |
17:26 | <Ms2ger> | Only 175 for HTML5 |
17:27 | <annevk> | 30 bugs to WONTFIX per day :p |
17:47 | <annevk> | noticed http://www.w3.org/Bugs/Public/show_bug.cgi?id=13684 (on event handlers and DOM Events) while looking through those bugs; been meaning to write about that so that was nice |
17:56 | <annevk> | Oh, it's already text/vtt I see |
17:59 | <zewt> | i sort of like the idea of dropping "web" from webvtt, simply because there's nothing about it that's web-specific, and having "web" in there could (minorly) hinder adoption |
18:00 | <zewt> | only casually, though, it's already had one name change |
18:02 | <zewt> | (on the other hand, "vtt" is slightly less googlable than "webvtt") |
18:07 | <annevk> | zewt, we could still call it WebVTT (although I don't think it's a good idea to prefix specifications with random words such as "X" or "Web"), just not have "Web" become an intrinsic part of the format |
18:08 | <zewt> | if it's baked into the name of the spec, that's what people will call it, so the file header probably doesn't matter much at that point |
18:09 | <zewt> | well, i guess what people end up calling it is out of our hands--if people name the files *.vtt they may call it "vtt" no matter what we do |
18:09 | <Hixie> | annevk: I wanted the signature to be "WEBVTT FILE", it's already been reduced to "WEBVTT". I don't think we should go down even further. |
18:12 | <annevk> | I guess in the end it's just another string, like XMLHttpRequest |
18:13 | <annevk> | (Not that WEBVTT is that bad ;)) |
18:13 | <Ms2ger> | WEBVtt? |
18:14 | <zewt> | WEBVtt to represent a file format name WebVTT? that's a mind-bender :) |
18:14 | <zewt> | named |
18:15 | <annevk> | hey you can now search in Google+ |
19:18 | <AryehGregor> | So it looks like style="border-width: initial; border-color: initial" is unremovable via CSSOM in WebKit. |
19:18 | <AryehGregor> | . . . |
19:18 | <AryehGregor> | http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!doctype%20html%3E%0A%3Cdiv%20style%3D%22border-width%3A%20initial%3B%20border-color%3A%20initial%22%3E%3C%2Fblockquote%3E%0A%3Cscript%3E%0Avar%20div%20%3D%20document.querySelector(%22div%22)%3B%0Adiv.style.borderWidth%20%3D%20%22%22%3B%0Adiv.style.removeProperty(%22border-width%22)%3B%0Adiv.style.removeProperty(%22borderWidth%22)%3B%0Adelete%20div.style.borderWidth%3B%0A%3C%2Fscript%3E |
19:26 | <AryehGregor> | https://bugs.webkit.org/show_bug.cgi?id=68551 |
19:31 | <GlitchMr> | I would like to see ignoring CAPS LOCK state while using <input type=password>. Caps Lock usually does nothing good on those fields and is annoying :P (because you don't see you write with other case). |
19:31 | <GlitchMr> | But then, some might use passwords full of uppercase letters... |
19:32 | <zewt> | just mimic WinXP's "AWOOGA AWOOGA you've got caps lock on" tooltip on top of password boxes (if there was a way to detect it, of course) |
19:32 | <GlitchMr> | I don't think you could check Caps Lock state using JS |
19:32 | <zewt> | thus if there was :) |
19:33 | <GlitchMr> | Of course you could write passwords in database in lowercase or just try two passwords with each login (specified password and letter case flipped password), but that would lower the security. |
19:33 | <zewt> | (some might argue that showing something like that is the browser's job, though I think that would be a bit visually invasive for browsers to do on every site) |
19:34 | <AryehGregor> | GlitchMr, doesn't IE10 alert you if your caps lock key is on when you're typing in password inputs? |
19:34 | <AryehGregor> | All browsers should just do that. |
19:34 | <AryehGregor> | It's only sensible. |
19:36 | <GlitchMr> | Makes sense... |
20:13 | <RobbertAtWork> | GlitchMr: Some people have learned to type using caps lock for any sequence of two or more uppercase letters |
21:07 | <ojan> | TabAtkins: yt? i'm trying to figure out what to do w/ height:auto on a vertical flexbox. |
21:08 | <ojan> | TabAtkins: vertical writing-mode shrinkwraps using the initial containing block as the height |
21:09 | <ojan> | TabAtkins: it seems like we should do the same for flexbox |
21:32 | <TabAtkins> | ojan, here |
21:32 | <TabAtkins> | I agree. |
21:32 | <ojan> | TabAtkins: on further thought, i'm going to propose to the wg that the writing-mode spec change |
21:32 | <ojan> | TabAtkins: and i think flexbox should match |
21:32 | <TabAtkins> | kk |
21:34 | <ojan> | TabAtkins: i'll post shortly...but basically, if there is an available height for a height:auto flexbox, i think we should fill it instead of shrinkwrapping |
21:34 | <ojan> | TabAtkins: only shrinkwrap in the case of not having an available height and in that case, shrinkwrap using the height of the initial containing block |
21:35 | <TabAtkins> | Oh, so <div height=300px><vbox height=auto>...</vbox></div> would make the vbox 300px tall? |
21:37 | <mkanat> | As a developer, that's what I'd expect from height:100%, not from height: auto. |
21:37 | <TabAtkins> | ojan: ^^^? |
21:38 | <TabAtkins> | mkanat: I agree, if that's the behavior he's referring to. |
21:39 | <ojan> | TabAtkins: it makes height consistent w/ width |
21:40 | <TabAtkins> | ojan: But height isn't consistent with width in general. If you're embedding a vbox into a block element, I'd expect height:auto to work like height:auto does for any other element. |
21:40 | <TabAtkins> | (We need the 'fill' value for width/height which gives you the width:auto behavior explicitly, which we could then also use with height.) |
22:22 | <annevk> | "At the workshop today" |
22:22 | <annevk> | what workshop? |
22:23 | <TabAtkins> | The schema.org workshop, presumably. |
22:23 | jgraham | can no longer keep up with all the semi-secret meetings |
22:23 | <Hixie> | you're not missing anything |
22:23 | <Hixie> | (from the whatwg perspective anyway) |
22:25 | <Hixie> | can someone teach me what a singular transform matrix's implications are? |
22:26 | <Hixie> | wikipedia's math pages are inpenetrable |
22:27 | <jgraham> | A simular matrix doesn't have an inverse, so I guess once loses information e.g. by mapping points from an area onto a line |
22:28 | jgraham | doesn't know if that is helpful |
22:28 | <AryehGregor> | Hixie, it has derivative zero. It's not invertible. Geometrically, it multiplies areas by zero, so in two dimensions, it maps planes to points or lines. |
22:28 | <AryehGregor> | Anything specific you want to know? |
22:29 | <AryehGregor> | Singular vs. invertible is one of the basic differences you can have with matrices, so there are tons of things to say about it. |
22:29 | <Hixie> | if you have a plane and your transform it by a singular matrix, where is the resulting point or line? |
22:30 | <Hixie> | i guess it's got zero thickness so it doesn't matter |
22:30 | <AryehGregor> | Right. |
22:30 | <Hixie> | i'm trying to work out why browsers can't just implement the spec with singular matrices, instead needing some special text for them |
22:30 | <AryehGregor> | If it's a regular 2x2 matrix, it will map the plane to either the origin or a line through the origin. If it's an augmented matrix, it transforms affinely instead of linearly, so the point or line can be anywhere. |
22:31 | <AryehGregor> | What exactly constitutes "singular" when your matrix's values are floating-points is nonobvious. |
22:31 | <dbaron> | by derivative, AryehGregor meant determinant |
22:31 | <Hixie> | AryehGregor: yeah that's why i was hoping there'd be a nice way to not answer the question |
22:31 | <AryehGregor> | So I did. How embarrasing. |
22:31 | <AryehGregor> | embarrassing. |
22:32 | <AryehGregor> | Anyway, your questions have veered into the highly practical, so I don't think my expertise will be of much use. |
22:32 | <Hixie> | hah |
22:32 | <dbaron> | I think it really depends on the wording of the spec whether it needs to make a special case for singular matrices |
22:33 | <dbaron> | likewise for code |
22:33 | <dbaron> | but there are some things where it's certainly unavoidable |
22:33 | <dbaron> | like if we add an API for getting "coordinates in the space of element A" to "... of element B" |
22:34 | <dbaron> | if there's a singular transform between them, then there's no answer to the question in one direction (except for a narrow set of points) and lots of answers the other way |
22:35 | <dbaron> | likewise, there are a bunch of algorithms that have a "divide by the determinant" step, which doesn't work so well when it's 0. Usually such algorithms don't make any sense to apply to singular transforms anyway. |
22:35 | <dbaron> | Hixie, ^ |
22:35 | <Hixie> | yeah |
22:35 | <dbaron> | but the spec still needs to say what it does (return 0, throw exception, etc.) |
22:36 | <Hixie> | well luckily for me i don't think i have anything that returns points or divides anything by anything |
22:36 | <Hixie> | however |
22:36 | <Hixie> | people have nonetheless asked the question |
22:36 | <dbaron> | (e.g., when animating transforms, the fallback case is to decompose the matrix and animate the pieces -- and the decomposition algorithm doesn't work on singular matrices) |
22:37 | <dbaron> | asked the question about what? |
22:37 | <Hixie> | "what should happen if you have a singular transformation matrix" |
22:38 | <Hixie> | e.g. if you call c.scale(0,1); and then c.fill(); with a path |
22:38 | <dbaron> | ah, so these are questions about canvas |
22:38 | <dbaron> | I think that's easy: nothing. |
22:40 | <dbaron> | though if the path was set *before* the scale...? |
22:40 | <Hixie> | the path is non-zero |
22:40 | <dbaron> | (does the scale affect it?) |
22:40 | <Hixie> | the fill is all that is scaled |
22:40 | <dbaron> | hmmm, I don't remember canvas well enough to discuss this intelligently |
22:41 | <hober> | istm the canvas spec should align with the 2d/3d css transforms specs |
22:42 | <Hixie> | if img1 is a mostly green image, in webkit, this is a mostly green rectangle: |
22:42 | <Hixie> | c.beginPath(); c.rect(100,100,100,100); c.fillStyle = c.createPattern(img1, 'repeat'); |
22:42 | <Hixie> | c.scale(0.000000000000000000000000000000000001,1); |
22:42 | <Hixie> | c.fill(); |
22:42 | <Hixie> | but if i add one "0" to that number, it no longer paints anything. |
22:43 | <Hixie> | because repeating a zero-width image across the plane doesn't make much sense |
22:43 | <Hixie> | but what about if the fill is a color? |
22:44 | <jamesr_> | if it does nothing, does the globalCompositeOperation still apply? |
22:44 | <jamesr_> | if i do c.globalCompositeOperation="copy"; c.scale(0,1); makePath(c); c.fill(); |
22:44 | <jamesr_> | is my canvas now empty? |
22:45 | <Hixie> | not in webkit |
22:45 | <Hixie> | however |
22:45 | <AryehGregor> | If we had perfect precision, all this stuff would be well-defined. But some things suddenly behave differently at determinant zero compared to determinant epsilon, and there's no difference with floating-point . . . |
22:45 | <Philip`> | I think the reason the spec doesn't return points or divide anything by anything is that it doesn't actually define the algorithms to render things (which can do those things) |
22:46 | <Hixie> | if you set it to c.scale(0.000000000000000000000000000000000001,1); |
22:46 | <Hixie> | then it is empty |
22:46 | <Hixie> | so there's a difference between c.scale(0.000000000000000000000000000000000001,1);, c.scale(0.00000000000000000000000000000000001,1);, and c.scale(0.00000000000000000000000000000000000,1); |
22:47 | <Hixie> | that is, c.scale(1e-36,1);, c.scale(1e-37,1); and c.scale(0,1); |
22:47 | <Hixie> | Philip`: yeah, i was just noticing that nothing actually says how fill() paints a repeating pattern |
22:47 | <Philip`> | Sound like FLT_MIN |
22:47 | <Philip`> | *Sounds |
22:58 | <AryehGregor> | Philip` or zewt or anyone who might know: how does EBS pricing work if you maintain the volume for less than an integer number of months? It doesn't say whether they round or what. |
22:58 | <AryehGregor> | At least that I see. |
23:07 | <zewt> | they measure it in "GB-months", which I think means to multiply by the amount of time, eg. 2 GB for two weeks is one GB-month |
23:08 | <zewt> | (don't use a petabyte of storage and blame me for the billing if I'm wrong, though) |
23:09 | <Hixie> | that sounds equivalent to saying that they average the disk usage over each month |
23:10 | <zewt> | i regularly create large temporary volumes for things and delete them after a day or two; i'm sure they don't take the maximum or anything like that |
23:12 | <Hixie> | i wonder how often they sample |
23:16 | <AryehGregor> | They're providing block devices, not filesystems, so they don't have to sample. They can just record the creation and destruction times of each volume. |
23:17 | <annevk> | http://www.reddit.com/r/reddit.com/comments/kn327/wifes_ipad_i_just_wanted_to_play_angry_birds/ hahaha |
23:30 | <Philip`> | AryehGregor: http://serverfault.com/questions/197379/amazon-ebs-charges-calculation says hourly |