2014-04-01 [17:00:39.0000] for the window.onerror example, are we talking about parsing an error log later on, or programmatically doing something with the magic string? [17:01:52.0000] TabAtkins: why 60 million, btw? [17:01:59.0000] TabAtkins: what's your definition of "expect"? [17:02:04.0000] 36^5, the sqrt of 36^10. [17:02:07.0000] 50% expectation [17:02:28.0000] oh, i see [17:02:35.0000] the alphabet only actually has 16 characters [17:02:40.0000] so 16^5 [17:02:51.0000] Oh, you're only genning hex? [17:02:55.0000] I didnt' notice that [17:03:09.0000] That's only about 1M then. [17:03:40.0000] er wait [17:03:47.0000] not 16... [17:04:00.0000] oops [17:04:02.0000] it is 16 [17:04:08.0000] but it's supposed to be more [17:04:10.0000] 26 or so [17:04:13.0000] 2346789abcdefghjkmnpqrtwxy [17:04:50.0000] Ah, the easy-to-distinguish alphanums. [17:05:01.0000] yeah, that's the idea [17:05:19.0000] hm [17:05:25.0000] i need this to be a power of 2 for the logic to work better [17:05:37.0000] /me wonders whether to add or remove [17:06:35.0000] What's your logic? [17:07:34.0000] geenerate hmax sha 512 of increasing number, use the first n bits to generate a 10 character string [17:07:53.0000] Interesting. [17:08:04.0000] i can add z5suv back in but i'm still short a character... [17:08:12.0000] just reading /dev/urandom will probably give you equally non-repeating results, without depending on a last-used-number state [17:08:12.0000] Why not just generate a num between 0 and 26^10, then encode it in base 26? [17:08:18.0000] really don't want to add il1o0 [17:08:51.0000] And yes, the lowercase z/s aren't really confusable for 2/5. [17:09:02.0000] (since /dev/urandom these days is basically just a crypto hash on top of entropy) [17:09:37.0000] i like to avoid actual randomness in my code [17:09:58.0000] You're effectively grabbing randomness by taking an arbitrary chunk of a hash. [17:10:37.0000] right [17:10:45.0000] reproducible "randomness" [17:10:49.0000] i prefer to avoid state that has to be persisted, myself [17:12:57.0000] also a bunch of new complexity if two clients might race and generate from the same index [17:13:29.0000] Yup. [17:14:32.0000] (which itself can be really hard to write tests for; i hate writing tests for things like locking and atomicity) [17:14:42.0000] locking files is a solved problem :-) [17:15:21.0000] with a solution that's much more complex than open('/dev/urandom').read(16) :----------) [17:15:45.0000] i guess it comes down to what your environment provides, and how much you trust it [17:16:03.0000] (i don't include "make sure /dev/urandom is really random" in my tests, after all) [17:17:00.0000] ("really random" as in "not /dev/zero") [17:17:09.0000] (in case someone was going to nit about PRNGs) [17:17:30.0000] Any system that doesn't implement a decent /dev/urandom would be *super* insecure anyway. [17:18:19.0000] i tend to suspect security inexperience in people who still use /dev/random because it's "more secure", heh [17:18:59.0000] locking files is like lines of code including importing the relevant constants and unlocking... [17:19:05.0000] like three lines, even [17:19:36.0000] ok, now using a 32 character alphabet. [17:20:07.0000] using the first 5 bits of each of the first ten bytes of the hmac sha 512 of numbers in sequential order. [17:20:20.0000] bbiab [17:21:55.0000] maybe your environment has additional helpers for the busywork (blocking if the lockfile already exists, cleaning up if the pid contained in the lockfile doesn't exist, etc) [17:22:18.0000] It's perl, so that's plausible. [17:22:33.0000] also the need to atomically write the state file containing the last-used index (write new file, sync, rename), which is something all languages really should provide, but few do [17:24:06.0000] While you're locked, that works anyway, right? [17:27:07.0000] if the machine crashes, you don't want to reboot and come back up with a zero-byte file [17:27:24.0000] Ah, right. [17:27:32.0000] (restore from backup and you lose that day's index delta) [17:28:10.0000] ''.join('23456789abcdefghijkmnpqrstuvwxyz'[ord(x) >> 3] for x in hashlib.sha512(open('/dev/urandom').read(32)).digest()[0:10]) # one-liners are evil, even in python [20:59:02.0000] i ended up testing 30,058,310 codes with the new algorithm, no dupes. [21:00:29.0000] (by tab's maths, there would be a 50% chance of a dupe at about 33 million, if i understand it right) [22:25:18.0000] man, the tokeniser sure does have a lot of states [23:53:09.0000] TabAtkins: is unprefixing transitions *and* transforms both covered under the umbrella of this bug? https://code.google.com/p/chromium/issues/detail?id=154772 [00:12:57.0000] Hixie: sounds like a plan, will devote some time to it eventually. I need to do a write up with use cases, possibilities (e.g. generated vs. human readable), impact on existing/future specs, etc. [03:00:14.0000] TabAtkins: ping [03:07:12.0000] TabAtkins: unping....will catch you later [03:07:55.0000] The new css spec style sheet is so funny... [03:22:25.0000] looks like the support status markers on CSS specs haven't been updated to reflect the demise of Presto and Blink forking off of WebKit [03:41:39.0000] MikeSmith: I don't know what to do about bugzilla.validator.nu cookies. The urlbase and cookiepath settings look right to me. [03:52:22.0000] oh, hsivonen is alive [03:53:57.0000] is this where I'm supposed to say that rumors of my demise have been exaggerated? [03:58:29.0000] There were rumours? [04:32:33.0000] hsivonen, oh, better news than your death, congratulations :) [04:32:47.0000] Ms2ger: thanks [04:34:23.0000] what's the news? [04:35:01.0000] zcorpan: a baby (that is, I'm now back from paternity leave) [04:35:30.0000] hsivonen: ok, congrats! [04:35:36.0000] zcorpan: thanks [04:37:47.0000] congratulations [04:38:06.0000] smaug____: thanks [06:57:29.0000] wow. there's now a community group for MPEG-2 in-band captioning in