00:05
<Domenic>
Anyone know how you're supposed to include Unicode in HTTP headers? https://twitter.com/domenic/status/908480923070373888
01:15
<deyomax>
Domenic: it's about asterisk parameters, not full headers.
01:15
<deyomax>
Seems like a clarification on an existing practice
01:16
<deyomax>
And thank god because last thing we need is an alternative way to encode headers.
07:33
<Ms2ger>
Oh my: https://twitter.com/mnot/status/908471139348840449
07:37
<annevk>
Ms2ger: wake me up when it's no longer text/plain-compatible
07:37
<annevk>
Anyone here interested in joining a @whatwg/i18n team? https://lists.w3.org/Archives/Public/www-international/2017JulSep/0110.html
07:37
<annevk>
This wouldn't be for whatwg/encoding btw, since that's all related I'd expect folks to just watch the repository
07:37
<MikeSmith>
xfq maybe?
07:38
<Ms2ger>
This is how stories about people waking up after centuries start
07:38
<annevk>
I'd like to post a similar message to a a11y group btw, if someone can give me a good list I'll go ahead and post it, though dentist first
07:38
<annevk>
Ms2ger: I'd like to revise my answer to "tell me to stop playing Zelda"
07:39
<Ms2ger>
Approved
07:53
<gsnedders>
annevk: maybe?
09:18
<annevk>
gsnedders: you can always leave teams
09:22
<gsnedders>
annevk: indeed
09:36
<JakeA>
annevk: if I have an API that takes a sequence of Whatever dictionaries, is there an easy way to store that as part of a concept? Can I just say "Foo has whatevers (a list of Whatevers)"
09:37
<JakeA>
It feels like a DRY violation to have to recreate the structure as a concept
09:38
<annevk>
JakeA: I guess you can store the resulting dictionaries, yes
09:39
<JakeA>
annevk: Ta!
09:39
<annevk>
JakeA: we haven't really flushed IDL structures out so much, but it seems reasonable that once a JavaScript value is converted to an IDL value you can store the result
09:40
<JakeA>
annevk: yeah, especially for things like dictionaries where it isn't linked to the JS object
09:41
<JakeA>
Using an IDL reference in a concept made me stop and think
09:41
<annevk>
JakeA: we do it all the time for strings and numbers and such
09:43
<JakeA>
annevk: That reminds me, if I'm storing an unsigned long long, should the concept also be an unsigned long long? Most concepts I see just use "number".
09:43
<annevk>
JakeA: I use number when it's not important, and x-bit when it is
09:44
<annevk>
JakeA: I would try to call out unsigned/signed and nonzero
09:45
<annevk>
JakeA: this should all get a lot clearer as IDL is fully redefined in terms of Infra, but that'll take a while
09:45
<annevk>
(and Infra itself matures more)
09:45
<JakeA>
Gotcha , cheers!
13:49
<wanderview>
JakeA: do you have an opinion on https://github.com/w3c/ServiceWorker/issues/1189?
13:49
<wanderview>
we can discuss at TPAC, but we are planning to ship this feature around that time
13:50
<JakeA>
wanderview: will take a look
13:51
<wanderview>
JakeA: it was bad on us not to raise this question in the spec when we chose to do something that was not clearly spec'd
13:52
<JakeA>
wanderview: nah I've been procrastinating when I should have dealt with this issue a while ago
14:07
<domfarolino>
Each browser thread gets its own event loop, does this mean each thread also gets its own microtask queue? Is this queue just a part of the event loop...as in...does an event loop consists of a task queue and microtask queue basically?
14:07
<domfarolino>
JakeA: reading your article on tasks/microtasks, to give some context
14:13
<annevk>
domfarolino: yeah, it's defined in the HTML Standard, but that's roughly it
14:15
<domfarolino>
annevk: ok thanks. Hm, so I've learned that microtasks are executed mid-task after callbacks...not just at the end of a task. When would a callback not be at the end of a task though? Is it when there are say, multiple callbacks to execute in a single task?
14:16
<annevk>
domfarolino: they're only executed after callbacks if there's no JavaScript on the stack
14:18
<annevk>
domfarolino: so _a_ in the following code would not run directly after onclick: obj.onclick = ...; Promise.resolve(...).then(a); obj.click(); // a hasn't run at this point
14:23
<domfarolino>
annevk: Hmm ok I think I'm a tad confused. So what else is on the stack that would prevent a from being run directly after on click?
14:25
<annevk>
domfarolino: the JavaScript engine executing JavaScript
14:26
<annevk>
I'd expect JakeA's article to cover this though, but it's been a while
14:27
<annevk>
Hmm maybe he didn't cover that
14:28
<domfarolino>
So after we perform the onclick callback, isn't that the end of JS execution though? because there's no JS after "// a hasn't run at this point"
14:28
<JakeA>
It's covered
14:29
<JakeA>
domfarolino: See "Level 1 bossfight" vs "Level 1 boss's angry older brother"
14:30
<JakeA>
domfarolino: A manual click shows microtask checkpoints happening between event callbacks, because the stack is empty after each callback.
14:30
<annevk>
Oh it is
14:30
<annevk>
I just wrote http://software.hixie.ch/utilities/js/live-dom-viewer/saved/5376 as an example
14:31
<JakeA>
domfarolino: Whereas when the same event is triggered with el.click(), the stack isn't empty between callbacks, so no checkpoint until the end
14:31
<annevk>
Firefox does this wrong it seems, even though I'm pretty sure smaug____ designed these rules
14:31
<domfarolino>
Ohhh but with a JS initiated click, the stack is not empty after that execution, because we're still "executing script"?
14:31
<annevk>
Maybe Firefox only does it correct for mutation events
14:31
<annevk>
domfarolino: yup
14:31
<annevk>
domfarolino: there's some terminology the HTML Standard uses for this that I forgot about...
14:32
<annevk>
Firefox bug is https://bugzilla.mozilla.org/show_bug.cgi?id=1193394 fwiw
14:32
<JakeA>
domfarolino: https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/#why-is-it-different – here's a step-by-step example showing the stack & queues in this case
14:33
<domfarolino>
annevk: thanks for the org invite btw. OHH, I jumped the gun then JakeA, didn't get to that part yet but that definitely makes sense. Thanks a ton for the info!!
14:34
<JakeA>
np!
14:35
<domfarolino>
Makes a lot more sense now. Sweet! annevk: oh interesting bug
14:37
<domfarolino>
annevk: thanks for the demo up there. JakeA: great article
14:37
<JakeA>
Cheers!
14:38
<wanderview>
annevk: its frustrating that old tests are preventing us from landing the fix :-(
14:39
<annevk>
wanderview: old WPT tests?
14:39
<wanderview>
annevk: no, firefox-specific tests for things like devtools, etc
14:39
<annevk>
That is too bad indeed
15:15
<smaug____>
annevk: hmm
15:15
<smaug____>
something about microtasks?
15:15
<smaug____>
someone using Promises?
15:15
<smaug____>
(since in Gecko Promises don't use microtasks)
15:15
<smaug____>
try MutationObservers, they follow microtask model
15:16
<smaug____>
and I'll try to finally get Promises fixed in FF58
15:16
<wanderview>
smaug____: this is about the bug to fix that in FF, yea
15:16
<smaug____>
but in other words, as far as I know FF's microtasks are correct
15:16
<smaug____>
it is that Promises are broken
15:17
<annevk>
that's probably true
15:24
<Jasper>
I just read the Worklet specification, and I'm confused.
15:24
<Jasper>
"Multiple instances of WorkletGlobalScope can be created for each Worklet that they belong to. User agents may choose to do this in order to parallelize work over multiple threads, or to move work between threads as required.
15:24
<Jasper>
"
15:24
<Jasper>
Does this mean that a Worklet cannot hold any state?
16:11
<annevk>
Jasper: some worklets cannot
16:11
<annevk>
Jasper: an audioworklet can
16:11
<Jasper>
What about a PaintWorklet?
16:11
<annevk>
Jasper: cannot
16:12
<Jasper>
The class that it registers cannot hold state? OK.
16:12
<annevk>
Jasper: that bit of the specification also has an outstanding issue btw, since it's basically the subclass that needs to decide whether that happens, and it's not some kind of optional thing
16:12
<annevk>
Jasper: so many broken things with worklets still
16:12
<annevk>
was kinda surprised Chrome tried to ship them
16:13
<Jasper>
I think I figured out after posting that that it's mostly talking about the global state of the script environment, *not* the class that you register.
16:13
<Jasper>
I'm kinda surprised at a lot of things Chrome tries to ship :/
16:14
<Jasper>
What would be more effective than trying to say "try not to mutate global state or your script might break" would be a frozen, immutable global environment
16:14
<Jasper>
But I assume there are constraints that prevent that from happening
16:17
<Jasper>
Apparently Firefox isn't even running Worklets in a thread yet https://bugzilla.mozilla.org/show_bug.cgi?id=1328964
16:17
<Jasper>
womp womp
16:18
<Jasper>
I come into this after not paying attention for a few years -- I honestly don't know what's going on in the web space anymore.
16:19
<wanderview>
Jasper: I don't think worklet is being actively worked at the moment
16:29
<annevk>
wanderview: I suspect for audioworklets there's at least some work being done, or maybe that also got delayed?
16:31
<wanderview>
annevk: baku worked on it for a while before, but I don't think he has been working on it recently
16:32
<annevk>
wanderview: I was thinking padenot
16:32
<wanderview>
oh audioworklets
16:32
<wanderview>
annevk: well, baku was adding the underlying worklet support
16:32
<annevk>
wanderview: it at least comes up every now and then, but maybe padenot is mostly working on the spec still
16:32
<wanderview>
not sure padenot is working on the worklet infrastructure
16:32
<wanderview>
sorry, I have to run
16:33
<Jasper>
For context, I wrote a kind of scathing article on Web Audio yesterday, and people were telling me to look into AudioWorklets which apparently are the future of the web.
16:33
<Jasper>
I have limited free time so it's mostly a nights-and-weekends thing, but I wanted to at least try to understand the new solution being proposed and try to help out where I can
16:33
<annevk>
I think at W3C's TPAC in Sapporo someone from Google told me how worklets would be pretty easy and quick to define
16:34
<annevk>
That's two years ago now and it still has the similar holes and a couple more uncovered
16:34
<Jasper>
I'm stuck trying to understand macro- and micro-task queues so I don't think I'm the right person to try and understand the subtleties of this :/
16:34
<annevk>
Nothing is ever easy
16:35
<annevk>
Jasper: take the time to read through and study https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/
16:35
<Jasper>
Thank you.
16:36
<annevk>
Jasper: you wrote http://blog.mecheye.net/2017/09/i-dont-know-who-the-web-audio-api-is-designed-for/?
16:36
<Jasper>
Yes.
16:36
<annevk>
Jasper: did you see http://robert.ocallahan.org/2017/09/some-opinions-on-history-of-web-audio.html?
16:36
<Jasper>
I did, yes (and left a comment on that post)
16:36
<annevk>
ah ok
16:37
<Jasper>
Apologies -- I try not to be too cynical and combatative since the industry is already full of way too many people like that... but my anger got the better of me in that post.
16:37
<Jasper>
And of course angry posts are what blow up on social media.
16:39
<Jasper>
So I feel it's sort of my karmic duty to spend some energy to try and pioneer and help out in the specs where I can, rather than just insult from a distance.
16:40
<annevk>
Jasper: so https://github.com/WebAudio/web-audio-api is the place where AudioWorklet et al are being designed
16:40
<Jasper>
Yep.
16:41
<annevk>
Jasper: if you need any help let me know
16:42
<Jasper>
Thank you. My first order of business is to try to wrap my head around a modern event loop.
16:43
<Jasper>
I hope my blog post wasn't too destructive. I know how it is to have short-sighted slights pelted at you from a distance.
16:44
<annevk>
Jasper: I haven't worked much on Web Audio other than helping out a little bit with AudioWorklet
16:44
<Jasper>
Alright.
16:44
<annevk>
Jasper: and from the couple people I know that do work on it, they dislike it too
16:45
<Jasper>
It's... a bit of a departure from what's usually in a platform layer, that's for sure :)
16:45
<annevk>
Jasper: Chrome/Safari ended shipping something and then Firefox felt like they had to copy, is my understanding of the events
16:45
<Jasper>
That's what roc posted, yeah.
19:16
<KiChjang>
did the fetch/HTTP cache specs ever say that we should always strip URL fragments when storing to/getting from cache?
19:17
<wanderview>
KiChjang: we no longer do for Request.url... I believe Response.url does still strip fragments
20:13
<KiChjang>
wanderview: is it good practice to strip fragments though?
20:15
<wanderview>
KiChjang: well, its required by the fetch spec: https://fetch.spec.whatwg.org/#dom-response-url
23:01
<xfq>
annevk: thanks for inviting me to join!
23:07
<Yuhong>
I have just mentioned the Browsium/EMIE story here: https://news.ycombinator.com/item?id=15259584