00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:04  <mikolalysenko>so they should come *after* fragment shaders
00:00:09  * ircretaryjoined
00:00:18  <chrisdickinson>i haven't really done a lot of interesting things with vertex shaders, tbh
00:00:51  <mikolalysenko>well, you can use them reduce some computations in fragment shaders
00:00:58  * chrisdickinsonnods
00:01:03  <mikolalysenko>like a quantity varies linearly over a face it is better to do it in a vertex shader
00:01:04  <chrisdickinson>and that's useful to touch on
00:01:13  <mikolalysenko>also you can do skinning/animation stuff in vertex shaders
00:01:28  <mikolalysenko>so maybe having them do something like create a wavy surface or whatever could be fun
00:01:34  * chrisdickinsonnods
00:01:44  <chrisdickinson>a tweening lesson might be useful
00:02:33  <mikolalysenko>if we do feedback effects, we could also have a little blurb on water shading
00:03:05  <mikolalysenko>since you can do a kind of simplistic laplacian wave solver with feedback effects
00:03:36  <mikolalysenko>and then use vertex shaders to render the displacements
00:04:01  <mikolalysenko>another trick with vertex shaders is you can use them to do "scatter" operations
00:04:05  <mikolalysenko>like particle effects and so on
00:04:30  <mikolalysenko>for example, have a feedback effect for particle animation and have a vertex shader render the positions
00:05:00  <chrisdickinson>oh yeah
00:05:14  <chrisdickinson>+ using gl_PointSize, etc
00:05:19  <mikolalysenko>yep
00:05:33  <mikolalysenko>so a particle demo could be kind of a fun project too
00:06:06  <mikolalysenko>you can also adapt that trick to do stuff like crowd rendering /swarming/etc.
00:06:30  <chrisdickinson>(it'd be really cool to do a multipass render thing as a penultimate lesson, though that might be out of scope)
00:06:43  <mikolalysenko>yeah, shadows are a great topic for that
00:06:49  * dominictarrquit (Ping timeout: 240 seconds)
00:06:51  <mikolalysenko>since it is a pretty complicated but also useful effect
00:06:59  * chrisdickinsonnods
00:07:05  <chrisdickinson>that + SSAO?
00:07:07  <mikolalysenko>however, I think we would run out of time pretty quickly just covering the basics
00:07:13  <mikolalysenko>ssao might be easier
00:07:31  <mikolalysenko>but it is hard to do reliably in webgl due to lack of floating point support and multiple render targets
00:07:43  <mikolalysenko>maybe we could try some kind of full screen blur/hdr effect?
00:07:58  <chrisdickinson>yeah
00:08:03  <mikolalysenko>those are easier to code than ssao, and generally more useful
00:08:34  * ceejbotquit (Remote host closed the connection)
00:08:56  <chrisdickinson>sidenote, multiple render targets are hitting soon i think: https://hacks.mozilla.org/2014/01/webgl-deferred-shading/
00:09:18  <chrisdickinson>(also http://www.dartgamedevs.org/2013/07/multiple-render-targets-and-deferred.html)
00:09:21  <mikolalysenko>I can't wait, it will make gpu programming a lot more powerful
00:09:22  * ceejbotjoined
00:09:54  <mikolalysenko>the only thing after that is then to get better async read from gpus
00:10:00  <chrisdickinson>actually, doing something like that hacks.mozilla blog post might be really cool
00:10:01  <mikolalysenko>and also the capability to read floats...
00:10:30  <mikolalysenko>hmm
00:10:39  <mikolalysenko>it might be pretty fun
00:11:59  * toddselfquit (Ping timeout: 240 seconds)
00:12:41  <mikolalysenko>I think that the projects ought to introduce specific features of glsl though
00:12:53  <mikolalysenko>or concepts that are generally useful
00:13:04  <marcello3d>is webgl supported on mobile anywhere?
00:13:15  <chrisdickinson>some android, some fxos, i think
00:13:17  * thlorenzjoined
00:13:35  <chrisdickinson>http://webglstats.com/
00:13:59  * ceejbotquit (Ping timeout: 240 seconds)
00:14:16  * wolfeida_joined
00:14:23  <marcello3d>wow, youtube.com stats?
00:14:55  <marcello3d>what happened in july? chrome turned on webgl by default?
00:15:30  <mikolalysenko>chrome upgraded webgl from experimental -> stable
00:16:06  <mikolalysenko>I'm kind of shocked that 20% of mobile browsers have webgl
00:16:16  <mikolalysenko>I thought it was much lower
00:17:03  * thlorenzquit (Remote host closed the connection)
00:17:06  <marcello3d>could be bias. I'm guessing fewer people go to youtube/vimeo on mobile web (or possibly google doesn't include the tracker?
00:17:10  <jlord>ceejbot: ya thanks!!
00:17:16  * wolfeidauquit (Ping timeout: 265 seconds)
00:17:34  * thlorenzjoined
00:18:49  * defunctzombie_zzchanged nick to defunctzombie
00:21:47  * AvianFluquit (Ping timeout: 264 seconds)
00:22:01  * thlorenzquit (Ping timeout: 240 seconds)
00:29:03  * ceejbotjoined
00:31:45  * AvianPhonejoined
00:34:11  * maksimlinquit (Ping timeout: 265 seconds)
00:38:50  * thlorenzjoined
00:39:48  * thlorenz_joined
00:39:54  * dominictarrjoined
00:41:06  * AvianPhonequit (Ping timeout: 244 seconds)
00:41:14  * AvianPhonejoined
00:41:40  * thlorenz_quit (Remote host closed the connection)
00:42:13  * thlorenz_joined
00:43:05  * toddselfjoined
00:43:23  * thlorenzquit (Ping timeout: 264 seconds)
00:46:45  * thlorenz_quit (Ping timeout: 265 seconds)
00:47:12  * toddselfquit (Ping timeout: 240 seconds)
00:47:19  <rowbit1>Hourly usage stats: [developer: 5, free: 26]
00:47:44  * maksimlinjoined
00:47:50  * tilgovi_changed nick to tilgovi
00:49:59  * dominictarrquit (Ping timeout: 264 seconds)
00:51:47  <ogd>rwaldron: i forgot i made this sweet mp3 http://max.ic.ht/dropbox/bucket/rickwaldronsayingprogramminglanguages.mp3
00:52:11  <rwaldron>hahahaha
00:52:15  <rwaldron><3
00:54:20  * AvianPhonequit (Remote host closed the connection)
00:54:41  * AvianPhonejoined
00:54:48  * AvianPhonequit (Client Quit)
00:55:23  * tilgoviquit (Remote host closed the connection)
01:01:20  <yorick>pkrumins: did you mean to write `git mv staging master` or did you mean `ploy mv`?
01:03:18  * eugenewarequit (Remote host closed the connection)
01:03:49  * phatedjoined
01:04:47  * yorickquit (Remote host closed the connection)
01:05:27  <pkrumins>yorick, yes i did.
01:06:07  <pkrumins>fixed
01:08:55  * phatedquit (Read error: Connection reset by peer)
01:08:55  * dominictarrjoined
01:09:13  * phatedjoined
01:12:05  * AvianFlujoined
01:13:39  * DTrejoquit (Remote host closed the connection)
01:21:41  * naneaujoined
01:27:27  * abirajaquit (Quit: abiraja)
01:32:08  * Kesslerjoined
01:33:54  * Kessler_joined
01:34:16  * kevino80joined
01:36:25  * Kesslerquit (Ping timeout: 240 seconds)
01:37:17  * toddselfjoined
01:37:58  * kevino80quit (Client Quit)
01:39:36  * Kessler_quit (Ping timeout: 240 seconds)
01:41:51  * toddselfquit (Ping timeout: 265 seconds)
01:46:54  * taterbasequit (Quit: Connection closed for inactivity)
01:47:19  <rowbit1>Hourly usage stats: [developer: 2, free: 22]
01:48:45  * Kesslerjoined
01:49:06  * thealphanerdquit (Quit: thealphanerd)
01:52:17  * ferossquit (Quit: feross)
01:59:57  * ceejbotquit (Remote host closed the connection)
02:00:36  * ceejbotjoined
02:04:05  * maksimlinquit (Ping timeout: 265 seconds)
02:04:29  * dominictarrquit (Remote host closed the connection)
02:04:38  * ceejbotquit (Ping timeout: 240 seconds)
02:05:31  * ferossjoined
02:06:48  * Kesslerquit (Ping timeout: 264 seconds)
02:17:31  * not_a_guestquit (Quit: Connection closed for inactivity)
02:19:27  * taterbasejoined
02:21:31  <tim_smart>browserify question: Is is possible to get information about the client calling one of your exposed methods?
02:21:42  * thlorenzjoined
02:22:00  <tim_smart>Like the underlying stream etc?
02:31:26  * toddselfjoined
02:32:04  * calvinfoquit (Quit: Leaving.)
02:32:56  * phatedquit (Remote host closed the connection)
02:35:15  * thlorenzaccidently started rebuilding his linux kernel
02:35:54  * DTrejojoined
02:36:11  * toddselfquit (Ping timeout: 264 seconds)
02:36:13  <thlorenz>all I wanted was aufs3-util since docker wants it and things have been building ever since
02:36:52  * dominictarrjoined
02:37:29  * defunctzombiechanged nick to defunctzombie_zz
02:39:22  * naneauquit (Quit: Part.)
02:44:24  * phatedjoined
02:46:58  * mikolalysenkoquit (Ping timeout: 240 seconds)
02:47:19  <rowbit1>Hourly usage stats: [developer: 0, free: 15]
02:52:18  * dominictarrpart
02:55:02  <tim_smart>dnode questiong ^^
02:57:07  <substack>tim_smart: you can use the remote scope for that
02:57:40  <substack>dnode(function (remote) { return { serverMethod: function () { /* use the client's remote object here */ } } })
02:58:14  <tim_smart>substack: Ah so you can pass a function. Thanks!
03:01:01  * dguttmanquit (Quit: dguttman)
03:02:36  * calvinfojoined
03:04:50  * calvinfo1joined
03:04:51  * calvinfoquit (Read error: Connection reset by peer)
03:11:57  * dominictarrjoined
03:25:42  * toddselfjoined
03:27:12  * phatedquit (Remote host closed the connection)
03:30:11  * toddselfquit (Ping timeout: 264 seconds)
03:45:02  * thlorenzquit (Read error: Connection reset by peer)
03:47:19  <rowbit1>Daily usage stats: [developer: 7, free: 30]
03:47:19  <rowbit1>Hourly usage stats: [developer: 0, free: 13]
03:49:37  * hoobdeeblajoined
03:50:03  * hoobdeeblaquit (Client Quit)
03:55:10  * ceejbotjoined
04:02:01  * cpupquit (Ping timeout: 265 seconds)
04:02:06  * thealphanerdjoined
04:04:51  * cpupjoined
04:04:59  * pfrazequit (Ping timeout: 264 seconds)
04:09:27  * DTrejoquit (Remote host closed the connection)
04:17:49  * cpupquit (Read error: Connection reset by peer)
04:18:36  * cpupjoined
04:19:56  * toddselfjoined
04:24:00  * toddselfquit (Ping timeout: 240 seconds)
04:24:09  * maksimlinjoined
04:37:47  * phatedjoined
04:42:24  * phatedquit (Ping timeout: 240 seconds)
04:47:19  <rowbit1>Hourly usage stats: [developer: 0, free: 13]
04:55:01  * ferossquit (Quit: feross)
05:01:02  * ferossjoined
05:01:04  * defunctzombie_zzchanged nick to defunctzombie
05:05:00  * cpupquit (Read error: Connection reset by peer)
05:06:45  * i_m_cajoined
05:06:59  * cpupjoined
05:14:07  * toddselfjoined
05:16:15  * ceejbot_joined
05:17:45  * gozalaquit (Quit: Connection closed for inactivity)
05:18:18  * toddselfquit (Ping timeout: 240 seconds)
05:18:53  * ceejbotquit (Ping timeout: 265 seconds)
05:23:53  * DTrejojoined
05:25:59  * not_a_guestjoined
05:28:22  * i_m_caquit (Ping timeout: 244 seconds)
05:32:22  * defunctzombiechanged nick to defunctzombie_zz
05:35:10  * ednapiranhaquit (Quit: Leaving...)
05:39:58  * phatedjoined
05:45:36  * mikolalysenkojoined
05:47:04  * ednapiranhajoined
05:47:19  <rowbit1>Hourly usage stats: [developer: 0, free: 29]
05:53:56  * DTrejoquit (Remote host closed the connection)
06:08:21  * toddselfjoined
06:13:01  * toddselfquit (Ping timeout: 265 seconds)
06:17:28  * ceejbot_quit (Remote host closed the connection)
06:20:16  * phatedquit (Remote host closed the connection)
06:31:00  * DTrejojoined
06:31:54  * thealphanerdquit (Quit: thealphanerd)
06:41:57  * AvianFluquit (Remote host closed the connection)
06:43:54  * DTrejoquit (Remote host closed the connection)
06:45:04  * pfrazejoined
06:47:19  <rowbit1>Hourly usage stats: [developer: 0, free: 54]
06:47:38  * ednapiranhaquit (Quit: Leaving...)
07:02:35  * toddselfjoined
07:07:03  * toddselfquit (Ping timeout: 244 seconds)
07:09:34  * pfrazequit (Ping timeout: 265 seconds)
07:11:14  * wolfeida_quit (Remote host closed the connection)
07:15:36  * fotoveritequit (Quit: fotoverite)
07:15:37  * ednapiranhajoined
07:16:29  * eugenewarejoined
07:22:33  * eugenewarequit (Ping timeout: 244 seconds)
07:24:14  * calvinfo1quit (Quit: Leaving.)
07:27:09  * DTrejojoined
07:33:54  * peutetrejoined
07:47:19  <rowbit1>Hourly usage stats: [developer: 0, free: 56]
07:56:49  * toddselfjoined
08:01:17  * toddselfquit (Ping timeout: 265 seconds)
08:07:32  * Maciek416quit (Remote host closed the connection)
08:09:39  * ednapiranhaquit (Quit: Leaving...)
08:13:06  * djcoinjoined
08:20:25  * mikolalysenkoquit (Ping timeout: 244 seconds)
08:34:59  * dominictarrquit (Ping timeout: 264 seconds)
08:35:07  * ferossquit (Quit: feross)
08:38:48  * ferossjoined
08:41:19  * maksimlinquit (Quit: ChatZilla 0.9.90.1 [Firefox 27.0.1/20140218140359])
08:47:20  <rowbit1>Hourly usage stats: [developer: 0, free: 36]
08:51:02  * toddselfjoined
08:55:29  * toddselfquit (Ping timeout: 240 seconds)
08:55:34  * calvinfojoined
09:00:17  * calvinfoquit (Ping timeout: 252 seconds)
09:06:16  * wolfeidaujoined
09:09:46  <rowbit1>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
09:09:46  <rowbit1>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
09:12:43  <substack>woo
09:26:54  * taterbasequit (Quit: Connection closed for inactivity)
09:44:52  * DTrejoquit (Remote host closed the connection)
09:45:23  * toddselfjoined
09:46:04  * ferossquit (Quit: feross)
09:47:19  <rowbit1>Hourly usage stats: [developer: 78, free: 42]
09:49:29  * toddselfquit (Ping timeout: 240 seconds)
09:56:10  * Maciek416joined
09:56:15  * calvinfojoined
10:00:29  * calvinfoquit (Ping timeout: 240 seconds)
10:01:09  * Maciek416quit (Ping timeout: 265 seconds)
10:21:29  * phatedjoined
10:22:25  * peutetrequit (Ping timeout: 240 seconds)
10:26:25  * phatedquit (Ping timeout: 240 seconds)
10:32:46  * peutetrejoined
10:34:22  * peutetrequit (Client Quit)
10:39:30  * toddselfjoined
10:43:59  * toddselfquit (Ping timeout: 241 seconds)
10:44:52  * peutetrejoined
10:47:19  <rowbit1>Hourly usage stats: [developer: 0, free: 57]
10:48:27  * funkytekquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
10:57:00  * calvinfojoined
11:01:12  * calvinfoquit (Ping timeout: 240 seconds)
11:04:57  * wolfeidauquit (Ping timeout: 265 seconds)
11:21:05  * soldairjoined
11:33:52  * toddselfjoined
11:38:01  * toddselfquit (Ping timeout: 240 seconds)
11:45:02  * Maciek416joined
11:47:19  <rowbit1>Hourly usage stats: [developer: 0, free: 52]
11:49:54  * Maciek416quit (Ping timeout: 265 seconds)
11:54:18  * peutetrequit (Quit: peutetre)
11:55:56  * sveisveijoined
11:57:46  * calvinfojoined
11:58:54  * yorickjoined
12:01:59  * calvinfoquit (Ping timeout: 240 seconds)
12:08:36  * timoxley_changed nick to timoxley
12:09:23  * soldairquit (Ping timeout: 245 seconds)
12:25:39  <yorick>substack: are you upgrading airport for seaport 2.0 sometime soon?
12:26:58  <substack>yorick: yes
12:27:21  <yorick>substack: great! :-)
12:28:03  <yorick>(also, what changed since 1.7?)
12:28:11  * toddselfjoined
12:29:00  <substack>yorick: uses a simple json protocol instead of crdt
12:29:10  <substack>because of ever-growing history problems with crdt
12:29:48  <yorick>hm. crdt was pretty cool
12:30:21  <yorick>(also crdt is still in the deps ;))
12:31:33  * contrahaxquit (Quit: Sleeping)
12:32:29  * toddselfquit (Ping timeout: 240 seconds)
12:37:15  * Kesslerjoined
12:46:35  * peutetrejoined
12:47:19  <rowbit1>Hourly usage stats: [developer: 0, free: 49]
12:56:30  * thlorenzjoined
12:58:28  * calvinfojoined
13:00:44  * thlorenzquit (Client Quit)
13:03:11  * calvinfoquit (Ping timeout: 264 seconds)
13:07:10  * fotoveritejoined
13:08:49  * ceejbotjoined
13:17:39  * eugenewarejoined
13:21:59  * eugenewarequit (Ping timeout: 240 seconds)
13:22:17  * toddselfjoined
13:27:03  * toddselfquit (Ping timeout: 265 seconds)
13:33:58  * Maciek416joined
13:38:29  * Maciek416quit (Ping timeout: 240 seconds)
13:43:00  * Kesslerquit (Ping timeout: 265 seconds)
13:45:38  * Kesslerjoined
13:47:20  <rowbit1>Hourly usage stats: [developer: 0, free: 49]
13:48:16  * ceejbotquit (Remote host closed the connection)
13:49:52  * cpup_joined
13:50:01  * AvianFlujoined
13:50:49  * cpupquit (Ping timeout: 240 seconds)
13:58:03  * cpup_changed nick to cpup
13:58:50  * Kesslerquit (Ping timeout: 244 seconds)
13:59:16  * calvinfojoined
14:03:18  * calvinfoquit (Ping timeout: 240 seconds)
14:04:18  * kevino80joined
14:10:37  * taterbasejoined
14:17:31  * not_a_guestquit (Quit: Connection closed for inactivity)
14:17:40  * eugenewarejoined
14:18:48  * guybrushquit (Excess Flood)
14:18:54  * guybrushjoined
14:22:07  * eugenewarequit (Ping timeout: 252 seconds)
14:24:27  * toddselfjoined
14:24:56  * pfrazejoined
14:32:02  * Kesslerjoined
14:39:11  * Kesslerquit (Ping timeout: 252 seconds)
14:43:05  * peutetrequit (Quit: peutetre)
14:47:19  <rowbit1>Hourly usage stats: [developer: 0, free: 43]
14:52:10  * toddselfquit
15:00:05  * calvinfojoined
15:04:29  * calvinfoquit (Ping timeout: 240 seconds)
15:13:08  <calvinmetcalf>ogd: https://github.com/maxogden/level.js/pull/29 <--- it makes it a drop in replacement
15:17:17  * dguttmanjoined
15:22:46  * Maciek416joined
15:27:25  * Maciek416quit (Ping timeout: 265 seconds)
15:43:22  * AvianFluquit (Ping timeout: 265 seconds)
15:47:09  * abirajajoined
15:47:19  <rowbit1>Hourly usage stats: [developer: 3, free: 21]
15:56:08  <pkrumins>yorick: it may be cool but if it doesn't work in production it's useless
15:56:24  <pkrumins>yorick: also thanks for finding that typo in the article
16:00:43  * calvinfojoined
16:03:39  * Maciek416joined
16:03:51  * ednapiranhajoined
16:05:35  * calvinfoquit (Ping timeout: 264 seconds)
16:09:16  * ins0mnia_joined
16:10:38  * ins0mniaquit (Ping timeout: 240 seconds)
16:11:06  * Kesslerjoined
16:13:41  <jesusabdullah>http://www.inside-r.org/r-doc/methods/ReferenceClasses oof, relative gnar
16:15:14  <rowbit1>substack, pkrumins: Encoders down: 50.57.174.105 (dev-ie8-2)
16:16:47  * Kesslerquit (Ping timeout: 244 seconds)
16:18:42  * peutetrejoined
16:30:33  * ceejbotjoined
16:31:15  * naneaujoined
16:33:12  * kevino80quit (Remote host closed the connection)
16:38:49  * AvianFlujoined
16:39:33  * kevino80joined
16:47:19  <rowbit1>Hourly usage stats: [developer: 0, free: 55]
16:48:59  * cpupquit (Ping timeout: 240 seconds)
16:50:02  * calvinfojoined
16:50:35  * ceejbotquit (Remote host closed the connection)
16:52:18  * abirajaquit (Ping timeout: 240 seconds)
16:55:43  * phatedjoined
17:00:29  * tilgovijoined
17:01:44  * phatedquit (Ping timeout: 244 seconds)
17:03:01  * cpupjoined
17:11:14  * kevino80quit (Remote host closed the connection)
17:13:42  * mikolalysenkojoined
17:17:47  * eugenewarejoined
17:21:59  * eugenewarequit (Ping timeout: 240 seconds)
17:23:06  * kevino80joined
17:37:06  * gozalajoined
17:47:19  <rowbit1>Hourly usage stats: [developer: 0, free: 50]
17:51:13  * tilgoviquit (Remote host closed the connection)
17:59:26  * Kesslerjoined
18:01:57  * mmaleckiquit (Read error: Connection reset by peer)
18:02:12  * mmaleckijoined
18:04:41  * abirajajoined
18:06:03  * Kesslerquit (Ping timeout: 252 seconds)
18:11:23  * solidnojoined
18:12:44  * peutetrequit (Quit: peutetre)
18:15:21  * phatedjoined
18:17:18  * xaqjoined
18:17:42  * eugenewarejoined
18:18:07  * xaq_joined
18:19:44  * kevino80quit (Remote host closed the connection)
18:21:29  <ogd>has anyone written a Go to Node transpiler yet
18:21:38  * xaqquit (Ping timeout: 240 seconds)
18:22:01  * eugenewarequit (Ping timeout: 240 seconds)
18:22:49  * mikolalysenkoquit (Ping timeout: 240 seconds)
18:26:23  * kevino80joined
18:28:17  * mikolalysenkojoined
18:40:55  * phatedquit (Remote host closed the connection)
18:45:08  * contrahaxjoined
18:47:18  * solidnoquit (Ping timeout: 240 seconds)
18:47:19  <rowbit1>Hourly usage stats: [developer: 3, free: 56]
18:55:38  * thealphanerdjoined
19:03:21  * sveisveiquit (Quit: Connection closed for inactivity)
19:06:36  * ceejbotjoined
19:14:39  * eugenewarejoined
19:14:58  * mikolalysenkoquit (Ping timeout: 240 seconds)
19:16:21  * defunctzombie_zzchanged nick to defunctzombie
19:17:52  <defunctzombie>ogd: I think there is a go llvm larget and emscripten can handle anything llvm (tho I am not sure)
19:18:39  * eugenewa_joined
19:18:58  * eugenewarequit (Ping timeout: 240 seconds)
19:21:03  * naneauquit (Quit: Quit.)
19:21:20  * eugenewa_quit (Read error: Connection reset by peer)
19:24:23  <terinjokes>defunctzombie: is there a good way to mark orientation in zuul?
19:24:35  <terinjokes>for iOS and Android?
19:24:37  <defunctzombie>terinjokes: orientation?
19:24:55  <terinjokes>device orientation
19:25:08  <defunctzombie>oh hm... interesting haven't thought about that (cause I don't use it for visual stuff typically)
19:25:16  <terinjokes>portrait or landscape
19:25:38  <defunctzombie>if there is a way to specify via the browser config (saucelabs webdriver api) then it would be possible
19:25:54  <terinjokes>iphone and ipad are two different "browsers" to saucelabs
19:26:17  <terinjokes>but android phone and android tablet are different "device-type", but the same browser
19:26:47  <terinjokes>defunctzombie: yea, orientation is "device-orientation", but we'll want to end up testing both
19:26:55  <defunctzombie>you can specify different browsers, easily
19:27:07  <defunctzombie>device type is not currently exposed, only platform
19:27:10  <defunctzombie>maybe that means the same thing
19:27:31  <defunctzombie>with zuul you can do "platform: Mac 10.9" or "platform: Windows 2008" or whatnot
19:27:34  <defunctzombie>under each browser
19:27:39  * peutetrejoined
19:27:39  <defunctzombie>maybe something similar works for android
19:27:50  <defunctzombie>https://saucelabs.com/platforms
19:27:54  <defunctzombie>that would be the page to check
19:28:27  <defunctzombie>so it seems there are some config options
19:28:28  <defunctzombie>caps['device-type'] = "tablet"
19:28:28  <defunctzombie>caps['device-orientation'] = 'portrait'
19:28:40  <defunctzombie>zuul doesn't support those currently but I think we can easily add them
19:29:05  <defunctzombie>if you want to take a stab at it or open an issue describing this
19:30:55  * addisonjquit (Quit: Connection closed for inactivity)
19:31:01  <terinjokes>defunctzombie: yes, i checked platform, thus why I asked :)
19:34:15  * eugenewarejoined
19:42:11  * ednapiranhaquit (Remote host closed the connection)
19:43:59  * eugenewa_joined
19:47:19  <rowbit1>Hourly usage stats: [developer: 1, free: 41]
19:47:56  * eugenewarequit (Ping timeout: 265 seconds)
19:51:45  * defunctzombiechanged nick to defunctzombie_zz
19:52:28  * Kesslerjoined
19:59:50  * thealphanerdquit (Quit: thealphanerd)
20:01:56  * phatedjoined
20:02:28  * eugenewarejoined
20:03:09  * eugenewarequit (Remote host closed the connection)
20:03:27  * Domenic_quit (Ping timeout: 265 seconds)
20:03:28  * eugenewa_quit (Read error: No route to host)
20:03:35  * Domenic_joined
20:08:29  * Kesslerquit (Ping timeout: 240 seconds)
20:09:08  * maximuskajoined
20:12:24  * maximuskaquit (Remote host closed the connection)
20:15:15  <rowbit1>substack, pkrumins: A developer is waiting in the queue for explorer/8.0
20:16:56  * dubroy_____quit (Ping timeout: 265 seconds)
20:17:25  * gozalaquit (Ping timeout: 265 seconds)
20:17:25  * chapelquit (Ping timeout: 265 seconds)
20:18:50  * wolfeidaujoined
20:19:16  * dubroy_____joined
20:19:26  * gozalajoined
20:20:25  * chapeljoined
20:23:40  * mikolalysenkojoined
20:25:29  * xaq_quit (Remote host closed the connection)
20:28:57  * eugenewarejoined
20:30:51  * ceejbotquit (Remote host closed the connection)
20:31:27  * ceejbotjoined
20:34:34  <creationix>chrisdickinson, hmm, I think I may have hit a case where your inflate can't inflate data created by pako's deflate
20:34:44  <creationix>though it's possible it's a bug in my code
20:35:03  <chrisdickinson>oh?
20:35:38  * ceejbotquit (Ping timeout: 244 seconds)
20:35:51  <creationix>run this test in node https://github.com/creationix/js-git/blob/master/test/test-pack-codec.js
20:36:00  <creationix>just clone and `npm install` normally should work
20:36:07  * addisonjjoined
20:38:14  <creationix>chrisdickinson, your code has no problem decoding the packfile created by real git
20:38:33  <creationix>but when parsing the one I create, it complains about failed header check after several successful object parses
20:39:06  <creationix>comparing the output, the pako code is missing just a few bytes here and there, but otherwise is identical
20:39:31  <chrisdickinson>is it outputting a stream header?
20:39:43  <creationix>it works for most the objects
20:39:49  <creationix>so I assume so
20:40:06  <creationix>if node had sync zlib I would just use that in node, but it doesn't
20:40:19  * ednapiranhajoined
20:40:52  * calvinfoquit (Quit: Leaving.)
20:41:35  <creationix>hmm, I just noticed that my embedded/modified version of inflate/min is missing a copyright header
20:43:19  <chrisdickinson>the thing that's failing is the FCHECK... check, from https://www.ietf.org/rfc/rfc1950.txt
20:43:36  <chrisdickinson>"The FCHECK value must be such that CMF and FLG, when viewed as a 16-bit unsigned integer stored in MSB order (CMF*256 + FLG), is a multiple of 31."
20:44:26  <chrisdickinson>you might switch the `|` for a `+`
20:45:18  <chrisdickinson>but since we're shifting an entire byte over and the thing we're or'ing with is <256, | should be equivalent
20:47:19  <rowbit1>Hourly usage stats: [developer: 2, free: 5]
20:47:34  <creationix>chrisdickinson, nope, same behavior
20:47:48  <creationix>I wonder if pako is emitting invalid data
20:47:56  * ceejbotjoined
20:48:19  <chrisdickinson>in that case either pako is outputting a bad stream header (probably unlikely), or the packfile parsing has gotten misaligned at some point
20:48:30  <creationix>that could be too
20:48:40  <chrisdickinson>(possibly due to the interplay between pako and inflate)
20:49:08  <creationix>well, for creating the packstream, it's pretty straightforward. There are no partial chunks
20:49:28  <creationix>and parsing the packstream is all my state-machine with your inflate embedded inside it
20:49:46  <creationix>I'll see if I can parse it manually at the point they differ in binary output
20:49:54  <creationix>the pako output is very close to the zlib output from real git
20:50:13  * naneaujoined
20:51:54  <chrisdickinson>subtle differences in a deflated stream could potentially balloon out, though
20:52:27  <chrisdickinson>esp. since packfile parsing is measuring the number of inflated bytes
20:52:54  * calvinfojoined
20:53:45  * peutetrequit (Quit: peutetre)
20:53:55  <creationix>yep
20:59:08  <creationix>chrisdickinson, interesting, the output is identical except for 3 bytes missing from the pako version https://gist.github.com/creationix/320730a0155c33c1a02b
20:59:14  <creationix>(and the checksums differ, but that's expected)
20:59:31  <creationix>now the hard part is finding where the objects start in this stream
21:00:13  <chrisdickinson>this is the packfile stream?
21:00:50  <chrisdickinson>i think 789c is the inflate header, iirc
21:03:56  <creationix>yeah, this is the entire packfile stream. I updated the gist to be wrapped at 80 cols
21:06:40  <creationix>yeah, I see lots of 789c pairs about where I would expect items. That's helpful
21:08:00  * phatedquit (Remote host closed the connection)
21:12:25  <creationix>chrisdickinson, yeah, I'm skipping the first byte when feeding your code (thus creating a bad header). I don't think inflate is at fault.
21:12:36  <creationix>thanks for the help though!
21:12:41  <chrisdickinson>no prob!
21:12:48  * thealphanerdjoined
21:12:55  <creationix>it's either pako or my code handling ofs-delta badly
21:13:06  <creationix>there are two ofs-deltas in this stream and two places where data is missing
21:13:10  <chrisdickinson><3 ofs-delta :|
21:14:01  <chrisdickinson>i think every time i've written a packfile parser, my initial attempt at ofs-delta has been broken & that brokenness presents itself as something completely unrelated
21:18:14  <eugeneware>jlord: what was that google spreadsheet node library you mentioned last night? Want to play :-)
21:18:37  * ferossjoined
21:19:49  <mikolalysenko>the new github api is interesting
21:20:47  * JohnDotAwesomejoined
21:20:54  <mikolalysenko>I wonder what it would take to use it to add latex support to github flavored markdown...
21:22:05  * funkytekjoined
21:24:49  <creationix>oh look, github did fix a bug I reported! http://developer.github.com/changes/2014-03-04-timezone-handling-changes/
21:25:31  * peutetrejoined
21:27:30  <mikolalysenko>I am still waiting for them to add data url support to markdown
21:29:18  <creationix>chrisdickinson, hah, yeah, it's my fault. I forgot to write the offset!
21:29:34  <creationix>I write the type and length, but then start writing the deflated body
21:29:53  <chrisdickinson>aah
21:29:55  <chrisdickinson>that makes sense
21:35:08  <creationix>so this good news is pako's deflate output is identical to what git uses
21:35:24  <creationix>so their zlib port must be very close
21:36:11  * phatedjoined
21:39:45  * defunctzombie_zzchanged nick to defunctzombie
21:42:16  * ralphtheninjajoined
21:43:09  * defunctzombiechanged nick to defunctzombie_zz
21:43:15  <rowbit1>substack, pkrumins: Encoders down: 50.57.171.229 (dev-ie6-2)
21:47:04  * ralphtheninjapart
21:47:13  * wolfeidauquit (Ping timeout: 240 seconds)
21:47:15  * defunctzombie_zzchanged nick to defunctzombie
21:47:19  <rowbit1>Hourly usage stats: [developer: 8, free: 34]
21:47:52  <creationix>and this is why we write tests!
21:48:08  <creationix>and why I insisted on my test packstream contained atleast one ofs-delta
21:56:59  * phatedquit (Remote host closed the connection)
22:09:43  <marcello3d>anyone here going to the nodeup live thing tonight?
22:10:15  <rowbit1>substack, pkrumins: These encoders are STILL down: 50.57.174.105(dev-ie8-2)
22:12:37  * dominictarrjoined
22:16:33  * maksimlinjoined
22:22:20  <creationix>chrisdickinson, how do you write the modified LEB 128 used in ofs-delta's format?
22:22:52  <creationix>I see how to decode it, but I'm having trouble figuring out how to write it. Did you get that far (writing packfiles containing ofs-delta)?
22:23:14  <chrisdickinson>i had a lot of false starts on that, actually; i never got a *good* version done
22:23:35  <chrisdickinson>git uses a rolling hash, a la rsync, to compute it
22:23:42  <chrisdickinson>(see also, "rabin polynomials")
22:24:17  <chrisdickinson>but in general you just want anything that can give you shortest edit distance
22:24:25  <chrisdickinson>slash longest common subsequence
22:26:25  <creationix>no, I mean to encode the offset distance
22:26:46  <creationix>that whole 2^2|2^14... bit confuses me
22:26:59  <creationix>* 2^7|2^14|...
22:27:38  * randall_joined
22:30:11  * randall_changed nick to tilgovi
22:33:48  <chrisdickinson>aah
22:34:04  <chrisdickinson>think of it as writing into the available bytes
22:34:12  <chrisdickinson>err
22:34:14  <chrisdickinson>the available bits
22:37:25  * kevino80quit (Remote host closed the connection)
22:40:14  <creationix>found the c version I think https://github.com/git/git/blob/master/builtin/pack-objects.c#L296-L305
22:43:25  * peutetrequit (Quit: peutetre)
22:44:03  <feross>guys, if you do 'var str = new String('hey')' then typeof str === 'object'
22:44:05  <feross>WTF
22:44:29  <chrisdickinson>there are two types of values in JS
22:44:35  <chrisdickinson>well..
22:44:36  <feross>this means that if you're checking strings that users pass to your code, that typeof str === 'string' is not enough
22:44:38  <chrisdickinson>two types of "things"
22:44:43  <feross>and util.isString in core is wrong too
22:44:46  <chrisdickinson>there are values (unboxed) and objects (boxed)
22:45:01  <chrisdickinson>strictly speaking, `new String('sdf')` is *not* a string value
22:45:08  <chrisdickinson>it's an object that can be coerced to a string
22:45:18  <feross>util.isString only checks === typeof 'string'
22:45:21  <chrisdickinson>yep
22:45:24  <feross>is this behavior incorrect?
22:45:26  <chrisdickinson>and new String('sdf') isn't a string
22:45:38  <feross>hmm
22:45:44  <chrisdickinson>`new String('sdf').toString()` "unboxes" the string value
22:45:47  <chrisdickinson>similarly
22:46:04  <chrisdickinson>"Asdf".toUpperCase() "boxes" the string with `new String`
22:46:25  <chrisdickinson>so it's really `(new String("Asdf")).toUpperCase()`
22:46:48  <creationix>chrisdickinson, with a .toString() tacked on the end
22:46:56  <feross>but it gets unboxed afterwards!
22:46:59  <chrisdickinson>creationix: nope, because toUpperCase returns a primative
22:47:00  <feross>creationix: yep
22:47:02  <feross>oh
22:47:09  <chrisdickinson>toUpperCase returns primitives
22:47:14  <creationix>ahh, so it doesn't need to
22:47:19  <rowbit1>Hourly usage stats: [developer: 0, free: 31]
22:47:19  <chrisdickinson>yup
22:47:36  <chrisdickinson>any time you look a property up off of a value, it is automatically boxed
22:47:50  <chrisdickinson>and any time you perform arithmetic on an object, it is unboxed
22:48:32  <chrisdickinson>objects are unboxed by calling `valueOf` if available, and if the result isn't `typeof === object`, using that
22:48:41  <chrisdickinson>if that fails it will proceed to `toString`
22:48:54  <chrisdickinson>(NB: there's one kind of object that defies that pattern -- Date)
22:49:30  <chrisdickinson>I think the strong line between values and objects in JS -- though much maligned -- is actually kind of nice
22:49:52  * phatedjoined
22:51:18  <creationix>chrisdickinson, good thing I know how to use logarithms https://github.com/creationix/js-git/blob/master/lib/pack-codec.js#L316-L325
22:51:31  <creationix>is there a faster way to write backwards?
22:56:17  * wolfeidaujoined
22:58:36  * funkytekquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
23:02:27  <rowbit1>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
23:02:27  <rowbit1>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
23:02:27  <rowbit1>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
23:03:19  <pkrumins>woo
23:03:41  * contrahaxquit (Ping timeout: 265 seconds)
23:03:55  <chrisdickinson>creationix: i can't think of any way. that's pretty slick!
23:04:17  <creationix>my other idea was to push to a temporary array and then push the new array onto the old one in reverse
23:04:21  <creationix>but that's probably slower
23:04:23  <feross>chrisdickinson: thanks for the explanation
23:04:26  <feross>that was super helpful to me
23:05:56  * eugenewarequit (Remote host closed the connection)
23:06:29  * eugenewarejoined
23:06:30  <creationix>speaking of Date, I changed js-git to not return Date instances when parsing commits and tags
23:06:40  <creationix>I just return a normal js object with {seconds,offset}
23:07:04  <creationix>you can get a date with new Date(date.seconds * 1000)
23:07:14  <creationix>(and there is no way to set the timezone on a js date object, so that is just lost)
23:07:38  <creationix>Date is one of the ugly parts for sure
23:08:20  <feross>shouldn't util.isString be changed in core?
23:08:44  <creationix>feross, I don't think so
23:08:49  <creationix>new String() is not a string
23:08:52  <creationix>it's an object
23:09:01  <feross>but the user intended it to be a string
23:09:16  <rowbit1>substack, pkrumins: A developer is waiting in the queue for explorer/11.0
23:10:03  <creationix>this is why in my language, there are no prototypes at all
23:10:15  <creationix>strings don't have magical boxing to simulate methods
23:10:21  <feross>also, fwiw, underscore's isString function uses Object.prototype.toString() so it considers boxed strings to be strings
23:10:41  <creationix>personally, I can't think of a single valid reason to use boxed strings in JS
23:10:50  * eugenewarequit (Ping timeout: 252 seconds)
23:10:53  <feross>agreed, but users might give my code a boxed string
23:10:55  <feross>and i should handle it
23:10:55  <creationix>but that's me. People coming from Java may feel more comfortable with them
23:11:16  <creationix>you could throw a TypeError and tell them that's not a string
23:11:34  <creationix>or you could check if it's a boxed string and unbox it
23:12:23  <creationix>feross, you could just do `value = value.valueOf()` if it's an object to force it to unbox
23:17:31  * phatedquit (Remote host closed the connection)
23:21:20  * eugenewarejoined
23:26:48  * mikolalysenkoquit (Ping timeout: 240 seconds)
23:30:28  * contrahaxjoined
23:33:13  * calvinfoquit (Quit: Leaving.)
23:35:02  * funkytekjoined
23:35:06  * mikolalysenkojoined
23:44:24  * defunctzombiechanged nick to defunctzombie_zz
23:47:19  <rowbit1>Hourly usage stats: [developer: 8, free: 31]
23:52:16  * wolfeidauquit (Remote host closed the connection)
23:52:24  * AvianFluquit (Remote host closed the connection)
23:54:55  * ins0mnia_quit (Ping timeout: 265 seconds)
23:57:24  * wolfeidaujoined
23:57:47  * wolfeidauquit (Remote host closed the connection)
23:59:15  <rowbit1>substack, pkrumins: Encoders down: 50.57.174.105 (dev-ie8-2)
23:59:48  * mikolalysenkoquit (Ping timeout: 252 seconds)