2009-10-30:
[2:04] <Aquaguy> hey[6:08] <kriskowal> Aquaguy hey[7:56] <simono> i'll take a shot at even more pythonic docs in NG. this should be easy with rhino[8:00] <evilstreak> does anyone know how much Rhino-specific stuff is used in env.js?[8:03] * simono peaks into env.js[8:05] <simono> i wouldn't want to port it :) it relies on the java stdlib in at least 20 places[8:06] <simono> evilstreak: threading, uri-stuff, file-stuff, and xml-parser from java used[8:07] <evilstreak> bleh[8:07] <evilstreak> I guess I'm stuck waiting for someone on the flusspferd team to make libxml2 work nicely[8:07] <simono> sorry for demotivating you[8:08] <simono> i would also like smth like env.js for commonjs[8:14] <evilstreak> interesting. mustache (http://github.com/janl/mustache.js) has package.json for commonjs support, but doesn't use exports.foo in the code[8:43] <ondras> soooo[8:43] <ondras> v8cgi is now compiled with MinGW on windows, bye bye msvc .)[9:51] <_ry> do windows people prefer to build with msvc?[9:51] <_ry> or mingw?[9:53] <ashb> _ry: 'windows devs' seems ot prefer MSVC. but everyone else prefers mingw cos its gcc and therefore behaves the same as everywhere else :)[9:54] <evilstreak> I like how you quote it, as if they're not proper developers ;)[9:56] <ashb> freudian slip[9:56] <ondras> actually, many software packages are easy to compile with msvc and hard to compile with mingw[9:56] <ondras> apache for instance[9:57] <ashb> ondras: on if they do #ifdef WIN#@ when they inface mean #ifdef __MSC_VER[9:57] <ashb> *WIN32[9:57] <ondras> and some libraries (dll) are shipped compiled with msvc which is not always compatible with mingw[9:57] <ondras> ashb: also, the project files come in handy[9:58] <ashb> i discovered that mingw can link direclty against .dlls the other day - it doens't need import libs[9:58] <ondras> hm, I don't know how[9:58] <ashb> which should mitigate the 'dll are compiled for msvc' problem i think[9:58] <ondras> and also there is some incosistency re. naming of exported symbols[9:58] <ondras> because msvc sometimes prefixes exported symbols with underscore, as opposed to mingw[9:58] <ondras> this is still some deep magic to me[9:59] <ashb> yeah me too :)[9:59] <ondras> ashb: do you know how to achieve the "link only to dll" feature?[9:59] <ashb> ondras: with gcc just -lfoo[9:59] <ashb> and it just worked[9:59] <ondras> ah[9:59] <ondras> will try someday[9:59] <ondras> thx :)[10:00] <ondras> I found out that msvc's .lib can be often safely renamed to .a and linked against[10:00] <ondras> (but not always :) )[10:03] <ashb> okay. wow. I swear that rubygems is causing me more pain than cpan ever has[10:04] <ashb> if we do decide on a single package managment app, please please please can it transparently self update?[10:05] <ashb> *and* make it work nicely with homedir trees[11:21] <ashb> WARNING: Installing to ~/.gem since /var/lib/gems/1.8 and /var/lib/gems/1.8/bin aren't both writable.[11:21] <ashb> thats nice - good sane default behaviour[11:24] <evilstreak> yeah, unless you forgot sudo[11:24] <evilstreak> and then you end up with cruft in ~/.gem[11:24] <evilstreak> instead of being able to just rerun the command with sudo[11:24] <ashb> hmm true[11:36] <MisterN> it probably should ask in this case?[11:36] <evilstreak> yeah, that would be better[11:38] <MisterN> and if you don't want it to ask, supply the option --local[11:39] <ashb> or if you have a particualr env var set[11:45] <evilstreak> what's up with the commonjs website? it's full of broken links. and why use jshq.org/commonjs/ instead of commonsjs.org?[11:45] <ashb> zumbrunn: ^^[11:45] <ashb> as for it being broken, well only dangoor has access to the site currently[11:46] <evilstreak> suggestion: put the site on github, then people can fork it and send pull requests for updates[11:46] <ashb> (zumbrunn has the domain/dns, so might be able to set it up on root rather than redirect if dangoor doesn't object)[11:47] <Dantman|sick> jshq is on github[11:48] <ashb> ttp://github.com/dangoor/jshq[11:48] <ashb> well pointed out[11:48] <Dantman|sick> Though I don't personally like the setup which revolves entirely around browser side js[11:48] <ashb> o_O[11:49] <ashb> it does what?[11:49] <Dantman|sick> Aye... each page view the js fetches a template from the server and wraps the content of the page in the template[11:49] <ashb> thats... special[11:50] <MisterN> ashb: wtf is wrong with your links? you always forget the h in front of ttp :P[11:50] <evilstreak> Dantman|sick: that's... stupid[11:50] <ashb> MisterN: bad copy paste[11:51] <evilstreak> MisterN: not true, sometimes he remembers the h but prefixes with a w too[11:51] <zumbrunn> maybe we should just make the wiki the main site[11:51] <MisterN> evilstreak: whttp://?[11:51] <Dantman|sick> evilstreak, don't talk to me... dangoor is the one who "want's to do stuff with it in bespin"[11:51] <zumbrunn> and redirect www.commonjs.org to wiki.commonjs.org[11:52] <evilstreak> Dantman|sick: not suggesting you are responsible, just responding to the fact you presented ^^[11:52] <Dantman|sick> IMHO a website you're trying to make a central point for a big project is not the place for experimentation like that[11:53] <MisterN> also websites should generally work in a rudimentary way even when JS is disabled[11:53] <Dantman|sick> ^_^ Nothing says "JavaScript is more than client side junk, it can do so much more on the server!" like plopping anyone interested in CommonJS into a site that breaks without client side js[11:54] <Dantman|sick> And waits for an extra http fetch before it displays anything to the user[11:55] <Dantman|sick> ((Oh and that's a /fix/... Originally it had a ugly flash in between when it was lacking stuff and when the template got put in the page and styled... that was fixed by making the js hide the content completely until the template was loaded and the page wrapped))[11:58] <evilstreak> so, long story short: the commonjs website is a mess and needs fixing[12:33] <afonso> speaking of which, is there a page or some instructions on "How can I help?" ?[12:48] <Dantman|sick> http://wiki.commonjs.org/wiki/Status[12:49] <afonso> thanks[12:51] <ondras> btw[12:52] <ondras> are the "assert" and "test" modules implementable in pure js?[12:52] <ondras> and if yes, are there any implementations? :)[12:54] <ashb> ondras: yes, flusspferd has an almost conforming one[12:54] <ashb> just need to tweak a few things[12:59] <ondras> very tool[12:59] <ondras> time to start sharing js code![12:59] <ondras> *cool[15:10] <ashb> does v8 provide stack traces on its error objects[15:10] <ashb> ?[15:26] <hdon> Sembiance: hey, i have followed all of your instructions in your HowToBuild doc, and even taken notes on my own experience to help others who might want to do this as well. so far your instructions have proven really good, but if you have the time i'd like to ask you to fill in some missing information in the docs: it appears that you have omitted (accidentally deleted?) the part that actually describes how to open/create a project to[15:26] <hdon> build pistonmonkey! i've never used eclipse, and i don't see anything in the repo that looks like an eclipse project, but what do i know?[15:27] <Wes--> Sembiance: Hey robert, if you have time to help hdon, I'd consider it a personal favour. :D[15:28] <hdon> Wes-: this has been my experience so far: http://codebad.com/piston-how-to i'm trying to keep a record of it in case anything is out of date in sembiance's instructions[15:28] <hdon> or in case other ubuntu users want a guide tailored more to ubuntu[15:38] <Wes--> hdon: excellent idea! I wish I had kept notes when I tried to get it up and running on Windows[15:39] <ashb> pistonmonkey is the spidermonkey debugger?[15:59] <Wes--> ashb: Yes - hdon is trying to get it up and running so we can graft it into gpsee[15:59] <Wes--> er, graft gpsee into it, you know what I mean[16:00] <hdon> ashb: it is *a* spidermonkey debugger[16:00] <ashb> using the debugger apis i assume?[16:00] <hdon> i assume as well[16:00] <Wes--> Yes[16:00] <hdon> but right now it's not using much of anything but my CPU[16:00] * hdon eyes the 0% build progress[16:01] <Wes--> he has created an embedding which implements a RESTful protocol that talks to eclipse's debugger plugin[16:01] <Wes--> java ftw![16:01] <Wes--> lol[16:01] <hdon> great, another Java heap space crash[16:01] <Wes--> hdon: what jvm are you running?[16:01] <hdon> HTTP for debugging is an abomination[16:01] <hdon> sun java6[16:01] <Wes--> hdon: I agree, but "if it works..."[16:03] <ashb> ah - i was thinking the v8 json api is quite cool[19:03] <ashb> has dangoor dissapered?[19:08] <dangoor> ashb: i'm here[19:08] <ashb> ah so you are[19:08] <dangoor> i just got back to the computer[19:08] <ashb> just havne'nt been every other time i've been looking for you :)[19:09] <dangoor> I try :)[19:09] <dangoor> heh[19:09] <ashb> tz issue most likely.[19:09] <dangoor> yeah, that is likely[19:09] <dangoor> and my schedule has had odd breaks in it lately[19:10] <ashb> so commojs.org - is there a reason it isn't on http://commonjs.org/ directly ?[19:10] <dangoor> not any more. i'm actually going to change that over the next couple of days[19:11] <dangoor> i had a plan that was grander than my time available (and my time available is less than I had been expected)[19:11] <ashb> the other thing is do you want a hand getting it up/completed? etc[19:14] <dangoor> sure. it's on github, but I'm going to move it to the commonjs account there[19:14] <ashb> kk[19:14] <dangoor> maybe i'll just do that right now[19:28] <zumbrunn> so, can I point a CNAME somewhere for www.commonjs.org?[19:28] <zumbrunn> otherwise, for the time being, it would probably better to point it to the wiki, no?[19:29] <dangoor> I'll put it up shortly. i'm just trying to figure out how to work with a second account at github[19:29] <dangoor> it's a bit of a pain, actually[19:29] <dangoor> maybe I[19:29] <dangoor> maybe I'll monkey with that second account stuff later[19:44] <dangoor> zumbrunn: can you CNAME commonjs.org/www.commonjs.org to jshq.org[19:44] <zumbrunn> that's what we had originally, isn't it?[19:45] <dangoor> we had a redirect[19:45] <dangoor> this will be different[19:45] <MisterN> vhost?[19:45] <dangoor> right[19:45] <MisterN> makes nicer URLs.[19:46] <zumbrunn> a redirect we have now[19:46] <zumbrunn> ok, I'll change it to cname jshq.org again[19:47] <dangoor> cool. and i'll get something up on that vhost in a minute[19:47] <ashb> dangoor++[19:47] <ashb> zumbrunn++[19:51] <zumbrunn> error id: "bad_httpd_conf" :-)[19:52] <dangoor> commonjs.org isn't pointing to the right place yet[19:52] * ashb wonders why pdoc uses net ssh[19:53] <zumbrunn> it is forwarding to www.commonjs.org[19:53] <ashb> and why i'm getting 'wrong number of arguments' from it[19:53] <zumbrunn> unless you have old dns info cached, of course ;-)[19:54] <dangoor> hmm... yeah, something does seem wrong there[19:56] <dangoor> that's quite odd[19:56] <zumbrunn> what?[19:57] <zumbrunn> something on my side?[19:57] <dangoor> well, I just clicked a few buttons in the control panel[19:57] <dangoor> no, it's definitely a problem at the hosting company...[19:58] <dangoor> ahh... I have a thought[19:58] <dangoor> just need to check something[19:58] <ashb> i try not to have thoughts[19:58] <ashb> they often end up with my doing something silly[19:59] <dangoor> bleah[19:59] <dangoor> yeah, i see the problem.[20:00] <dangoor> zumbrunn: maybe just change it to an A record for now: 208.113.198.134[20:02] <zumbrunn> ok, done[20:05] <dangoor> i was going to upload the site to GitHub under my account for the moment, but I think I'll just work on figuring out the SSH stuff for the commonjs account later today[20:10] <zumbrunn> well, dinner is on the table... so I'll be afk for a bit[20:10] <dangoor> zumbrunn: thanks for the quick switch[20:10] <ashb> whats the str concat operator in ruby?[20:42] <Dantman|sick> ashb, concat or append?[20:42] <ashb> either[20:43] <Dantman|sick> + works like in js... << will mutate the string[20:43] <ashb> ta[20:45] <Dantman|sick> ^_^ Course, one of these times you'll accidentally mutate a string you've been passing around and it'll have bad effects somewhere else in your program, and you'll spend hours trying to track down the bug and fix it[20:45] <Dantman|sick> Mutable strings are a /lovely/ language feature, aren't they?[20:45] <ashb> i dont know ruby veyr well at all yet :)[20:45] <ashb> i'm playing with pdoc[20:45] <ashb> &[20:45] <Dantman|sick> Here's a warning[20:46] <Dantman|sick> If you're going to work with division, be careful of Fixnums (integers)...[20:48] <Dantman|sick> 5/100 = 0 but 5.0/100 = .05[21:05] <kriszyp> ashb: trying out juice/flusspferd right now, looking good![21:06] <kriszyp> are there any file facilities?[21:24] <MisterN> kriszyp: yes.[21:24] <MisterN> kriszyp: we have fs-base[21:25] <kriszyp> where do I got to see whats there?[21:25] <kriszyp> a source file?[21:25] <MisterN> kriszyp: and we also have a non-commonjs I/O module named 'io'[21:26] <kriszyp> k[21:26] <MisterN> kriszyp: i think it's compliant with Filesystem/B/0 or something[21:26] <MisterN> Filesystem/A/0, but no permissions functions[21:27] <kriszyp> ok[21:27] <kriszyp> are there source files to look at it, or is the commonjs wiki the best reference?[21:27] <MisterN> kriszyp: we do have some online documentation[21:27] <MisterN> but not for fs-base[21:27] <MisterN> http://flusspferd.org/docs/js/index.html[21:28] <MisterN> and yes, there are source files to look at. have you installed flusspferd from source or did you get a binary?[21:28] <kriszyp> binary[21:29] <MisterN> then here are the sources: http://github.com/ruediger/flusspferd/tree/v0.8[21:29] <kriszyp> so if i am just creating a simple app = function(request){return {status,...body,...}};[21:29] <kriszyp> am I using juice at all?[21:29] <kriszyp> or just flusspferd?[21:30] <MisterN> kriszyp: that's juice.[21:30] <MisterN> kriszyp: but because the juicejs.org binaries bundle flusspferd, you can use everything from flusspferd[21:30] <kriszyp> cool, I am looking forward to seeing if I can get pintura/persevere running on it, looks pretty good so far[21:31] <MisterN> juice on persevere or persevere on juice?[21:31] <kriszyp> persevere on juice[21:32] <kriszyp> pintura is kind of the name I am given for the pure JSGI form of persevere[21:32] <kriszyp> that should run on JSGI servers[21:33] <kriszyp> anyway, this looks really good so far, great job[21:33] <kriszyp> although, is there anyway to control reloading? Does the entire app get reloaded on every request?[21:34] <MisterN> dunno, i'm not deeply involved in juice itself[21:34] <kriszyp> is that ashb?[21:34] <MisterN> ashb and evilstreak, mostly[21:34] <kriszyp> cool, thanks[21:34] <MisterN> kriszyp: but ashb has gone partying or something :D[21:34] <MisterN> at least he said <ashb> and now: party yime[21:34] <MisterN> :D[21:34] <kriszyp> eh, np, I have some work to get done anyway[21:37] <MisterN> kriszyp: i'm not sure if juice 0.1 is JIT-enabled, but future versions will be, and that's probably not a bad thing either[22:07] <hdon> can any commonjs implementors confirm if their ByteString and ByteArray instance method get() returns a string? i could swear when i read it it returned a number, because at the time it made me very angry that nothing would return a single character string[22:11] <kriskowal> hdon that has been in flux[22:11] <hdon> kriskowal: i see. what are your feelings about it?[22:11] <kriskowal> i agree with the last version of the spec i wrote :P[22:12] <kriskowal> x.get(y) is supposed to be like x[y][22:12] <kriskowal> for byte arrays, that means Number; for byte strings, that means ByteString of length 1[22:13] <kriskowal> codeAt always returns a number[22:13] <hdon> is there no accessor to return a Javascript String of length 1?[22:13] <MisterN> kriskowal: "for byte strings, that means ByteString of length 1" <- i have recently had a funny effect due to this[22:14] <kriskowal> MisterN are you sharing the backing allocation?[22:14] <MisterN> no.[22:14] <kriskowal> i wouldn't presume[22:14] <hdon> you could be, if bytestrings are meant to be immutable[22:14] <MisterN> kriskowal: there was some external code which iterated through an object to examine its contents; recursively.[22:15] <MisterN> kriskowal: but whenever it encountered a ByteString, it hit infinite recursion.[22:15] <MisterN> guess why.[22:15] <hdon> lol[22:15] <hdon> brilliant[22:15] <kriskowal> ah, yeah[22:15] <kriskowal> interesting[22:15] <hdon> does the spec say whether or not numeric indexes should show up on property enumeration?[22:16] <kriskowal> that is an unfortunate effect; any ideas?[22:16] <kriskowal> the reason that's not a problem with Strings is presumably because typeof string check[22:17] <MisterN> kriskowal: yes, i think it doesn't iterate the contents of a string[22:17] <MisterN> kriskowal: also the string contents are not enumerable[22:17] <kriskowal> the numeric indices should show up on for x in byte-array, but not string[22:18] <kriskowal> i imagine that's something you can set up in flusspferd, but that'll be more problematic in rhino[22:19] <kriskowal> MisterN what do you think we ought to do about the problem?[22:20] <MisterN> kriskowal: well, we chose simply to not pass a ByteString to that external function.[22:20] <kriskowal> hdon the latest version of Binary/B has a preamble about what methods share common behavior between other types[22:20] <hdon> what is even the usefulness of a single byte bytestring anyhow?[22:21] <kriskowal> what's the use of "abc"[1] == "b"?[22:21] <hdon> you just pointed out the usefulness[22:21] <hdon> but by returning a one character bytestring instance[22:21] <hdon> you've just put an extra layer of packaging between me and toast[22:21] <hdon> (RIP)[22:22] <kriskowal> where toast == the character code?[22:22] <hdon> character code, one character string, or the comparison test you just demonstrated[22:22] <hdon> anything you'd want to do with the [Number] accessor on a string[22:23] <hdon> but on a one character bytestring there's really only one thing you can do[22:23] <hdon> and that is get a one-character string[22:23] <kriskowal> bear in mind, ideally we will be able to make these byte string's more first-class in the future[22:24] <kriskowal> typeof ByteString() == "bytestring"[22:24] <kriskowal> in the distant future, there should be very little distinction between String and ByteString apart form the content type's width[22:25] <hdon> i'll believe that when i see it[22:25] <kriskowal> and there are other methods on ByteString, like concat[22:25] <kriskowal> in the interim you would prefer to create an api that is not compatible with the ideal future?[22:27] <kriskowal> there's ByteString.prototype.codeAt(i):Number[22:27] <kriskowal> hdon or is your point that you would prefer the spec to reflect the ideal future?[22:29] <hdon> my only point is that there are about a million aliases for "return a bytestring of length 1 that reflects the value of the byte at position n" and even if this is supposed to represent some idealized future, that hasn't been advertised, and there isn't even a single "return me a single character Javascript String reflecting the byte at position n"[22:29] <kriskowal> in the ideal future there would be byte string literals? b"a" == "a".toByteString("ascii")[22:29] <hdon> well, i don't know that much about javascript's future direction[22:30] <kriskowal> nor do i[22:30] <kriskowal> oh, so you want something that will implicitly decode the byte as it's indexed. i see.[22:30] <kriskowal> something like byteString.get(0).decodeToString("ascii")[22:31] <kriskowal> except shorter[22:31] <hdon> where "decode" is of course identity conversion for the case that (new ByteString(String.fromCharCode(n))).charAt(0) == n[22:32] <hdon> s/identity conversion/identity operation[22:32] <kriskowal> you can't move between ByteString and String without a charset[22:32] <kriskowal> it's ambiguous[22:33] <hdon> javascript strings can contain malformed utf-16 data. the string type is *really* just a binary data store. really, when we're talking about the binary module and Javascript's String type, decoding notionally occurs once you start comparing a string to other string literals, not before and not after[22:35] <kriskowal> i don't follow[22:35] <hdon> like, identity(someOperation(x)) == someOperation(identity(x))[22:36] <hdon> by insisting that decoding takes place at a specific point, you're implying that those two are not equal, but of course they are[22:36] <hdon> now of course because it's convenient for us, we *prefer* to place decoding as the earlier operation -- while we're still close to the ByteString object, which we control, and not the more distant String object[22:36] <hdon> but semantically it's not prudent to polarize the discussion[22:37] <kriskowal> still not following[22:37] <hdon> well, we'll talk about it later some time probably. i have to get ready for a thing[22:37] <kriskowal> k. i'll look forward to your return[23:41] <ashb> my view is parity is a nice aim, but the only reason "abc"[1] returns a string of "b" is because JS has no char type[23:41] <ashb> (to my mind)[23:43] <kriskowal> ashb: no, there's definitely a paradigm difference; in python and ruby you don't have char types either. the upshot is that you can compare characters like "abc"[1] == "b" without having to use different types and quotes[23:43] <ashb> hrmm?[23:44] <kriskowal> and, as far as i'm concerned, Number is the char type[23:44] <kriskowal> using unary strings instead of chars simplifies the language[23:45] <ashb> i'm not following. i blame the rum[23:45] <kriskowal> oh, yeah. someone mentioned a partay[23:46] <ashb> i'll ask again tomorrow[23:46] <kriskowal> to commemorate the holiday, i've opted to *not* wear my wizard hat[23:47] <kriskowal> in any case, ashb, do you have an opinion on the matter?[23:47] <ashb> i'm not quire sure what the matter exactly is, but yes: i have an opinion on most things[23:47] <kriskowal> do you think "a".toByteString("ascii")[0] should return 97?[23:48] <ashb> yes i do[23:48] <kriskowal> or a ByteString([97])[23:48] <ashb> if yo uwant S([97]) use .substring()[23:49] <kriskowal> supposing that in the distant future, javascript were to support a syntax like b"a" for byte string literals?[23:49] <hannesw> kriskowal: returning a ByteString will kill performance[23:49] <ashb> if you are actually looping over on a [i] basis, i'd always want the byte values (i.e. Number)[23:49] <kriskowal> should b"a"[0] return 97?[23:49] <ashb> hannesw: in all likelyhood, thats like 20 years away from happening[23:49] <hannesw> i'm with ashb on this[23:50] <hannesw> what?[23:50] <ashb> just a snipe at the rate of ES spec progress[23:50] <ashb> dont mind me :)[23:50] <kriskowal> in python 3 there are byte string literals. they look like b"a"[23:50] <ashb> oh sorry, wong adresse[23:51] <kriskowal> in python 2, "a" is a byte string literal and u"a" is a unicode string literal[23:51] <kriskowal> so, javascript is ahead of the game since its string literals are unicode, but it doesn't finish the picture with byte string literals[23:52] <kriskowal> i expect that in the long term, this will be remedied[23:52] <ashb> b"a"[0] is slightly different, since that would be another native type[23:53] <ashb> which has more power than an Object[23:53] <kriskowal> emphasis on slightly. its analogous to the difference between String("a") and new String("a")[23:54] <kriskowal> so, it's your impression that the Binary/B proposal should be more like a boxed type than an unboxed type?[23:54] <kriskowal> e.g., new ByteString([97])[23:54] <ashb> but anyway, i think [] on a byte string should return a byte (at a high level ideas plane)[23:55] <ashb> where as new ByteString([97]) is not a byte, its a sequence of bytes that happens to contain just one byte[23:55] <kriskowal> i don't think that's a point of contention: the question is how to represent a byte in javascript[23:55] <kriskowal> and "a" is not a char[23:56] <ashb> ah k. Number for me, all the way[23:56] <kriskowal> but it's effectively a char as far as javascript is concerned[23:56] <ashb> other wise its byte = bs[0]; fn(byte) { byte.getCharCode(0) }[23:56] <kriskowal> and having .codeAt as the interface for getting a Number is not acceptable?[23:56] <ashb> etc[23:57] <kriskowal> or toByteArray() and then you get numbers[23:57] <ashb> a byte is *only* a code, so i dont see it as useful unless oyu want to accept strings or byte*s[23:57] <ashb> so ByteString[0] returns a BS of 1, but ByteArray[] returns numbers?[23:58] <kriskowal> that's the notion[23:58] <ashb> tbh - i'm not evne realyl sure why we have 2 blob classes[23:58] <ashb> does it really make much different to any implementaiton?[23:58] <kriskowal> it makes a difference for api's built thereon, i think.[23:59] <ashb> such as?[23:59] <kriskowal> the .read():String .readInto(:Array) distinction
Logs by date :