00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:07  * ircretaryjoined
00:00:19  * dguttmanjoined
00:03:12  * thlorenzjoined
00:05:28  <substack>so apparently that horrible level-search bug was just a version mismatch someplace!
00:05:38  <substack>when I installed all the deps fresh, I don't get that bug anymore
00:08:01  * thlorenzquit (Ping timeout: 276 seconds)
00:27:30  * ins0mniaquit (Ping timeout: 245 seconds)
00:31:02  * thlorenzjoined
00:31:44  <jjjohnny_>substack: a module that does a routine of non-obvious fixes and updates
00:31:53  <jjjohnny_>for those hard to scratch bugs
00:36:32  * thlorenz_joined
00:38:27  <thlorenz>Domenic_: ping - have a question concerning separating server for static content from data (restify)
00:40:12  * dominictarrjoined
00:40:21  <substack>dominictarr: the bug wasn't in level-search!
00:40:37  <substack>it was a bug in an incompatible assortment of modules talking to each other
00:40:49  <substack>but once I nuked node_modules/ and did a fresh install everything was fine
00:41:04  <dominictarr>YAY!
00:41:26  <dominictarr>hate it when stuff like this happens....
00:41:48  * thlorenz_quit (Ping timeout: 276 seconds)
00:45:27  * i_m_cajoined
01:05:43  * meschjoined
01:08:20  * thlorenz_joined
01:09:30  * thloren__joined
01:09:31  * thlorenz_quit (Read error: Connection reset by peer)
01:17:27  <ralphtheninja>dominictarr: yo
01:17:40  <dominictarr>ralphtheninja: hey, whats up?
01:17:54  * tmcwjoined
01:18:05  <ralphtheninja>I have a problem, want to send a file from the browser over mux-demux, but the data on the other end gets messed up
01:19:24  <ralphtheninja>so in the browser I have a FileReader() which gets the binary content of the file as a string
01:20:49  <ralphtheninja>and I go createStream(meta).write(data) in the browser and if I write it to file on the server it looks almost the same :)
01:21:25  <ralphtheninja>if I send the exact same data through dnode it works .. I suspect dnode does something magical
01:22:02  <ralphtheninja>but I don't want to send data via dnode in a big json blob, I want to send it directly over mux-demux
01:24:31  <dominictarr>ralphtheninja: that is probably an encoding problem.
01:24:45  <dominictarr>try using mux-demux/jsonb or mux-demux/msgpack
01:24:56  <ralphtheninja>dominictarr: I suspect that too
01:25:06  <ralphtheninja>ok
01:25:29  <dominictarr>those two give you reversably encoded buffers
01:25:45  <dominictarr>but default mux-demux just uses JSON
01:26:03  <dominictarr>which stringify buffers into an array of numbers
01:26:07  <dominictarr>not what you want.
01:27:39  <ralphtheninja>ok so in the browser I go e.g. createStream().write(JSONB.stringify(data)) ?
01:27:39  * ricardobeatjoined
01:31:34  <dominictarr>no, just do MuxDemux = require('mux-demux/jsonb')
01:31:45  <dominictarr>everything else is exactly the same.
01:32:09  <ralphtheninja>ok, is there any downside using that for all streams?
01:32:25  <ralphtheninja>this is just one case where I want to send binary data
01:32:42  <ralphtheninja>since I guess all createStream() calls will use jsonb
01:36:46  * kirbysayshijoined
01:38:52  * No9quit (Quit: Gone to join the choir invisibule)
01:41:06  * tmcwquit (Remote host closed the connection)
01:43:22  <dominictarr>ralphtheninja: I'd expect: not really.
01:43:30  <dominictarr>though, I havn't done a benchmark.
01:43:32  <dominictarr>http://www.slate.com/articles/business/moneybox/2013/07/how_one_weird_trick_conquered_the_internet_what_happens_when_you_click_on.single.html
01:43:38  <dominictarr>^finally makes sense
01:43:58  <dominictarr>you need to make sure that a scam is stupid
01:44:25  <dominictarr>because then you can filter out non-suckers who are just gonna wast a scammer's time.
01:48:13  * ricardobeatquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
01:49:15  * dominictarrquit (Quit: dominictarr)
02:01:07  * soldairquit (Ping timeout: 250 seconds)
02:03:22  * ricardobeatjoined
02:04:15  * i_m_caquit (Read error: Connection reset by peer)
02:05:01  * i_m_cajoined
02:13:16  * jcrugzzjoined
02:20:54  * ricardobeatquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
02:22:51  * ricardobeatjoined
02:32:10  * stagasquit (Read error: Connection reset by peer)
02:50:50  * mikealjoined
02:53:17  * ricardobeatquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
02:55:08  * thloren__quit (Remote host closed the connection)
03:02:28  * mikealquit (Quit: Leaving.)
03:04:40  * mikealjoined
03:05:10  * thlorenz_joined
03:09:11  * whit537quit (Quit: whit537)
03:09:45  * thlorenz_quit (Ping timeout: 264 seconds)
03:10:23  * damonoehlmanjoined
03:11:21  * mikealquit (Quit: Leaving.)
03:11:59  * mikealjoined
03:12:51  * damonoehlmanquit (Client Quit)
03:12:58  * AvianFlujoined
03:18:26  * mikealquit (Quit: Leaving.)
03:26:15  * i_m_caquit (Ping timeout: 276 seconds)
03:27:05  * thlorenz_joined
03:27:15  * kirbysayshiquit (Quit: kirbysayshi)
03:32:06  * thlorenz_quit (Ping timeout: 276 seconds)
03:32:16  * thlorenzquit (Remote host closed the connection)
03:37:54  * rannmannquit (Ping timeout: 264 seconds)
03:38:34  * calvinfoquit (Quit: Leaving.)
03:40:15  * thlorenzjoined
03:45:09  * thlorenzquit (Ping timeout: 264 seconds)
03:49:40  * thlorenzjoined
03:52:16  * thlorenz_joined
03:52:16  * thlorenzquit (Write error: Connection reset by peer)
03:54:19  * thlorenzjoined
03:54:19  * thlorenz_quit (Read error: Connection reset by peer)
03:56:19  * mikolalysenkoquit (Ping timeout: 264 seconds)
03:58:45  * thlorenzquit (Ping timeout: 245 seconds)
03:59:04  * thlorenzjoined
04:03:20  * thlorenzquit (Ping timeout: 245 seconds)
04:04:00  * thlorenzjoined
04:07:46  * i_m_cajoined
04:08:25  * thlorenz_joined
04:08:30  * thlorenzquit (Read error: Connection reset by peer)
04:08:59  * calvinfojoined
04:13:03  * thlorenz_quit (Ping timeout: 276 seconds)
04:13:34  * thlorenzjoined
04:14:35  * fotoveritejoined
04:14:36  * thlorenzquit (Read error: Connection reset by peer)
04:14:54  * thlorenzjoined
04:15:25  * ricardobeatjoined
04:17:51  * thlorenzquit (Read error: Connection reset by peer)
04:17:51  * thlorenz_joined
04:19:27  * thlorenzjoined
04:19:28  * thlorenz_quit (Read error: Connection reset by peer)
04:20:26  * thlorenzquit (Read error: Connection reset by peer)
04:20:57  * thlorenzjoined
04:22:16  * mikolalysenkojoined
04:22:16  * thlorenzquit (Read error: Connection reset by peer)
04:22:38  * thlorenzjoined
04:22:59  * ricardobeatquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
04:23:56  * thlorenzquit (Read error: Connection reset by peer)
04:24:20  * thlorenzjoined
04:26:43  * thlorenzquit (Read error: Connection reset by peer)
04:27:05  * thlorenzjoined
04:28:25  * AvianFluquit (Remote host closed the connection)
04:30:25  * mikolalysenkoquit (Ping timeout: 245 seconds)
04:31:27  * thlorenz_joined
04:31:54  * thlorenzquit (Ping timeout: 276 seconds)
04:33:12  * thlorenzjoined
04:33:22  * thlorenz_quit (Read error: Connection reset by peer)
04:36:36  * thlorenzquit (Read error: Connection reset by peer)
04:36:58  * thlorenzjoined
04:38:21  * thlorenz_joined
04:38:22  * thlorenzquit (Read error: Connection reset by peer)
04:38:57  * fotoveritequit (Quit: fotoverite)
04:40:10  * thlorenz_quit (Read error: Connection reset by peer)
04:40:26  * thlorenzjoined
04:42:49  * thlorenz_joined
04:42:49  * thlorenzquit (Read error: Connection reset by peer)
04:44:20  <substack>isaacs: streams3!!! what is this
04:44:23  * thlorenz_quit (Read error: Connection reset by peer)
04:44:54  * thlorenzjoined
04:48:46  * thlorenz_joined
04:49:10  * thlorenzquit (Ping timeout: 245 seconds)
04:49:44  * fotoveritejoined
04:52:46  * timoxleyquit (Remote host closed the connection)
04:54:00  * thlorenz_quit (Ping timeout: 276 seconds)
04:55:55  * thlorenzjoined
04:55:58  * vitorpachecojoined
04:59:43  * thlorenzquit (Read error: Connection reset by peer)
05:00:01  * thlorenzjoined
05:01:11  * mikolalysenkojoined
05:03:01  * mikealjoined
05:04:14  * thlorenzquit (Ping timeout: 240 seconds)
05:05:11  * mikealquit (Client Quit)
05:05:28  * thlorenzjoined
05:09:37  * thlorenzquit (Ping timeout: 240 seconds)
05:10:21  <defunctzombie>substack: hahahaha
05:10:50  * thlorenzjoined
05:12:04  * calvinfoquit (Quit: Leaving.)
05:12:35  <isaacs>substack: it's streams2 that works how you wish it would.
05:12:48  <isaacs>substack: https://github.com/joyent/node/commit/0f8de5e1f96a07fa6de837378d29ac5f2719ec60
05:12:55  <isaacs>substack: 3 = 2 | 1
05:13:04  <chapel>isaacs: why isn't the search input selected by default when you goto npmjs.org?
05:13:16  <chapel>can't even tab to it easily :(
05:13:20  <isaacs>chapel: because roughly 50% of people are super offended by that.
05:13:28  <isaacs>chapel: the other 50% (incl you) are super offended by not-that.
05:13:32  <chapel>lol
05:14:06  <chapel>I honestly don't see how having it selected affects other usage of the site
05:14:37  <chapel>where as not having it selected, I have to use a mouse (or touchpad in this case) to select it just to search
05:14:51  * chapelis a vim user, so keyboard is my natural state
05:15:17  * thlorenzquit (Ping timeout: 248 seconds)
05:15:25  * emilyroseintroduces chapel to the tab key
05:15:29  <substack>isaacs: what about the 'end' event?
05:16:13  <chapel>emilyrose: every time I try to tab, it doesn't go there easily
05:16:19  * thlorenzjoined
05:16:43  <chapel> 12 tab presses to get to the search input
05:16:49  <emilyrose>shift-tab?
05:17:04  <chapel>bottom of the page
05:17:07  <chapel>so even worse
05:17:30  <chapel>is the html for the npm homepage on github?
05:17:47  <emilyrose>auto-focus is a usability issue for people with screen readers tho
05:18:12  <chapel>thats fine, I'd be fine with one or two tabs
05:18:17  <chapel>12 is just too much though
05:18:19  * thlorenz_joined
05:18:32  <emilyrose>chapel, I only had to press it once
05:18:36  <emilyrose>for about 2.5 seconds
05:18:38  <emilyrose>;3
05:18:40  * thlorenzquit (Read error: Connection reset by peer)
05:19:22  <chapel>lol
05:19:25  <emilyrose>I think timoxley wrote an npm search provider though
05:19:32  <chapel>easy fix, add tabindex="1" to the input
05:19:42  <chapel>one tab press needed :)
05:21:55  * thlorenzjoined
05:22:31  <isaacs>substack: the 'end' event isn't changing
05:22:38  * thlorenz_quit (Ping timeout: 240 seconds)
05:22:41  <chapel>isaacs: https://github.com/isaacs/npm-www/pull/375
05:25:37  * thlorenz_joined
05:25:53  <isaacs>thanks
05:26:17  <chapel>no thank you :)
05:26:45  * thlorenz_quit (Read error: Connection reset by peer)
05:27:08  * thlorenz_joined
05:27:10  * thlorenzquit (Ping timeout: 276 seconds)
05:27:11  <chapel>isaacs: are you in east bay?
05:31:15  * thlorenz_quit (Ping timeout: 245 seconds)
05:31:32  * thlorenzjoined
05:33:50  * thlorenzquit (Read error: Connection reset by peer)
05:34:02  * thlorenzjoined
05:36:23  * thlorenzquit (Read error: Connection reset by peer)
05:36:54  * thlorenzjoined
05:39:02  * thlorenzquit (Read error: Connection reset by peer)
05:39:11  * thlorenzjoined
05:39:14  * nicholasfjoined
05:40:55  * thlorenz_joined
05:40:55  * thlorenzquit (Read error: Connection reset by peer)
05:42:19  <defunctzombie>isaacs: can't we just get libuv bindings and just build streams on top of that if we want?
05:43:35  * dguttmanquit (Quit: dguttman)
05:43:36  * thlorenz_quit (Read error: Connection reset by peer)
05:43:57  * nicholasfquit (Ping timeout: 264 seconds)
05:44:04  * thlorenzjoined
05:44:55  * mikealjoined
05:45:18  * mikealquit (Client Quit)
05:45:51  * thlorenzquit (Read error: Connection reset by peer)
05:45:59  * thlorenzjoined
05:47:36  * thlorenzquit (Read error: Connection reset by peer)
05:47:44  * thlorenzjoined
05:48:22  * mirkokieferjoined
05:49:24  * mikealjoined
05:50:08  * thlorenz_joined
05:50:21  * ricardobeatjoined
05:52:05  * thlorenzquit (Ping timeout: 248 seconds)
05:53:11  <dimadima>haha substack i linked streams3 to you the other day :D "Freenode/#node.js.log:31106:22:59 < dimadima_> and then i saw this the other day and it made me facepalm https://github.com/joyent/node/issues/5860" guess i shoulda highlighted you
05:53:50  <dimadima>3 = 2 | 1 is a pretty brilliant call though
05:54:23  * thlorenzjoined
05:54:24  * thlorenz_quit (Ping timeout: 240 seconds)
05:55:50  * thlorenz_joined
05:55:50  * thlorenzquit (Read error: Connection reset by peer)
05:57:55  * timoxleyjoined
05:59:39  * mikolalysenkoquit (Ping timeout: 276 seconds)
05:59:47  * thlorenz_quit (Read error: Connection reset by peer)
05:59:54  * thlorenzjoined
06:00:34  * mirkokieferquit (Quit: mirkokiefer)
06:02:42  * thlorenzquit (Read error: Connection reset by peer)
06:02:47  * thlorenz_joined
06:04:45  * thlorenzjoined
06:04:46  * thlorenz_quit (Read error: Connection reset by peer)
06:06:27  * fallsemoquit (Quit: Leaving.)
06:08:31  * thlorenz_joined
06:09:45  * thlorenzquit (Ping timeout: 264 seconds)
06:13:21  * thlorenz_quit (Ping timeout: 264 seconds)
06:14:03  * calvinfojoined
06:23:37  * jcrugzzquit (Ping timeout: 246 seconds)
06:32:05  * shamaquit (Remote host closed the connection)
06:50:38  * i_m_caquit (Ping timeout: 240 seconds)
06:57:42  * mcollinajoined
06:57:57  * st_lukejoined
06:59:23  * dominictarrjoined
06:59:58  * dominictarrquit (Client Quit)
07:00:35  * dominictarrjoined
07:02:43  <st_luke>defunctzombie: ah crap my bad, let me fix that other one
07:02:49  <defunctzombie>st_luke: ?
07:02:58  <st_luke>2fab66b
07:03:02  <st_luke>let me fix the other one
07:03:16  <defunctzombie>st_luke: also, you can get good test coverage if you use ./bin/process_university to run a whole term
07:03:31  <st_luke>defunctzombie: nice, didn't know that
07:03:33  <defunctzombie>that way you can see if it works for many sections, etc
07:03:40  <defunctzombie>without manually running it
07:03:55  <defunctzombie>use DEBUG=loader with that
07:03:59  <st_luke>defunctzombie: gotcha
07:04:00  <defunctzombie>and it will output some stuffs
07:04:19  <defunctzombie>otherwise, umd was good to go :)
07:04:25  <defunctzombie>running the data download now for the site
07:04:31  <defunctzombie>and will post about it tomorrow
07:04:42  <st_luke>sweet
07:05:56  * mikolalysenkojoined
07:06:51  * mcollinaquit (Read error: Connection reset by peer)
07:09:05  * thlorenzjoined
07:10:42  * mikolalysenkoquit (Ping timeout: 264 seconds)
07:13:57  * thlorenzquit (Ping timeout: 264 seconds)
07:16:37  * calvinfoquit (Quit: Leaving.)
07:21:10  * dominictarrquit (Quit: dominictarr)
07:22:37  * mirkokieferjoined
07:23:59  <defunctzombie>I want some mouse tracking stuff for websites
07:24:18  <defunctzombie>I feel like there should be an easy to setup solution for capturing mouse heatmaps and replaying them
07:25:31  * djcoinjoined
07:26:03  * mikealquit (Quit: Leaving.)
07:38:51  <st_luke>I thought there were some services for that
07:40:37  * mmckeggquit (Ping timeout: 256 seconds)
07:41:09  * mmckeggjoined
07:45:20  * jcrugzzjoined
07:47:56  * frankblizzardjoined
07:53:41  <defunctzombie>they all seem ghetto
08:01:26  * defunctzombiechanged nick to defunctzombie_zz
08:03:01  * mikealjoined
08:07:36  * st_lukequit (Remote host closed the connection)
08:09:29  * thlorenzjoined
08:09:58  * dominictarrjoined
08:13:57  * thlorenzquit (Ping timeout: 248 seconds)
08:14:05  * ins0mniajoined
08:20:33  * dominictarrquit (Quit: dominictarr)
08:39:51  * dominictarrjoined
09:09:53  * thlorenzjoined
09:13:54  * ricardobeatquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
09:14:05  * thlorenzquit (Ping timeout: 240 seconds)
09:18:08  * st_lukejoined
09:21:15  * jcrugzzquit (Ping timeout: 245 seconds)
09:23:06  * st_lukequit (Ping timeout: 276 seconds)
09:39:53  * thlorenzjoined
09:44:33  * thlorenzquit (Ping timeout: 276 seconds)
09:44:42  * nicholasfjoined
09:48:09  * jcrugzzjoined
09:53:08  * thlorenzjoined
09:56:13  * jibayjoined
09:56:53  * jcrugzzquit (Ping timeout: 248 seconds)
09:57:26  * thlorenzquit (Ping timeout: 240 seconds)
10:04:21  * thlorenzjoined
10:08:38  * thlorenzquit (Ping timeout: 240 seconds)
10:21:58  * thlorenzjoined
10:26:23  * thlorenzquit (Ping timeout: 240 seconds)
10:36:53  * missinglinkjoined
10:39:29  * thlorenzjoined
10:43:50  * thlorenzquit (Ping timeout: 240 seconds)
11:15:09  * spionjoined
11:31:26  <ins0mnia>dominictarr: https://npmjs.org/package/binarize.js
11:32:02  <dominictarr>I use this https://npmjs.org/package/msgpack-js
11:34:48  * mirkokieferquit (Quit: mirkokiefer)
11:35:40  <ins0mnia>dominictarr: me son woke up brb :)
11:40:06  * thlorenzjoined
11:40:06  <djcoin>By the way dominictarr, have you read my comment about your cipherlinks stuff ?
11:40:13  <djcoin>https://gist.github.com/dominictarr/5990143
11:40:38  <djcoin>cypherlink *
11:41:52  * thlorenz_joined
11:42:03  <dominictarr>okay, cool
11:42:12  <dominictarr>gists suck because there are no notifications
11:42:19  <dominictarr>I should move that to a blog post
11:43:45  <djcoin>Oh I didn't know there was no notification for gist - that sucks indeed. I would have reached you earlier
11:44:17  <dominictarr>djcoin: that looks interesting!
11:44:28  <djcoin>Yeah
11:44:35  * thlorenzquit (Ping timeout: 245 seconds)
11:45:58  <djcoin>The project is quite appealing
11:46:21  <dominictarr>djcoin: this is great to hear!
11:46:48  <djcoin>:)
11:46:58  <dominictarr>Although, I really don't get much idea of CCNx from the website
11:46:59  <djcoin>Honnestly, having this implemented in javascript
11:47:02  <djcoin>would be just awesome
11:47:21  <djcoin>honestly *
11:47:34  <djcoin>Yeah, but you may find a paper or two on it
11:47:46  <djcoin>http://www.ccnx.org/documentation/content-centric-networking-resources-2/
11:48:07  <dominictarr>what is the CCNx idea, in a nutshell? is it like kademlia?
11:48:16  <djcoin>I worked on it a bit
11:48:21  <djcoin>I don't know much kadmelia
11:49:22  <dominictarr>djcoin: you worked at PARC?
11:50:00  <djcoin>From what I understood (as I worked on it a bit). CCNx is a network protocol which enable distributed content. You request some content using some hierarchical "content url" like ccnx://image/cat
11:50:30  <djcoin>and the content is fetched through the network. Intermediate routers forward the request and update their cache accordingly
11:50:37  <djcoin>and everything is signed
11:51:12  <djcoin>public key are being passed around in some way (didn't quite understood how yet)
11:51:42  <djcoin>dominictarr: No, I just happened to work during 3 months on measuring some video streaming protocol over CCNx
11:52:08  <djcoin>but I was just here setting the experiment, measuring and graphing. But I had and wanted to understand some stuff
11:52:19  <djcoin>in a small company
11:54:00  <djcoin>A content is cut in chunks too and signed, etc.
11:54:25  <djcoin>(Same link has I gave in the gist: http://www.ccnx.org/releases/latest/doc/technical/ContentObject.html)
11:54:33  <dominictarr>how does the PKI work? CA? or something more like PGP?
11:55:13  <dominictarr>in your URL, are image/cat hashes? or are they still text?
11:55:55  <djcoin>As I told you, i don't know much about the key. But you may be "free" of choosing some technics.
11:56:12  <djcoin>in the url, image/cat can point to whatever content there is here
11:56:38  <djcoin>image/cat/<hash> to a specific content
11:57:06  <djcoin>(If you don't have the complete url it will take somehow the most recent one available)
11:57:27  <djcoin>image/cat/<hash>%chunk01
11:57:58  <djcoin>this is vaguely how it works
11:58:42  <djcoin>The content is signed, the signed info contains the publisher public key digest
11:58:53  <djcoin>up to you how you give this pk
11:59:09  <djcoin>but it can be iirc a special/reserved url
11:59:51  <djcoin>(btw i guess url is not the correct name - but anyway)
12:00:15  * No9joined
12:02:45  * timoxleyquit (Remote host closed the connection)
12:03:09  <dominictarr>djcoin: okay, that makes sense.
12:05:49  * thlorenzjoined
12:10:21  * thlorenzquit (Ping timeout: 264 seconds)
12:11:04  <ins0mnia>dominictarr: problem is the binary data seem to decode 33% larger in size
12:11:25  <dominictarr>djcoin: msg-pack should be smaller
12:12:12  <dominictarr>if you use json-buffer, then it's base64
12:12:16  * yorickjoined
12:12:19  <dominictarr>but that works on old browsers
12:25:30  * thlorenzjoined
12:30:00  * thlorenzquit (Ping timeout: 245 seconds)
12:31:33  * maksimlinquit (Ping timeout: 248 seconds)
12:31:38  * tmcwjoined
12:34:22  * whit537joined
12:37:12  * thlorenzjoined
12:41:23  * thlorenzquit (Ping timeout: 240 seconds)
12:43:11  * whit537quit (Quit: whit537)
12:46:09  * thlorenzjoined
12:48:34  * thlorenzquit (Read error: Connection reset by peer)
12:48:51  * thlorenzjoined
12:50:27  * kevino80joined
12:50:44  * thlorenzquit (Read error: Connection reset by peer)
12:51:12  * thlorenzjoined
12:53:11  * kevino80quit (Remote host closed the connection)
12:55:31  * thlorenzquit (Ping timeout: 240 seconds)
12:56:21  * thlorenzjoined
12:57:21  * whit537joined
12:57:50  * jcrugzzjoined
13:00:03  * AvianFlujoined
13:00:24  * thlorenzquit (Ping timeout: 241 seconds)
13:00:41  * thlorenzjoined
13:01:53  * jcrugzzquit (Ping timeout: 240 seconds)
13:01:56  * fallsemojoined
13:02:05  * mirkokieferjoined
13:02:41  * tmcwquit (Remote host closed the connection)
13:04:53  * thlorenzquit (Ping timeout: 240 seconds)
13:04:57  * thloren__joined
13:07:01  * thlorenz_quit (Remote host closed the connection)
13:09:57  * thloren__quit (Ping timeout: 276 seconds)
13:10:30  * thlorenzjoined
13:11:46  * thlorenz_joined
13:11:47  * thlorenzquit (Read error: Connection reset by peer)
13:12:31  * AvianFluquit (Ping timeout: 264 seconds)
13:12:33  * tmcwjoined
13:13:25  * jolissquit (Quit: joliss)
13:14:05  * AvianFlujoined
13:14:56  * thlorenz_quit (Read error: Connection reset by peer)
13:14:59  * thlorenzjoined
13:16:31  * thlorenz_joined
13:16:32  * thlorenzquit (Read error: Connection reset by peer)
13:18:01  * thlorenzjoined
13:18:01  * thlorenz_quit (Read error: Connection reset by peer)
13:18:22  * AvianFluquit (Remote host closed the connection)
13:19:38  * thlorenz_joined
13:19:38  * thlorenzquit (Read error: Connection reset by peer)
13:20:04  * fallsemoquit (Quit: Leaving.)
13:21:02  * thlorenz_quit (Read error: Connection reset by peer)
13:21:21  * thlorenzjoined
13:23:41  * thlorenzquit (Read error: Connection reset by peer)
13:24:03  * thlorenzjoined
13:28:14  * thlorenzquit (Ping timeout: 240 seconds)
13:28:38  * thlorenzjoined
13:30:20  * thlorenz_joined
13:30:20  * thlorenzquit (Read error: Connection reset by peer)
13:33:49  * thlorenz_quit (Read error: Connection reset by peer)
13:34:01  * thlorenzjoined
13:35:32  * thlorenz_joined
13:35:32  * thlorenzquit (Read error: Connection reset by peer)
13:36:59  * ednapiranhajoined
13:37:01  * thlorenz_quit (Read error: Connection reset by peer)
13:37:33  * thlorenzjoined
13:38:31  * fallsemojoined
13:39:27  * thlorenzquit (Read error: Connection reset by peer)
13:39:37  * thlorenzjoined
13:41:53  * thlorenz_joined
13:41:53  * thlorenzquit (Read error: Connection reset by peer)
13:43:33  * thlorenzjoined
13:43:33  * thlorenz_quit (Read error: Connection reset by peer)
13:48:19  * kevino80joined
13:48:30  * fallsemoquit (Quit: Leaving.)
13:59:27  <thlorenz>Domenic_: ping
14:05:40  * mikolalysenkojoined
14:24:51  <Domenic_>thlorenz: pong
14:26:15  <thlorenz>Just wanted your opinion on structuring an app into a pages and a data server
14:26:43  <thlorenz>Domenic_: https://github.com/thlorenz/see-eat-sleep/tree/master/see has one server dir right now
14:27:10  <Domenic_>thlorenz: seems bad
14:27:13  <thlorenz>but I wanna make that a servers dir which has /pages (express) and /api (restify) sub dirs
14:27:56  <thlorenz>each of those will have its own /middleware /routes /lib, etc. dirs
14:28:05  <thlorenz>Domenic_: does that make sense?
14:28:17  * fallsemojoined
14:28:18  <Domenic_>seems good. those are top-level? normally i would do different repos but i guess that's less good for a demo app
14:28:44  <Domenic_>restify doesn't do middleware, of course... be careful not to ape express structure too closely
14:28:52  <thlorenz>Domenic_: the servers themselves live in bootstrap app
14:28:53  <thlorenz>'ok
14:29:08  <thlorenz>the sub apps only define routes, etc.
14:29:19  <Domenic_>what does the bootstrap app do
14:29:50  <thlorenz>right now it stands up the express server, builds bundle, etc
14:29:52  <Domenic_>child_process.spawn(process.execPath, 'api/server.js'); child_process.spawn(process.execPath, 'pages/server.js') I guess?
14:30:01  <Domenic_>no bundle-building should be done as part of express app
14:30:08  <thlorenz>it is
14:30:09  <Domenic_>preferably using browserify-middleware
14:31:00  <Domenic_>i can't see much use for the top-level app besides maybe a convenience script that starts both servers at once, runs both sets of tests at once, etc.
14:31:01  <thlorenz>Domenic_: this is the build script that runs when the /bundle.js route is hit: https://github.com/thlorenz/see-eat-sleep/blob/master/bootstrap/lib/build.js
14:31:31  <thlorenz>Domenic_: the top level app is what will actually run as the full web page
14:31:33  <Domenic_>thlorenz: booo, use an existing solution instead of rolling your own.
14:31:43  <Domenic_>thlorenz: that doesn't make sense. but, have a call now, bbiab
14:31:56  <thlorenz>Domenic_: I tried, nothing integrated well enough with mocha/phantom/browserify
14:32:09  <thlorenz>ok
14:35:34  * mikealquit (Quit: Leaving.)
14:37:07  * AvianFlujoined
14:42:28  <Domenic_>back
14:42:47  <Domenic_>zuul has worked really well for me for running browserify + mocha tests
14:43:06  <Domenic_>here is an example https://github.com/kriskowal/asap/tree/tests-rewrite
14:46:46  <thlorenz>Domenic_: I looked at and tried zuul
14:47:10  <thlorenz>id didn't allow me to provide my own build script
14:47:53  <thlorenz>Domenic_: I agree that whereever possible existing solutions are preferable, but if it makes your life so much harder writing your own script may be the better option
14:48:26  <thlorenz>also that build script is quite simple and leverages existing libs
14:49:09  <Domenic_>sigh. strong disagree on build script being simple. i have no idea what's going on there. newbies will be very turned off. "To get browserify working and running my tests i need to write something like this? I'd never in a million years know how to write this! I'm going back to RequireJS now, where things just worked."
14:50:00  <thlorenz>that's a draw back, but I needed to be able to inject shims (wrapped and from script tags) dynamically and the same for entries to be able to use this from different sub apps
14:50:25  <Domenic_>why is this used from different sub-apps
14:50:41  <thlorenz>cause they need to be able to run and be tested on their own
14:50:49  <Domenic_>what are subapps
14:50:57  <thlorenz>like see is one
14:51:06  <thlorenz>you can run it by itself and test it as well
14:51:15  <thlorenz>i.e. cd see && npm test
14:51:27  <thlorenz>but it will also be part of the actual app
14:51:40  <Domenic_>then it should be its own bundle.js
14:51:48  <thlorenz>same for core you can run/test on its own, but it is used by see to provide templates etc.
14:51:53  <Domenic_>either it's isolated or it's not
14:52:11  <thlorenz>good point, I'll see how I could make that work
14:52:55  <Domenic_>its own transforms etc.
14:53:02  <thlorenz>see does have that
14:53:09  <thlorenz>it builds its own bundle
14:53:20  <Domenic_>then this build.js should have no knowledge of that
14:53:33  <Domenic_>it should be basically a concat of three bundles
14:53:37  <thlorenz>it doesn't
14:53:49  <thlorenz>ah, good point
14:53:50  <Domenic_>then why does it exist
14:53:59  <thlorenz>for the shims etc.
14:54:14  <Domenic_>does see depend on shims or does it not?
14:54:29  <Domenic_>if it depends on shims that should be part of see
14:54:32  <thlorenz>I wanted to make it easy to configure an app, like so: https://github.com/thlorenz/see-eat-sleep/blob/master/see/dev-test.js
14:55:05  <thlorenz>Domenic_: shims get passed into it, so it's not depending on them, but I'm intruiged by the separate bundles idea
14:55:29  <Domenic_>so it does require('jquery') but never declares the jQuery shim config? seems bad.
14:55:48  <thlorenz>but it requires core which does
14:56:02  <Domenic_>still a bad encapsulation break
14:56:12  <Domenic_>node's require doesn't work that way
14:56:16  <thlorenz>Domenic_: https://github.com/thlorenz/see-eat-sleep/blob/master/see/config/shims.js#L13
14:56:23  <thlorenz>hm
14:56:26  <Domenic_>you can't require some module and all of a sudden its dependencies are now available to you
14:56:48  <Domenic_>hmm that code doesn't seem so bad
14:56:51  <thlorenz>no, you explicitly include its shims (like jqurey)
14:57:11  <Domenic_>yeah i think i misunderstood
14:57:28  <thlorenz>ok, well about the separate bundles
14:57:30  <Domenic_>ok, so why does build.js exist---what does it have to do with shims.
14:57:40  <thlorenz>it needs to add them to the bundle
14:58:03  <thlorenz>I chose to create one bundle to avoid duplicates in separate bundles
14:58:35  <thlorenz>i.e. if see and core each include their own underscore, I'd end up with it twice
14:58:37  <Domenic_>i guess i don't think subapps should be a real thing, for exactly this reason
14:58:48  <thlorenz>what do you mean?
14:58:58  <thlorenz>you think it can't be done properly?
14:59:19  <Domenic_>i think if they are part of the same app they are intrinsically entangled in concern boundaries
14:59:53  <Domenic_>trying to pretend they are completely separate will cause all kinds of headaches like these when you then are like "but, let's not duplicate! let's make sure to minimize http requests!" etc.
14:59:56  <thlorenz>they'll be pulled into separate repos and just will reference bootstrap and core (only entanglement)
15:00:10  <Domenic_>no, that is definitely not the only entanglement
15:00:22  <Domenic_>the fact that a meta-server and meta-build-script even exists is a huge entanglement.
15:00:40  <thlorenz>how is that different from a grunt task?
15:00:47  <Domenic_>if they were actually separate they would be capable of running on entirely different servers
15:00:51  <Domenic_>when did i mention grunt?
15:00:54  <thlorenz>:)
15:01:04  <thlorenz>well, they could because they can install bootstrap
15:01:24  <Domenic_>the problem with the build script is not that it's a build script. it's that it's a build script that exists precisely to de-entangle things which are pretending to be separate.
15:01:25  <thlorenz>bootstrap is just a utility module
15:01:35  * rannmannjoined
15:01:35  * rannmannquit (Changing host)
15:01:35  * rannmannjoined
15:01:46  <thlorenz>hm, interesting, will definitely think about this some more
15:01:51  <Domenic_>IMO an app is an app. should be a single repo.
15:02:12  <Domenic_>reusable, or even just semi-reusable, pieces can be pulled out into packages which you then use.
15:02:14  <thlorenz>ah, so you don't think the concept itself is valid?
15:02:31  <thlorenz>I'm just trying to separate so you can work on pieces of the app in isolation
15:02:49  <Domenic_>it would be cool if that worked
15:02:54  <thlorenz>not to publish and/or run for real eparately
15:03:10  <Domenic_>but i think it needs to be a lot more decoupled, and allow for probable code duplication, for that to work.
15:03:12  <thlorenz>I'll keep trying - if I fail, then at least I did
15:03:19  <Domenic_>i think you'll succeed :)
15:03:29  <Domenic_>i just think it might not be something simple enough for anyone else to understand or want to base things off of
15:03:51  <thlorenz>I agree, so this is just an example, not a framework
15:04:08  <Domenic_>sure, but, the point of examples would be for people to read and understand them I assume.
15:04:19  <Domenic_>"subapps" would only work in my mind for very different parts of a site. e.g. github.com and gist.github.com
15:04:45  <Domenic_>where each has its own express server, it's own bundle.js, etc.
15:05:10  <Domenic_>i could be wrong!
15:05:12  <Domenic_>but that is my feeling.
15:05:14  <thlorenz>ah, so you actually run them as subapps in prod
15:05:18  <thlorenz>got it
15:05:45  <thlorenz>well I'm trying to have different subapps contribute to content of ONE page
15:05:55  <thlorenz>we'll see if that works out :)
15:06:23  <thlorenz>Domenic_: thanks for your input, will keep all this in mind - acutally will post this conversation into issues if you don't mind
15:06:47  <Domenic_>thlorenz: sounds good, and always happy to discuss :). hope i'm not too discouraging.
15:07:08  <thlorenz>no its ok to be asked the hard questions sometimes :)
15:17:34  * dguttmanjoined
15:21:04  * frankblizzardquit (Remote host closed the connection)
15:21:05  * shamajoined
15:26:35  * mikealjoined
15:36:13  * mikolalysenkoquit (Ping timeout: 276 seconds)
15:39:46  * mirkokieferquit (Ping timeout: 246 seconds)
15:47:08  * kevino80quit (Remote host closed the connection)
15:49:06  * mikolalysenkojoined
15:59:22  * kevino80joined
16:00:06  * mikealquit (Quit: Leaving.)
16:01:08  * tilgovijoined
16:06:26  * mcollinajoined
16:09:23  * mikolalysenkoquit (Ping timeout: 240 seconds)
16:12:31  * soldairjoined
16:18:18  * dominictarrquit (Quit: dominictarr)
16:24:03  * thlorenzquit (Remote host closed the connection)
16:25:31  * thlorenzjoined
16:29:57  * thlorenzquit (Ping timeout: 248 seconds)
16:32:07  * thlorenzjoined
16:36:07  * mikealjoined
16:37:18  * thlorenzquit (Ping timeout: 276 seconds)
16:38:26  * thlorenzjoined
16:43:10  * thlorenzquit (Ping timeout: 256 seconds)
16:57:35  * stagasjoined
16:59:23  * rannmannquit (Remote host closed the connection)
16:59:42  * thlorenzjoined
17:00:57  * calvinfojoined
17:01:13  * mirkokieferjoined
17:02:13  * st_lukejoined
17:03:43  * tmcwquit (Remote host closed the connection)
17:04:55  * rannmannjoined
17:05:15  * tilgoviquit (Remote host closed the connection)
17:07:22  * mcollina_joined
17:08:53  * mcollinaquit (Ping timeout: 248 seconds)
17:11:31  * AvianFluquit (Remote host closed the connection)
17:13:31  * dguttmanquit (Quit: dguttman)
17:13:36  * tmcwjoined
17:18:33  * keslajoined
17:19:16  * jibayquit (Quit: Leaving)
17:19:44  * AvianFlujoined
17:23:43  * mikolalysenkojoined
17:24:37  * defunctzombie_zzchanged nick to defunctzombie
17:26:24  <Raynos>Domenic_: subapps work quite well
17:26:44  <Raynos>We've been running one browserify entry point per page in a multi page application for a long time
17:27:09  * ricardobeatjoined
17:30:00  * keslaquit (Ping timeout: 245 seconds)
17:35:41  * dominictarrjoined
17:41:02  * mcollina_quit (Remote host closed the connection)
17:41:37  * mcollinajoined
17:41:40  * mirkokieferquit (Quit: mirkokiefer)
17:45:50  * mcollinaquit (Ping timeout: 245 seconds)
17:52:01  * djcoinquit (Quit: WeeChat 0.4.0)
17:53:16  <dimadima>https://github.com/substack/tape/blob/master/lib/test.js#L355 <- "should throw" should be "should not throw" on that line, right?
17:55:30  * mirkokieferjoined
17:59:59  * ricardobeatquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
18:00:47  <dimadima>people in here use tape, right? so it's not a bad question for this chan?
18:02:42  * Kesslerjoined
18:02:52  * mirkokieferquit (Quit: mirkokiefer)
18:04:56  * evboguejoined
18:09:15  * defunctzombiechanged nick to defunctzombie_zz
18:20:37  * ricardobeatjoined
18:20:46  * defunctzombie_zzchanged nick to defunctzombie
18:21:08  * mirkokieferjoined
18:22:06  * ednapira_joined
18:23:50  <soldair>dimadima: seems like it
18:24:05  * mirkokieferquit (Client Quit)
18:25:09  * ednapiranhaquit (Ping timeout: 248 seconds)
18:31:18  * dguttmanjoined
18:36:53  * missinglinkquit (Ping timeout: 248 seconds)
18:41:05  * mk30_joined
18:45:34  * st_lukequit (Read error: Connection reset by peer)
18:45:36  * defunctzombiechanged nick to defunctzombie_zz
18:47:08  * st_lukejoined
18:50:27  * defunctzombie_zzchanged nick to defunctzombie
18:50:52  * spionquit (Ping timeout: 246 seconds)
18:54:36  <thlorenz>Raynos: I'm bound to find out - working hard on it - currently trying to add restify as API server, but npm is ssooooooo slow right now
18:55:02  <thlorenz>Raynos: https://github.com/thlorenz/see-eat-sleep/tree/servers
18:58:34  * mikolalysenkoquit (Ping timeout: 246 seconds)
18:59:19  * ednapira_quit (Remote host closed the connection)
18:59:54  <thlorenz>anyone else having problems with npm repo?
19:00:06  <thlorenz>I'm at my third attempt trying to install restify
19:15:05  <thlorenz>Domenic_: restify has server.use(function (req, res, next) ... -- isn't that middleware?
19:15:32  <thlorenz>http://mcavage.me/node-restify/#Common-handlers:-server.use()
19:16:00  <mikeal>thlorenz: i think that is a compatibility layer to support connect componenets
19:16:33  <thlorenz>mikeal: ah, thanks - so it is not recommended practice to use middleware with restify then I guess?
19:16:44  <thlorenz>not that I'm planning too ;)
19:16:52  <mikeal>IMO, middleware is not recommended anywhere for any reason :)
19:17:00  <mikeal>have no idea what the restify opinion might be
19:17:18  <thlorenz>mikeal: agreed - except maybe for a request logger and such
19:17:36  <mikeal>that can just be a module that attaches to events
19:18:00  <mikeal>no need to build stacks, we can all just use modules :)
19:20:13  * mikolalysenkojoined
19:20:44  <thlorenz>mikeal: I guess you are talking about http://nodejs.org/api/http.html#http_event_request ?
19:21:19  <mikeal>all the events you want to log, listen to them and log them :)
19:21:37  <thlorenz>got it, thanks
19:40:07  * stagasquit (Ping timeout: 264 seconds)
19:47:24  <isaacs>chapel: yew.
19:47:32  <isaacs>chapel: i am in the easy bay
19:55:16  * mikolalysenkoquit (Ping timeout: 268 seconds)
19:55:46  * mikolalysenkojoined
20:01:08  <AvianFlu>lol the easy bay
20:02:04  * dominictarrquit (Quit: dominictarr)
20:04:40  * Kesslerquit (Ping timeout: 264 seconds)
20:04:50  <AvianFlu>O HEY LOUDBOT, LONG TIME NO SHOUT
20:04:51  <LOUDBOT>THATS OBVIOUSLY ENCRYPTED TEXT FOR [INSERTAWESOMENAMEHERE]
20:05:12  <AvianFlu>DAMN! YOU FOILED MY SECRET SCHEME AGAIN
20:05:13  <LOUDBOT>YOU MAY LEAVE THE LAVATORY IF THE GREEN EXIT LIGHT IS ON OVER THE DOOR. IF THE RED LIGHT IS ILLUMINATED, ONE OF THE LAVATORY FACILITIES IS NOT PROPERLY SECURED. PRESS THE “STEWARDESS” CALL BUTTON ON THE RIGHT OF THE DOOR. SHE WILL SECURE ALL FACILITIES FROM HER CONTROL PANEL OUTSIDE. WHEN GREEN EXIT LIGHT GOES ON YOU MAY OPEN THE DOOR AND LEAVE. PLEASE CLOSE THE DOOR BEHIND YOU.
20:05:22  <mbalho>BRATWURSTS
20:08:58  <evbogue>Mmmm, bratwursts.
20:10:05  * ednapiranhajoined
20:10:32  <AvianFlu>jesusabdullah: ping
20:10:35  <Domenic_>thlorenz: no, they're plugins. they are not used in the same way as middleware, generally. but perhaps conflating the two won't do too much harm and will make it easier to learn.
20:14:06  <gwenbell>bratbot?
20:14:12  * ednapiranhaquit (Remote host closed the connection)
20:15:13  <thlorenz>Domenic_: thanks makes sense
20:15:27  <thlorenz>went with mikeal 's suggestion: https://github.com/thlorenz/see-eat-sleep/blob/servers/bootstrap/lib/api/dev-server.js#L24
20:15:52  <thlorenz>so the only advantage of middleware/plugins over events is that you get order with the former?
20:16:45  <substack>you got the order handled for you
20:16:52  * ednapiranhajoined
20:16:57  <substack>but that can be hindering more than helpful
20:18:31  <thlorenz>substack: but what if I have a json consumer for instance and a to-json converter, then the converter needs to run first - cannot do that with events right?
20:18:54  <thlorenz>very contrived, playing devil's advocate, to fully understand this :)
20:20:33  * isaacs_mobilejoined
20:20:41  <substack>that sounds like something you can use pipes to solve?
20:20:54  <substack>streams rather
20:20:57  <substack>converter.pipe(consumer)
20:24:20  <chapel>isaacs: talk about late response :P cool, I live in santa clara now, work for walmartlabs but not with eran
20:25:55  <Domenic_>i think middleware have a place, for conveniently inserting ordered asynchronous steps mapped to specific routes or subsets of routes. The `(req, res, next)` paradigm might not be perfect, but it's pretty convenient; I haven't seen anything better.
20:26:20  <Raynos>thlorenz: that repo has WAY too much code
20:26:30  <thlorenz>Raynos: It'll be split up
20:26:56  <Raynos>thlorenz: and its coupled to this weird ses framework
20:27:03  <thlorenz>I'm trying to show how you can start building your app as subapps even though you are limited to one private repo for instance
20:27:07  <Domenic_>hehe that threw me off too
20:27:12  <Domenic_>it's not ses as in secure ecmascript
20:27:16  <Domenic_>it's ses as in see eat sleep
20:27:56  <thlorenz>it's the app, so things are namespaced to it, in order to allow publishing and css styling without confilcts
20:28:28  <Raynos>thlorenz: it hurts my head to look at that :p
20:28:34  <thlorenz>Raynos: I'll create a branch 'big-app' once it's all working and then I'll split it up on another branch
20:28:37  <Raynos>I also want to do subapps
20:28:41  <Raynos>but I would call it feature folders
20:28:55  <thlorenz>yep, that's what they are - features
20:28:56  <Raynos>you have a folder with an index.js that module.exports a function(req, res)
20:29:01  <Raynos>and thats it
20:29:10  <Raynos>then you have a server.js at the root
20:29:14  <evbogue>substack: just had bouncy crash again. Sent out a email to list, first 30 clicks brought bouncy down. ulimit -n set to 64000, so it's not that. Any ideas?
20:29:20  <Raynos>that just does router.addRoute("feature", require("./feature"))
20:29:32  <thlorenz>but what about standing them up/testing in isolation and templates and css?
20:29:32  <substack>evbogue: probably leaking a fd someplace then
20:29:47  <evbogue>what is an fd?
20:30:17  <substack>file descriptor
20:30:23  <evbogue>k
20:30:31  <Raynos>thlorenz: easy
20:30:39  <Raynos>tree based routing
20:30:41  <thlorenz>Raynos: love to discuss these options of restructuring things in detail once I have a working example
20:30:57  <Raynos>so /feature1/static & /feature2/static & /feature1/js & /feature2/js & etc etc
20:31:13  <thlorenz>sounds like if all of our ideas come together we could come up with something good
20:31:35  <Raynos>thlorenz: agreed, i can collaborate by building something similar to what your doing with different ideas but the same app
20:31:56  <evbogue>substack would you guess this to be in my code, or bouncy's code?
20:32:13  <substack>evbogue: it could be either one
20:32:25  <thlorenz>Raynos: that'd be awesome - possibly something that solves same problem with similar technologies (including Handlebars partials/templates)
20:32:32  <thlorenz>but with different architectures
20:32:37  <substack>evbogue: wait, what was the error?
20:32:54  <Raynos>thlorenz: not touching handlebars. ill use a templating language with a real module system like javascript
20:33:05  <thlorenz>Raynos: :)
20:33:16  <evbogue>substack: let me see if I can find the error
20:34:06  <thlorenz>didn't have all options here - this is also serving as a prototype for a site we are building here at work and some things were dictated to me, although Handlebars is quite nice expecially when used with hbsfy
20:35:28  <evbogue>substack: I wasn't saving the output of bouncy to anywhere, I'll do this and report any errors if it crashes again.
20:36:13  * isaacs_mobilequit (Remote host closed the connection)
20:37:43  <Raynos>thlorenz: fair enough, I would use tech similar to the tech i use in production :p
20:37:46  * dominictarrjoined
20:37:47  * whit537quit (Read error: Connection reset by peer)
20:37:59  * whit537joined
20:39:02  <thlorenz>Raynos: keep in mind that each app(feature) can run on its own after installing its dependents
20:39:17  <Raynos>thlorenz: for some value of on it's own yes
20:39:23  <thlorenz>i.e. see just installs bootstrap and core and can run tests and a dev server
20:39:39  <Raynos>this is also an important thing I want
20:39:41  * spionjoined
20:39:43  <Raynos>to be able to run a single page
20:39:59  <thlorenz>Raynos: mainly so a dev could develop in isolation w/out needing to stand up the entire app
20:40:25  <thlorenz>and also only has to run the tests local to the feature he is working on
20:40:52  <thlorenz>Raynos: it also allows rolling back versions of certain features if they break the app
20:41:18  <Raynos>i care about independent iteration
20:41:21  <Raynos>and scaffolding
20:41:32  <Raynos>also fuck off require("../../../common")
20:42:02  <thlorenz>Raynos: exactly what I'm after
20:42:09  <substack>scaffolding?
20:42:24  <Raynos>yes there is a lot of boilerplate in our current codebase
20:42:30  <Raynos>it should be solved with modules
20:42:34  <thlorenz>once I figure out how it works, I'll create a template for a feature app, so you can easily add new features
20:42:36  <Raynos>but scaffolding is not a bad temporary solution
20:43:36  <thlorenz>Raynos: I tried to keep most boilerplate in bootstrap, but some is there to be explicit instead of implicit (like config/directories)
20:43:49  <thlorenz>it should have not too much magic and be configurable
20:44:05  <Raynos>there should be no bootstrap
20:44:07  <Raynos>bootstrap is bullshit
20:44:10  <Raynos>core is bullshit too
20:44:18  <Raynos>although maybe core isnt bad
20:44:23  <Raynos>I just call core server.js I guess
20:44:26  <thlorenz>core will have common things they all need
20:44:48  <thlorenz>bootstrap is just so that not every feature needs to have its own server
20:44:52  <Raynos>npm has common things they all need
20:45:03  <Raynos>a cli can be used to avoid having each feature need its own server
20:45:12  <thlorenz>Raynos: but looking forward to a solution that does away with bootstrap
20:45:14  <thlorenz>:)
20:45:30  <Raynos>thlorenz: document the interaction of the app and the split up of features and ill take a stab tonight
20:46:20  <thlorenz>Raynos: still need a bit more time before that, give me til next week with it, I don't wanna split up/document until I covered most use cases and can see if it works
20:46:53  <Raynos>thlorenz: well i dont care about the docs of the code, i care more about the scope of the app so I can build something with similar app features
20:47:04  <Raynos>i could figure it out I guess
20:47:07  <Raynos>ill just figure it out
20:47:11  <thlorenz>:)
20:47:17  <thlorenz>you can just run it
20:47:37  <thlorenz>i.e. clone ; cd see-eat-sleep/see && npm i && npm ts
20:47:53  <thlorenz>that will run see tests (obviously)
20:48:35  * kenperkinsquit (Quit: Textual IRC Client: http://www.textualapp.com/)
20:48:50  <jjjohnny_>dominictarr: whats the name of that tree variant you were on about?
20:49:01  <dominictarr>poset?
20:49:06  <st_luke>server.on('close') fires as soon as the server closes to new connections, right? like nothing to do with finishing existing requests
20:49:20  <jjjohnny_>the one needed for doing your replications
20:49:28  <dominictarr>jjjohnny_: merkle tree
20:49:34  <thlorenz>Raynos: forgot to mention - use servers branch - working on that currently
20:49:44  <jjjohnny_>thats the one
20:49:50  <dominictarr>st_luke: server.close() doesn't actually close the server until all the connections have ended
20:50:02  <st_luke>dominictarr: thanks
20:50:21  <dominictarr>emitting close when the server wants to close is probably most useful
20:50:29  <jjjohnny_>dominictarr: is a tree fundamentally a way of storing data, looking at it, or parsing it?
20:50:48  <dominictarr>because then each connection can have a listener that knows when to try and shutdown
20:50:59  <dominictarr>jjjohnny_: it's unrelated to storing data
20:51:21  <jjjohnny_>would parsing be an adequate description of how one uses a tree?
20:51:23  <st_luke>dominictarr: this is for as far as killing a worker after the domain errors and ensures the request are finished
20:51:29  <dominictarr>it's used to compare two possibly overlaping sets
20:52:02  <dominictarr>st_luke: http server?
20:52:07  <st_luke>dominictarr: yes
20:52:08  <st_luke>it doesn't seem like wrapping each request in its own domain is a good idea
20:52:30  <dominictarr>st_luke: hmm… but I thought that was the intended use of domains?
20:52:31  <st_luke>if a domain results in a whole worker getting killed them the domain should be at worker level, not req level imo
20:52:33  <Raynos>thlorenz: cool
20:52:51  <dominictarr>st_luke: if you don't have long lived connections
20:53:11  <dominictarr>ie, you send a file, and then end - that is short
20:53:25  * mk30_quit (Ping timeout: 250 seconds)
20:53:27  <st_luke>dominictarr: yes, that's mainly what's going on here
20:53:30  <dominictarr>long would be, like, a continuois live feed
20:53:43  <dominictarr>so, if you only have short REST style responses
20:53:46  <st_luke>but you would still kill the whole worker in that case
20:53:59  <st_luke>its not like you use a single worker per request or connection
20:54:09  <dominictarr>then you can probably just kill the worker when the last stream closes
20:54:17  <st_luke>right
20:54:37  <dominictarr>hmm… in that case you'd want server.on('close', to happen when all the streams have closed)
20:54:53  <dominictarr>easy to just keep a count of currently running streams, though.
20:55:27  <dominictarr>jjjohnny_: so, I'd use the word "handshake"
20:55:56  <dominictarr>a merkle tree allows two nodes to handshake and figure out if either side has data the other side doesn't
20:56:40  <st_luke>dominictarr: wouldn't server.close() worry about that not run the callback until that's all set?
20:57:27  <dominictarr>st_luke: can't parse that setence, can you try that one again?
20:58:16  <st_luke>dominictarr: server.close(function () { process.exit() })
20:58:35  <dominictarr>oh
20:58:43  <dominictarr>I didn't know it took a callback
20:58:44  <st_luke>sorry if I wasnt explaining it well
20:58:59  <st_luke>dominictarr: yea, looks like it might not be documented, or if it is im missing it
20:59:36  * ednapiranhaquit (Remote host closed the connection)
21:00:11  <dominictarr>well, the pattern where a function arg is a shorthand to do an action and set a listener
21:00:31  <dominictarr>like net.createServer().on('connection', onConnection)
21:00:40  <dominictarr>=== net.createServer(onConnection)
21:00:51  * ricardobeatquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
21:01:05  <dominictarr>st_luke: so, question is: when does server.on('close', …) fire?
21:02:02  <st_luke>dominictarr: yeah, that's it :)
21:02:12  * ricardobeatjoined
21:02:42  <st_luke>it's server.close(function onClose() {}) so it's the shorthand
21:02:43  <dominictarr>st_luke: this calls for an experiment!
21:03:55  * kenperkinsjoined
21:04:45  <st_luke>dominictarr: nice!
21:05:12  <Raynos>thlorenz: do you ahve any route handler examples yet? :p
21:06:26  * ricardobeatquit (Ping timeout: 256 seconds)
21:06:53  <thlorenz>Raynos: no, just this middleware thing: https://github.com/thlorenz/see-eat-sleep/blob/servers/see/servers/pages/middleware/css.js
21:07:06  <thlorenz>working on routes for API server currently
21:07:50  <Raynos>thlorenz: ok cool
21:10:25  <thlorenz>Raynos: checked in my feable start just for you :) https://github.com/thlorenz/see-eat-sleep/blob/servers/see/servers/api/routes/sights.js
21:10:36  * mk30joined
21:12:49  <thlorenz>Raynos: hooked it up API server so now you can go to: localhost:4000/data/sights to get urls
21:13:10  <thlorenz>next gotta re-read how to build restful api server ;)
21:13:37  * AvianFluquit (Remote host closed the connection)
21:16:37  <dominictarr>st_luke: https://gist.github.com/dominictarr/6135418
21:16:55  <dominictarr>anyway, it doesn't make sense to trigger the event immediately,
21:17:09  <dominictarr>because then that would call the cb immedately
21:17:52  <dominictarr>(it calls it after the streams close
21:17:53  <dominictarr>)
21:18:55  <st_luke>sweet, and http is the same way?
21:20:47  <Raynos>thlorenz: why do you have an api server?
21:21:07  <thlorenz>cause I wanna keep serving pages and data separate
21:21:41  <thlorenz>easier to scale, test, etc. - actually Domenic_ had a good part in convincing me that this is a good model
21:21:59  <Raynos>i have a seperate web & api server
21:22:00  <Raynos>in production
21:22:02  <Raynos>and I hate it
21:22:19  <Raynos>although two servers might not be bad
21:22:29  <thlorenz>Raynos: good example is that authentication may only apply to data, but not to pages - gets complicated to manage
21:22:34  <Raynos>its splitting a feature in to two parts and putting half in a web git repo and the other half in an api git repo
21:23:15  <thlorenz>Raynos: you could do that, but the idea was to keep all things related to a feature together
21:24:17  <st_luke>dominictarr: thanks dude
21:24:26  <isaacs>chapel: i think i kinda knew that you're a walmart employee.
21:24:33  <dominictarr>st_luke: http is on top of net
21:24:34  <isaacs>chapel: i wasn't sure in what capacity though.
21:24:45  <dominictarr>if it's not the same it would be a bug
21:24:49  <isaacs>chapel: like, webdev, mobile, stocking shelves, saying hi to people as they come in, etc.
21:24:54  <isaacs>chapel: all basically the same stuff, though
21:24:54  <chapel>isaacs: lol
21:25:03  <chapel>its all the same :P
21:25:26  <chapel>isaacs: I'm in the heart of tech, I still haven't been to a tech event
21:25:53  <isaacs>chapel: you're in the heart of tech. but the brain is in SF, apparently.
21:25:59  <Raynos>thlorenz: agreed. putting it in two git repos is hate
21:26:30  <chapel>isaacs: and the soul in oakland?
21:26:40  <isaacs>chapel: yes, the soul is right near the brain.
21:26:43  <isaacs>of course.
21:26:44  <isaacs>:)
21:27:08  <substack>in the pineal gland
21:28:57  <st_luke>not a tumor
21:30:14  * ednapiranhajoined
21:31:28  <mesch>Raynos: api server sucks hard
21:31:56  <Raynos>mesch: having seperate routes for api and web based things is ok, having two git repos is 100% rage
21:33:47  <mesch>Raynos: though you seemed to favor the notion of having 100 repos at one point (one per feature) which is also clearly 100% rage
21:34:00  <Raynos>nothing wrong with that
21:34:05  <Raynos>one repo per feature is fine
21:34:22  <Raynos>have the code for a single feature split out across multiple repos is annoying
21:34:52  <mesch>that is the basic problem I guess
21:34:58  * ednapiranhaquit (Remote host closed the connection)
21:35:11  <mesch>spreading your files into the web structure
21:35:34  <Raynos>substack told me this 2 years ago.
21:35:34  <mesch>where by web structure I mean a suspiciously MVC-looking structure
21:35:46  <Raynos>one folder per like thing and not models/foo views/foo routes/foo
21:36:50  <mesch>do you still internalize that structure though
21:37:16  <mesch>like, feature/models/foo feature/views/foo
21:37:32  <mesch>or are you more inclined to feature/poop
21:37:59  <Raynos>dont know
21:38:01  <Raynos>have to figure that out
21:38:58  <thlorenz>Raynos: Domenic_: since the client shouldn't know about the api server is the common thing to do to have the pages server redirect data requests to it?
21:39:04  <substack>I seriously do not get why people insist on having "models"
21:39:11  * AvianFlujoined
21:39:12  <substack>completely baffling[1~
21:39:31  <mikeal>i know of one good use case, but it doesn't cover most people
21:39:56  <substack>there is data and code to render that data and code to append to that data
21:40:08  <mikeal>basically, if you couple the model to a "view" that people see it can know how to regenerate itself when the data changes
21:40:12  <Raynos>thlorenz: I tend to have a client.js in the frontend that contains all the xhr code and it talks to the server through require("uris.json").SOME_ROUTE
21:40:16  <substack>I don't even get how "models" help with that
21:40:29  <mikeal>backbone models do help with that, it is the only reason to use them
21:40:37  <Raynos>substack: models help with insertion & fetching of data from a database
21:40:44  <substack>mikeal: there are better ways of solving that problem that don't involve anything akin to "models"
21:40:47  <mikeal>also though, we hack the model a bit to keep a list of changes and then we sync that to the server on save.
21:40:51  <Raynos>I think of a model or domain as an object with descriptive query / insertion methods
21:40:56  <substack>Raynos: but *how* do they help?
21:40:59  <thlorenz>Raynos: ah, so the uris.json would be generated with the port pointing to the API server I guess?
21:41:26  <Raynos>thlorenz: my uris.json is hard coded but it could be generated, sure. I dont do ports, I just have a fat proxy server redirecting all port 80 traffic to processes
21:41:28  <mikeal>substack: it is certainly better than this insane meteor/angular thing where they insert information about the data properties in to the html you author to update live :)
21:41:45  <Raynos>substack: they are just objects with methods that stop you from touching the database directly in a route handler
21:42:05  <mikeal>yeah, i don't find them useful for that
21:42:09  <Raynos>substack: for me its just a piece of indirection that allows me to refactor stuff that touches a sublevel in a single place (the object with those methods)
21:42:25  <mikeal>probably because I don't like things between me and my database in general :)
21:42:27  <Raynos>frontend models are different, i dont use frontend models
21:42:39  <substack>yes I tend to think and deal directly with the data model
21:42:45  <substack>that's probably why I hate so many databases
21:43:01  <thlorenz>Raynos: that's what I was getting at with all /data/ requests getting redirected to API server - isn't that very similar to what you are doing?
21:43:02  <Raynos>I find updating 20 route handlers when my db changes more pain in the ass then changing 1 "model / domain"
21:43:04  <substack>why would you even need a frontend "model" ever
21:43:11  <Raynos>thlorenz: i would do that yes
21:43:17  <mikeal>yeah, i can't imagine using models on the backend, i used to in the old Django days :) but once i started using CouchDB they just got in the way
21:43:39  <thlorenz>Raynos: ok, for now the pages (main) server will do that for me - later the proxy can do that
21:43:42  <Raynos>substack: well you do need some kind of place that holds the state in the frontend app if it gets real time updates or is stateful
21:43:49  <Domenic_>thlorenz: what is this about redirects!?
21:43:55  <substack>maybe models are just a thing that people think they need when they are using an sql database because sql is just that bad
21:44:00  <Domenic_>the client knows about the API server...
21:44:02  <Domenic_>I'm confused
21:44:06  <mikeal>ORM models are a great way to turn a SQL database in to a document database that can't scale :)
21:44:06  <Domenic_>pretend the API server is twitter
21:44:10  <Domenic_>your client knows about the twitter API
21:44:22  * tmcwquit (Remote host closed the connection)
21:44:23  <Domenic_>and you would never redirect to the twitter API
21:44:29  <Domenic_>you would just use it
21:44:32  * nicholasfquit (Read error: Connection reset by peer)
21:44:37  <thlorenz>Domenic_: interesting, thought the client should be shielded from knowing how my backend is structured
21:44:44  <substack>mikeal: ok this is beginning to make a lot of sense actually
21:44:48  <Domenic_>no way
21:44:59  <thlorenz>Domenic_: so you'd have the client connect to a different port for api requests?
21:44:59  * tmcwjoined
21:45:01  * nicholasfjoined
21:45:10  <Domenic_>thlorenz: i'd have it connect to a different domain entirely!
21:45:34  <thlorenz>Domenic_: I guess it could be combined with Raynos way of sending a uri.json from the main server
21:45:37  <Domenic_>again, pretend the API server is twitter
21:45:43  <Domenic_>why does the server care
21:45:50  <Domenic_>the server just serves .html and .js files
21:45:50  <thlorenz>good point
21:45:55  <mikeal>because eventually it will error
21:46:03  <mikeal>and the context for that error has a whole lot to do with twitter
21:46:03  <thlorenz>but the client may not know where the API server is (i.e. which port)
21:46:15  <mikeal>and is not agnostic of the remote the client is talking to
21:46:25  <Domenic_>thlorenz: why not
21:46:33  <Domenic_>thlorenz: because you put the data in the server and not in the client? put it in the client!
21:46:55  <Domenic_>thlorenz: i guess i could see it if you had your server testing various api servers and finding the one that was still up
21:46:59  <mikeal>like most abstractions, these make things tidy until they error or they get slow or you have to debug them for any reason, and they they are just a bunch of code you have to unravel in order to understand what is going on
21:47:41  <thlorenz>Domenic_: not sure what you mean - would like to discuss further - are you coming to Lab Interactive drinks?
21:47:50  <mikeal>abstractions should take a well understood context and encapsulate it, abstractions break down when you create *new* contexts in order to be ambiguous about what is behind them.
21:47:52  <Domenic_>thlorenz: yes definitely
21:48:14  <thlorenz>cool! I'm invited too, so we can talk about this in detail :)
21:48:19  <Domenic_>cool! :)
21:49:59  * tmcwquit (Ping timeout: 260 seconds)
21:52:45  * tmcwjoined
21:55:59  <Raynos>abstractions are hard
21:59:25  * whit537quit (Quit: whit537)
22:00:58  <mikeal>idk
22:01:01  <mikeal>i just think that
22:01:21  <mikeal>a side effect of an abstraction is that it disambiguates one side
22:01:26  <mikeal>it shouldn't be the *purpose*
22:01:46  <mikeal>because abstractions do have a cognitive overhead
22:02:04  <mikeal>so you're adding cognitive overhead and removing some context, for what?
22:02:14  <st_luke>im using promises now
22:02:18  <mikeal>usually it's so that you can be pretty
22:02:21  <st_luke>I will have a more informed opinion on them in a month
22:04:23  <mikeal>i don't think this particular discussion applies to promises
22:04:30  <mikeal>not directly at least
22:04:38  <Raynos>mikeal: i suffer the "pretty" thing quite a bit
22:04:43  * tmcwquit (Read error: Connection reset by peer)
22:04:46  * tmcw_joined
22:05:03  <mikeal>yeah, too often "pretty" is "clever" and clever just means "eventually not understandable"
22:06:05  <mikolalysenko>Check it out, multidimensional typed array sorting in native js!
22:06:06  <mikolalysenko>https://github.com/mikolalysenko/ndarray-sort
22:06:23  <jesusabdullah>AvianFlu: pong
22:07:56  <spion>I like the non-ORM approach of node-sql
22:09:18  <spion>today I took a typical CRUDish method, tried to rewrite it using promises and concluded that either I'm doing something really wrong, or its not worth it.
22:09:42  <spion>this is the result - https://github.com/spion/async-compare/blob/master/examples/promises.js
22:10:06  <spion>seems like with promises you have to reinvent and promisify everything
22:10:25  <isaacs>what's the state of the art in in-memory write-to-disk-sometimes node modules these days?
22:10:33  <isaacs>with no binary components
22:10:37  <isaacs>ie, not level/index/etc.
22:11:14  * AvianFluquit (Remote host closed the connection)
22:11:19  * fotoveritequit (Ping timeout: 264 seconds)
22:11:50  <Raynos>there are some pure js databases
22:12:03  <Raynos>https://github.com/bigeasy/locket is an example
22:12:06  <Raynos>that implements leveldown
22:12:11  <Raynos>its incomplete though
22:12:30  <Raynos>there was also this tingo db
22:12:42  <Raynos>https://github.com/sergeyksv/tingodb
22:12:47  <mbalho>mikeal: is there travel back from nodeconf to dublin on the 12th of september?
22:12:57  <mbalho>mikeal: should i book flights out of dublin that evening?
22:13:04  <isaacs>Raynos: I'm probably just gonna keep a json object, and save it to disk occasionally
22:13:18  <Raynos>oh at that level
22:13:26  <Raynos>you probably want something simpler
22:13:27  <isaacs>Raynos: or, actually, have a file for each index, and LRU them
22:13:47  <isaacs>but, i might want to like, actually query things, track changes, etc.
22:13:57  <isaacs>it's for a status update scrum bot kinda thingie
22:14:07  <isaacs>so we can track who's working on what, what's blocking, etc.
22:15:53  <mikeal>mbalho: it's kinda on the website
22:16:08  <mikeal>but it's hard to get a flight out that evening, i looked
22:16:18  <mikeal>i'm leaving the morning of the 13th
22:18:25  <mbalho>mikeal: where on the website is it
22:18:45  <mikeal>i guess it isn't, weird
22:19:27  <mbalho>this is out of date https://github.com/nodeconfeu/nodeconfeu
22:22:05  <substack>https://github.com/substack/level-join
22:25:34  <thlorenz>wow, bower now uses my terminal syntax highlighter now: https://github.com/bower/bower/commit/2e615e7570632e4a049a98ddaf329def5f5cfa53
22:25:50  <thlorenz>not sure how to feel about that :P
22:25:57  <mbalho>love how they use npm for bower
22:26:07  * fotoveritejoined
22:26:13  <jesusabdullah>okay so I think I might have this mac thing sorted
22:26:16  <jesusabdullah>more or less
22:26:19  <thlorenz>:) yep its kinda hypocritical
22:26:26  <mbalho>quick, publish 0.4.1 and have it write anti-bower messages to stdout
22:26:27  <jesusabdullah>YOU're hypocritical!
22:26:43  <jesusabdullah>ahhhhh
22:26:53  <jesusabdullah>I have to apartment hunt and car hunt
22:26:58  <jesusabdullah>not lookin' forward to it
22:27:04  <jesusabdullah>but this work machine is pretty sick
22:27:06  <mbalho>why did you move somewhere that you need a car
22:27:13  <jesusabdullah>My First Mac(tm)
22:27:20  <jesusabdullah>because it's pretty and I like the dudes here
22:27:26  <thlorenz>mbalho: yeah, a 'Just use npm' watermark would be nice
22:27:29  <jesusabdullah>there's technically pubtrans but fuck that
22:27:40  <jesusabdullah>driving is easy and I'll be able to afford it
22:27:42  <substack>bicycles
22:27:46  <substack>they're pretty cheap
22:27:53  <substack>healthy too
22:27:55  <jesusabdullah>You know very well I hate human-powered vehicles
22:28:07  <jesusabdullah>I like dinosaur powered transportation
22:31:54  * evboguequit (Quit: Lost terminal)
22:33:02  <substack>jesusabdullah: http://www.kickstarter.com/projects/noflo/noflo-development-environment
22:33:22  * kevino80quit (Remote host closed the connection)
22:33:22  <substack>not that I would ever use something like this, but I remember you mentioning this kind of a thing
22:33:27  <mikeal>i just looked through their components
22:33:38  <mikeal>it's all built in coffeescript
22:33:45  <mikeal>and they have their own stream-ish thing
22:33:46  <substack>I don't think I've ever built a piece of software by sketching it out on a whiteboard first
22:34:00  <mikeal>and every one of those boxes scopes to this stream-ish thing
22:34:23  <mikeal>so they have like a million modules just coupling their interface to modules people tend to use, like markdown and redis and whatnot
22:34:32  <mikeal>substack: truth
22:34:38  <substack>why not streams!
22:34:47  <substack>browserify transforms are just streams for that reason
22:34:59  <substack>because those are already a thing that works
22:35:01  <mikeal>i wish it was about amatuerizing software development and not about reinventing programming for people who already program
22:35:14  <substack>yeah :(
22:35:22  <substack>programming is not that hard
22:35:24  <mikolalysenko>I wish they didn't name it network flow
22:35:32  <mikolalysenko>since that is already a well established cs concept...
22:35:32  <mikeal>substack…. they're writing their own programming environment, you should expect them *not* to re-invent wheels :)
22:35:33  <substack>especially when you've got lots of lego bricks at your disposal
22:35:39  <substack>making it visual just makes it even harder
22:35:43  <mikeal>should not
22:35:46  <substack>see also: labview
22:36:19  * wolfeidauquit (Remote host closed the connection)
22:36:39  <substack>programming is not very hard, people just make it really difficult
22:36:54  * wolfeidaujoined
22:37:10  <substack>with tools that require a ton of configuration and setup and have a steep learning curve
22:37:37  <mikeal>like an app where you connect boxes with lines and submenus :)
22:38:09  <mikolalysenko>depends what you are trying to do I would suppose. for easy problems it is easy to program them, but some problems are just harder to get right
22:38:52  <mikeal>what would a hard problem look like in an app that made a box for every if statement?
22:38:52  * thlorenzquit (Remote host closed the connection)
22:39:15  <mikolalysenko>I don't know, take any tough algorithmic problem you like
22:39:30  * AvianFlujoined
22:39:30  <mikolalysenko>like face recognition software or something
22:39:54  * tmcw_quit (Remote host closed the connection)
22:40:15  * wolfeidauquit (Remote host closed the connection)
22:41:54  <mikeal>when i think about "a math problem on a whiteboard translated to code" I think "isn't that why they invented haskell?"
22:42:23  * mikealquit (Quit: Leaving.)
22:42:35  <mikolalysenko>honestly haskell is pretty bad at solving math problems and implementing algorithms efficiently
22:42:50  <mikolalysenko>it is basically optimized by programming language guys to be good at moving strings and syntax trees around
22:43:16  <mikolalysenko>for real algorithmic programming C++/fortran are far better choices
22:46:05  * mk30quit (Ping timeout: 250 seconds)
22:46:07  * wolfeidaujoined
22:49:36  <mikolalysenko>also, I just benchmarked this on a simple example: https://github.com/mikolalysenko/ndarray-sort
22:49:47  <mikolalysenko>it turns out it is about 33% faster than crossfilter
22:50:07  <mikolalysenko>and more than twice as fast as the native array.sort!
22:50:14  <mikolalysenko>at least on typed arrays of ints...
22:51:21  * jcrugzzjoined
22:51:40  * AvianFluquit (Ping timeout: 245 seconds)
22:58:23  * tmcwjoined
23:00:04  * mikolalysenkoquit (Ping timeout: 246 seconds)
23:05:29  <dominictarr>substack: new video http://www.youtube.com/watch?v=CIZQHR6-Ngg
23:06:00  <dominictarr>(with kenny, from kenny's snax & ammo)
23:07:27  <jesusabdullah>anyone know how2workspace on osx?
23:07:34  <jesusabdullah>frickin'
23:09:34  * thlorenzjoined
23:10:25  * i_m_cajoined
23:12:39  * yorickquit (Remote host closed the connection)
23:14:05  * mikealjoined
23:19:02  * thlorenzquit (Ping timeout: 256 seconds)
23:22:06  <dominictarr>jesusabdullah: did you get a mac?
23:22:13  <jesusabdullah>dominictarr: yeah new company bought me one
23:22:20  <jesusabdullah>dominictarr: with one of those big displays to go with it
23:22:24  <dominictarr>bummer
23:22:37  <jesusabdullah>hahaha
23:22:40  <jesusabdullah>well
23:22:45  <jesusabdullah>it has plusses and minuses
23:22:49  <dominictarr>I thought I'd see what the fuss was about but now I regret it
23:22:58  <jesusabdullah>hah
23:23:04  <jesusabdullah>I kinda knew what the fuss was about
23:23:09  <jesusabdullah>so far not too many blatant surprises
23:23:16  <dominictarr>you can have something like workspaces
23:23:23  <dominictarr>it's a bit weird
23:23:26  <jesusabdullah>yeah trying to find it
23:23:29  <jesusabdullah>how u workspace lol
23:23:41  <dominictarr>three finders swipe up?
23:23:51  <jesusabdullah>wat
23:23:59  <jesusabdullah>what if I want to keyboard keyboard
23:24:06  <dominictarr>ha!
23:24:15  <jesusabdullah>I TURNED OFF GESTURES DANGIT
23:24:15  <LOUDBOT>AS LONG AS IT HAS GOT 640K EVERYTHING WILL BE PEACHY
23:24:18  <dominictarr>maybe option + left right
23:24:28  <jesusabdullah>nope
23:24:46  <jesusabdullah>though that DOES cycle through irssi windows
23:24:48  <jesusabdullah>so that's cool
23:25:02  <dominictarr>this might help https://www.google.com/search?q=install+arch+linux+on+mac&oq=install+arch+linux+on+mac&aqs=chrome.0.69i57j0l3j69i62l2.8588j0&sourceid=chrome&ie=UTF-8
23:25:08  * fallsemo1joined
23:25:10  <jesusabdullah>lol no
23:25:13  <jesusabdullah>but funny
23:25:30  <dominictarr>that is what I regret...
23:25:46  <jesusabdullah>I'm-a keep using linux at home I think
23:25:52  <dominictarr>the instructions to install linux on mac are just scary
23:25:57  <jesusabdullah>hahaha
23:26:10  <jesusabdullah>I believe it!
23:26:19  * fallsemoquit (Ping timeout: 246 seconds)
23:32:53  * gwenbellquit (Quit: leaving)
23:34:28  <substack>dominictarr: hah I already saw disasteradio tweet that vid and I watched it
23:34:57  <substack>jesusabdullah: you can always decline those macs
23:35:17  <substack>ARSC tried to give me a mac but I declined
23:35:27  <jesusabdullah>I never had a mac I wanted to see what the fuss was about
23:35:34  <jesusabdullah>obviously
23:35:46  * i_m_caquit (Ping timeout: 246 seconds)
23:35:50  <substack>I've been around them enough to know better
23:36:15  <substack>and dominictarr's perspective adds corroborating evidence
23:36:24  <jesusabdullah>yeah well
23:36:36  <jesusabdullah>you hate everything that isn't a 12" lenovo with xmonad
23:37:52  * wolfeidauquit (Remote host closed the connection)
23:40:06  <substack>the retinal density of human vision is clustered all in one spot anyways!
23:40:16  <substack>doesn't make sense to lug a big screen around everyplace
23:41:11  <dominictarr>no, we should just use lazers to shine the screen right on to the retina
23:41:32  <dominictarr>the real reason people use macs though,
23:41:51  <dominictarr>so that everyone in the cafe knows you are one of the beautiful people.
23:43:22  <substack>it's refreshing how few macs there are at sudoroom
23:43:29  <dominictarr>yes
23:43:54  <substack>mostly thinkpads and other cheap mass-market laptops running linux
23:46:05  * mikolalysenkojoined
23:50:33  <substack>why won't this thread die https://github.com/substack/node-browserify/issues/58#issuecomment-21977982
23:50:59  <mikolalysenko>that is pretty wtf
23:51:18  <mikolalysenko>why would you ever want async loading in browserify?
23:52:09  <mikolalysenko>though speaking of personal favorite browserify issues... can I pretty please ask you to add some kind of support for web workers?
23:52:20  * jolissjoined
23:53:36  <substack>mikolalysenko: yes I am open to some trickery to make web workers work so long as we can not inflate the bundle size in the average case
23:53:45  <mikolalysenko>yeah, absolutely agreed
23:54:10  <mikolalysenko>in fact, that is the main reason why I want to add something to browserify core, since the current solution based on workerify causes massive code size increases
23:54:28  <substack>I've never messed with web workers so I'm less familiar with what a workable solution would look like.
23:54:49  <mikolalysenko>I think the minimally invasive solution is to expose the module list at run time somehow
23:55:19  <mikolalysenko>as a sketch of how this could work, you might be able to store the module list in an obscure unicode global variable
23:55:30  <mikolalysenko>instead of passing it as an argument to the browserify function
23:55:43  <substack>that sounds really hacky
23:55:55  <mikolalysenko>well, it would not cause a net increase in bundle size
23:56:07  <substack>do you have some example code that uses workers?
23:56:09  <mikolalysenko>a less hacky option would be to expose a module that when required returns the list of all modules
23:56:15  <mikolalysenko>sure, lots of stuff
23:56:19  <mikolalysenko>hang on a sec
23:56:41  <mikolalysenko>this is a very basic app that needs them: https://github.com/mikolalysenko/implicit-studio
23:56:58  <substack>what if new Worker('file.js') worked like require()?
23:57:04  <mikolalysenko>that might work
23:57:07  <substack>except that it loaded the bundle file instead
23:57:11  <mikolalysenko>hmm
23:57:14  <mikolalysenko>could be ok
23:57:16  <substack>one problem is that then the bundle file would be coupled to it
23:57:21  * AvianFlujoined
23:57:21  <substack>the file name
23:57:25  <mikolalysenko>the other problem is it would be hard to polyfill in node.js
23:57:41  <substack>child_process.fork()
23:57:44  <mikolalysenko>yeah
23:58:04  <mikolalysenko>but the problem is that you would want to use the same syntax in node and the browser
23:58:19  <substack>it could just use the node syntax
23:58:24  <mikolalysenko>that might work
23:58:32  <mikolalysenko>but then there is the question of transferrable objects...
23:58:48  <mikolalysenko>since that would be inconsistent in node
23:59:08  <mikolalysenko>though maybe the best solution to that is for node to implement transferrable object like semantics for process.send()
23:59:54  * fallsemo1quit (Quit: Leaving.)
23:59:55  * spionquit (Ping timeout: 246 seconds)
23:59:59  <mikolalysenko>my current thinking is that the basic api in browserify should be pretty low level, but flexible enough that it could be wrapped up somehow