00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:02:40  * timoxleyjoined
00:04:15  * thlorenzquit (Ping timeout: 260 seconds)
00:04:36  * jergasonquit (Quit: jergason)
00:07:18  * timoxleyquit (Ping timeout: 264 seconds)
00:08:20  * Maciek416joined
00:13:06  * DTrejojoined
00:13:36  * DTrejoquit (Read error: Connection reset by peer)
00:14:44  * thlorenzjoined
00:17:33  * DTrejojoined
00:18:03  * DTrejoquit (Read error: Connection reset by peer)
00:21:55  * DTrejojoined
00:22:27  * DTrejoquit (Read error: Connection reset by peer)
00:22:46  * fallsemojoined
00:25:49  * DTrejojoined
00:26:05  * fallsemoquit (Client Quit)
00:26:18  * DTrejoquit (Read error: Connection reset by peer)
00:31:25  * dguttmanquit (Quit: dguttman)
00:33:11  * DTrejojoined
00:33:46  * DTrejoquit (Read error: Connection reset by peer)
00:34:07  * DTrejojoined
00:35:38  * tilgoviquit (Remote host closed the connection)
00:39:11  * jxsonquit (Remote host closed the connection)
00:40:14  * DTrejoquit (Remote host closed the connection)
00:40:51  * DTrejojoined
00:43:37  * toddselfjoined
00:44:37  * toddselfchanged nick to toddself__
00:44:53  * toddself__changed nick to toddself
00:45:19  * DTrejoquit (Ping timeout: 260 seconds)
00:48:39  * st_lukequit (Remote host closed the connection)
00:52:25  * jxsonjoined
00:52:57  * jxsonquit (Remote host closed the connection)
00:55:02  * thlorenzquit (Remote host closed the connection)
00:55:28  * thlorenzjoined
01:00:28  * thlorenzquit (Ping timeout: 264 seconds)
01:03:16  * timoxleyjoined
01:04:19  * Guest10131quit (Quit: ZNC - http://znc.in)
01:07:39  * timoxleyquit (Ping timeout: 248 seconds)
01:07:55  * Maciek416quit (Read error: Connection reset by peer)
01:08:22  * Maciek416joined
01:09:55  * fallsemojoined
01:10:17  * ryanseddonquit (Ping timeout: 246 seconds)
01:10:43  * Domenic_quit (Ping timeout: 256 seconds)
01:10:59  * Birdbonesquit (Ping timeout: 260 seconds)
01:12:37  * toddself_quit (Remote host closed the connection)
01:12:58  * DTrejojoined
01:13:11  * toddself_joined
01:15:04  * ELLIOTTCABLEquit (Ping timeout: 256 seconds)
01:17:16  * toddself_quit (Ping timeout: 246 seconds)
01:30:13  * ELLIOTTCABLEjoined
01:31:40  * calvinfojoined
01:37:14  * DTrejoquit (Remote host closed the connection)
01:39:06  * toddselfquit (Remote host closed the connection)
01:41:39  * ryanseddonjoined
01:42:11  * jergasonjoined
01:42:40  * dguttmanjoined
01:46:54  * jergasonquit (Ping timeout: 264 seconds)
01:47:05  * dguttmanquit (Ping timeout: 245 seconds)
01:52:47  * toddself_joined
01:54:19  * rxgxquit (Quit: timeout)
01:57:05  * toddself_quit (Ping timeout: 245 seconds)
01:59:52  * timoxleyjoined
02:33:03  * fallsemoquit (Quit: Leaving.)
02:45:53  * evboguejoined
02:46:59  * toddself_joined
02:51:28  * toddself_quit (Ping timeout: 264 seconds)
02:54:25  * missinglinkquit (Ping timeout: 256 seconds)
03:01:47  * ins0mniaquit (Ping timeout: 248 seconds)
03:09:57  * evboguechanged nick to venportman
03:10:11  * Domenic_joined
03:10:11  * Birdbonesjoined
03:25:02  * Birdbonesquit (Ping timeout: 246 seconds)
03:25:58  * Domenic_quit (Ping timeout: 256 seconds)
03:36:59  * owen1quit (Ping timeout: 248 seconds)
03:38:27  * calvinfoquit (Quit: Leaving.)
03:41:13  * toddself_joined
03:45:55  * toddself_quit (Ping timeout: 260 seconds)
03:49:45  * owen1joined
03:51:17  * st_lukejoined
03:53:03  * timoxleyquit (Remote host closed the connection)
03:56:30  * owen1quit (Ping timeout: 264 seconds)
04:01:40  * st_lukequit (Remote host closed the connection)
04:03:23  * st_lukejoined
04:08:13  * elizsbotjoined
04:11:49  * elizsbotquit (Remote host closed the connection)
04:15:46  * jcrugzzjoined
04:18:23  <brianloveswords>substack, rvagg, mbalho : did you see http://nodeweekly.com/archive/4.html
04:18:37  <rvagg>brianloveswords: aye, top billing, nice
04:19:43  <brianloveswords>So awesome given pretty much no promotion! Excited that people resonate with the teaching material.
04:20:04  <brianloveswords>My buddy atul is 90% done with a security workshop.
04:20:24  <substack>empowering didactic methods!
04:20:31  <brianloveswords>substack++!
04:20:34  <substack>whoa more tracks yay!
04:20:51  <substack>we can leave these things lying around on bus stops etc
04:20:54  <substack>like those religious things
04:20:56  <substack>except useful
04:21:15  <rvagg>brianloveswords: I have someone that's interested in helping on a security workshop
04:21:24  <rvagg>brianloveswords: where can I point him?
04:21:35  <brianloveswords>I was thinking about the best way to collaboratively develop workshoppers: I'm slowly working on curriculum for that binary/bitmasknig stuff but I 'd like help!
04:21:47  <brianloveswords>rvagg: oh, have him email me! [email protected]
04:22:13  <brianloveswords>I'm both a Mozilla Security Champion and a Node Security project member, so I can figure out a good connection.
04:22:42  <brianloveswords>I wonder if nodeschool/discussion is best for that?
04:22:56  <brianloveswords>(for the previous question)
04:23:00  <rvagg>brianloveswords: timoxley did one on functional javascript yesterday, I think he delivered it to a meetup, I'm not sure of its status tho: https://github.com/timoxley/functional-javascript-workshop/
04:25:16  <brianloveswords>rvagg: oh rad! I'll have to check this out!
04:25:42  <brianloveswords>(especially as a lover of functional programming :)
04:26:02  <rvagg>he whipped that together in a day which is pretty impressive
04:35:21  * toddself_joined
04:39:35  * toddself_quit (Ping timeout: 245 seconds)
05:06:56  * Maciek416quit (Remote host closed the connection)
05:21:55  * Domenic_joined
05:29:38  * toddself_joined
05:32:28  * Birdbonesjoined
05:33:15  * shamaquit (Remote host closed the connection)
05:34:13  * toddself_quit (Ping timeout: 256 seconds)
06:20:36  * timoxleyjoined
06:24:24  * owen1joined
06:27:06  * mikolalysenkoquit (Ping timeout: 264 seconds)
06:46:52  <feross>hey dudes, i met some of you at nodeconf.eu
06:46:59  <feross>i've been lurking for a few days :)
06:47:32  <feross>i was wondering what csrf module you'd recommend?
06:49:15  <gildean>feross: depends, if you're using express or connect, they have a csrf middleware inbuilt
06:49:30  <feross>neat, didn't know that
06:49:55  * djcoinjoined
06:50:05  <feross>gildean: thanks, this'll work nicely :)
07:04:49  * djcoinquit (Quit: WeeChat 0.4.1)
07:05:05  * djcoinjoined
07:06:15  * ferossquit (Quit: feross)
07:07:43  * ferossjoined
07:11:18  <gildean>np
07:11:51  <jesusabdullah>what is a csrf
07:17:09  <gildean>jesusabdullah: cross site request forgery
07:17:39  <gildean>basically when csrf is talked about in this context it means csrf mitigation
07:17:54  * toddself_joined
07:18:06  <gildean>usually through a token that's sent with all the requests that makes sure the request comes from the correct site
07:22:27  * toddself_quit (Ping timeout: 256 seconds)
07:25:49  * nk109quit (Quit: Computer has gone to sleep.)
07:27:07  <jesusabdullah>ahh
07:29:11  * st_lukequit (Remote host closed the connection)
07:33:15  * mikolalysenkojoined
07:37:18  * peutetrejoined
07:37:47  * mikolalysenkoquit (Ping timeout: 240 seconds)
07:50:59  * dominictarrjoined
08:03:38  * rxgxjoined
08:14:20  * nk109joined
08:18:27  * ferossquit (Quit: feross)
08:22:19  * jcrugzzquit (Ping timeout: 248 seconds)
08:39:22  * No9joined
08:56:38  * nexxyquit (Ping timeout: 264 seconds)
08:58:12  * nexxyjoined
09:06:13  * toddself_joined
09:10:25  * toddself_quit (Ping timeout: 245 seconds)
09:16:15  * farnsworthquit (Ping timeout: 245 seconds)
09:17:55  * cubertquit (Ping timeout: 245 seconds)
09:19:26  * farnsworthjoined
09:23:10  * cubertjoined
09:42:35  * rxgxquit (Quit: timeout)
10:02:18  * spionjoined
10:23:37  * spionquit (Ping timeout: 246 seconds)
10:32:08  * frankblizzardjoined
10:36:22  * spionjoined
10:45:20  * peutetrequit (Quit: peutetre)
10:45:22  * missinglinkjoined
10:54:32  * toddself_joined
10:58:53  * toddself_quit (Ping timeout: 240 seconds)
11:33:40  <djcoin>How does substack manage to have that much follower on such an early and exotic project as dotc ? :) amazing
11:34:05  <djcoin>s/follower/stargazers
11:34:31  <djcoin>(Not that exotic as it solves some key problem I guess)
11:40:21  * ins0mniajoined
11:53:53  * peutetrejoined
11:59:26  * frankblizzardquit (Remote host closed the connection)
12:01:21  * calvinfojoined
12:05:09  * peutetrequit (Quit: peutetre)
12:06:11  * peutetrejoined
12:09:36  * calvinfoquit (Quit: Leaving.)
12:12:15  * missinglinkquit (Ping timeout: 260 seconds)
12:27:08  * kevino80joined
12:34:51  * thlorenzjoined
12:36:43  * AvianFlujoined
12:37:55  * fotoveritequit (Quit: fotoverite)
12:42:57  * toddself_joined
12:44:13  * frankblizzardjoined
12:45:43  * fallsemojoined
12:47:32  * toddself_quit (Ping timeout: 256 seconds)
13:09:55  * kevino80quit (Remote host closed the connection)
13:12:06  * kevino80joined
13:22:49  * thlorenzquit (Remote host closed the connection)
13:23:47  * Maciek416joined
13:25:55  * fallsemoquit (Quit: Leaving.)
13:26:24  * kevino80quit (Remote host closed the connection)
13:35:08  * missinglinkjoined
13:35:19  * toddself_joined
13:35:29  * toddself_changed nick to toddself
13:38:26  * fallsemojoined
13:43:38  * fallsemoquit (Quit: Leaving.)
13:47:39  * LOUDBOTquit (Ping timeout: 245 seconds)
13:48:51  * tmcwjoined
13:49:31  * simcop2387quit (Excess Flood)
13:51:04  * nk109quit (Quit: Computer has gone to sleep.)
13:51:27  * simcop2387joined
13:52:53  * LOUDBOTjoined
13:55:32  * calvinfojoined
14:02:19  * thlorenzjoined
14:03:22  * thlorenzquit (Read error: Connection reset by peer)
14:03:29  * thlorenzjoined
14:04:18  * AvianFluquit (Remote host closed the connection)
14:04:56  * calvinfoquit (Quit: Leaving.)
14:08:58  * cubertquit (Ping timeout: 240 seconds)
14:08:58  * farnsworthquit (Ping timeout: 240 seconds)
14:16:12  * cubertjoined
14:16:52  * farnsworthjoined
14:21:43  * farnsworthquit (Ping timeout: 260 seconds)
14:22:59  * farnsworthjoined
14:26:54  * calvinfojoined
14:31:11  * toddselfquit (Remote host closed the connection)
14:34:27  * fallsemojoined
14:37:20  * calvinfoquit (Quit: Leaving.)
14:38:10  * thlorenzquit (Remote host closed the connection)
14:38:27  * thlorenzjoined
14:40:18  * cubertquit (Ping timeout: 256 seconds)
14:42:26  * cubertjoined
14:42:56  * mmckeggquit (Ping timeout: 245 seconds)
14:45:33  * mmckeggjoined
14:52:48  * shamajoined
14:53:27  * cubertquit (Ping timeout: 260 seconds)
14:56:11  * cubertjoined
14:57:13  * AvianFlujoined
15:02:07  * jergasonjoined
15:02:11  * fotoveritejoined
15:03:28  * mikolalysenkojoined
15:05:23  * yorickjoined
15:17:46  * nk109joined
15:47:09  * frankblizzardquit (Remote host closed the connection)
15:47:16  <yorick>how do you node.js mad scientists avoid having config.json everywhere?
15:53:19  * mikolalysenkoquit (Ping timeout: 246 seconds)
16:00:19  * mikolalysenkojoined
16:01:42  <jesusabdullah>they dooon't
16:04:14  * jcrugzzjoined
16:07:34  * missinglinkquit (Ping timeout: 256 seconds)
16:23:45  * thlorenzquit (Remote host closed the connection)
16:34:20  * timoxleyquit (Remote host closed the connection)
16:42:03  * ednapiranhajoined
16:43:03  * ins0mniaquit (Ping timeout: 240 seconds)
16:47:47  * mikolalysenkoquit (Ping timeout: 260 seconds)
16:51:06  * No9quit (Quit: Leaving)
16:53:40  * mikolalysenkojoined
16:54:47  * thlorenzjoined
16:59:34  * djcoinquit (Quit: WeeChat 0.4.1)
17:02:57  * thlorenzquit (Ping timeout: 252 seconds)
17:08:09  * rannmannquit (Disconnected by services)
17:08:09  * dsfadfjoined
17:12:08  * AvianFluquit (Remote host closed the connection)
17:12:25  * spionquit (Ping timeout: 246 seconds)
17:13:58  * AvianFlujoined
17:14:42  * dguttmanjoined
17:14:45  * thlorenzjoined
17:29:54  * nk109quit (Ping timeout: 252 seconds)
17:36:26  * dsfadfchanged nick to rannmann
17:36:26  * rannmannquit (Changing host)
17:36:26  * rannmannjoined
17:47:10  * jxsonjoined
17:55:17  * timoxleyjoined
17:55:56  <dominictarr>awesome! my merkle tree module can now build a tree from 1e7 objects in 1.5 seconds!
17:56:03  <dominictarr>20x perf boost!
18:00:03  * timoxleyquit (Ping timeout: 260 seconds)
18:01:35  * thlorenz_joined
18:02:03  * timoxley_joined
18:05:25  * jcrugzzquit (Ping timeout: 245 seconds)
18:05:39  * thlorenzquit (Ping timeout: 268 seconds)
18:07:58  * peutetrequit (Quit: peutetre)
18:14:48  * venportmanquit (Quit: leaving)
18:15:24  <chrisdickinson>awesome!
18:15:32  <chrisdickinson>dominictarr: how'd you get that speed boost?
18:15:50  <dominictarr>chrisdickinson: rewriting in OO style
18:16:20  <dominictarr>and also not creating arrays that i threw away
18:16:20  <chrisdickinson>ah, cool
18:16:23  * chrisdickinsonnods
18:16:33  <chrisdickinson>are you reusing the array with `arr.length = 0`?
18:16:44  * kevino80joined
18:16:55  * kevino80quit (Remote host closed the connection)
18:16:57  <dominictarr>chrisdickinson: hmm, I'll try that and see how it goes.
18:17:50  <chrisdickinson>(i only really do that to avoid creating new objects)
18:17:52  * ins0mniajoined
18:17:52  <dominictarr>hmm, no it would be too hard to fix that, I'm creating too many arrays
18:18:17  <mikolalysenko>I usually use this to manage array creation stuff: https://github.com/mikolalysenko/typedarray-pool
18:18:29  <mikolalysenko>since initializing typedarrays is stupidly expensive
18:18:55  <dominictarr>was creating an two objects (one with variable keys), and an array
18:19:14  <dominictarr>perf was becoming non linear at about N=1e6
18:19:26  <dominictarr>which i figured was memory
18:20:03  <dominictarr>now I only create 1 fixed property Object (with new) and and array, (which is kept)
18:20:35  <dominictarr>and it is linear up to 1e7
18:21:21  <mikolalysenko>yeah, for large data sets effective memory management is probably the most important performance factor
18:21:52  <mikolalysenko>which is why I try to use typedarrays as much as possible, at least when it makes sense
18:22:14  <dominictarr>yes. If i need faster, I'll use "structs" inside Buffers
18:22:20  <mikolalysenko>the biggest advantage is that you can actually gaurantee something about how they are arranged in memory, so you can get things like fast scans for blocked IO operations
18:22:31  <mikolalysenko>yeah, though structs in buffers are not really usable in a browser :(
18:22:37  <dominictarr>but this is good enough for the target dataset size (npm) 100k objects
18:22:41  <mikolalysenko>kind of defeating much of the point for working in js...
18:22:53  <dominictarr>mikolalysenko: how come?
18:23:02  <mikolalysenko>dominictarr: you can emulate it fine, but it is super slow
18:23:31  <dominictarr>is it because you are reading different size byte objects from the same typed array?
18:23:33  <mikolalysenko>dominictarr: basically the only way to create a buffer-like object that supports the custom array index syntax in a browser is to overload an array
18:23:54  <mikolalysenko>if you could make a buffer without the [] operators, then it wouldn't be much of an issue
18:24:09  <dominictarr>yes - I was just gonna use pointer arithemetric
18:24:18  <mikolalysenko>but as it stands the only way to create browser based buffers is to make a Uint8Array then monkey patch it
18:24:23  <mikolalysenko>which is really inefficient
18:24:43  <dominictarr>[nextSiblingPointer (4), firstChildPointer (4), hash (20)]
18:25:17  <dominictarr>mikolalysenko: what about bops?
18:25:54  <mikolalysenko>bops are better, but there are more efficient ways to do it directly using typed arrays
18:25:54  * ins0mniaquit (Ping timeout: 264 seconds)
18:26:12  <mikolalysenko>for example, allocate two different typedarrays over the same buffer object
18:26:14  <mikolalysenko>and write to that
18:26:32  <dominictarr>right
18:27:01  <mikolalysenko>of course in node the fastest is to just use a buffer...
18:27:25  <mikolalysenko>and sometimes you have to use buffers because an api requires it
18:27:37  <mikolalysenko>but in general, I try to use typedarrays as they are more portable
18:27:59  <mikolalysenko>although on nodejs buffers have a lot of advantages, that you can't really ignore
18:28:25  <mikolalysenko>like being in a separate heap and having lightning fast construction and slicing...
18:28:32  <Raynos>substack: found a bug in tape's test line detection ( https://github.com/substack/tape/pull/48 )
18:28:51  <dominictarr>maybe you could make a thing that polyfiled over thnig
18:28:53  <dominictarr>this
18:28:55  <dominictarr>struct.js
18:29:05  <mikolalysenko>I've thought about it, but not really sure how you would do it
18:29:17  <mikolalysenko>basically buffers are a node-specific optimization
18:29:25  <mikolalysenko>you can polyfill them on the browser, but they are slower than typedarrays
18:29:37  * ferossjoined
18:29:42  <mikolalysenko>typedarrays if used properly give comparable perf on both node and the browser, but can be more tedious for binary operations
18:30:01  <mikolalysenko>the best solution I think is es6 structs, but god only knows when that will happen
18:30:08  <dominictarr>what about a compile time polyfil, using new Function(...)
18:30:30  <mikolalysenko>not sure quite how it would work
18:30:45  <Domenic_>es6 structs are not really as fast as typed arrays, they are mostly for memory savings it turns out
18:30:51  <dominictarr>in felixge's 2012 jsconf talk
18:30:55  * timoxley_quit (Remote host closed the connection)
18:31:01  <mikolalysenko>Domenic_: :(
18:31:16  <mikolalysenko>I was hoping that you could actually pack them into contiguous memory regions with pass-by-value semantics
18:31:18  <Domenic_>also they are slipping pretty hard, they're still going to try to get them into es6, but it's the least likely of all so-far-unspeced features
18:31:18  <dominictarr>he uses eval to parse mysql,
18:31:21  * rxgxjoined
18:31:48  <dominictarr>once he knows the columns that will be required, he generates code to parse it without iteration
18:31:55  <mikolalysenko>that makes me sad, since it is really the #1 feature I want/would see myself using regularly from es6
18:32:16  <mikolalysenko>the rest of the stuff is nice, but just saves you some keystrokes which isn't as big a deal imo
18:32:35  <Domenic_>mikolalysenko: JITs already do that for monomorphic objects
18:32:55  <mikolalysenko>Domenic_: well, not quite since you still have to tag the objects. and working with arrays of them is difficult
18:33:05  <mikolalysenko>it isn't about single objects but how you work with structures of them
18:33:14  <Domenic_>mikolalysenko: no, implementers say they're already doing it. http://esdiscuss.org/topic/non-extensibility-of-typed-arrays#content-24
18:33:34  <mikolalysenko>well, that's nice. but lots of algorithms require programmer control of memory layout
18:33:46  <mikolalysenko>like packed memory arrays/cache oblivious b-trees/etc.
18:34:15  <mikolalysenko>I don't see how to implement that in js with the current object semantics
18:34:18  <Domenic_>my understanding is that you will not be able to get any more such control with typed objects as you would with normal objects
18:34:41  <Domenic_>normal objects already give you that control once you're in the JIT hot path, effectively, is what I understand.
18:34:45  <mikolalysenko>I was hoping that if you make a typed array of structs you could gaurantee they all get packed in the same order
18:34:52  <mikolalysenko>whereas right now you just get arrays of pointers in most vms
18:34:55  <mikolalysenko>not packed arrays
18:35:06  <mikolalysenko>which basically defeats any possibility of optimizing wrt to cache
18:35:16  <mikolalysenko>and so you are forced to use buffers/typed arrays
18:35:51  <mikolalysenko>also having pass-by-value semantics would be great for things like small vector types
18:36:11  <mikolalysenko>where that style is vastly more efficient than pushing everything onto the heap
18:36:21  <Domenic_>i am not sure you understand the extent to which jits optimize
18:36:30  <Domenic_>they are already pass-by-value for certain patterns
18:36:51  <mikolalysenko>ok, but you still can't get a packed array of structures
18:36:56  <mikolalysenko>which is really the most important case
18:36:59  <Domenic_>we keep going in circles
18:37:05  <Domenic_>they pack structures quite often
18:37:12  <mikolalysenko>scanning an array of pointers is O(n), scanning an array of packed structs is O(n/b)
18:37:12  <Domenic_>why do you make these claims that you "can't" do something?
18:37:36  <mikolalysenko>so, I guess what I don't understand is how you do get a packed array of structs
18:37:52  <mikolalysenko>that is what I really want out of the es6 binary data types
18:38:20  <mikolalysenko>algorithmically an array of pointers is vastly less efficient than a packed array
18:38:50  * fuzjoined
18:39:26  <Domenic_>i must be misunderstanding what you mean
18:39:30  <mikolalysenko>hmm
18:39:33  <mikolalysenko>ok, here is an example
18:39:44  <Domenic_>because jits are free to represent things as packed binary data in one place
18:39:49  <Domenic_>they do that all the time
18:39:52  <mikolalysenko>suppose you got a bunch of particles, and you want to make a simulator that ticks them all each update
18:40:12  <mikolalysenko>particles get added and removed continuously, and each tick basically requires marching over them
18:40:31  <mikolalysenko>in a language with arrays of structs (like C), the way you would do this is you'd allocate a large array of particle structs
18:40:41  <mikolalysenko>and then each tick walk over the array and update each particle
18:41:04  <mikolalysenko>the time complexity of this operation is O(n/b), where n = number of particles and b = memory bandwidth of cpu
18:41:18  * defunctzombie_zzchanged nick to defunctzombie
18:41:23  <Domenic_>right
18:41:36  <mikolalysenko>to add a particle, you push to the end of the array and to remove you do: array[i] = array[array.length-1]; array.pop()
18:41:39  <Domenic_>JS JITs represent large arrays of monomorphic types as blocks of data already
18:41:49  <mikolalysenko>but what happens when you do a move like that?
18:42:02  <mikolalysenko>does it actually move the memory in the array or does it just swap a pointer?
18:42:03  * rook2pawnquit (Ping timeout: 260 seconds)
18:42:14  <Domenic_>array[i] = array[array.length - 1]?
18:42:19  <mikolalysenko>yeah
18:42:21  <mikolalysenko>and then a pop
18:42:26  <mikolalysenko>that removes the ith particle
18:42:27  <Domenic_>that just sets all things in the array to the last element?
18:42:48  <mikolalysenko>no, function removeParticle(i) { particles[i] = particles[particles.length-1]; particles.pop() }
18:42:58  * rook2pawnjoined
18:43:02  <mikolalysenko>swaps the last particle with particle i, and decrements array size
18:43:10  <Domenic_>i see
18:43:21  <Domenic_>yes of course they have to swap the memory
18:43:26  <mikolalysenko>but do they?
18:43:36  <Domenic_>if they've already committeed to large-block strategy for that array, they will use large-block operations like copying
18:43:37  <mikolalysenko>or do they just swap a pointer in an array
18:43:55  <Domenic_>if the array's contents are dynamic enough to use pointers, they will swap the pointers.
18:43:57  <mikolalysenko>I think it is actually that latter situation, at least based on my experiments
18:44:05  <Domenic_>hmm ok.
18:44:14  <mikolalysenko>and this is vastly less efficient
18:44:18  <Domenic_>well i am just going off what i hear the vm people say, not actual data, so i trust you more
18:44:26  <mikolalysenko>since scanning an array of pointers is O(n), not O(n/b)
18:44:42  <mikolalysenko>also similar things pop up when you are implementing structures like binary trees
18:44:52  <mikolalysenko>it is often more efficient to store a tree as a packed array
18:45:02  <mikolalysenko>in say bfs/van emde boas order packed into an array
18:45:07  <Domenic_>i would be curious if you could post a succinct scenario like this to es-discuss asking if typed objects will help you optimize
18:45:23  * DTrejojoined
18:45:29  <Domenic_>because that thread was full of implementers saying there is no way typed objects will help perf because they have already optimized normal objects/arrays
18:45:48  <mikolalysenko>ok, do you have a link?
18:45:59  <Domenic_>[email protected]
18:47:53  * mbrevoortjoined
18:48:21  <dominictarr>Domenic_: mikolalysenko I think js jit only packs primitives.
18:48:47  <dominictarr>(primitives with the same type)
18:49:07  <dominictarr>including int vs float
18:49:31  <dominictarr>but not objects with the same constructor.
18:50:28  <mikolalysenko>dominictarr: yeah, I believe that
18:51:00  <mikolalysenko>dominictarr: I've run into that issue on some benchmarks. it is a bit tricky to get it to work reliably though, since you have to be careful how you initialize your array
18:51:18  <mikolalysenko>eg. initializing to 0 will get you a packed array of ints, but initializing to 0.5 will get you a packed array of doubles
18:51:36  <mikolalysenko>and on a benchmark I had, I was initializing an array that was supposed to be doubles to 0, and running into problems...
18:51:39  <dominictarr>yeah, probably differs by browser too
18:51:55  <mikolalysenko>yeah, this was on chrome. one of the devs mraleph helped me out optimizing it
18:52:43  <mikolalysenko>though you may still be better off using typedarrays if you can prove that all your data fits within a smaller type
18:52:53  <mikolalysenko>so you get better usage of cache/memory bandwidth
18:53:13  * DTrejoquit (Remote host closed the connection)
18:53:40  * jcrugzzjoined
18:53:50  * DTrejojoined
18:58:27  * DTrejoquit (Ping timeout: 260 seconds)
18:58:51  <mikolalysenko>yeah, the lack of proper value types for arrays/etc. is probably the feature that I miss most coming from c++
18:59:40  <mikolalysenko>since it basically makes certain algorithms effectively unimplementable (excluding dirty things like manually packing everything into a typedarray)
19:02:16  * farnsworthquit (Ping timeout: 264 seconds)
19:03:28  * cubertquit (Ping timeout: 264 seconds)
19:08:19  * rxgxquit (Quit: timeout)
19:21:13  <chrisdickinson>mikolalysenko: belatedly, bops should be at least "ok" at indexing different sizes -- it'll create one dataview per distinct arraybuffer and throw it into a Map where available
19:21:49  <mikolalysenko>chrisdickinson: hmm... won't that cause arraybuffers to leak?
19:22:01  <chrisdickinson>ah, sorry, no, a WeakMap
19:22:28  <chrisdickinson>so, no leakage
19:22:41  <chrisdickinson>https://github.com/chrisdickinson/bops/blob/master/typedarray/mapped.js
19:24:47  <mikolalysenko>chrisdickinson: aren't weakmaps es6 only?
19:25:00  <mikolalysenko>I didn't know they were available yet
19:25:07  <chrisdickinson>they're starting to become available
19:25:15  * cubertjoined
19:26:23  <mikolalysenko>have you verified that it doesn't leak?
19:26:28  * farnsworthjoined
19:26:42  <chrisdickinson>mikolalysenko: how would it?
19:26:43  <mikolalysenko>like, does the weak map correctly handle the case where the value of the weak map references the key?
19:26:52  * tmcwquit (Remote host closed the connection)
19:26:53  <mikolalysenko>(as happens with a buffer view for example)
19:27:41  <chrisdickinson>as i understand it, a weakmap doesn't "ref" the object at all, so it should be conceptually the same as if you had just created the dataview with the reference to the buffer
19:27:45  * toddselfjoined
19:28:02  <mikolalysenko>hmm, but I think weakmaps only don't hold refs to keys, not values
19:28:19  <mikolalysenko>so it would still be a circular ref since the value would reference the the key
19:28:43  <chrisdickinson>right, but nothing outside of that cycle is referencing the key
19:28:52  <mikolalysenko>no, the buffer view would reference the key
19:29:08  <mikolalysenko>basically the map is type: buffer -> buffer view
19:29:10  <chrisdickinson>yes, the DataView would reference the buffer
19:29:25  <chrisdickinson>ArrayBuffer -> DataView, yes
19:29:35  <chrisdickinson>and DataView references ArrayBuffer
19:29:58  <mikolalysenko>yeah, so if the values in the weak map are held, then you would have a circular reference
19:29:58  <chrisdickinson>but the WeakMap doesn't reference / hold ArrayBuffer
19:30:11  <mikolalysenko>but it does reference the dataview which references the arraybuffer?
19:30:14  <chrisdickinson>right, that's the point of a WeakMap -- keys are not held
19:30:32  <mikolalysenko>yeah, but what about the values?
19:30:46  <chrisdickinson>so the object graph is (still) DataView -> ArrayBuffer, with no circular reference
19:31:43  * tmcwjoined
19:31:52  <chrisdickinson>it roughly goes (retaining tree / root) -> … -> TypedArray -> ArrayBuffer <- DataView
19:32:12  <chrisdickinson>so once TypedArray is no longer reachable in a retaining tree, that cycle should be gc'd
19:32:18  <chrisdickinson>(as i understand it.)
19:32:46  <mikolalysenko>I see
19:32:57  <mikolalysenko>hang on, let me try an experiment
19:33:01  * jxsonquit (Remote host closed the connection)
19:36:02  * jxsonjoined
19:36:42  * jxsonquit (Remote host closed the connection)
19:36:45  <Domenic_>weakmaps hold both keys and values weakly
19:41:12  * jxsonjoined
19:41:39  * timoxleyjoined
19:42:04  * tilgovijoined
19:42:11  <mikolalysenko>hmm
19:42:17  <mikolalysenko>leaks on firefox in my experiment
19:42:53  <mikolalysenko>but maybe I made a mistake...
19:43:14  <mikolalysenko>actually scratch that, it works
19:43:26  <mikolalysenko>but it just allocates a ton of heap before it starts collecting stuff
19:44:36  <mikolalysenko>no wait, it is leaking
19:44:41  <mikolalysenko>I looked at the wrong column in top
19:45:25  <mikolalysenko>actually, damn. I'm not sure
19:45:48  * timoxleyquit (Ping timeout: 240 seconds)
19:46:11  <mikolalysenko>https://gist.github.com/mikolalysenko/6642826
19:46:48  <mikolalysenko>I guess what is confusing me is how a weakmap can have weakrefs to both keys and values?
19:47:03  <mikolalysenko>since if the weakmap is the only thing that references a value, then, it seems that it would always get gc'd right away
19:51:23  * klusiasjoined
19:53:39  <jesusabdullah>browser memory use is *hard*
19:54:09  <mikolalysenko>yeah. would be nice if chrome did weakmaps so I could use the heap snapshot
19:54:27  <mikolalysenko>ff seems to support them, but the best I could manage for memory usage was top, which is a pretty imprecise tool
19:56:34  <jesusabdullah>yessch
19:56:58  <mikolalysenko>actually they do work on chrome if you do enableExperimental javascript
19:57:05  <mikolalysenko>though that gist I posted definitely leaks
19:57:12  <mikolalysenko>kills the tab in seconds
19:57:34  <mikolalysenko>ff keeps chugging though and allocating more memory, at least I think it does according to top
19:57:38  * thlorenz_quit (Remote host closed the connection)
19:58:11  * thlorenzjoined
19:59:04  * Maciek416_joined
20:00:21  * peutetrejoined
20:00:27  * Maciek416_quit (Remote host closed the connection)
20:03:46  * DTrejojoined
20:03:47  <Domenic_>mikolalysenko: weak maps are not explainable in terms of weak refs
20:03:53  <Domenic_>and weak refs are not explainable in terms of weak maps
20:03:59  <Domenic_>they are pretty separate concepts
20:05:31  * Maciek416_joined
20:06:26  <mikolalysenko>Domenic_: do you have a good reference on weakmaps? it seems like it could be pretty useful, but I would like to understand it better
20:09:40  * rxgxjoined
20:16:45  <Domenic_>mikolalysenko: I believe the papers linked in the first paragraph at http://wiki.ecmascript.org/doku.php?id=harmony:weak_maps are the right references.
20:17:29  <Domenic_>in particular it looks like from the abstract of the second link that it is dealing with exactly the problem you're wondering about
20:20:41  <Domenic_>jden: awesome idea
20:22:37  * tmcwquit (Remote host closed the connection)
20:23:09  * tmcwjoined
20:27:35  * tmcwquit (Ping timeout: 260 seconds)
20:29:46  * tmcwjoined
20:31:59  * mbrevoortquit (Remote host closed the connection)
20:36:41  <mikolalysenko>I see. so the idea is to make something that works like this: http://www.jucs.org/jucs_14_21/eliminating_cycles_in_weak/jucs_14_21_3481_3497_barros.pdf
20:39:33  * rxgxquit (Ping timeout: 248 seconds)
20:39:54  <mikolalysenko>so really a weak hash map is a lot more complicated than just a hash map with weak references
20:40:07  <thlorenz>substack: let me know if this makes sense to you: https://github.com/substack/brfs/issues/13
20:47:10  * jxsonquit (Remote host closed the connection)
20:53:09  <thlorenz>defunctzombie: what's NIH?
20:53:28  <defunctzombie>thlorenz: not in house
20:53:34  <defunctzombie>or not invented here
20:53:36  <thlorenz>btw I searched for this and now afterwards I find these modules (one from substack which is exactly like mine)
20:54:08  <thlorenz>defunctzombie: so would you just unpublish? it's been out there only an hour or so?
20:54:21  <defunctzombie>programmers love to redo done things over and over cause making simple things is much easier than actually making a product :)
20:54:27  <defunctzombie>thlorenz: yes
20:54:33  <defunctzombie>thlorenz: especially if it has no users
20:54:48  <thlorenz>ok, will do, will keep github repo up for reference though
20:55:04  <defunctzombie>when you publish things.. the goal is for people to use them and thus you should maintain them or tell your users otherwise
20:56:02  <thlorenz>defunctzombie: ok, gone
20:56:41  <mbalho>https://github.com/mafintosh/node-modules
20:57:14  <thlorenz>mbalho: still wouldn't find it: http://node-modules.com/search?q=load+css
20:57:24  <thlorenz>substack's doesn't show up
20:57:48  <Raynos>thlorenz: i avoid unpublish
20:57:51  <Raynos>deprecate is nicer
20:57:59  <thlorenz>Raynos: no one is using it yet
20:58:05  <Raynos>i was :(
20:58:05  <thlorenz>unpublished already
20:58:19  <thlorenz>seriously? switch to substack's insert-css
20:58:24  <thlorenz>it's the exact same thing
20:58:28  <Raynos>aw man
20:58:29  <Raynos>load-css
20:58:32  <thlorenz>or cssify2 even better
20:58:32  <Raynos>i have a module that does that
20:58:34  <Raynos>as well :D
21:00:21  <defunctzombie>insert-css should die
21:00:33  <defunctzombie>I don't want no shit messing with my css setup
21:00:43  <Raynos>mbalho: node-modules is amazing
21:02:07  * mikolalysenkoquit (Ping timeout: 260 seconds)
21:02:13  <thlorenz>defunctzombie: it's useful if you wanna publish something as a widget that I can just require and it works without me having to include css via script tags
21:02:35  <defunctzombie>no
21:02:46  <defunctzombie>if you publish a widget like that I will never use it
21:02:51  <defunctzombie>most likely I will fork it and fix it
21:02:52  <defunctzombie>;)
21:03:05  <defunctzombie>your widget css should be something I can include myself if I want it
21:03:23  <defunctzombie>you should under no circumstances inject your css into my entire document
21:03:24  <thlorenz>defunctzombie: I'll make it an option -- friends :)
21:03:45  <thlorenz>anyways I think this is pretty clear: https://github.com/thlorenz/load-css#deprecated
21:04:00  <thlorenz>people can still use it for reference
21:04:22  <Domenic_>+1 defunctzombie
21:04:31  * peutetrequit (Ping timeout: 240 seconds)
21:04:42  <Domenic_>widget css should never be bundled, i never want to use the default css, hate that stuff
21:05:19  <thlorenz>Domenic_: so you'd put in the readme - "for this to even function properly you'll have to include this css in your script tags"?
21:05:32  <Domenic_>"function properly"? what does that mean?
21:05:38  <Domenic_>is it the same as "look pretty"?
21:05:45  * peutetrejoined
21:05:56  <Domenic_>for me "function properly" means "output semantic HTML on my page that reacts to JavaScript appropriately"
21:05:59  <thlorenz>well if the icons are not there, it's hard to understand what it does
21:06:13  <thlorenz>also where would the user get the css from?
21:06:18  <Domenic_>is it? it has class `.delete`, that's pretty easy to understand
21:06:27  <thlorenz>in my case it is part of the module that my widget depends on
21:06:27  <jesusabdullah>Yo, anyone here with a vested interest in browserify-cdn? https://github.com/jesusabdullah/browserify-cdn/pull/39
21:06:27  <Domenic_>example pages with css are fine
21:06:31  <Domenic_>but it's not part of the widget
21:06:42  <jesusabdullah>Working on a new feature for exposing metadata on packages and builds
21:06:42  <dominictarr>Domenic_: there is sometime structural css unfortunately
21:06:52  <Domenic_>dominictarr: no, there never is
21:06:57  <Domenic_>there is no such thing as "structural CSS"
21:07:03  <Domenic_>all css is by definition styling
21:07:18  <Domenic_>whether your close button goes in the upper right or not is entirely stylistic
21:07:22  <dominictarr>but the definition is broken
21:07:34  <thlorenz>Domenic_: I was even gonna inline the images as base64
21:07:37  <Domenic_>whether when something is open it is visible, and when it is closed it is hidden, is a stylistic choice
21:07:55  <thlorenz>otherwise it gets really hard to set your environment up for the thing to work
21:07:57  <Domenic_>there is no such thing as structural css
21:07:58  <thlorenz>and look ok
21:08:24  <Domenic_>download the example stylesheet, put it into your normal css compilation environment (which HAD BETTER NOT BE A BUNCH OF SASS @include's!!!), and go from there
21:08:31  <dominictarr>Domenic_: I wish that was true, but css just isn't a clean abstraction
21:08:35  <Domenic_>but do *not* under any circumstances bundle CSS with your HTML/JS
21:08:42  <Domenic_>dominictarr: disagree, CSS is an extremely good abstraction.
21:09:14  <thlorenz>Domenic_: would providing a css file separately with images base64 encoded in it be a good compromise?
21:09:35  <dominictarr>abstractions are things like "circles" and "lines" mathematical ideas that would still exist even if we didn't
21:09:38  <Domenic_>thlorenz: sure, sounds fine. a bit unweildy to work with, but as long as it's just example CSS and not auto-loaded CSS, seems very nice.
21:09:52  <Domenic_>dominictarr: that's a pretty narrow definition; that's not what we mean in programming
21:09:54  <thlorenz>cool - will do that then
21:10:01  <Domenic_>thlorenz: :)
21:10:22  <dominictarr>the term "abstraction" is misused
21:10:29  <dominictarr>in programming
21:10:33  <Domenic_>i prefer to use terms according to how everyone else uses them
21:10:36  <Domenic_>otherwise they are useless
21:10:44  <Domenic_>and only have any meaning for dictionary-writers
21:11:00  <Domenic_>(or in this case, i imagine i still fit the dictionary definition whereas you fit another, even more specific definition)
21:11:12  <dominictarr>well, the way people use "abstraction" is close to the right meaning
21:11:22  <thlorenz>wow - so I published a module that already existed twice and now the existance of even those gets invalidated -- what a day :P
21:11:30  <Domenic_>^_^
21:11:34  <dominictarr>in the cases that are good abstractions, at least
21:13:02  <jesusabdullah>awww nobody wants to help with poor browserify-cdn ;_;
21:14:53  <Raynos>Domenic_: why not bundle CSS ?
21:15:08  <thlorenz>jesusabdullah: browserify-cdn is awesome -- I'm just too busy publishing modules that exist and no one needs ;)
21:15:11  <Domenic_>Raynos: see above?
21:15:12  <Raynos>I was thinking of writing a FP style dsl to describe the structure of my widgets & components
21:15:27  <dominictarr>if an abstraction doesn't represent the "true nature" of whatever it's abstracting, then it's not gonna help you. you'll be better off leaving it unabstracted.
21:16:30  <Raynos>Domenic_: When I'm writing widgets & components the default structural css is fine to bundle with it because I want to use it 95% of the time
21:16:43  <Domenic_>Raynos: there is no such thing as structural CSS
21:16:47  <Raynos>a datepicker isn't a table with some buttons under it
21:16:53  <Raynos>it has a structural shape
21:17:13  <Domenic_>a datepicker is a table with some buttons under it
21:17:15  <dominictarr>Domenic_: ideally, you could get all the functional style with basic html.
21:17:19  <Domenic_>sometimes you present that in certain ways
21:17:26  * Maciek416_quit (Remote host closed the connection)
21:17:56  <dominictarr>maybe sometimes you should use table layout, etc, if it gives the most natural display
21:17:59  * tilgoviquit (Quit: No Ping reply in 180 seconds.)
21:18:01  <Raynos>so one annoyance with css & js as seperate things is having to keep two dependency trees in sync in parallel
21:18:17  <Raynos>the css dependencies for my modular components & the js dependencies for my modular components
21:18:23  * tilgovijoined
21:18:29  <Domenic_>i am surprised people find this difficult, so i must be missing something
21:18:35  <defunctzombie>Raynos: just ship it with your module
21:18:40  <defunctzombie>and let the end user use it if they want
21:18:43  <dominictarr>but unfortunately, the distinction between css and html is hazy…
21:18:43  <Domenic_>all my app's styles go in a folder
21:18:44  <dominictarr>also, sometimes you have to add html, just for it to be styleable in a particular way.
21:18:46  <defunctzombie>there is nothing difficult here
21:18:51  <Domenic_>maybe some of those originally came from npm, but they were copied over
21:19:03  <Domenic_>then you compile everything into a big css bundle from this app folder and boom
21:19:05  <Raynos>Domenic_: I want to distribute styles
21:19:08  <thlorenz>Domenic_: I think the important part I was missing is that the html should be structured to be usable w/out css
21:19:09  <Raynos>and not copy paste them into folders
21:19:17  <Domenic_>Raynos: that's cool distributing example css is fine
21:19:19  <thlorenz>i.e. if an icon is not there it shouldn't be just empty
21:19:20  <Domenic_>but it's just example css
21:19:31  <Raynos>i dont build monolithic web apps
21:19:33  <Domenic_>thlorenz: definitely, it should have text
21:19:40  <Raynos>with monolothic styles folder
21:19:55  <Domenic_>another way of saying monolithic for styles is "cohesive"
21:19:58  <thlorenz>yeah, well the module I depend on doesn't so I may make a PR to fix that
21:22:25  <Raynos>i want cohesive
21:22:29  <Raynos>I just want to share & distribute it
21:25:09  * ferossquit (Quit: feross)
21:27:47  <thlorenz>Raynos: I think that is the reason TJ started component
21:28:01  <Raynos>that and the whole search problem
21:28:10  <Raynos>component has a nice searchable wiki page of all components
21:28:14  <thlorenz>not that I'm a fan, but the idea thereis that css and js belong together
21:28:26  <Raynos>its easier to find browser interactive widgets on component then on npm
21:28:50  <thlorenz>we need to fix that - if the day had more hours I'd be further along with valuepack ;)
21:32:38  * jxsonjoined
21:37:05  * AvianFluquit (Ping timeout: 245 seconds)
21:40:14  <niftylettuce>substack: seems bouncy broke on 10.6.x+ at least i think, can't handle large multipart requests
21:41:16  * toddselfquit (Remote host closed the connection)
21:45:07  * ferossjoined
21:45:11  * ferossquit (Client Quit)
21:47:30  * ferossjoined
21:50:10  * ferossquit (Client Quit)
21:52:58  * ferossjoined
22:07:48  * fuzquit (Quit: Leaving)
22:12:33  * Maciek416quit (Remote host closed the connection)
22:12:39  * fuzjoined
22:13:10  * tmcwquit (Remote host closed the connection)
22:27:21  * thlorenzquit (Remote host closed the connection)
22:27:56  * peutetrequit (Read error: Connection reset by peer)
22:28:02  * peutetre_joined
22:33:54  * peutetre_quit (Ping timeout: 268 seconds)
22:41:30  * fuzquit (Ping timeout: 264 seconds)
22:41:45  <grncdr_>jesusabdullah: sorry re: browserify-cdn been out of contact with the world for the most part
22:42:34  <grncdr_>also, Oakland folks, is Anthony Chabot park a legit location?
22:42:37  * toddselfjoined
22:43:01  * dominictarrquit (Quit: dominictarr)
22:43:58  <grncdr_>as in, I'm going to park my RV there for a while probably?
22:46:39  <feross>what's the best module to sanitize user-supplied HTML to remove <script>, etc. and just keep tags that I whitelist like <p> etc.?
22:46:45  * peutetrejoined
22:47:13  * peutetrequit (Client Quit)
22:48:53  <grncdr_>feross: did you try this https://npmjs.org/package/html-parser ?
22:50:59  <jesusabdullah>grncdr_: it's okay!
22:51:06  * toddselfquit (Ping timeout: 252 seconds)
22:51:16  <jesusabdullah>grncdr_: just a lot of stuff to do and I've been busy myself
22:54:13  <feross>grncdr_: nice! didn't find this when i searched for "sanitize" because it's not one of the package keywords
22:55:22  <Raynos>Domenic_: we use a grid system in our javascript templates and we have a `row()` function. I could imagine that the grid css could be completely replaced with js without it being a bad thing
22:55:43  <feross>grncdr_: i wish the `sanitize` function they provide used a whitelist approach
22:55:44  <Raynos>Although I guess have a standalone component using its own fixed grid system might be inflexible
22:59:18  <grncdr_>feross: I agree, but it's simple enough to `return !whitelist(name)`
23:00:32  * DTrejoquit (Remote host closed the connection)
23:02:59  * tilgoviquit (Remote host closed the connection)
23:05:15  <feross>grncdr_: ooh, neat! you can pass a function. that's perfect
23:07:48  * yorickquit (Remote host closed the connection)
23:09:56  * thlorenzjoined
23:13:09  <Domenic_>feross: the caja-derived sanitizers are made by people who care very much about this stuff, but probably out of date since they are synced from google code :(
23:14:30  * thlorenzquit (Ping timeout: 264 seconds)
23:14:52  <feross>Domenic_: saw that one. if they use a whitelist approach, then it's not so important to be up to date since you're not playing whack-a-mole with new html tags and attributes
23:15:14  <Domenic_>feross: true, but i'd check the commit history on google code to be safe
23:15:24  <pkrumins>defunctzombie: i'll setup the dns records for you
23:15:30  <pkrumins>defunctzombie: so testling.localhost?
23:15:32  <defunctzombie>pkrumins: :D
23:15:38  * ednapiranhaquit (Remote host closed the connection)
23:15:39  <Domenic_>hmm https://npmjs.org/package/sanitize-caja was updated 8 days ago
23:15:54  <defunctzombie>pkrumins: I think substack mentioned that would not work on the client browser boxes
23:16:13  <defunctzombie>pkrumins: the goal is to be able to hit the backend server with two different hostnames (from the browser)
23:16:17  <defunctzombie>to replicate CORS requests
23:18:04  <feross>Domenic_: right now I'm going with grncdr_'s suggestion of using html-parser
23:18:10  <feross>seems to do what i need
23:20:24  <defunctzombie>anyone got any good OSX tools for video editing/audio splicing in/out?
23:20:31  <defunctzombie>imovie is just not powerful enough
23:20:45  <defunctzombie>and I would prefer to avoid 300 USD for final cut pro haha
23:21:06  <pkrumins>defunctzombie: you can do git.testling.com and ci.testling.com
23:21:15  <pkrumins>defunctzombie: they both point to the same computer
23:21:26  <defunctzombie>pkrumins: is it always one computer that runs the servers?
23:21:49  <pkrumins>no
23:22:05  <pkrumins>there are 5 windows servers for different browsers
23:22:13  <pkrumins>and 1 linux server that runs ci.t and git.t
23:22:44  <defunctzombie>but the "server" test scripts I write for testling are run by a single box?
23:22:55  <pkrumins>yes they're run on that linux server
23:23:57  <defunctzombie>and if you guys add another server?
23:24:24  <pkrumins>well then things will change
23:26:04  <defunctzombie>:(
23:26:42  * fallsemoquit (Quit: Leaving.)
23:36:12  <defunctzombie>pkrumins: what hostname is the client file served under?
23:36:20  <defunctzombie>git.testling.com or ci.testling.com
23:37:08  * toddselfjoined
23:41:43  * toddselfquit (Ping timeout: 260 seconds)
23:52:18  <defunctzombie>pkrumins: who are you guys using for hosting?
23:55:51  <pkrumins>we're using rackspace
23:56:16  <pkrumins>defunctzombie: i need to check the hostname, i cant recall which it was
23:56:39  <defunctzombie>pkrumins: probably way cheaper if you use digitalocean :)
23:57:02  <defunctzombie>pkrumins: http://ci.testling.com/shtylman/xrequest
23:57:08  <defunctzombie>pkrumins: so I am trying to get that working
23:57:14  <defunctzombie>https://github.com/shtylman/xrequest/tree/master/test
23:57:18  <defunctzombie>and the sample tests are here
23:57:25  <defunctzombie>this attempts to test some cors stuff
23:57:36  <defunctzombie>but maybe I could be smarter about how I detect if running in testling vs localhost
23:57:44  <defunctzombie>so any pointers would be appreciated