/
2012-04-15.txt
257 lines (257 loc) · 29.5 KB
/
2012-04-15.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
{"nick":"SubStack","message":"Raynos: sure people do that kind of thing","date":"2012-04-15T00:29:58.979Z","type":"message"}
{"nick":"SubStack","message":"browserling is basically that","date":"2012-04-15T00:30:04.198Z","type":"message"}
{"nick":"Raynos","message":"Is there a generic open source implementation of shared bags of objects","date":"2012-04-15T00:30:49.514Z","type":"message"}
{"nick":"Raynos","message":"that tell all clients when any of those objects changed in a bag on any client","date":"2012-04-15T00:31:19.441Z","type":"message"}
{"nick":"Raynos","message":"Kind of like https://github.com/Raynos/observable#Example","date":"2012-04-15T00:31:26.688Z","type":"message"}
{"nick":"SubStack","message":"nowjs does that","date":"2012-04-15T00:32:24.039Z","type":"message"}
{"nick":"SubStack","message":"it's hard to make that kind of thing work browser-side","date":"2012-04-15T00:32:39.760Z","type":"message"}
{"nick":"SubStack","message":"because you can't use harmony proxies","date":"2012-04-15T00:32:46.202Z","type":"message"}
{"nick":"Raynos","message":"oh you use an api","date":"2012-04-15T00:33:03.094Z","type":"message"}
{"nick":"Raynos","message":"observable.on(\"change\", callback) and observable.set(key, value)","date":"2012-04-15T00:33:18.075Z","type":"message"}
{"nick":"Raynos","message":"I know exactly what you mean, you can't use getter/setters","date":"2012-04-15T00:33:27.423Z","type":"message"}
{"nick":"Raynos","message":"which is just something I can tolerate","date":"2012-04-15T00:33:33.998Z","type":"message"}
{"nick":"SubStack","message":"you can pretty much use setters and getters in most browsers","date":"2012-04-15T00:35:06.278Z","type":"message"}
{"nick":"SubStack","message":"but proxies are different","date":"2012-04-15T00:35:13.490Z","type":"message"}
{"nick":"SubStack","message":"proxies let you trap deletes and insertions","date":"2012-04-15T00:35:21.114Z","type":"message"}
{"nick":"SubStack","message":"so you don't need to know what keys are going to be used ahead of time","date":"2012-04-15T00:35:31.752Z","type":"message"}
{"nick":"SubStack","message":"nowjs has a setInterval to check for new and deleted entries for instance","date":"2012-04-15T00:36:02.363Z","type":"message"}
{"nick":"Raynos","message":"I know, but I still avoid ES5 get/set because of ES3","date":"2012-04-15T00:36:29.606Z","type":"message"}
{"nick":"SubStack","message":"I think passing your object explicitly to a synchronize() function would be fine","date":"2012-04-15T00:36:36.223Z","type":"message"}
{"nick":"Raynos","message":"ive gotten used to set/remove :p","date":"2012-04-15T00:36:39.005Z","type":"message"}
{"nick":"SubStack","message":"you don't even need set/remove for that","date":"2012-04-15T00:36:49.110Z","type":"message"}
{"nick":"SubStack","message":"just an algorithm for computing patches","date":"2012-04-15T00:37:03.414Z","type":"message"}
{"nick":"Raynos","message":"that's a pain though","date":"2012-04-15T00:37:06.231Z","type":"message"}
{"nick":"SubStack","message":"not really!","date":"2012-04-15T00:37:11.626Z","type":"message"}
{"nick":"Raynos","message":"because then you always need the entire object","date":"2012-04-15T00:37:13.242Z","type":"message"}
{"nick":"SubStack","message":"there are libs on npm to do this already","date":"2012-04-15T00:37:15.742Z","type":"message"}
{"nick":"SubStack","message":"well you can make it implicit","date":"2012-04-15T00:37:21.625Z","type":"message"}
{"nick":"Raynos","message":"you cant do synchronize({ key: value })","date":"2012-04-15T00:37:23.356Z","type":"message"}
{"nick":"SubStack","message":"no but","date":"2012-04-15T00:37:28.801Z","type":"message"}
{"nick":"Raynos","message":"because that would delete all the other keys","date":"2012-04-15T00:37:31.797Z","type":"message"}
{"nick":"SubStack","message":"you could have a function update(function (obj) { delete obj.a.b[2].c[3]; obj.x = { y : 'z' } })","date":"2012-04-15T00:37:57.476Z","type":"message"}
{"nick":"SubStack","message":"and that could call synchronize() for you","date":"2012-04-15T00:38:04.827Z","type":"message"}
{"nick":"SubStack","message":"could even have an async update api","date":"2012-04-15T00:38:16.255Z","type":"message"}
{"nick":"mikeal","date":"2012-04-15T00:38:44.762Z","type":"join"}
{"nick":"Raynos","message":"SubStack: https://github.com/substack/node-browserify/pull/124","date":"2012-04-15T00:43:51.027Z","type":"message"}
{"nick":"Raynos","message":"Can you pull that in","date":"2012-04-15T00:43:57.435Z","type":"message"}
{"nick":"daehee","date":"2012-04-15T00:46:14.040Z","type":"join"}
{"nick":"SubStack","message":"yep","date":"2012-04-15T00:55:22.406Z","type":"message"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 7]","date":"2012-04-15T00:58:33.221Z","type":"message"}
{"nick":"mikeal","reason":"Quit: Leaving.","date":"2012-04-15T01:01:57.942Z","type":"quit"}
{"nick":"daehee","reason":"Quit: daehee","date":"2012-04-15T01:09:17.386Z","type":"quit"}
{"nick":"isaacs","date":"2012-04-15T01:16:29.523Z","type":"join"}
{"nick":"isaacs","message":"LOUDBOT: be LOUDBOT","date":"2012-04-15T01:19:07.708Z","type":"message"}
{"nick":"LOUDBOT","message":"isaacs: IT FUCKING MURDERS MY SOUL","date":"2012-04-15T01:19:07.915Z","type":"message"}
{"nick":"isaacs","message":"LOUDBOT: be SubStack","date":"2012-04-15T01:19:13.338Z","type":"message"}
{"nick":"LOUDBOT","message":"<SubStack> ONLY THE LOUDEST OF US MY STAVE OFF OBLIVION","date":"2012-04-15T01:19:13.537Z","type":"message"}
{"nick":"isaacs","message":"LOUDBOT: be jesusabdullah","date":"2012-04-15T01:19:17.500Z","type":"message"}
{"nick":"LOUDBOT","message":"<jesusabdullah> ACHIEVEMENT UNLOCKED: MAX-LENGTH TWEET","date":"2012-04-15T01:19:17.756Z","type":"message"}
{"nick":"isaacs","message":"LOUDBOT: be guybrush","date":"2012-04-15T01:19:21.751Z","type":"message"}
{"nick":"LOUDBOT","message":"<guybrush> WHATS UP AT NODECONF?","date":"2012-04-15T01:19:21.951Z","type":"message"}
{"nick":"isaacs","message":"LOUDBOT: be COPSLACKBOT","date":"2012-04-15T01:19:33.153Z","type":"message"}
{"nick":"LOUDBOT","message":"isaacs: I ONLY KNOW THREE TIER YOU FUCK","date":"2012-04-15T01:19:33.357Z","type":"message"}
{"nick":"isaacs","message":"LOUDBOT: be farnsworth","date":"2012-04-15T01:19:41.501Z","type":"message"}
{"nick":"LOUDBOT","message":"isaacs: RIGHT THERE. IN YOUR BULBOUS OVERSIZED O OF YOUR HEAD.","date":"2012-04-15T01:19:41.705Z","type":"message"}
{"nick":"SubStack","message":"isaacs: is travis just being terrible here or is this a real bug?","date":"2012-04-15T01:24:26.225Z","type":"message"}
{"nick":"SubStack","message":"http://travis-ci.org/#!/substack/node-browserify/jobs/1093365","date":"2012-04-15T01:24:26.893Z","type":"message"}
{"nick":"SubStack","message":"in an npm package","date":"2012-04-15T01:24:35.297Z","type":"message"}
{"nick":"SubStack","message":"can't duplicate locally though :/","date":"2012-04-15T01:24:40.601Z","type":"message"}
{"nick":"Raynos","message":"LOUDBOT: be Raynos","date":"2012-04-15T01:46:17.841Z","type":"message"}
{"nick":"LOUDBOT","message":"Raynos: PROGRAMMING INTERFACE THIS BEE-AYTCH","date":"2012-04-15T01:46:18.044Z","type":"message"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 1]","date":"2012-04-15T01:58:33.127Z","type":"message"}
{"nick":"ryan_stevens","date":"2012-04-15T02:06:54.276Z","type":"join"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 7]","date":"2012-04-15T02:58:33.189Z","type":"message"}
{"nick":"devaholic","date":"2012-04-15T03:00:52.346Z","type":"join"}
{"nick":"TheJH","reason":"Ping timeout: 252 seconds","date":"2012-04-15T03:22:36.842Z","type":"quit"}
{"nick":"tilgovi","reason":"Remote host closed the connection","date":"2012-04-15T03:26:57.025Z","type":"quit"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 33]","date":"2012-04-15T03:58:34.035Z","type":"message"}
{"nick":"daehee","date":"2012-04-15T04:38:06.443Z","type":"join"}
{"nick":"rowbit","message":"Hourly usage stats: []","date":"2012-04-15T04:58:33.080Z","type":"message"}
{"nick":"SubStack","message":"quiet!","date":"2012-04-15T05:04:31.642Z","type":"message"}
{"nick":"SubStack","message":"makes sense, people are out doing exciting things on a saturday night","date":"2012-04-15T05:04:58.157Z","type":"message"}
{"nick":"st_luke","date":"2012-04-15T05:29:17.719Z","type":"join"}
{"nick":"rannmann","reason":"Ping timeout: 240 seconds","date":"2012-04-15T05:41:41.799Z","type":"quit"}
{"nick":"mikeal","date":"2012-04-15T05:53:47.509Z","type":"join"}
{"nick":"mikeal","reason":"Client Quit","date":"2012-04-15T05:56:20.871Z","type":"quit"}
{"nick":"rowbit","message":"Hourly usage stats: []","date":"2012-04-15T05:58:33.084Z","type":"message"}
{"nick":"isaacs","reason":"Remote host closed the connection","date":"2012-04-15T06:14:49.080Z","type":"quit"}
{"nick":"mikeal","date":"2012-04-15T06:24:25.650Z","type":"join"}
{"nick":"st_luke","message":"I made the exact same joke as someone else on the internets and I feel ashamed","date":"2012-04-15T06:27:29.560Z","type":"message"}
{"nick":"daehee","reason":"Quit: daehee","date":"2012-04-15T06:35:26.083Z","type":"quit"}
{"nick":"st_luke","reason":"Remote host closed the connection","date":"2012-04-15T06:55:37.620Z","type":"quit"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 28]","date":"2012-04-15T06:58:33.080Z","type":"message"}
{"nick":"pkrumins","reason":"Ping timeout: 260 seconds","date":"2012-04-15T07:55:13.163Z","type":"quit"}
{"nick":"pkrumins","date":"2012-04-15T07:55:47.528Z","type":"join"}
{"nick":"pkrumins","reason":"Changing host","date":"2012-04-15T07:55:47.870Z","type":"quit"}
{"nick":"pkrumins","date":"2012-04-15T07:55:48.073Z","type":"join"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 1]","date":"2012-04-15T07:58:33.049Z","type":"message"}
{"nick":"niftylettuce","reason":"Excess Flood","date":"2012-04-15T08:00:16.615Z","type":"quit"}
{"nick":"niftylettuce","date":"2012-04-15T08:01:15.079Z","type":"join"}
{"nick":"AvianFlu","reason":"Quit: Leaving","date":"2012-04-15T08:57:56.884Z","type":"quit"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 18]","date":"2012-04-15T08:58:33.797Z","type":"message"}
{"nick":"ryan_stevens","reason":"Quit: Leaving.","date":"2012-04-15T09:06:35.437Z","type":"quit"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 18]","date":"2012-04-15T09:58:33.050Z","type":"message"}
{"nick":"TheJH","date":"2012-04-15T10:10:29.564Z","type":"join"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 9]","date":"2012-04-15T10:58:33.022Z","type":"message"}
{"nick":"Raynos","message":"SubStack: If I create two dnode servers and attach both of them to one HTTP server do all kinds of bad things happen?","date":"2012-04-15T11:01:45.052Z","type":"message"}
{"nick":"Raynos","message":"https://gist.github.com/2391988#comments","date":"2012-04-15T11:24:33.371Z","type":"message"}
{"nick":"TheJH","reason":"Ping timeout: 260 seconds","date":"2012-04-15T11:43:37.369Z","type":"quit"}
{"nick":"daehee","date":"2012-04-15T11:47:59.629Z","type":"join"}
{"nick":"rowbit","message":"Hourly usage stats: [developer: 1, free: 14]","date":"2012-04-15T11:58:33.189Z","type":"message"}
{"nick":"TheJH","date":"2012-04-15T12:05:11.401Z","type":"join"}
{"nick":"daehee","reason":"Quit: daehee","date":"2012-04-15T12:12:23.196Z","type":"quit"}
{"nick":"darshanshankar","date":"2012-04-15T12:13:52.612Z","type":"join"}
{"nick":"darshanshankar","reason":"Client Quit","date":"2012-04-15T12:15:35.304Z","type":"quit"}
{"nick":"darshanshankar","date":"2012-04-15T12:15:48.800Z","type":"join"}
{"nick":"darshanshankar","reason":"Client Quit","date":"2012-04-15T12:20:29.782Z","type":"quit"}
{"nick":"daehee","date":"2012-04-15T12:24:32.378Z","type":"join"}
{"nick":"daehee","reason":"Client Quit","date":"2012-04-15T12:27:28.326Z","type":"quit"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 22]","date":"2012-04-15T12:58:33.152Z","type":"message"}
{"nick":"Madars_","date":"2012-04-15T12:59:53.453Z","type":"join"}
{"nick":"chapel_","date":"2012-04-15T13:05:34.809Z","type":"join"}
{"nick":"chapel","reason":"*.net *.split","date":"2012-04-15T13:08:44.868Z","type":"quit"}
{"nick":"Madars","reason":"*.net *.split","date":"2012-04-15T13:08:45.268Z","type":"quit"}
{"nick":"daehee","date":"2012-04-15T13:37:27.245Z","type":"join"}
{"nick":"daehee","reason":"Quit: daehee","date":"2012-04-15T13:49:45.731Z","type":"quit"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 6]","date":"2012-04-15T13:58:33.089Z","type":"message"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 27]","date":"2012-04-15T14:58:33.056Z","type":"message"}
{"nick":"stlsaint_","reason":"Ping timeout: 272 seconds","date":"2012-04-15T15:06:43.250Z","type":"quit"}
{"nick":"devaholic","reason":"Read error: Operation timed out","date":"2012-04-15T15:43:16.124Z","type":"quit"}
{"nick":"chapel_","reason":"Quit: ZNC - http://znc.sourceforge.net","date":"2012-04-15T15:50:56.307Z","type":"quit"}
{"nick":"chapel","date":"2012-04-15T15:52:04.985Z","type":"join"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 19]","date":"2012-04-15T15:58:33.105Z","type":"message"}
{"nick":"devaholic","date":"2012-04-15T16:05:11.278Z","type":"join"}
{"nick":"rannmann","date":"2012-04-15T16:20:57.730Z","type":"join"}
{"nick":"mikeal","reason":"Quit: Leaving.","date":"2012-04-15T16:43:51.497Z","type":"quit"}
{"nick":"mikeal","date":"2012-04-15T16:51:11.023Z","type":"join"}
{"nick":"rowbit","message":"Hourly usage stats: [developer: 1, free: 17]","date":"2012-04-15T16:58:33.040Z","type":"message"}
{"nick":"isaacs","date":"2012-04-15T17:39:41.285Z","type":"join"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 5]","date":"2012-04-15T17:58:33.101Z","type":"message"}
{"nick":"sorensen__","date":"2012-04-15T17:59:29.362Z","type":"join"}
{"nick":"sorensen__","reason":"Client Quit","date":"2012-04-15T17:59:59.481Z","type":"quit"}
{"nick":"guybrush","message":"Raynos: why dont you put the dnode1/2 into one dnode - like dnode({dnode1:{},dnode2:{}}).listen(..)","date":"2012-04-15T18:20:08.192Z","type":"message"}
{"nick":"devaholic","reason":"Ping timeout: 245 seconds","date":"2012-04-15T18:20:11.226Z","type":"quit"}
{"nick":"devaholic","date":"2012-04-15T18:23:54.820Z","type":"join"}
{"nick":"Raynos","message":"guybrush: because dnode1 and dnode2 are in two seperate modules that do RPC using dnode","date":"2012-04-15T18:26:39.851Z","type":"message"}
{"nick":"Raynos","message":"I have two modules that create their own dnode servers to do RPC for me","date":"2012-04-15T18:26:50.801Z","type":"message"}
{"nick":"Raynos","message":"I want them to nicely work together in one app","date":"2012-04-15T18:26:58.969Z","type":"message"}
{"nick":"guybrush","message":"hm","date":"2012-04-15T18:27:04.031Z","type":"message"}
{"nick":"Raynos","message":"I guess I could pass in a dnode server as a dependency","date":"2012-04-15T18:27:10.304Z","type":"message"}
{"nick":"guybrush","message":"you can proxy the dnode-api-thing","date":"2012-04-15T18:27:10.765Z","type":"message"}
{"nick":"Raynos","message":"but that feels ugly","date":"2012-04-15T18:27:12.952Z","type":"message"}
{"nick":"guybrush","message":"dnode.listen(..,function(rem1,conn1){dnode.connect(..,function(rem2,conn2){rem1.proxy(rem2)})})","date":"2012-04-15T18:28:11.469Z","type":"message"}
{"nick":"guybrush","message":"and proxy is a function which you can pass the other dnode-api too","date":"2012-04-15T18:28:32.705Z","type":"message"}
{"nick":"Raynos","message":"ugh that's ugly two","date":"2012-04-15T18:29:38.627Z","type":"message"}
{"nick":"Raynos","message":"I just want to create two completely seperate dnode servers","date":"2012-04-15T18:29:46.045Z","type":"message"}
{"nick":"Raynos","message":"I basically want to create a stand alone module that uses dnode and won't break if you also use dnode in your application","date":"2012-04-15T18:30:07.521Z","type":"message"}
{"nick":"guybrush","message":"or even dnode.listen(port1,function(rem1,conn1){dnode({rem1:rem1,rem2:{}}).listen(port2)})","date":"2012-04-15T18:30:11.601Z","type":"message"}
{"nick":"guybrush","message":"i think the best way to build things upon (or for) dnode is to write it like a connect-middleware","date":"2012-04-15T18:30:45.188Z","type":"message"}
{"nick":"guybrush","message":"i think dnode has even the obligatory .use() function","date":"2012-04-15T18:30:57.286Z","type":"message"}
{"nick":"isaacs","reason":"Remote host closed the connection","date":"2012-04-15T18:31:10.001Z","type":"quit"}
{"nick":"guybrush","message":"so every module you write just exports a \"dnode-middleware\" which can be any object","date":"2012-04-15T18:31:20.708Z","type":"message"}
{"nick":"Raynos","message":"I see","date":"2012-04-15T18:31:28.336Z","type":"message"}
{"nick":"Raynos","message":"that could work","date":"2012-04-15T18:31:31.378Z","type":"message"}
{"nick":"guybrush","message":"in the end, all you do is extending an object which you serve via the dnode-protocol","date":"2012-04-15T18:31:57.321Z","type":"message"}
{"nick":"guybrush","message":"every \"dnode-middleware\" is just another extension for that object","date":"2012-04-15T18:32:12.253Z","type":"message"}
{"nick":"guybrush","message":"thats at least how i like to think about it","date":"2012-04-15T18:32:21.568Z","type":"message"}
{"nick":"guybrush","message":"like doing: dnode({foo:require('foo')(someOpts),bar:require('bar'),blub:{bla:require('bla')}})","date":"2012-04-15T18:33:18.197Z","type":"message"}
{"nick":"Raynos","message":"i think that's the nicest","date":"2012-04-15T18:34:18.226Z","type":"message"}
{"nick":"Raynos","message":"just make a dnode middlware","date":"2012-04-15T18:34:24.414Z","type":"message"}
{"nick":"guybrush","message":"the best thing with dnode is, it fits so extremly well in the node-module-concept","date":"2012-04-15T18:34:39.813Z","type":"message"}
{"nick":"guybrush","message":"like make everything a dnode-module which happens to be how you should write any node-module anyways","date":"2012-04-15T18:35:08.051Z","type":"message"}
{"nick":"guybrush","message":"or maybe not every module :D","date":"2012-04-15T18:37:52.473Z","type":"message"}
{"nick":"Raynos","message":"that won't quite work :P","date":"2012-04-15T18:39:16.586Z","type":"message"}
{"nick":"Raynos","message":"but I will go for `dnode.use(clientmongo.middleware).use(observe.middleware)`","date":"2012-04-15T18:39:34.279Z","type":"message"}
{"nick":"guybrush","message":"sounds cool","date":"2012-04-15T18:39:45.453Z","type":"message"}
{"nick":"AvianFlu","date":"2012-04-15T18:45:50.898Z","type":"join"}
{"nick":"intabulas","date":"2012-04-15T18:56:27.871Z","type":"join"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 16]","date":"2012-04-15T18:58:33.178Z","type":"message"}
{"nick":"hij1nx","date":"2012-04-15T19:00:45.412Z","type":"join"}
{"nick":"rowbit","message":"Daily usage stats: [developer: 4, free: 315]","date":"2012-04-15T19:58:33.199Z","type":"message"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 17]","date":"2012-04-15T19:58:33.438Z","type":"message"}
{"nick":"intabulas","reason":"Remote host closed the connection","date":"2012-04-15T20:44:10.606Z","type":"quit"}
{"nick":"devaholic","message":"greetings","date":"2012-04-15T20:44:30.856Z","type":"message"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 11]","date":"2012-04-15T20:58:33.188Z","type":"message"}
{"nick":"isaacs","date":"2012-04-15T21:14:38.945Z","type":"join"}
{"nick":"jesusabdullah","message":"how do the midderwares work again?","date":"2012-04-15T21:20:11.182Z","type":"message"}
{"nick":"isaacs","message":"LOUDBOT: search semicolon","date":"2012-04-15T21:35:18.406Z","type":"message"}
{"nick":"LOUDBOT","message":"isaacs: <apeiron:##turtles [11]> SO WE GAVE YOU SEMICOLONS SO YOU CAN PUT STATEMENTS WITH YOUR STATEMENTS","date":"2012-04-15T21:35:18.666Z","type":"message"}
{"nick":"isaacs","message":"LOUDBOT: twitlast","date":"2012-04-15T21:35:27.819Z","type":"message"}
{"nick":"LOUDBOT","message":"isaacs: http://twitter.com/loudbot/status/191640769835188224 (apeiron/##turtles)","date":"2012-04-15T21:35:28.230Z","type":"message"}
{"nick":"isaacs","message":"LOUDBOT: search semicolon","date":"2012-04-15T21:35:42.655Z","type":"message"}
{"nick":"LOUDBOT","message":"isaacs: <ISH__:#mefi [11]> MAYBE IT CONSIDERS SEMICOLON UNCAPS","date":"2012-04-15T21:35:42.915Z","type":"message"}
{"nick":"isaacs","message":"LOUDBOT: search semicolon","date":"2012-04-15T21:35:46.940Z","type":"message"}
{"nick":"LOUDBOT","message":"isaacs: <SubStack:##turtles [11]> YOU ARE IMPRESSED BY THE SEMICOLON USE AND THEREFORE CONSENT TO SEXUAL CONGRESS","date":"2012-04-15T21:35:47.218Z","type":"message"}
{"nick":"isaacs","message":"LOUDBOT: twitlast","date":"2012-04-15T21:35:52.528Z","type":"message"}
{"nick":"LOUDBOT","message":"isaacs: http://twitter.com/loudbot/status/191640873346408448 (SubStack/##turtles)","date":"2012-04-15T21:35:52.879Z","type":"message"}
{"nick":"isaacs","message":"LOUDBOT: search semicolon","date":"2012-04-15T21:36:43.426Z","type":"message"}
{"nick":"LOUDBOT","message":"isaacs: <apeiron:#stimutacs [11]> THE BEST WAY TO PISS OFF AN ENGLISH TEACHER IS TO USE SEMICOLONS PROPERLY ALL THE TIME.","date":"2012-04-15T21:36:43.703Z","type":"message"}
{"nick":"isaacs","message":"LOUDBOT: twitlast","date":"2012-04-15T21:36:50.841Z","type":"message"}
{"nick":"LOUDBOT","message":"isaacs: http://twitter.com/loudbot/status/191641117970808832 (apeiron/#stimutacs)","date":"2012-04-15T21:36:51.231Z","type":"message"}
{"nick":"AvianFlu","reason":"Remote host closed the connection","date":"2012-04-15T21:37:09.536Z","type":"quit"}
{"nick":"SubStack","message":"isaacs: any idea why npm install wouldn't work here? http://travis-ci.org/#!/substack/node-browserify/jobs/1100378","date":"2012-04-15T21:42:44.293Z","type":"message"}
{"nick":"SubStack","message":"I can't duplicate this locally","date":"2012-04-15T21:42:49.052Z","type":"message"}
{"nick":"AvianFlu","date":"2012-04-15T21:45:10.427Z","type":"join"}
{"nick":"isaacs","message":"SubStack: it looks like someone's package.json isn't json","date":"2012-04-15T21:45:22.648Z","type":"message"}
{"nick":"SubStack","message":"!","date":"2012-04-15T21:45:42.045Z","type":"message"}
{"nick":"SubStack","message":"found it","date":"2012-04-15T21:48:45.957Z","type":"message"}
{"nick":"SubStack","message":"find -name package.json -exec node -e 'try { require(\"{}\") } catch (err) { console.log(\"{}\") }' \\;","date":"2012-04-15T21:48:52.827Z","type":"message"}
{"nick":"SubStack","message":"./node_modules/dnode/node_modules/socket.io/support/socket.io-client/lib/vendor/uglifyjs/package.json","date":"2012-04-15T21:49:58.768Z","type":"message"}
{"nick":"SubStack","message":"why must socket.io do everything in the most idiosyncratic way possible","date":"2012-04-15T21:51:12.660Z","type":"message"}
{"nick":"Raynos","message":"SubStack: Did you have an opinion on how to have two seperate modules use dnode without them exporting dnode middleware?","date":"2012-04-15T21:56:49.817Z","type":"message"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 10]","date":"2012-04-15T21:58:33.158Z","type":"message"}
{"nick":"TheJH","reason":"Read error: Operation timed out","date":"2012-04-15T22:08:46.919Z","type":"quit"}
{"nick":"guybrush","message":"http://www.techweekeurope.co.uk/news/sweden-grants-religious-recognition-to-file-sharing-church-52689 bwahaha","date":"2012-04-15T22:40:37.189Z","type":"message"}
{"nick":"AvianFlu","reason":"Ping timeout: 250 seconds","date":"2012-04-15T22:56:23.373Z","type":"quit"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 14]","date":"2012-04-15T22:58:33.099Z","type":"message"}
{"nick":"mikeal","reason":"Quit: Leaving.","date":"2012-04-15T23:00:00.236Z","type":"quit"}
{"nick":"wiwillia","date":"2012-04-15T23:04:15.261Z","type":"join"}
{"nick":"SubStack","message":"Raynos: what do you mean using?","date":"2012-04-15T23:12:50.722Z","type":"message"}
{"nick":"SubStack","message":"just have the modules do their thing","date":"2012-04-15T23:13:14.194Z","type":"message"}
{"nick":"mikeal","date":"2012-04-15T23:13:16.046Z","type":"join"}
{"nick":"SubStack","message":"like, with programming","date":"2012-04-15T23:13:27.314Z","type":"message"}
{"nick":"AvianFlu","date":"2012-04-15T23:13:43.747Z","type":"join"}
{"nick":"Raynos","message":"I have two modules, each create a dnode server that hooks into a http server you pass in","date":"2012-04-15T23:15:49.011Z","type":"message"}
{"nick":"Raynos","message":"because there is two of them attaching themself to the same http server bad stuff happens","date":"2012-04-15T23:16:07.309Z","type":"message"}
{"nick":"Raynos","message":"SubStack: is there anything in dnode stopping the bad stuff from happening?","date":"2012-04-15T23:16:18.244Z","type":"message"}
{"nick":"SubStack","message":"explain 'create a dnode server'","date":"2012-04-15T23:22:51.223Z","type":"message"}
{"nick":"SubStack","message":"you have some code that offers methods for the client to call?","date":"2012-04-15T23:23:12.735Z","type":"message"}
{"nick":"SubStack","message":"so you have 2 things that have methods for the client to call?","date":"2012-04-15T23:23:42.263Z","type":"message"}
{"nick":"SubStack","message":"just compose them","date":"2012-04-15T23:23:49.242Z","type":"message"}
{"nick":"SubStack","message":"dnode(function (remote, conn) { firstThing.call(this, remote, conn); secondThing.call(this, remote, conn) }).listen(...)","date":"2012-04-15T23:24:27.794Z","type":"message"}
{"nick":"SubStack","message":"or that is what .use() does for you automatically","date":"2012-04-15T23:24:43.815Z","type":"message"}
{"nick":"SubStack","message":"var server = dnode(); server.use(firstThing); server.use(secondThing); server.listen(...)","date":"2012-04-15T23:25:08.675Z","type":"message"}
{"nick":"SubStack","message":"where firstThing and secondThing are functions that can look like:","date":"2012-04-15T23:25:25.843Z","type":"message"}
{"nick":"SubStack","message":"function (remote, conn) { this.beep = function (cb) { cb('boop') } }","date":"2012-04-15T23:25:41.907Z","type":"message"}
{"nick":"Raynos","message":"I have two modules that decide they want their own dnode server","date":"2012-04-15T23:28:51.939Z","type":"message"}
{"nick":"Raynos","message":"(https://github.com/Raynos/clientmongo/blob/master/lib/server.js#L103)","date":"2012-04-15T23:28:53.881Z","type":"message"}
{"nick":"Raynos","message":"The idea being that the usage of dnode is completely hidden from anyone using the module","date":"2012-04-15T23:29:10.134Z","type":"message"}
{"nick":"Raynos","message":"I understand I can just create two dnode middlewares and do that but then the user has to know about dnode","date":"2012-04-15T23:29:33.935Z","type":"message"}
{"nick":"guybrush","message":"wtf why meteor","date":"2012-04-15T23:30:45.863Z","type":"message"}
{"nick":"SubStack","message":"Raynos: here's what I would do","date":"2012-04-15T23:31:20.540Z","type":"message"}
{"nick":"SubStack","message":"take the part inside the dnode(...) and put that as an export","date":"2012-04-15T23:31:32.903Z","type":"message"}
{"nick":"SubStack","message":"then dnode(exports.handler)","date":"2012-04-15T23:31:44.154Z","type":"message"}
{"nick":"SubStack","message":"actually","date":"2012-04-15T23:32:24.630Z","type":"message"}
{"nick":"SubStack","message":"do var server = dnode(); server.use(exports.handler); server.use(exports.methods); return server","date":"2012-04-15T23:33:07.256Z","type":"message"}
{"nick":"SubStack","message":"then instead of passing in httpServer, the client does .listen(httpServer) themselves","date":"2012-04-15T23:33:23.290Z","type":"message"}
{"nick":"SubStack","message":"serverThing(auth).listen(httpServer)","date":"2012-04-15T23:33:47.230Z","type":"message"}
{"nick":"SubStack","message":"and if people want they can also compose the handlers themselves","date":"2012-04-15T23:33:57.948Z","type":"message"}
{"nick":"Raynos","message":"I was thinking that","date":"2012-04-15T23:34:14.581Z","type":"message"}
{"nick":"Raynos","message":"Thanks o/","date":"2012-04-15T23:34:43.327Z","type":"message"}
{"nick":"SubStack","message":"another benefit of returning the server object is that people can add their own extensions by doing .use()","date":"2012-04-15T23:35:17.915Z","type":"message"}
{"nick":"mikeal","reason":"Quit: Leaving.","date":"2012-04-15T23:46:00.729Z","type":"quit"}
{"nick":"chapel","message":"guybrush: what about meteor?","date":"2012-04-15T23:46:18.586Z","type":"message"}
{"nick":"guybrush","message":"http://www.meteor.com there isnt even a package.json -.-","date":"2012-04-15T23:47:00.234Z","type":"message"}
{"nick":"chapel","message":"yeah","date":"2012-04-15T23:47:08.615Z","type":"message"}
{"nick":"chapel","message":"no npm","date":"2012-04-15T23:47:12.346Z","type":"message"}
{"nick":"guybrush","message":"i mean i dont understand what this is","date":"2012-04-15T23:47:16.300Z","type":"message"}
{"nick":"chapel","message":"they use their own module system","date":"2012-04-15T23:47:16.789Z","type":"message"}
{"nick":"guybrush","message":"why?","date":"2012-04-15T23:47:20.523Z","type":"message"}
{"nick":"chapel","message":"it also uses fibers","date":"2012-04-15T23:47:21.828Z","type":"message"}
{"nick":"guybrush","message":"what ever, why dont they make it a npm-package?","date":"2012-04-15T23:47:38.774Z","type":"message"}
{"nick":"guybrush","message":"i just dont get it","date":"2012-04-15T23:47:42.980Z","type":"message"}
{"nick":"chapel","message":"probably because they aren't interested in node","date":"2012-04-15T23:47:52.455Z","type":"message"}
{"nick":"chapel","message":"just utilizing it to make their own thing","date":"2012-04-15T23:47:59.647Z","type":"message"}
{"nick":"maxogden","message":"SubStack: i wanna hack on domstream","date":"2012-04-15T23:58:14.391Z","type":"message"}
{"nick":"rowbit","message":"Hourly usage stats: [free: 14]","date":"2012-04-15T23:58:33.141Z","type":"message"}
{"nick":"SubStack","message":"sounds excellent","date":"2012-04-15T23:58:49.634Z","type":"message"}