00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:01:35  * ins0mniaquit (Remote host closed the connection)
00:06:32  * dstokesquit (Quit: dstokes)
00:14:20  * DTrejoquit (Remote host closed the connection)
00:14:52  * DTrejojoined
00:19:02  * DTrejoquit (Ping timeout: 240 seconds)
00:19:13  * DTrejojoined
00:19:14  * DTrejoquit (Remote host closed the connection)
00:19:50  * DTrejojoined
00:20:04  * DTrejoquit (Read error: Connection reset by peer)
00:20:32  * DTrejojoined
00:27:12  * tilgoviquit (Ping timeout: 248 seconds)
00:29:11  * rxgxjoined
00:37:27  * jcrugzz_changed nick to jcrugzz
00:38:11  * frankblizzardjoined
00:42:34  * frankblizzardquit (Ping timeout: 246 seconds)
00:44:20  * AvianFlu_joined
00:44:25  * ferossquit (Quit: feross)
00:44:27  * fallsemojoined
00:45:00  * fallsemoquit (Client Quit)
00:45:40  * AvianFlu_quit (Remote host closed the connection)
00:46:58  * ferossjoined
00:49:11  <mikolalysenko>has anyone tried to implement fully persistent/functional data structures in javascript?
00:49:16  <mikolalysenko>specifically binary search trees
00:54:13  * kenperkinsquit (Quit: Computer has gone to sleep.)
00:59:02  <kriskowal>mikolalysenko: do you mean like a hash trie?
00:59:52  <kriskowal>i mean, by "functional" do you mean pure and immutable?
01:00:19  <kriskowal>because if you don't mean that, i'm maintaining idiomatic javascript data structures, including a binary search tree, https://github.com/montagejs/collections
01:00:35  <kriskowal>they are mutable, but observable
01:02:11  <mikolalysenko>well, persistent would be better but I think I could live with functional
01:02:29  <mikolalysenko>basically persistent means you can maintain some history of updates to the tree
01:02:41  <mikolalysenko>http://en.wikipedia.org/wiki/Persistent_data_structure
01:02:57  <mikolalysenko>functional is a more extreme version of persistent, and it is usually less efficient/good
01:03:08  <mikolalysenko>but it can be easier to implement
01:03:45  <mikolalysenko>the dumbest version of functional is to just copy the whole data structure after each update, but you can often do a lot better
01:04:01  <mikolalysenko>for example in a bst only copying the nodes along the path to the root
01:04:37  <mikolalysenko>the key difference though is that in a bst, best known results for functional are O(log(n)) extra memory per update, while in a persistent tree you can do it in O(1)
01:05:07  <mikolalysenko>also iterating over a persistent tree is a lot faster since you can use parent pointers/threading
01:05:18  <mikolalysenko>but in a functional data structure those circular references are impossible to manage
01:05:58  <mikolalysenko>the catch though is that persistent trees are way more complex to code, even though they are a lot more awesome
01:06:31  <mikolalysenko>here is an example of a persistent treap written in C: http://cg.scs.carleton.ca/~dana/pbst/
01:12:25  * thlorenzjoined
01:17:14  * thlorenzquit (Ping timeout: 256 seconds)
01:28:13  * thlorenzjoined
01:28:26  * rxgxquit (Quit: timeout)
01:35:45  * sorensen_quit (Quit: sorensen_)
01:38:09  * kenperkinsjoined
01:38:41  * frankblizzardjoined
01:41:44  * dguttmanquit (Quit: dguttman)
01:42:56  * frankblizzardquit (Ping timeout: 248 seconds)
01:49:15  * ins0mniajoined
01:49:41  <ins0mnia>mbalho: ping
01:55:30  * tilgovijoined
01:57:14  * DTrejoquit (Remote host closed the connection)
01:57:50  * DTrejojoined
01:59:14  * ins0mniaquit (Remote host closed the connection)
02:00:07  * rxgxjoined
02:02:13  * DTrejoquit (Ping timeout: 248 seconds)
02:06:34  * thlorenz_joined
02:07:10  <mbalho>who dat
02:10:45  * thlorenz_quit (Ping timeout: 248 seconds)
02:10:56  * ralphtheninjaquit (Read error: Operation timed out)
02:10:57  * rxgxquit (Quit: rage quit)
02:11:06  * DTrejojoined
02:13:53  <jesusabdullah>mikolalysenko: object diffs?
02:17:47  <mikolalysenko>jesusabdullah: kind of
02:18:00  <mikolalysenko>jesusabdullah: basically it lets you keep track of versions of collections of objects with pointers
02:19:20  <jesusabdullah>hmm
02:19:22  <jesusabdullah>interesting
02:20:14  <mikolalysenko>it also does it with very little overhead
02:20:15  * shamaquit (Remote host closed the connection)
02:20:22  <mikolalysenko>only O(1) per modification
02:21:02  <mikolalysenko>if you have time, this video does a good job explaining the basics
02:21:29  * shamajoined
02:21:37  <mikolalysenko>skip 8:35
02:21:52  <jesusabdullah>hmm
02:22:20  <mikolalysenko>basically persistence is a form of time travel for data structures
02:22:40  <mikolalysenko>but you can use to implement efficient functional style data structures without making copies
02:23:03  <mikolalysenko>persistence gives the illusion of functional behavior
02:23:15  <mikolalysenko>but implements it using the dirty tricks that are available within an imperative computer
02:23:32  <mikolalysenko>in general, a functional implementation achieves the same result though, it is just a lot slower
02:30:08  <jesusabdullah>right
02:32:17  <tim_smart>All I saw in that explanation was 'time travel'. That gets me excited.
02:34:09  * dstokesjoined
02:35:22  * thlorenzquit (Remote host closed the connection)
02:36:30  * timoxleyjoined
02:39:11  * frankblizzardjoined
02:42:59  * Maciek416joined
02:43:40  * frankblizzardquit (Ping timeout: 246 seconds)
02:55:46  <jesusabdullah>you never heard about process.prevTick did you?
03:05:35  * jergasonquit (Quit: jergason)
03:11:21  * st_lukejoined
03:14:05  * st_lukequit (Remote host closed the connection)
03:28:39  <Raynos>isaacs: ping
03:29:09  <isaacs>pong
03:31:25  * st_lukejoined
03:31:26  * AvianFluquit (Read error: Connection reset by peer)
03:31:59  * AvianFlujoined
03:32:01  <Raynos>isaacs: would lunch of early coffee 12/12.30ish work as well ?
03:32:26  <isaacs>sure
03:32:29  <isaacs>any tiem after 12 i'm free
03:32:52  <Raynos>sweet, 12.30 would be cool
03:33:00  <Raynos>i dont mind whether you want to do lunch or coffee
03:33:58  <mikolalysenko>mbalho: are you going to be in sf/oakland on oct. 22?
03:35:30  <mbalho>mikolalysenko: from the 21st until the 24th, i'm free the 22nd and 23rd. in pdx until the 21st and then leaving for london on the 24th
03:35:44  <mbalho>mikolalysenko: dominictarr and some other node peeps are in town at that time also
03:35:50  <mbalho>mikolalysenko: so we should do a meetup or something
03:35:57  <mbalho>also https://github.com/jtleek/rpackages
03:36:02  <mbalho>we gotta get these peeps to switch to js + npm!
03:36:06  <mbalho>cc substack
03:36:37  * DTrejoquit (Remote host closed the connection)
03:37:12  * DTrejojoined
03:37:49  <mikolalysenko>mbalho: err.. just double checked my schedule and realized I am only free on the 21st
03:38:17  <mbalho>ah
03:38:23  <mikolalysenko>on the 22nd I am going to be flying back to madison, but could maybe do something in the morning
03:39:05  <mikolalysenko>the 2 days that I can do something are the 18th and the 21st
03:39:23  <mikolalysenko>though it might be too much if you have a flight from pdx in the same day
03:39:41  * frankblizzardjoined
03:39:41  <mbalho>mikolalysenko: i get back to SFO at 8:45pm that day
03:39:58  <mikolalysenko>yeah...
03:40:55  <mikolalysenko>well, if you feel up to it we could maybe grab a beer or something and catch up
03:41:20  * DTrejoquit (Ping timeout: 248 seconds)
03:42:00  <mikolalysenko>also my girlfriend will be with me and she has a limited tolerance for programming stuff
03:43:07  * Maciek416quit (Remote host closed the connection)
03:43:52  * frankblizzardquit (Ping timeout: 246 seconds)
03:44:08  <mikolalysenko>also one of my friends from the netherlands is going to be there around the same time
03:44:25  <mikolalysenko>he also dabbles a bit in javascript, though he mostly works on the inkscape project in his spare time
03:48:33  <mbalho>mikolalysenko: are you staying in SF or Oak?
03:48:53  <mbalho>mikolalysenko: cause i could probably grab a drink on my way through SF after i land at the airport
03:49:28  <mikolalysenko>mbalho: not sure yet. probably get a place through airbnb in sf
03:49:31  * st_lukequit (Remote host closed the connection)
03:49:34  <Wraithan>mbalho: you are in pdx?
03:49:38  <mikolalysenko>I'll look for something near the bart line though
03:49:45  <mbalho>Wraithan: not yet but i will be from the 16th - 21st
03:49:48  <Wraithan>oh ok
03:50:06  * st_lukejoined
03:50:31  <mikolalysenko>or I can also be in that area around 9pm or so
03:50:32  <Wraithan>mbalho: we should put together a hackday or 5 during that time :)
03:50:48  <mbalho>Wraithan: muahaha yes. i'm there for realtimeconf, there might already be something like that goin on
03:50:57  * defunctzombie_zzchanged nick to defunctzombie
03:51:03  <Wraithan>mbalho: oh yeah, rtc, not going to that
03:51:24  <Wraithan>I am a free agent right now, so I am spending lots of time hacking
03:51:40  <mbalho>nice
03:52:03  <mbalho>i havent seen tylergillies in forever also
03:52:10  <Wraithan>yeah, that dude
03:52:24  <Wraithan>he doesn't really chat on IRC much anymore because of some issues
03:52:30  <Wraithan>at least not in public channels
03:52:53  <mbalho>haha what issues?
03:53:00  <Wraithan><3 him though, and he doesn't live far from me
03:53:18  <Wraithan>mbalho: his co-workers are assholes and get all uptight aboutshit he says on the internet
03:53:45  <Wraithan>he has been snitched on for saying/doing troll-y thing
03:53:48  <Wraithan>things
03:53:58  <mbalho>pshhh he wouldnt hurt a fly
03:54:03  <Wraithan>exactly
03:54:14  <mbalho>wheres he working these days?
03:54:36  * st_lukequit (Ping timeout: 245 seconds)
03:54:37  <Wraithan>http://getlittlebird.com/
03:54:40  <Wraithan>one of the founders
03:55:05  <mbalho>oh yea cool, hes been working on that for a while then
03:55:17  <Wraithan>yea
03:55:57  <Wraithan>oh, right, he isn't a 'founder' was just the first programmer they had on staff.
03:56:02  <mbalho>lol
03:56:41  <Wraithan>marshel kirkpatrick is listed as the sole founder
03:56:58  * defunctzombiechanged nick to defunctzombie_zz
03:57:24  <Wraithan>anyway, if there are hackdays/nights, let me know I am totally down
03:57:27  <mbalho>cool
03:57:31  <Wraithan>I'm mostly doing hardware stuff these days
03:58:03  <Wraithan>In the process of building a system on top of dotc
03:58:19  <Wraithan>to make hobbyist hardware not terrible
03:59:10  <mbalho>whoa cool
03:59:55  <Wraithan>I don'thave a background in hardware at all, but I am learning and I pretty much hate the current standard
04:00:05  * egradmanquit (Remote host closed the connection)
04:00:22  <Wraithan>of 'here is a blog post, eat some delicious copypasta code and shit it into your own project!'
04:00:41  * egradmanjoined
04:05:02  * egradmanquit (Ping timeout: 240 seconds)
04:07:42  * DTrejojoined
04:14:58  * dstokesquit (Quit: dstokes)
04:16:00  * DTrejoquit (Ping timeout: 248 seconds)
04:16:09  * dstokesjoined
04:22:23  * kenperkinsquit (Quit: Computer has gone to sleep.)
04:24:07  * dstokesquit (Quit: dstokes)
04:24:27  * shamaquit (Remote host closed the connection)
04:25:00  * shamajoined
04:27:22  * shamaquit (Read error: Connection reset by peer)
04:27:24  * jergasonjoined
04:28:25  * timoxleyquit (Remote host closed the connection)
04:31:14  * AvianFluquit (Read error: Connection reset by peer)
04:31:50  * AvianFlujoined
04:38:12  * dguttmanjoined
04:39:02  * dguttmanquit (Client Quit)
04:39:15  * jxson_joined
04:40:09  * frankblizzardjoined
04:42:00  * jxsonquit (Ping timeout: 240 seconds)
04:43:46  * jxson_quit (Ping timeout: 245 seconds)
04:44:36  * frankblizzardquit (Ping timeout: 245 seconds)
04:45:12  * AvianFluquit (Remote host closed the connection)
04:45:56  * AvianFlujoined
04:49:20  * jxsonjoined
04:50:55  * kenperkinsjoined
04:51:44  * st_lukejoined
04:52:20  * kenperkinsquit (Client Quit)
04:55:28  * mikolalysenkoquit (Ping timeout: 240 seconds)
05:12:19  * jxsonquit (Remote host closed the connection)
05:12:47  * jxsonjoined
05:13:31  * jxsonquit (Read error: Connection reset by peer)
05:13:45  * jxsonjoined
05:14:56  * st_lukequit (Remote host closed the connection)
05:15:58  * timoxleyjoined
05:27:37  * egradmanjoined
05:40:40  * frankblizzardjoined
05:44:23  * egradmanquit (Remote host closed the connection)
05:44:59  * egradmanjoined
05:45:42  * frankblizzardquit (Ping timeout: 264 seconds)
05:46:48  * jxsonquit (Remote host closed the connection)
05:49:11  * egradmanquit (Ping timeout: 246 seconds)
05:52:31  * mikolalysenkojoined
05:56:14  * calvinfojoined
05:57:42  * calvinfoquit (Client Quit)
05:57:43  * mikolalysenkoquit (Ping timeout: 268 seconds)
06:00:32  * AvianFlu_joined
06:01:19  * mikolalysenkojoined
06:08:46  * AvianFlu_quit (Ping timeout: 246 seconds)
06:09:13  * wolfeidauquit (Remote host closed the connection)
06:09:50  * frankblizzardjoined
06:09:54  * frankblizzardquit (Remote host closed the connection)
06:11:34  * egradmanjoined
06:42:14  * mikolalysenkoquit (Ping timeout: 240 seconds)
06:43:19  * wolfeidaujoined
06:45:44  * wolfeidauquit (Remote host closed the connection)
06:50:42  * hughskquit (Quit: Leaving.)
06:52:10  * calvinfojoined
06:56:36  * timoxleyquit (Remote host closed the connection)
06:57:09  * timoxleyjoined
07:01:46  * timoxleyquit (Ping timeout: 256 seconds)
07:05:04  * kriskowalquit (Quit: kriskowal)
07:10:22  * frankblizzardjoined
07:12:34  * mmalecki_joined
07:13:03  * djcoinjoined
07:13:16  * pkrumins_joined
07:13:23  * pkrumins_quit (Changing host)
07:13:23  * pkrumins_joined
07:15:52  * jergason_joined
07:16:25  * sindresorhus_joined
07:16:50  * rpflojoined
07:17:04  * jergasonquit (Ping timeout: 256 seconds)
07:17:04  * jergason_changed nick to jergason
07:17:38  * frankblizzardquit (Ping timeout: 256 seconds)
07:17:50  * mmaleckiquit (*.net *.split)
07:17:50  * sindresorhusquit (*.net *.split)
07:17:51  * sveisveiquit (*.net *.split)
07:17:51  * farnsworthquit (*.net *.split)
07:17:51  * pkruminsquit (*.net *.split)
07:17:51  * ryanflorencequit (*.net *.split)
07:17:52  * sindresorhus_changed nick to sindresorhus
07:17:53  * calvinfoquit (Quit: Leaving.)
07:27:24  * timoxleyjoined
07:30:32  * farnsworthjoined
07:31:32  * peutetrejoined
07:38:13  * mikolalysenkojoined
07:42:18  * fotoveritequit (Quit: fotoverite)
07:42:25  * mikolalysenkoquit (Ping timeout: 240 seconds)
07:50:13  * frankblizzardjoined
07:50:40  * frankblizzardquit (Remote host closed the connection)
07:53:36  * frankblizzardjoined
08:01:55  * damonoehlmanjoined
08:14:29  * kanzurequit (Ping timeout: 248 seconds)
08:24:03  <mmalecki_>owen1: that does indeed look like it, thanks!
08:24:05  * mmalecki_changed nick to mmalecki
08:24:10  * egradmanquit (Remote host closed the connection)
08:24:45  * egradmanjoined
08:29:20  * egradmanquit (Ping timeout: 248 seconds)
08:37:26  * ralphtheninjajoined
08:54:57  * kanzurejoined
08:55:10  <substack>mmalecki: thinkpad x120e
08:55:14  <substack>it's an older model
09:00:55  * dominictarrjoined
09:07:22  * sveisveijoined
09:11:27  <mmalecki>substack: word, thanks
09:13:54  * damonoehlmanquit (Quit: WeeChat 0.4.1)
09:22:58  * tilgoviquit (Remote host closed the connection)
09:38:38  * kanzurequit (Ping timeout: 240 seconds)
09:41:34  * jcrugzzquit (Ping timeout: 256 seconds)
09:43:14  * ferossquit (Quit: feross)
09:45:26  * ferossjoined
09:49:22  * mirkokieferjoined
09:54:02  * kanzurejoined
10:05:50  * hij1nxchanged nick to rvaag
10:07:11  * fotoveritejoined
10:09:29  * jcrugzzjoined
10:13:29  * rvaagchanged nick to hij1nx
10:16:50  * jcrugzzquit (Ping timeout: 240 seconds)
10:17:08  * djcoinquit (Quit: WeeChat 0.4.1)
10:23:56  * maksimlinquit (Remote host closed the connection)
10:24:34  * maksimlinjoined
10:25:45  * mirkokieferquit (Quit: mirkokiefer)
10:29:28  * mirkokieferjoined
10:34:17  * wolfeidaujoined
10:35:19  * peutetrequit (Quit: peutetre)
10:39:10  * mikolalysenkojoined
10:41:41  * dominictarrquit (Quit: dominictarr)
10:44:02  * mikolalysenkoquit (Ping timeout: 264 seconds)
11:00:59  * barisbarisjoined
11:07:48  * mirkokieferquit (Quit: mirkokiefer)
11:12:23  <spion>will ENV_VAR=val browserify a.js -o bundle.js cause process.env['ENV_VAR'] == 'val' ? Is it a good idea? :)
11:29:18  <rvagg>no, that's not a good idea
11:30:12  * barisbarisquit (Remote host closed the connection)
11:54:37  * peutetrejoined
11:55:26  * maksimlinquit (Ping timeout: 245 seconds)
12:42:21  * djcoinjoined
12:48:18  * Maciek416joined
12:49:03  * AvianFluquit (Remote host closed the connection)
12:56:57  * kevino80joined
13:10:30  * defunctzombie_zzchanged nick to defunctzombie
13:11:12  * mikolalysenkojoined
13:12:09  * ferossquit (Quit: feross)
13:15:55  * mikolalysenkoquit (Ping timeout: 240 seconds)
13:17:02  * yorickjoined
13:22:44  * calvinfojoined
13:22:57  * calvinfoquit (Client Quit)
13:31:29  * mirkokieferjoined
13:42:43  * peutetrequit (Quit: peutetre)
13:44:37  * peutetrejoined
13:47:17  * AvianFlujoined
13:48:19  * AvianFlu_joined
13:51:36  * AvianFluquit (Ping timeout: 241 seconds)
13:52:32  * AvianFlu_changed nick to AvianFlu
13:55:46  * defunctzombiechanged nick to defunctzombie_zz
14:00:37  * ednapiranhajoined
14:03:54  * tmcwjoined
14:12:10  * mikolalysenkojoined
14:16:36  * mikolalysenkoquit (Ping timeout: 268 seconds)
14:23:59  * pkrumins_changed nick to pkrumins
14:24:55  * mirkokieferquit (Quit: mirkokiefer)
14:26:30  * kenperkinsjoined
14:31:38  * dguttmanjoined
14:31:43  * ednapiranhaquit (Remote host closed the connection)
14:33:04  * ednapiranhajoined
14:37:50  * calvinfojoined
14:39:09  * calvinfoquit (Client Quit)
14:43:26  * dominictarrjoined
14:44:33  * fallsemojoined
14:45:56  * mirkokieferjoined
14:51:41  * thlorenzjoined
14:54:24  * shamajoined
14:56:05  * thlorenzquit (Ping timeout: 248 seconds)
15:02:41  * jiangplusjoined
15:05:58  * calvinfojoined
15:10:36  * mirkokieferquit (Ping timeout: 252 seconds)
15:12:13  * mikolalysenkojoined
15:16:41  <dominictarr>jez0990: I'm thinking I'll organize a p2p meetup for when I'm in london!
15:16:56  * mikolalysenkoquit (Ping timeout: 265 seconds)
15:16:59  <jez0990>dominictarr: YES
15:17:14  <jez0990>we should try to get the redecentralise people there too
15:17:20  <jez0990>I've been emailing them
15:17:27  <dominictarr>definately!
15:17:31  <jez0990>...about arranging such a meet up
15:17:36  <jez0990>cool
15:17:39  <jez0990>which dates?
15:20:07  <jez0990>dominictarr: I'm fairly up for doing logistics if you don't fancy it
15:20:19  <dominictarr>I arrive on the 29th i ithnk
15:20:22  <dominictarr>just checking
15:21:32  <dominictarr>jez0990: yeah, arrive on the 29th, leave on the 4th
15:22:00  <jez0990>dominictarr: noted
15:22:26  <jez0990>there's an event happening that evening which I know at least of the redencentralise people will be going to: http://www.eventbrite.com/event/8266233527
15:28:14  <dominictarr>jez0990: I want to organize something pretty low key, just between people who are already working on this stuff
15:28:25  <dominictarr>so we can have a highlevel discussion about this stuff
15:31:53  * mikolalysenkojoined
15:33:20  * rpflochanged nick to ryanflorence
15:41:04  * frankblizzardquit (Remote host closed the connection)
15:46:14  <jez0990>dominictarr: are you here for a specific event that's happening? will other folk be around too? I figure mbalho will still be here following mozfest
15:46:38  <dominictarr>jez0990: enroute between portland and beijing
15:46:57  <dominictarr>… made flights go that way, so i could visit london peopel
15:47:43  <dominictarr>jez0990: yeah, max will be there, plus there are a few london people who are into that stuff
15:48:34  * kriskowaljoined
15:59:18  * jiangplusquit (Quit: leaving)
15:59:38  * jiangplusjoined
15:59:53  * jiangplusquit (Client Quit)
16:12:33  * peutetrequit (Quit: peutetre)
16:14:21  * lanecquit (Ping timeout: 240 seconds)
16:15:14  * mikolalysenkoquit (Ping timeout: 264 seconds)
16:15:26  * dguttmanquit (Quit: dguttman)
16:15:49  * lanecjoined
16:28:42  * ferossjoined
16:47:05  * mikolalysenkojoined
16:49:41  * ferossquit (Quit: feross)
16:51:39  * st_lukejoined
16:57:04  * st_lukequit (Ping timeout: 248 seconds)
16:58:49  <AvianFlu>CROSS BROWSER TESTING IS MY FAVORITE
16:58:49  <LOUDBOT>PLZ ADD SOMETHING TO YOUR SOURCES.LIST
17:00:01  * st_lukejoined
17:02:09  * dguttmanjoined
17:05:23  * st_lukequit (Read error: Connection reset by peer)
17:05:29  * CoverSlide&
17:05:30  <LOUDBOT>JESUS CHRIST IT'S MEHMET ALI AĞCA GET IN THE POPEMOBILE
17:17:34  * DTrejojoined
17:20:59  * AvianFluquit (Remote host closed the connection)
17:21:40  * lukjoined
17:21:41  * DTrejoquit (Ping timeout: 248 seconds)
17:23:26  * lukchanged nick to st_luke
17:23:54  * djcoinquit (Quit: WeeChat 0.4.1)
17:25:03  * AvianFlujoined
17:31:28  * mikolalysenkoquit (Ping timeout: 268 seconds)
17:34:35  <spion>Still haven't published this article: http://spion.github.io/posts/why-i-am-switching-to-promises.html - wondering if I could do something to make it less confrontational
17:35:18  <dominictarr>juliangruber: great progress on merkle today - needs more tests though
17:35:30  * dominictarrquit (Quit: dominictarr)
17:37:26  * alessioalexjoined
17:40:37  * mikolalysenkojoined
17:45:09  * thlorenzjoined
17:51:20  <st_luke>Domenic_: there are too many numbers in the promises a plus spec 2.3.3.3.3.3.3.3.3.1.1
17:53:18  <st_luke>spion: ending a process gracefully is not a crash
17:54:13  * mikolalysenkoquit (Ping timeout: 248 seconds)
17:54:25  <spion>but its at least half of a crash - what if 10 users hit that error path?
17:54:33  * egradmanjoined
17:54:44  <spion>or one angry user simply starts refreshing?
17:55:03  <st_luke>that doesn't make sense, what's half a crash?
17:55:16  <spion>means a process dies. then the user refreshes, then another dies.
17:55:26  <spion>the user refreshed 8 times, all the web processes have died.
17:55:34  * jcrugzzjoined
17:56:24  <st_luke>you should catch those, stop accepting new requests on the process, and end it once the current ones are done
17:56:34  <st_luke>you can fork a new worker in the meantime also
17:56:37  * mikolalysenkojoined
17:56:47  * DTrejojoined
17:57:19  <st_luke>but if your code has that many exceptions, then you've got another problem
17:57:27  <st_luke>and promises aren't going to help you there
17:57:29  <spion>no need to have that many exceptions.
17:57:47  <spion>if my angry user, the one that hits that single exception starts refreshing - he is going to spawn lots of processes.
17:58:17  * DTrejoquit (Remote host closed the connection)
17:58:43  <st_luke>well, you need to make your code smarter than that
17:58:49  * DTrejojoined
17:58:59  * DTrejoquit (Read error: Connection reset by peer)
17:59:27  <st_luke>but there's no such thing as a "half crash", and calling ending a process deliberately a crash is misleading
17:59:29  * DTrejojoined
17:59:48  <spion>its misleading to say that ending a process gracefully solves the exception problem
17:59:51  <st_luke>domains dont have anything to do with ending the process
18:00:14  <st_luke>spion: do you know why you would end a process on an uncaught exception?
18:00:25  * DTrejoquit (Read error: Connection reset by peer)
18:00:26  <st_luke>like what that's solves
18:00:33  <st_luke>brb
18:00:53  <spion>yes, it makes sure I'm not leaking resources (such as sockets, file handles etc)
18:00:58  * DTrejojoined
18:01:24  <spion>... but I don't know if thats all.
18:02:27  * DTrejoquit (Remote host closed the connection)
18:03:00  * DTrejojoined
18:03:07  * mikolalysenkoquit (Ping timeout: 248 seconds)
18:03:13  * DTrejoquit (Read error: Connection reset by peer)
18:03:52  <spion>with promises I have .finally() and friends to make sure resources are cleaned up either way
18:04:10  * DTrejojoined
18:06:37  * DTrejo_joined
18:06:38  <spion>and closures aren't leaked anymore
18:06:45  * DTrejo_quit (Read error: Connection reset by peer)
18:06:50  <spion>don't know if they're normally leaked though
18:06:53  * jxsonjoined
18:07:17  * DTrejo_joined
18:08:53  <spion>and "your code needs to be smarter than that" - thats only deciding the scope of the denial of service
18:08:59  <spion>:)
18:09:21  * DTrejo_quit (Remote host closed the connection)
18:09:27  <spion>will I block just that user (doesn't solve multiple users hitting the error)? just that url (could be too broad)
18:09:55  * DTrejo_joined
18:10:27  * alessioalexquit (Quit: Page closed)
18:10:32  * DTrejoquit (Read error: Connection reset by peer)
18:10:36  <Maciek416>spion: who cares about the nitty gritty of the use case your critic outlined above? what's nice is taht your alternative proposes a pattern people can easily remember and adhere to
18:10:55  <st_luke>is this #node.js
18:11:06  <jesusabdullah>is this just fantasy
18:11:16  <jesusabdullah>caught in a netspliit no escape from realityyyy
18:11:32  <Maciek416>must resist urge to contribute
18:11:38  <spion>Maciek416, not exactly debating the decision, and I did appreciate the correction
18:11:48  <jesusabdullah>Open your browser, go to github and seeeeeeee
18:11:49  <spion>that claim I make there is both harsh and not quite correct.
18:11:49  <st_luke>Maciek416: im not "the critic", im pointing out that process.exit isn't a crash...
18:12:09  <jesusabdullah>I'm just a sysooop I need no sympathyyyy
18:12:50  <Maciek416>hm
18:14:16  <jesusabdullah>aww nobody likes queen++
18:14:42  <Maciek416>jesusabdullah: problem is that it just gets in your head and doesn't go away
18:15:47  * fotoveritequit (Quit: fotoverite)
18:21:06  <st_luke>spion: you should post that
18:21:42  * thlorenzquit (Remote host closed the connection)
18:22:03  <spion>although I just got an idea for smarter-than-that code - monitor the number of open file handles and used resources, and beyond a certain limit shut down gracefully.
18:22:20  <spion>that could work
18:22:33  <jesusabdullah>Iiiiii'm coding awayyyyyyy
18:22:38  <jesusabdullah>Set a course for the virgin repooooo
18:28:54  * thlorenzjoined
18:29:00  * AvianFluquit (Remote host closed the connection)
18:30:15  * defunctzombie_zzchanged nick to defunctzombie
18:33:04  * AvianFlujoined
18:39:02  * thlorenzquit (Remote host closed the connection)
18:48:28  <Domenic_>st_luke: yeah not sure what to do about that...
18:51:28  * thlorenzjoined
18:55:37  <st_luke>svn is so retarded
18:55:44  <st_luke>literally for retarded people
18:55:48  <st_luke>who like retarded stuff
19:06:39  * peutetrejoined
19:11:08  <mbalho>bohemian freenodeirc
19:21:28  * thlorenzquit (Remote host closed the connection)
19:24:54  * dstokesjoined
19:25:24  * mirkokieferjoined
19:28:15  * thlorenzjoined
19:34:55  * mirkokieferquit (Ping timeout: 260 seconds)
19:39:20  * dstokesquit (Quit: dstokes)
19:39:21  * AvianFluquit (Read error: Connection reset by peer)
19:39:50  * AvianFlujoined
19:42:22  * AvianFluquit (Remote host closed the connection)
19:43:24  * AvianFlujoined
19:46:14  * mirkokieferjoined
19:59:37  * peutetrequit (Quit: peutetre)
20:09:48  <st_luke>isaacs: I think I see where a lot of the npm inspiration came from now
20:10:06  * AvianFluquit (Read error: Connection reset by peer)
20:10:17  * AvianFlujoined
20:10:49  <isaacs>st_luke: oh, from yinst you mean?
20:10:52  <isaacs>yeah
20:11:20  <st_luke>yeah
20:11:26  <st_luke>except yinst does too much
20:11:51  * peutetrejoined
20:12:30  * mikolalysenkojoined
20:13:12  * thlorenzquit (Remote host closed the connection)
20:14:17  <jesusabdullah>st_luke: how's ynode? ;)
20:14:33  <jesusabdullah>st_luke: also totally jelly you got to meet marissa mayer, so cool
20:15:31  <st_luke>jesusabdullah: i havent used it yet
20:15:36  <st_luke>i looked at the source
20:15:37  <st_luke>its just node
20:21:25  * kanzurequit (Ping timeout: 248 seconds)
20:25:20  * thlorenzjoined
20:27:09  * tilgovijoined
20:30:34  * kanzurejoined
20:36:26  <isaacs>jesusabdullah: yahoo likes its developers to constantly question everything
20:36:30  <isaacs>why apache? why php?
20:37:01  <st_luke>ok im skipping the rest of these trainings
20:37:36  <st_luke>ytraining
20:37:55  <AvianFlu>Y U NO TRAINING
20:37:55  <LOUDBOT>I'VE GOT YOUR BALLS IN A SLING, KIND SIR.
20:50:21  * st_lukequit (Remote host closed the connection)
20:50:52  * peutetrequit (Quit: peutetre)
20:54:28  * mirkokieferquit (Quit: mirkokiefer)
20:58:27  * peutetrejoined
20:59:32  <jesusabdullah>isaacs: that's good!
21:04:27  * AvianFluquit (Ping timeout: 248 seconds)
21:04:54  * mmckeggquit (Ping timeout: 264 seconds)
21:05:31  * mirkokieferjoined
21:06:08  * dstokesjoined
21:06:42  * nexxyquit (Ping timeout: 264 seconds)
21:07:14  * mmckeggjoined
21:07:15  * nexxyjoined
21:07:16  * nexxyquit (Changing host)
21:07:16  * nexxyjoined
21:08:46  * Maciek416quit (Remote host closed the connection)
21:09:19  * Maciek416joined
21:12:48  * kevino80quit (Remote host closed the connection)
21:13:36  * Maciek416quit (Ping timeout: 252 seconds)
21:14:51  <mikolalysenko>I just googled ynode, and wtf
21:15:05  * Maciek416joined
21:15:11  <mikolalysenko>is it basically crockford's fork of node.js?
21:15:36  <mikolalysenko>what's he gonna do? go back and add a bunch of semicolons?
21:22:00  * maksimlinjoined
21:22:51  <jesusabdullah>mikolalysenko: I mean, I really thought it was a hypothetical? He gave a talk where he said he thought node was cool but he didn't think Joyent was properly equipped to be a good steward or whatever
21:23:12  <jesusabdullah>mikolalysenko: so he was like, "if I was ceo I would fork node jay ess and call it why-node"
21:24:17  * timoxleyquit (Remote host closed the connection)
21:24:50  * timoxleyjoined
21:25:03  * dstokesquit (Ping timeout: 260 seconds)
21:26:43  <mikolalysenko>jesusabdullah: well, it is open source so I suppose if he wants to try it he is free to do it
21:27:28  <mikolalysenko>jesusabdullah: though I didn't watch the speech, but did he actually articulate any specific reason why he thought that he could do a better job?
21:29:08  * timoxleyquit (Ping timeout: 240 seconds)
21:29:38  * gwenbelljoined
21:30:21  * timoxleyjoined
21:31:28  * dstokesjoined
21:45:39  <isaacs>mikolalysenko: no, none.
21:45:56  <isaacs>mikolalysenko: also, i emailed him directly, and asked for clarification of how he thinks i'm doing an "amateurish" job
21:46:17  <isaacs>mikolalysenko: no response.
21:46:27  <jesusabdullah>mikolalysenko: not really, he basically was like, "those guys are young whippersnappers"
21:46:34  <isaacs>mikolalysenko: also, i mean... you'd "fork" it? srsly? there are THOUSANDS of forks of node.
21:46:36  <jesusabdullah>"don't trust anyone under 40"
21:46:39  <isaacs>wtf does that even mean?
21:46:45  <jesusabdullah>oh you know what it means
21:47:03  <jesusabdullah>a spiritual, cultural fork
21:48:53  * peutetrequit (Quit: peutetre)
21:53:53  <jcrugzz>but hes big javascript man Doug Crockford, hes like a super hero right? his fork would be AMAZING
21:54:14  * egradman_joined
21:54:16  <jesusabdullah>well like
21:54:18  <jesusabdullah>two things
21:54:50  <jesusabdullah>one, crockford's code is obvious but his APIs aren't fantastic---see jslint
21:55:02  <jesusabdullah>two, presumably yahoo would put a whole bunch of smart people on it
21:55:27  * lukjoined
21:57:15  * egradmanquit (Ping timeout: 268 seconds)
22:00:23  * AvianFlujoined
22:02:32  <jesusabdullah>hello AvianFlu
22:04:30  <mikolalysenko>I personally am not a huge fan of crockford's writings, especially on javascript. he comes off as very opinionated, trying to pass off somewhat arbitrary stylistic choices as some deeper truth than they really are
22:05:04  <mikolalysenko>but he is very influential, and in the past he did contribute quite a lot to popularizing javascript
22:05:14  <AvianFlu>jesusabdullah: SUP DAWG
22:06:06  <jesusabdullah>AvianFlu: N2MU??!?!
22:06:28  <jesusabdullah>AvianFlu: working on a big ol' data migration/cleanup cycle on some mongoes
22:06:33  <jesusabdullah>AvianFlu: EXCITING STUFF
22:06:45  <AvianFlu>yeahlol
22:07:02  <jesusabdullah>"wait why is the end timestamp before the start timestamp"
22:07:09  <AvianFlu>hahahahhaa
22:07:28  <AvianFlu>yeah I've been there
22:07:44  <AvianFlu>mikolalysenko: he's like javascript's cranky grandpa
22:07:51  <AvianFlu>I tend to just let him yell and try to stay off his lawn
22:08:29  <luk>crockford is a philosopher
22:08:34  <luk>he doesnt build software for a living
22:08:59  <luk>if you keep that in mind it makes more sense to take what he says with a grain of salt
22:09:01  * lukchanged nick to st_luke
22:09:35  * st_lukequit (Remote host closed the connection)
22:10:01  * st_lukejoined
22:10:09  <jesusabdullah>tru dat
22:10:17  <mikolalysenko>I don't really know much about crockford's personality, but a lot of people take him really seriously
22:10:32  <st_luke>a lot of people take al gore really seriously
22:10:32  <robertkowalski>örx - i ate far too much sweets
22:10:32  <jesusabdullah>I give him mad props for JSON though
22:10:47  <mikolalysenko>jesusabdullah: yeah, that's true
22:10:48  <spion>I don't like that he often takes a dogmatic approach to saying things
22:10:59  <spion>like "X is evil", "don't do Y"
22:10:59  <spion>like "X is evil", "don't do Y"
22:10:59  <jesusabdullah>dogmatism is good
22:11:02  <spion>with zero background
22:11:06  <mikolalysenko>maybe...
22:11:11  <jesusabdullah>er
22:11:12  <spion>dogmatism is the worst thing.
22:11:14  <jesusabdullah>dogmatism is not good
22:11:15  <spion>:(
22:11:18  <jesusabdullah>PRAGMATISM is good
22:11:19  <jesusabdullah>my bad
22:11:22  <spion>ah yes.
22:11:24  <mikolalysenko>for example, there is that whole jslint business that I don't really get
22:11:30  <spion>i always want to know why things are evil.
22:11:35  <spion>not just that they're evil
22:11:36  <mikolalysenko>it seems like that tool is vastly oversold for what it does
22:11:40  <mikolalysenko>spion: yeah, exactly
22:12:06  <jesusabdullah>well linting's not a terrible idea, it's just not well done or, well, at all satisfying, in this context/implementation
22:12:08  <st_luke>jshint is a really good tool for when you work with a few different people on the same project
22:12:09  <mikolalysenko>also jslint seems to recommend writing less efficient code in many places, warning against ordinary programming operations like bit operators
22:12:25  <st_luke>you can configure them to warn you only on the things you want
22:12:26  <mmckegg>substack pkrumins: there's something screwy going on with Testling and IE7/8. I made a baseline test: https://github.com/mmckegg/baseline - IE7 times out and IE8 never finishes.
22:12:27  <st_luke>at least in jshint
22:12:32  <st_luke>its flexible
22:12:42  <jesusabdullah>with jshint it's nice to be able to be like, "ohey you forgot a semi" or something
22:12:57  <jesusabdullah>as long as it's also culturally acceptable to tell jshint, "DONT CARE I KNOW MAOR THAN U"
22:13:19  <mikolalysenko>ah.... the ancient holy semicolon war
22:13:23  <st_luke>i like when jshint doesnt let the build pass unless you fix what its complaining about
22:13:39  <jesusabdullah>yeah, not me
22:13:46  <jesusabdullah>I'll set a threshhold on it though
22:13:53  <spion>/* jshint shootmyfoot:true */
22:14:01  <mikolalysenko>I guess what bothers me about these lint tools is that they don't really don't that much at the end of the day
22:14:02  <jesusabdullah>like, a 95% pass rate by line is very reasonable
22:14:15  <jesusabdullah>but there might be that one case where, god damn it, I MEANT what I said
22:14:19  <st_luke>yea if im using jshint and i dont pass 100% then theres a problem
22:14:27  * evboguepart
22:14:28  <jesusabdullah>with jshint
22:14:35  * lanecquit (Quit: pasta la veesta)
22:15:04  <st_luke>lol
22:15:04  <st_luke>ok
22:15:05  <st_luke>brb
22:15:07  * st_lukequit (Remote host closed the connection)
22:15:11  <jesusabdullah>huh
22:15:45  <mikolalysenko>it would be pretty great if there were js static checkers that could detect semantic errors instead of places where syntax deviates from some convention
22:16:01  <jesusabdullah>well like, I'm more than cool with detecting deviation from convention
22:16:07  <mikolalysenko>like the tools for C/C++ that can detect null pointer derefs, double frees, and unintiailized data, etc.
22:16:07  <jesusabdullah>I just believe I know better than my tool
22:16:29  <spion>mikolalysenko, you mean deeper analysis? intellij idea / webstorm have an analyser that goes a bit deeper.
22:16:44  <mikolalysenko>I mean stuff like this: http://research.microsoft.com/en-us/projects/slam/
22:17:12  <mikolalysenko>though ms has pored god knows how much research money into that project
22:17:21  <mikolalysenko>but they do check every signed piece of driver code using that system
22:20:04  <mikolalysenko>slam can do stuff like prove device drivers never get stuck in infinite loops, are free of buffer overflows, etc.
22:20:09  <spion>what would the JS equivalents of those errors be?
22:20:11  <mikolalysenko>of course it isn't 100% and so you get some false alarms
22:20:18  <mikolalysenko>a UI button that hangs for example
22:20:21  <mikolalysenko>or a memory leak
22:20:59  <spion>also C and C++ at least have some type hints, JS has none :/
22:21:19  <mikolalysenko>I think you could work around that
22:21:23  <spion>the number of combinations that tool will need to check will grow a lot
22:21:42  <mikolalysenko>nah, you just do abstract interpretation on the routine and propagate inferred types
22:21:52  <mikolalysenko>v8 does it at run time, a static tool should have no problem really
22:22:15  * gwenbellquit (Quit: Lost terminal)
22:22:28  <mikolalysenko>I think static type inference in js is quite possible
22:22:57  <tmcw>mikolalysenko: ternjs might be the closest so far?
22:23:01  <spion>sounds worthy of exploration to me :D
22:23:38  <mikolalysenko>tmcw: probably. I'd be surprised if there weren't others out there
22:23:49  <tmcw>it's tuned for a certain use case but at the core is a pretty well-developed type inference system, based off of... spidermonkey I think?
22:24:05  <mikolalysenko>tmcw: pretty neat
22:24:06  <grncdr>I was under the impression that TypeScript did some (limited) inference as well
22:24:12  <grncdr>but I haven't really looked that closely
22:24:30  * st_lukejoined
22:24:50  <tmcw>y, similar to spidermonkey: http://marijnhaverbeke.nl/blog/tern.html
22:25:33  <mikolalysenko>though static verification is really about more than just type systems. it is about proving novel/useful properties about programs automatically
22:25:52  <mikolalysenko>although type systems happen to be one of the more useful tools in realizing this
22:26:28  <grncdr>yeah didn't mean to imply they were equivalent
22:26:56  <mikolalysenko>though I bet you could probably write code to detect some classes of errors in javascript programs due to the bizarre type coercion behavior
22:27:27  <mikolalysenko>for example detect situations where things are accidentally converted to strings, etc.
22:27:45  <grncdr>I believe JShint already does some of that
22:28:05  <grncdr>but not a lot
22:28:36  <grncdr>personally I think core.typed is a more likely path to getting powerful static verification into JS
22:28:48  <grncdr>but it's not really JS at that point ;)
22:30:20  <spion>has anyone tried using typescript more seriously?
22:31:33  * AvianFlu_joined
22:31:37  <spion>by more seriously I mean trying to write a module with a couple of non-TS dependencies, then write another TS module that depends on the first one...
22:32:07  <grncdr>nope, I've been tempted to convert one of my modules just to give it a try, but I'm not motivated enough to fiddle with the tools
22:32:21  <mbalho>relevant crockford link http://www.youtube.com/watch?v=8HzclYKz4yQ&feature=player_detailpage#t=1360s
22:34:28  * spionpart ("Leaving")
22:34:31  * spionjoined
22:35:12  * AvianFlu_quit (Remote host closed the connection)
22:35:31  <grncdr>wait what? he gave a 30 minute long talk answering a rhetorical question that nobody would've asked?
22:35:42  <grncdr>:|
22:36:49  <st_luke>i mean its not like hes doing it for free
22:36:55  <st_luke>people like him get paid to give talks like that
22:37:43  <grncdr>as I said before..l
22:37:45  <grncdr>:|
22:38:07  <mikolalysenko>yeah...
22:38:15  <grncdr>ah well, I'm probably just jealous
22:38:26  <st_luke>i would totally give a talk if people paid me for it
22:38:29  <grncdr>I'd talk for 30 minutes about what other people should do for airfare and food
22:38:56  <grncdr>like, fly me somewhere warm, and I will tell you what I would do if I were the queen of England
22:39:41  <mikolalysenko>honestly I'm not so bothered by the fact he gets paid to give talks about this sort of stuff
22:40:01  <jesusabdullah>idk man, it's just a talk
22:40:10  <jesusabdullah>there are all kinds of boring and/or shitty talks
22:40:11  <st_luke>the guy is like 90 years old
22:40:14  <jesusabdullah>that other people like
22:40:33  <mikolalysenko>there are lots of 90 year olds with plenty of interesting things to say
22:40:37  <grncdr>sorry, I think I'm coming across more harshly than I actually feel about it
22:40:47  <st_luke>yeah, but I'm not even mad about it, I'm impressed
22:41:04  <grncdr>fair enough
22:41:10  <mikolalysenko>also on the topic of jshint, this line passes without any warning: function main() { return [2]*3; }
22:41:23  <mikolalysenko>but if you take out that semicolon -- watch out!
22:41:23  <jesusabdullah><-- zero fucks given over here
22:41:29  <st_luke>ive never used jshint so idk
22:41:36  <st_luke>sorry I mean jslint
22:41:55  <jesusabdullah>mikolalysenko: that's why I let jshint advise but never trust it
22:42:15  <st_luke>the main reason i use jshint is to keep my code in a consistent style, which its pretty good at
22:42:32  <spion>mikolalysenko, see that *is* a type problem :)
22:42:36  <mikolalysenko>jesusabdullah: I was just trying to point out that linters really only enforce syntactic/stylistic cnventions
22:42:42  <mikolalysenko>spion: yeah, but jshint misses it
22:43:21  <spion>yeah I suppose it does.
22:43:46  <mikolalysenko>the point is that the safety you get by running your code through a linter is very superficial
22:44:01  <mikolalysenko>it is kind of a cargo-cult like ritual
22:44:14  <st_luke>not really
22:44:18  <mikolalysenko>now that said, enforcing convention is important
22:44:30  * thlorenzquit (Remote host closed the connection)
22:44:37  <spion>jshint does do some useful scope checking (existence)
22:44:43  <spion>but nothing deeper
22:45:02  <mikolalysenko>spion: fair enough, though you could also do "use strict" and get the same results
22:46:15  <mikolalysenko>basically linters can be good for style, but they don't really help regarding correctness
22:46:31  <mikolalysenko>or at least that is my view of it
22:48:03  <spion>they don't help much, true.
22:48:20  <spion>only with the most basic errors, like typos
22:48:29  <spion>and even then a limited subset of those
22:50:10  <grncdr>so this might be obvious but: if (more) static verification of correctness is important, why use JS?
22:50:52  <spion>this is a very interesting read: http://marijnhaverbeke.nl/blog/tern.html
22:52:12  <mikolalysenko>grncdr: runs in a browser, awesome module system via node.js, relatively easy async programming, etc.
22:52:22  <mikolalysenko>also resulting code is more accessible and easier for novices to pick up
22:52:37  <spion>i found typescript exciting because sometimes static verification is important, sometimes dynamic power is, and typescript tries to let you have both easily whenever possible
22:53:18  <spion>and lets you choose whenever impossible
22:54:59  <grncdr>mikolalysenko: hm, I agree re about the module system and maybe accessibility, but the module system isn't really a feature of JavaScript (e.g. dotc)
22:55:22  <grncdr>spion: same here, still might try it out on something
22:55:44  <grncdr>s/a feature of/limited to/
22:56:26  <mikolalysenko>spion: I kind of like the idea, but I am a bit worried that using typescript might slow things down unnecessarily and it also makes it a bit harder for new users to pick up and edit
22:56:45  * fallsemoquit (Quit: Leaving.)
22:56:45  <grncdr>mikolalysenko: do you mean slow like runtime?
22:56:51  <mikolalysenko>grncdr: yeah
22:56:55  <grncdr>pretty sure there is no runtime effect
22:57:08  <mikolalysenko>grncdr: not completely sold on that yet
22:57:14  <grncdr>ah
22:57:21  <spion>compilation time?
22:57:34  <mikolalysenko>no, execution time
22:57:43  * tmcwquit (Remote host closed the connection)
22:57:50  <mikolalysenko>and execution memory
22:57:55  <grncdr>fair enough, from what I understand it supposedly doesn't modify your JS a lot
22:57:57  <spion>oh. TS adds very little to JS beyond compile-time static types
22:58:15  * tmcwjoined
22:58:21  <spion>some sugar for functions / classes and modules... thats about it
22:58:34  <mikolalysenko>spion: fair enough. it is probably not a big cost if it has any at all
22:58:35  <grncdr>it would be worth looking into the JS it generates for classes
22:58:44  <grncdr>but I'd guess it's pretty optimal
22:58:54  <mikolalysenko>what I would really like to get though is a system that makes run time generated javascript easier to write
22:59:05  <mikolalysenko>so I could write modules that can use macro style programming
22:59:07  <spion>the playground greets you with a class :) http://www.typescriptlang.org/Playground/
22:59:12  <grncdr>sweet.js
22:59:23  <grncdr>mikolalysenko: ^^
22:59:23  <mikolalysenko>it would make things like this easier to maintain: https://github.com/mikolalysenko/cwise-compiler/blob/master/compiler.js
22:59:25  <spion>pretty sure sweet.js is compile-time only
22:59:39  <spion>or isn't it?
22:59:44  <grncdr>no I guess it is
22:59:48  <mikolalysenko>spion: does sweet.js run at compile time?
22:59:51  <mikolalysenko>ah
23:00:01  <grncdr>it *is* implemented in JS, so you could use it at runtime as well
23:00:11  <grncdr>but only if you're willing to ship it to wherever your JS runs
23:00:15  <mikolalysenko>take for example this thing: https://github.com/mikolalysenko/ndarray-sort/blob/master/lib/compile_sort.js
23:00:32  <spion>yeah, I've seen that kind of code before :)
23:00:34  <mikolalysenko>I would strongly consider using a compile-to-js language if it made writing that sort of code easier
23:01:00  * dominictarrjoined
23:01:02  <mikolalysenko>unfortunately, I don't really know any good solution to writing modules like this other than hand tuning stuff...
23:01:03  <grncdr>spion: that TS generated code is nice
23:01:12  <grncdr>*exactly* what I would've written myself
23:01:27  <mikolalysenko>hmm
23:01:36  <mikolalysenko>the typescript raytracer is not very efficient...
23:01:42  <mikolalysenko>at least the vector class is somewhat suboptimal
23:02:26  * mirkokieferquit (Quit: mirkokiefer)
23:02:47  <mikolalysenko>on v8 you pay an overhead for calling across contexts, and the vector methods are stored in a subcontext for really no good reason
23:02:52  * tmcwquit (Ping timeout: 264 seconds)
23:02:58  <mikolalysenko>same with all the other virtual classes
23:03:49  * defunctzombiechanged nick to defunctzombie_zz
23:06:29  <grncdr>mikolalysenko: I don't think I understand what you mean
23:06:34  <grncdr>how would you change it
23:06:51  <mikolalysenko>http://neversaw.us/2013/09/04/on-the-performance-of-closures-in-v8/
23:06:56  <spion>just unwrapping the constructors and prototype methods from those closures should be enough
23:07:04  <mikolalysenko>just remove the closures around vector/color/etc.
23:07:12  <mikolalysenko>no need for that stuff to be there really
23:08:15  <mikolalysenko>basically calling across closure costs a little bit extra
23:08:34  <spion>I think they do that because the target is the browser
23:08:38  <spion>to avoid global functions
23:08:42  <mikolalysenko>ah, got it
23:08:49  <mikolalysenko>makes sense
23:08:56  <spion>buuut...
23:09:01  <spion>I think they had a couple of different targets
23:09:03  <spion>let me check with tsc
23:10:38  <spion>haha, you get that result if you use the target "amd"
23:10:56  <spion>because it generates a code that it assumes will be wrapped inside an AMD wrapper
23:11:02  <spion>(but isn't wrapped)
23:11:16  <spion>no wait. nope
23:11:25  <spion>i was completely wrong :|
23:11:51  <spion>it always wraps the classes.
23:18:01  * dominictarrquit (Quit: dominictarr)
23:21:40  * mikolalysenkoquit (Quit: Reconnecting)
23:21:56  * mikolalysenkojoined
23:22:11  <grncdr>spion: it wraps them because static methods presumable have access to a scope inside the class?
23:22:25  <grncdr>even if the static methods never access anything from that scope
23:22:46  <grncdr>that would be my guess
23:23:06  <spion>you mean to allow access to private properties?
23:23:11  <spion>I think thats a compile-time check only
23:23:24  <grncdr>I don't know TS that well
23:23:36  <grncdr>does it have static properties?
23:23:41  <spion>yes
23:24:07  <grncdr>hm, still you'd think it would just assign them to the constructor...
23:24:30  <spion>static methods have access to private members: Vector.dot = function(v1, v2) { return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z; }
23:24:50  <grncdr>I was thinking of private static members being implemented as closure variables
23:24:51  <grncdr>maybe
23:25:04  <spion>ah no, just compile-time checking :)
23:25:28  <grncdr>I was thinking of how coffeescript allows class-methods to have access to arbitrary variables in the scope of the class
23:26:03  <grncdr>like you can have 'class Blah\n\tx = 12'
23:26:09  <grncdr>but it looks like TS doesn't do that
23:26:17  <grncdr>so I have no idea why they have the closure there
23:26:28  <grncdr>anyways, I need to jump on a train
23:26:35  <spion>my theory is that var X = ... doesn't create a global
23:26:39  <spion>but function X() { ... } does
23:26:44  <spion>in a <script> tag
23:27:18  <spion>wait.
23:28:12  <spion>nope
23:28:31  <spion>commonjs / browserify have spoiled me :)
23:28:42  <spion>and I've completely forgotten
23:29:09  * spionhides
23:30:57  * st_lukequit (Remote host closed the connection)
23:31:24  * st_lukejoined
23:35:59  <spion>i just installed the tern plugin for vim
23:36:00  * st_lukequit (Ping timeout: 248 seconds)
23:36:03  <spion>and its pretty amazing so far.
23:36:44  <mikolalysenko>is it smart enough to understand node_modules/require?
23:39:42  <spion>as-is, no. trying to find out if there is a configuration option
23:42:00  <spion>there is a node plugin...
23:42:37  <jjjohnny>when piping together streams is there a setting to keep one from closing when the other closes/
23:42:52  * ednapiranhaquit (Remote host closed the connection)
23:43:41  <jjjohnny>a.pipe(b).pipe(a) style
23:44:38  * Maciek416quit (Remote host closed the connection)
23:46:29  * egradman_quit (Remote host closed the connection)
23:47:04  * egradmanjoined
23:49:09  <spion>mikolalysenko, I made it understand require('./local')
23:49:17  <spion>let me check if it knows about node_modules now
23:50:01  <spion>yup.
23:51:50  <spion>http://i.imgur.com/O0oJsjd.png
23:52:04  * egradmanquit (Ping timeout: 264 seconds)
23:52:42  <grncdr>jjjohnny: second arg to pipe IIRC
23:53:10  <grncdr>pipe(other, {end: false})
23:54:05  <spion>all it needed was a .tern-project file in the root directory with the content: `{"plugins": {"node": {}}}`
23:54:34  * spionchecks if a file in ~ will do...
23:55:13  <spion>oh yeah, that worked.
23:55:35  * st_lukejoined
23:55:47  <spion>wow, this is pretty amazing
23:56:57  <spion>i gotta thank tmcw for mentioning it