00:00:00
| * ircretary | quit (Remote host closed the connection) |
00:00:08
| * ircretary | joined |
00:04:11
| * jcrugzz_ | joined |
00:04:27
| * jcrugzz | quit (Ping timeout: 252 seconds) |
00:07:48
| * AvianFlu_ | joined |
00:10:51
| * AvianFlu | quit (Ping timeout: 240 seconds) |
00:19:47
| <chrisdickinson> | ah |
00:19:53
| <chrisdickinson> | named function expressions were, iirc, introduced to eliminate the need for arguments.callee |
00:21:34
| * st_luke | quit (Remote host closed the connection) |
00:24:04
| <rowbit> | Hourly usage stats: [free: 34] |
00:27:13
| <johnkpaul> | chrisdickinson: oh really? I thought they were around in ES3 |
00:30:11
| <johnkpaul> | ogd: done https://github.com/substack/node-browserify/pull/554 |
00:36:27
| <chrisdickinson> | johnkpaul: function expressions weren't part of JS until es3 if i'm reading the spec correctly |
00:36:45
| <chrisdickinson> | but arguments.callee predated expressions and allowed "anonymous" functions to recurse |
00:37:37
| <chrisdickinson> | it used to be that anonymous functions could only be instantiated via the `Function(arg0, arg1, ..argN, body)` constructor |
00:43:10
| * st_luke | joined |
00:45:58
| <johnkpaul> | chrisdickinson: ah I see. I don't know anything about JS pre-es3 |
00:47:15
| <johnkpaul> | Anyone know how and if I can specify a browserify transform to apply to zuul generated test files? defunctzombie_zz |
00:48:39
| * mikolalysenko | joined |
01:00:22
| * st_luke | quit (Remote host closed the connection) |
01:04:47
| <ogd> | substack: hey did you see https://github.com/ttezel/anchor? |
01:04:53
| <ogd> | not on npm tho |
01:11:06
| <ogd> | substack: also https://github.com/daneroo/im-rsync-algo |
01:11:46
| <chrisdickinson> | interesting |
01:14:04
| <ogd> | chrisdickinson: yea i really really want a nice implementation for building a syncing blob store on top of dat |
01:14:35
| <chrisdickinson> | i was just thinking about revisiting the git-create-delta stuff |
01:15:48
| * yorick | quit (Read error: Connection reset by peer) |
01:16:10
| * st_luke | joined |
01:16:40
| <ogd> | chrisdickinson: https://npmjs.org/package/rolling-checksum |
01:17:01
| <ogd> | chrisdickinson: thats the main part of rsync |
01:17:30
| <chrisdickinson> | oh? I thought it was based on rabin polynomials |
01:18:09
| <ogd> | chrisdickinson: http://rsync.samba.org/tech_report/node2.html |
01:18:33
| <ogd> | chrisdickinson: that page might be out of date, not sure |
01:19:07
| <chrisdickinson> | ah, interesting! |
01:19:27
| <chrisdickinson> | git uses rabin polynomials instead -- wonder what the tradeoffs are. |
01:19:45
| <ogd> | i think rabin polynomials are a particular implementation of a rolling hash, as are adler32s |
01:20:13
| * chrisdickinson | nods |
01:20:31
| <ogd> | e.g. http://www.gelato.unsw.edu.au/archives/git/0604/19682.html |
01:20:58
| <chrisdickinson> | thought it might be a speed thing, yeah |
01:21:20
| <chrisdickinson> | since you could potentially get away with... what, an add, a substract, and maybe 1-2 multiplies per byte for rabin? |
01:22:15
| <ogd> | chrisdickinson: that api i'm imagining is: require('sync')(basedir, listOfRelativeFilePaths).pipe(stream) and on the other end you pipe that to a thing that writes the deltas to the fs e.g. deltas.pipe(syncWriter(basedir)) |
01:22:47
| * pfraze | quit (Ping timeout: 260 seconds) |
01:22:49
| <ogd> | oh but i guess it needs to be duplex |
01:22:59
| <ogd> | so you'd do deltas.pipe(syncWriter(basedir)).pipe(deltas) |
01:23:25
| <ogd> | and i guess you can just make require('sync') polymorphic |
01:23:30
| <ogd> | anyway you get the idea |
01:24:04
| <rowbit> | Hourly usage stats: [free: 43] |
01:26:03
| <chrisdickinson> | ah yeah -- `var dir = sync(basedir, files); dir.pipe(conn).pipe(dir)` |
01:28:43
| * fronx | quit (Remote host closed the connection) |
01:29:09
| * fronx | joined |
01:30:34
| * fronx | quit (Remote host closed the connection) |
01:30:48
| * mikolalysenko | quit (Ping timeout: 252 seconds) |
01:39:01
| <ogd> | substack: at 7:30 tonight i'm goin to a hacker pad in e oakland to hang out and play Rock Band, you should come! |
01:43:17
| <substack> | sounds rad |
01:51:02
| * jcrugzz_ | quit (Read error: Connection reset by peer) |
01:59:33
| * fotoverite | quit (Quit: fotoverite) |
02:00:57
| * fronx | joined |
02:05:38
| * jcrugzz | joined |
02:05:57
| * fronx | quit (Ping timeout: 248 seconds) |
02:09:11
| * Maciek416 | joined |
02:09:47
| * Maciek416 | quit (Remote host closed the connection) |
02:20:18
| * mikolalysenko | joined |
02:24:04
| <rowbit> | Hourly usage stats: [free: 20] |
02:30:29
| * fronx | joined |
02:35:07
| * fronx | quit (Ping timeout: 260 seconds) |
02:38:13
| * st_luke | quit (Remote host closed the connection) |
02:46:50
| * timoxley | joined |
02:53:18
| * mikolalysenko | quit (Ping timeout: 252 seconds) |
03:02:56
| * thlorenz | joined |
03:04:59
| * timoxley | quit (Remote host closed the connection) |
03:06:24
| * timoxley | joined |
03:06:54
| * defunctzombie_zz | changed nick to defunctzombie |
03:07:37
| * st_luke | joined |
03:08:49
| * timoxley | quit (Read error: Connection reset by peer) |
03:08:56
| * timoxley | joined |
03:12:28
| * mikolalysenko | joined |
03:18:52
| <jjjohnny_> | mikolalysenko: o/ |
03:19:10
| * kriskowal_ | quit (Quit: kriskowal_) |
03:19:25
| <jjjohnny_> | mikolalysenko: how did the thesis proposal go? |
03:24:02
| * fotoverite | joined |
03:24:04
| <rowbit> | Hourly usage stats: [free: 23] |
03:25:25
| * jcrugzz | quit (Ping timeout: 248 seconds) |
03:29:19
| <mikolalysenko> | jjjohnny_: passed it! |
03:29:44
| <mikolalysenko> | actually went really well, my committee really liked it |
03:30:40
| <jjjohnny_> | mikolalysenko: whats the subject? |
03:31:02
| <mikolalysenko> | geometry/constraint solving |
03:31:28
| <mikolalysenko> | related to planning and design problems |
03:31:52
| <mikolalysenko> | so includes stuff like collision detection/finding workspace of a mechanism/etc |
03:32:43
| <jjjohnny_> | like putting stuff in compartments? |
03:33:06
| <mikolalysenko> | yeah, it is part of it |
03:33:30
| <jjjohnny_> | is this masters thesis? |
03:33:34
| <mikolalysenko> | phd |
03:33:51
| <jjjohnny_> | kewl whats the timeline for completion? |
03:34:00
| <mikolalysenko> | depends on what next |
03:34:10
| <mikolalysenko> | if I decide to do academia, 2 years. if not 1 year |
03:34:20
| <mikolalysenko> | basically extra year is for job hunting |
03:34:28
| <mikolalysenko> | main thesis should be done in 1 year or so |
03:35:39
| <jjjohnny_> | mikolalysenko: do you dev work on the side or teach or what? |
03:35:56
| <mikolalysenko> | js stuff is a hobby |
03:36:03
| <mikolalysenko> | I work on the side at 3d systems sometimes |
03:36:34
| <jjjohnny_> | speaking of geometry, I have a quadratic equation conundrum |
03:36:40
| <mikolalysenko> | ok |
03:36:52
| <jjjohnny_> | I'm making an audio eneveloping module |
03:37:07
| <jjjohnny_> | that you can "draw" with control points, a la bezier curves |
03:37:30
| <mikolalysenko> | got it |
03:37:44
| <jjjohnny_> | is there a way to derive, from all the control points, the quadratic equation for that line? |
03:37:53
| <mikolalysenko> | yeah, there are a couple of ways |
03:38:11
| <mikolalysenko> | do you want a fully quadratic envelope or just piecewise quadratic, or closest quadratic? |
03:38:16
| <mikolalysenko> | since 3 points determine a quadratic |
03:38:26
| <jjjohnny_> | its n points, technically |
03:38:42
| <mikolalysenko> | so if you have n+1 points it uniquely determines a degree n polynomial |
03:38:49
| <mikolalysenko> | http://en.wikipedia.org/wiki/Lagrange_polynomial |
03:39:14
| <mikolalysenko> | now if you want a piecewise quadratic spline (ie locally it is quadratic), then what you really want is hermite interpolation |
03:39:24
| <mikolalysenko> | http://en.wikipedia.org/wiki/Hermite_interpolation |
03:39:38
| <mikolalysenko> | that basically is the spline-ified version of lagrange interpolation |
03:39:53
| <mikolalysenko> | basically it glues together lagrange interpolated curves up to some order of smoothness |
03:40:11
| <mikolalysenko> | finally, if you just want one big global quadratic curve you should use a linear least squares fit |
03:40:28
| <mikolalysenko> | http://en.wikipedia.org/wiki/Polynomial_regression |
03:40:55
| <mikolalysenko> | so which one do you wnat? |
03:40:59
| <jjjohnny_> | these will give me a quadtratic formula for a given set of control points? |
03:41:12
| <mikolalysenko> | the last one will give you one quadratic polynomial |
03:41:13
| <jjjohnny_> | where the middle control points are not actually on the line |
03:41:37
| <mikolalysenko> | sounds like polynomial regression |
03:41:46
| <mikolalysenko> | http://en.wikipedia.org/wiki/Polynomial_regression#Matrix_form_and_calculation_of_estimates |
03:42:08
| <jjjohnny_> | ive been using deCasteljau's equation |
03:42:13
| <mikolalysenko> | ah |
03:42:14
| <jjjohnny_> | https://gist.github.com/atomizer/1049745 |
03:42:16
| <mikolalysenko> | that is for a spline |
03:42:25
| <mikolalysenko> | then maybe you want a hermite spline |
03:42:26
| <mikolalysenko> | http://en.wikipedia.org/wiki/Hermite_interpolation |
03:42:49
| <mikolalysenko> | you can do the same dynamic programming trick to evaluate the basis functions |
03:44:00
| <jjjohnny_> | these look more complicated than decateljau's |
03:44:39
| <mikolalysenko> | they are not so bad actually |
03:44:50
| <mikolalysenko> | basically it depends what you want at the end of the day |
03:45:25
| <mikolalysenko> | do you want one quadratic curve, or do you want a spline glued together from quadratics? |
03:45:37
| <mikolalysenko> | decasteljau gives you a spline |
03:45:48
| <mikolalysenko> | or some piecewise degree n polynomial |
03:45:49
| <jjjohnny_> | probably one quadratic |
03:45:59
| <mikolalysenko> | ok, then you want polynomial regression |
03:46:15
| <mikolalysenko> | you just solve that linear system, and you are good |
03:46:26
| <mikolalysenko> | you will basically have to take the inverse of a 3x3 matrix at the end of the day |
03:47:22
| <mikolalysenko> | solve the equation at the bottom of this section: http://en.wikipedia.org/wiki/Polynomial_regression#Matrix_form_and_calculation_of_estimates |
03:47:37
| <mikolalysenko> | a0, a1, a2 are the coefficients of the quadratic polynomial |
03:47:50
| <mikolalysenko> | and xm,ym are the observed points |
03:48:05
| * kenperkins | quit (Quit: Computer has gone to sleep.) |
03:48:29
| <mikolalysenko> | so what you do is calculate X^T X (which is a 3x3 matrix) and X^T y (which is a 3d vector) |
03:48:46
| <mikolalysenko> | and then compute (X^T X)^{-1} (X^T Y) |
03:49:08
| <mikolalysenko> | time complexity is basically linear in the number of sample points |
03:49:10
| <jjjohnny_> | coefficients === control points? |
03:49:23
| * kenperkins | joined |
03:49:38
| <mikolalysenko> | no |
03:49:49
| <mikolalysenko> | they are the coefficients for the quadratic, eg y = a0 + a1 x + a2 x^2 |
03:50:03
| <mikolalysenko> | you could do it with control points too, you'd get a different matrix though |
03:50:05
| <mikolalysenko> | but same idea |
03:50:59
| <mikolalysenko> | this wiki page explains the idea pretty well I think: http://en.wikipedia.org/wiki/Polynomial_regression , though the solution does use matrix/linear algebra notation |
03:51:31
| <jjjohnny_> | i find wikipediao explanation notations abstruse |
03:52:09
| <jjjohnny_> | also, I only need y values (amplitude) |
03:52:55
| <mikolalysenko> | here is a demo: http://www.arachnoid.com/polysolve/ |
03:54:10
| * calvinfo | quit (Quit: Leaving.) |
03:54:35
| * jcrugzz | joined |
03:54:44
| <jjjohnny_> | thanks i'll see if I can wrap me head around this |
03:55:08
| * brianloveswords | quit (Excess Flood) |
03:55:17
| <jjjohnny_> | won't be the first time I copied the text from an irc convo with you explaining some conecpts fro later study and grok |
03:55:56
| <mikolalysenko> | :) |
03:56:03
| * brianloveswords | joined |
03:57:32
| * jxson | joined |
03:59:48
| * thlorenz | quit (Remote host closed the connection) |
04:07:41
| * defunctzombie | changed nick to defunctzombie_zz |
04:08:37
| * mikolalysenko | quit (Ping timeout: 248 seconds) |
04:18:50
| * jxson | quit (Remote host closed the connection) |
04:24:04
| <rowbit> | Hourly usage stats: [free: 11] |
04:30:15
| * fronx | joined |
04:34:39
| * fronx | quit (Ping timeout: 240 seconds) |
04:49:14
| * anvaka_ | quit (Remote host closed the connection) |
04:50:24
| <techwraith> | Thoughts? http://techwraith.com/your-css-needs-a-dependency-graph-too.html |
04:53:54
| * st_luke | quit (Remote host closed the connection) |
04:53:59
| * jcrugzz | quit (Read error: Connection reset by peer) |
04:55:12
| * feross | joined |
05:00:51
| * st_luke | joined |
05:07:40
| * st_luke | quit (Remote host closed the connection) |
05:09:14
| * AvianFlu_ | changed nick to AvianFlu |
05:12:07
| * kenperkins | quit (Quit: Computer has gone to sleep.) |
05:15:27
| * tilgovi | joined |
05:24:04
| <rowbit> | Hourly usage stats: [free: 16] |
05:37:47
| * jcrugzz | joined |
05:37:57
| * Maciek416 | joined |
06:09:36
| * fotoverite | quit (Quit: fotoverite) |
06:17:27
| * Maciek416 | quit (Ping timeout: 240 seconds) |
06:21:24
| * Maciek416 | joined |
06:22:00
| * anvaka | joined |
06:24:04
| <rowbit> | Hourly usage stats: [free: 23] |
06:39:13
| * Maciek416 | quit (Remote host closed the connection) |
06:41:03
| * dominictarr | joined |
06:42:01
| <dominictarr> | substack, what we need is a way to pipe from the command line to a browser instance |
06:42:14
| <dominictarr> | tabs need stdio! |
06:47:36
| <dominictarr> | Domenic_, hey, regards your npm stuff |
07:08:31
| * AvianFlu | quit (Remote host closed the connection) |
07:09:57
| * calvinfo | joined |
07:11:46
| * jcrugzz | quit (Read error: Connection reset by peer) |
07:24:04
| <rowbit> | Hourly usage stats: [free: 91] |
07:33:50
| * greweb | joined |
07:59:01
| * dominictarr | quit (Ping timeout: 248 seconds) |
07:59:26
| * dominictarr | joined |
08:00:12
| * greweb | quit (Remote host closed the connection) |
08:00:23
| * greweb | joined |
08:00:28
| * greweb | quit (Remote host closed the connection) |
08:01:58
| * shama | quit (Remote host closed the connection) |
08:10:56
| * jcrugzz | joined |
08:17:46
| * tearmann | quit (Ping timeout: 245 seconds) |
08:18:03
| <substack> | jjjohnny_: if you need to solve a linear system there's https://npmjs.org/package/rref |
08:18:22
| <substack> | dominictarr: yep! |
08:18:39
| * jcrugzz | quit (Ping timeout: 240 seconds) |
08:19:00
| <substack> | dominictarr: so actually browsers already have a communication channel with iframes and postMessage |
08:19:15
| <substack> | so you could just have a command that writes to a server that outputs postMessage |
08:19:39
| * jcrugzz | joined |
08:24:04
| <rowbit> | Hourly usage stats: [free: 25] |
08:24:48
| <dominictarr> | substack, yes, something like that |
08:26:38
| * tilgovi | quit (Remote host closed the connection) |
08:29:36
| * calvinfo | quit (Quit: Leaving.) |
08:30:16
| * fronx | joined |
08:30:21
| * peutetre | joined |
08:32:26
| * hughsk | joined |
08:32:36
| * hughsk_ | joined |
08:33:16
| * hughsk | part |
08:33:42
| * ralphtheninja | joined |
08:35:24
| * fronx | quit (Ping timeout: 260 seconds) |
08:37:29
| * calvinfo | joined |
08:42:50
| * jcrugzz | quit (Ping timeout: 264 seconds) |
08:44:35
| * calvinfo | quit (Quit: Leaving.) |
08:45:18
| * Effilry | joined |
08:45:27
| * Effilry | changed nick to FireFly |
08:46:56
| * dominictarr | quit (Ping timeout: 245 seconds) |
08:53:43
| * fronx | joined |
08:54:47
| * jcrugzz | joined |
08:56:36
| * fronx | quit (Remote host closed the connection) |
08:57:01
| <wolfeidau> | anyone recall who did the code executation visualisation work recently? |
08:59:55
| * jcrugzz | quit (Read error: Connection reset by peer) |
09:03:27
| * shama | joined |
09:04:04
| * FireFly | part ("WeeChat 0.4.0") |
09:08:02
| * shama | quit (Ping timeout: 264 seconds) |
09:17:12
| * contrahax | joined |
09:22:49
| * funkytek | joined |
09:24:04
| <rowbit> | Hourly usage stats: [free: 25] |
09:27:26
| * peutetre_ | joined |
09:28:45
| * peutetre | quit (Ping timeout: 265 seconds) |
09:28:45
| * peutetre_ | changed nick to peutetre |
09:30:16
| * fronx | joined |
09:35:31
| * fronx | quit (Ping timeout: 265 seconds) |
09:44:20
| * dominictarr | joined |
09:44:47
| <mmalecki> | dominictarr: if I was to rage move out to somewhere, where'd I go? |
09:49:55
| * floby | joined |
09:50:17
| * contrahax | quit (Quit: Sleeping) |
09:51:54
| <rowbit> | /!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\ |
09:51:54
| <rowbit> | /!\ ATTENTION: (default-local) paid account successfully upgraded /!\ |
09:52:35
| * hughsk_ | quit (*.net *.split) |
09:52:37
| * johnkpaul | quit (*.net *.split) |
09:54:37
| * hughsk_ | joined |
09:54:37
| * johnkpaul | joined |
09:55:43
| * shama | joined |
10:00:19
| * shama | quit (Ping timeout: 260 seconds) |
10:00:53
| * feross | quit (Quit: feross) |
10:06:27
| * dominictarr | quit (Ping timeout: 265 seconds) |
10:14:18
| * jcrugzz | joined |
10:15:06
| * jcrugzz | quit (Read error: Connection reset by peer) |
10:24:04
| <rowbit> | Hourly usage stats: [free: 31] |
10:24:56
| * dominictarr | joined |
10:25:19
| <dominictarr> | Domenic_, ping |
10:32:29
| * fronx | joined |
10:35:19
| * dominictarr | quit (Ping timeout: 260 seconds) |
10:42:25
| * funkytek | quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
10:43:23
| * feross | joined |
10:45:21
| * feross | quit (Client Quit) |
10:56:27
| * shama | joined |
11:00:50
| * shama | quit (Ping timeout: 240 seconds) |
11:09:04
| * fronx | quit (Remote host closed the connection) |
11:12:31
| * fronx | joined |
11:24:04
| <rowbit> | Hourly usage stats: [developer: 6, free: 55] |
11:26:42
| * jcrugzz | joined |
11:34:09
| * fronx | quit (Remote host closed the connection) |
11:38:06
| * indexzero | joined |
12:24:04
| <rowbit> | Hourly usage stats: [developer: 0, free: 44] |
12:41:49
| * indexzero | quit (Quit: indexzero) |
12:54:48
| * thlorenz | joined |
12:58:01
| * shama | joined |
13:02:42
| * shama | quit (Ping timeout: 252 seconds) |
13:04:52
| * thlorenz | quit (Remote host closed the connection) |
13:24:04
| <rowbit> | Hourly usage stats: [developer: 0, free: 30] |
13:34:46
| * thlorenz | joined |
13:35:20
| * hughsk_ | changed nick to hughsk |
13:37:22
| * ins0mnia | joined |
13:42:56
| * thlorenz | quit (Ping timeout: 240 seconds) |
13:46:23
| * thlorenz | joined |
13:57:38
| * jcrugzz | quit (Read error: Connection reset by peer) |
13:58:44
| * shama | joined |
14:00:00
| * shama | quit (Read error: Connection reset by peer) |
14:00:23
| * shama | joined |
14:05:19
| * shama | quit (Ping timeout: 260 seconds) |
14:12:46
| * thlorenz | quit (Remote host closed the connection) |
14:13:19
| * thlorenz | joined |
14:17:16
| * jez0990 | joined |
14:17:47
| * clone1018_ | joined |
14:18:14
| * thlorenz | quit (Ping timeout: 264 seconds) |
14:18:57
| * paul_irish_ | joined |
14:19:00
| * perlbot_ | joined |
14:19:16
| * AvianFlu | joined |
14:19:33
| * substack_ | joined |
14:19:34
| * ralphthe1inja | joined |
14:22:27
| * mironn | joined |
14:23:53
| * ralphtheninja | quit (*.net *.split) |
14:23:53
| * anvaka | quit (*.net *.split) |
14:23:54
| * perlbot | quit (*.net *.split) |
14:23:55
| * clone1018 | quit (*.net *.split) |
14:23:55
| * substack | quit (*.net *.split) |
14:23:55
| * jez0990_ | quit (*.net *.split) |
14:23:56
| * paul_irish | quit (*.net *.split) |
14:23:57
| * perlbot_ | changed nick to perlbot |
14:24:04
| <rowbit> | Hourly usage stats: [developer: 0, free: 49] |
14:25:25
| * Maciek416 | joined |
14:30:22
| * mironn | quit (Remote host closed the connection) |
14:44:35
| * mikolalysenko | joined |
14:49:26
| * tmcw | joined |
14:50:48
| * yorick | joined |
14:52:47
| * kenperkins | joined |
14:55:10
| * thlorenz | joined |
14:56:02
| * fronx | joined |
14:56:13
| * Maciek416 | quit (Read error: Connection reset by peer) |
15:01:03
| * shama | joined |
15:05:25
| * shama | quit (Ping timeout: 245 seconds) |
15:09:41
| <Domenic_> | ircretary: tell dominictarr pong---our timezones seem pretty off |
15:09:41
| <ircretary> | Domenic_: I'll be sure to tell dominictarr |
15:14:00
| * clone1018 | joined |
15:14:09
| * floby1 | joined |
15:14:21
| * fent_ | joined |
15:14:42
| * tim_smart | quit (Ping timeout: 264 seconds) |
15:14:43
| * floby | quit (Ping timeout: 264 seconds) |
15:14:43
| * Guest74908 | quit (Ping timeout: 264 seconds) |
15:14:43
| * daleharvey | quit (Ping timeout: 264 seconds) |
15:14:43
| * fent | quit (Ping timeout: 264 seconds) |
15:14:44
| * clone1018_ | quit (Read error: Connection reset by peer) |
15:14:45
| * justinabrahms | quit (Ping timeout: 264 seconds) |
15:15:03
| * fent_ | changed nick to fent |
15:15:03
| * isaacs | joined |
15:15:21
| * tim_smart | joined |
15:15:32
| * justinabrahms | joined |
15:15:48
| * isaacs | changed nick to Guest34889 |
15:24:04
| <rowbit> | Hourly usage stats: [developer: 0, free: 49] |
15:27:20
| * techwraith | quit (Ping timeout: 264 seconds) |
15:27:20
| * techwraith | joined |
15:39:05
| * hughsk | quit (*.net *.split) |
15:39:06
| * johnkpaul | quit (*.net *.split) |
15:43:52
| * mmalecki_ | joined |
15:44:34
| * daleharvey | joined |
15:44:34
| * hughsk | joined |
15:44:34
| * johnkpaul | joined |
15:44:46
| * ins0mnia | quit (Excess Flood) |
15:46:11
| * AvianFlu_ | joined |
15:46:13
| * fronx_ | joined |
15:46:39
| * calvinfo | joined |
15:46:59
| * ins0mnia | joined |
15:48:14
| * taterbase_ | joined |
15:48:54
| * philipn_ | joined |
15:49:33
| * AvianFlu_ | quit (Remote host closed the connection) |
15:49:35
| * mmalecki_ | quit (Quit: Reconnecting) |
15:50:05
| * fronx_ | quit (Remote host closed the connection) |
15:50:33
| * mmalecki1 | joined |
15:52:06
| * david | joined |
15:52:26
| * chrisdickinson_ | joined |
15:52:39
| * david | changed nick to Guest30016 |
15:52:45
| * ccowan_ | joined |
15:54:39
| * mmalecki1 | quit (Ping timeout: 240 seconds) |
15:54:55
| * chrisdickinson | quit (Ping timeout: 248 seconds) |
15:54:56
| * LOUDBOT | quit (Ping timeout: 248 seconds) |
15:54:57
| * philipn | quit (Ping timeout: 248 seconds) |
15:54:57
| * fronx | quit (Ping timeout: 248 seconds) |
15:54:58
| * ccowan | quit (Ping timeout: 248 seconds) |
15:54:58
| * taterbase | quit (Ping timeout: 248 seconds) |
15:55:27
| * itpro | joined |
15:55:27
| * itpro | changed nick to ITpro |
15:55:37
| * mmalecki_ | joined |
15:55:55
| * taterbase_ | changed nick to taterbase |
15:56:22
| * LOUDBOT | joined |
15:56:40
| * AvianFlu | quit (Ping timeout: 248 seconds) |
15:56:47
| * rvagg_ | joined |
15:57:34
| * dlmanning | quit (Ping timeout: 248 seconds) |
15:57:34
| * mmalecki | quit (Ping timeout: 248 seconds) |
15:57:35
| * rvagg | quit (Ping timeout: 248 seconds) |
15:57:39
| * rvagg_ | changed nick to rvagg |
15:59:16
| * fronx | joined |
16:00:04
| * jcrugzz | joined |
16:00:54
| * mmalecki_ | quit (Quit: Reconnecting) |
16:01:04
| * mmalecki | joined |
16:01:10
| * jez0990_ | joined |
16:01:53
| * shama | joined |
16:02:22
| * jez0990 | quit (Ping timeout: 260 seconds) |
16:03:09
| * ITpro | quit |
16:03:51
| * kenperkins | quit (Ping timeout: 260 seconds) |
16:04:35
| * fronx | quit (Ping timeout: 245 seconds) |
16:07:34
| * rannmann | quit (Disconnected by services) |
16:07:34
| * dsfadf | joined |
16:08:35
| * calvinfo1 | joined |
16:09:45
| * guybrush | joined |
16:10:36
| * kenperkins_ | joined |
16:11:03
| * runningsm | joined |
16:11:13
| * mikolalysenko | quit (Ping timeout: 246 seconds) |
16:13:23
| * ins0mnia_ | joined |
16:18:20
| * jez0990_ | quit (*.net *.split) |
16:18:20
| * mmalecki | quit (*.net *.split) |
16:18:21
| * philipn_ | quit (*.net *.split) |
16:18:21
| * ins0mnia | quit (*.net *.split) |
16:18:21
| * calvinfo | quit (*.net *.split) |
16:18:22
| * guybrush_ | quit (*.net *.split) |
16:18:23
| * jden | quit (*.net *.split) |
16:18:24
| * rowbit | quit (*.net *.split) |
16:18:24
| * thisandagain | quit (*.net *.split) |
16:18:24
| * zz_runningskull | quit (*.net *.split) |
16:18:25
| * juliangruber | quit (*.net *.split) |
16:18:26
| * py1hon | quit (*.net *.split) |
16:18:26
| * rook2pawn | quit (*.net *.split) |
16:18:27
| * shama | quit (*.net *.split) |
16:18:28
| * daleharvey | quit (*.net *.split) |
16:18:28
| * hughsk | quit (*.net *.split) |
16:18:29
| * johnkpaul | quit (*.net *.split) |
16:18:32
| * rwaldron | quit (*.net *.split) |
16:18:34
| * emilisto | quit (*.net *.split) |
16:18:34
| * cubert | quit (*.net *.split) |
16:18:34
| * jjjohnny_ | quit (*.net *.split) |
16:18:35
| * rvagg | quit (*.net *.split) |
16:18:35
| * LOUDBOT | quit (*.net *.split) |
16:18:35
| * chrisdickinson_ | quit (*.net *.split) |
16:18:38
| * yorick | quit (*.net *.split) |
16:18:38
| * simcop2387 | quit (*.net *.split) |
16:18:38
| * prettyrobots | quit (*.net *.split) |
16:18:38
| * trevnorris | quit (*.net *.split) |
16:18:38
| * kanzure | quit (*.net *.split) |
16:18:38
| * owenb___ | quit (*.net *.split) |
16:18:39
| * prettyrobots_ | quit (*.net *.split) |
16:18:40
| * josephg | quit (*.net *.split) |
16:20:22
| * yorick | joined |
16:21:13
| * pfraze | joined |
16:21:24
| * mmalecki_ | joined |
16:21:24
| * philipn | joined |
16:21:24
| * thisandagain | joined |
16:21:24
| * jden | joined |
16:21:24
| * fotoverite | joined |
16:21:24
| * jez0990 | joined |
16:21:24
| * shama | joined |
16:21:24
| * rvagg | joined |
16:21:24
| * LOUDBOT | joined |
16:21:24
| * chrisdickinson_ | joined |
16:21:24
| * johnkpaul | joined |
16:21:24
| * hughsk | joined |
16:21:24
| * daleharvey | joined |
16:21:24
| * simcop2387 | joined |
16:21:24
| * prettyrobots | joined |
16:21:24
| * trevnorris | joined |
16:21:24
| * kanzure | joined |
16:21:24
| * owenb___ | joined |
16:21:24
| * prettyrobots_ | joined |
16:21:24
| * rwaldron | joined |
16:21:24
| * josephg | joined |
16:21:24
| * juliangruber | joined |
16:21:24
| * py1hon | joined |
16:21:24
| * emilisto | joined |
16:21:24
| * cubert | joined |
16:21:24
| * rook2pawn | joined |
16:21:24
| * jjjohnny_ | joined |
16:22:51
| * fronx | joined |
16:23:09
| * pfraze | changed nick to 21WABYJ6L |
16:23:09
| * mmalecki_ | quit (Quit: Reconnecting) |
16:23:10
| * pfraze | joined |
16:23:35
| * kanzure | quit (Max SendQ exceeded) |
16:24:12
| * calvinfo1 | quit (Quit: Leaving.) |
16:24:13
| * jden | changed nick to Guest25384 |
16:25:09
| * mikolalysenko | joined |
16:25:22
| * mmalecki | joined |
16:27:08
| * fronx | quit (Ping timeout: 246 seconds) |
16:27:24
| * ralphthe1inja | quit (Ping timeout: 264 seconds) |
16:27:24
| * 21WABYJ6L | quit (Ping timeout: 264 seconds) |
16:27:24
| * yorick | quit (Ping timeout: 264 seconds) |
16:27:25
| * taterbase | quit (Ping timeout: 264 seconds) |
16:27:26
| * ralphtheninja | joined |
16:28:41
| * yorick | joined |
16:28:45
| * techwraith | quit (Ping timeout: 264 seconds) |
16:31:03
| * techwraith | joined |
16:31:47
| * mmalecki_ | joined |
16:31:53
| * taterbase_ | joined |
16:32:11
| * kanzure | joined |
16:32:39
| * ralphtheninja | quit (Ping timeout: 240 seconds) |
16:33:39
| * ralphtheninja | joined |
16:38:38
| * mmalecki | quit (Ping timeout: 250 seconds) |
16:40:15
| * AvianFlu | joined |
16:40:56
| * rowbit | joined |
16:44:13
| * jcrugzz | quit (Ping timeout: 265 seconds) |
16:46:17
| * rpflo | changed nick to ryanflorence |
16:49:12
| * Guest30016 | changed nick to dlmanning |
16:59:44
| * dominictarr | joined |
17:02:23
| * mmalecki_ | changed nick to mmalecki |
17:04:56
| * dominictarr | quit (Ping timeout: 246 seconds) |
17:10:20
| * jcrugzz | joined |
17:13:35
| * fronx | joined |
17:15:58
| * dominictarr | joined |
17:16:30
| * taterbase_ | changed nick to taterbase |
17:18:34
| * kenperkins_ | changed nick to kenperkins |
17:18:43
| * jcrugzz | quit (Ping timeout: 250 seconds) |
17:22:56
| * toinga | joined |
17:24:04
| <rowbit> | Hourly usage stats: [developer: 2, free: 47] |
17:25:09
| <dominictarr> | hij1nx, wow, so npm is still a bit broken |
17:26:12
| * toinga | quit (Remote host closed the connection) |
17:27:22
| * st_luke | joined |
17:29:03
| * ralphtheninja | quit (Ping timeout: 272 seconds) |
17:29:58
| * defunctzombie_zz | changed nick to defunctzombie |
17:30:56
| * feross | joined |
17:33:59
| <defunctzombie> | techwraith: npm-css prefixes because people cannot be trusted |
17:34:22
| <defunctzombie> | techwraith: also because for regular css there is no indentation stuff to easily put everything under a namespace |
17:34:36
| <defunctzombie> | so to avoid leaking into global scope it does that.. maybe it shouldn't but it does for now :) |
17:34:51
| <techwraith> | defunctzombie: I understand, I just prefer to have more control over my css. I manually namespace my stuff |
17:35:04
| <defunctzombie> | techwraith: yea, if you do that then good |
17:35:11
| <defunctzombie> | but if you use a module |
17:35:24
| <defunctzombie> | that someone else wrote that may not be the case |
17:35:29
| <defunctzombie> | maybe they made a mistake or something |
17:35:43
| <defunctzombie> | maybe that is being too defensive heh |
17:35:58
| <techwraith> | If I use a module that doesn't namespace itself, or a module that conflicts in namespace with one of mine, I fork it and fix it |
17:36:22
| <defunctzombie> | makes sense |
17:36:31
| <techwraith> | Yeah, if some module in node rewrites some prototypes, we're fucked. Same with CSS. |
17:36:46
| <defunctzombie> | yep |
17:36:54
| <defunctzombie> | I guess that is valid enough |
17:37:07
| <defunctzombie> | I like the rework-npm module you found |
17:37:58
| * dsfadf | changed nick to rannmann |
17:37:58
| * rannmann | quit (Changing host) |
17:37:58
| * rannmann | joined |
17:38:15
| * feross | quit (Ping timeout: 240 seconds) |
17:38:29
| <techwraith> | It's pretty sweet. I think you did most of the leg work with npm-css, but I liked their implementation better :-/ |
17:38:47
| * floby1 | part |
17:38:51
| * feross | joined |
17:42:21
| * mikolalysenko | quit (Ping timeout: 272 seconds) |
17:43:27
| <st_luke> | npm is broken forever |
17:43:48
| * mikolalysenko | joined |
17:45:59
| * defunctzombie | changed nick to defunctzombie_zz |
17:52:02
| * feross | quit (Quit: feross) |
17:53:37
| * fronx | quit (Remote host closed the connection) |
17:54:17
| * calvinfo | joined |
17:56:01
| * Guest25384 | changed nick to jden |
18:00:44
| * defunctzombie_zz | changed nick to defunctzombie |
18:00:55
| <defunctzombie> | st_luke: :( |
18:00:56
| <defunctzombie> | techwraith: :) |
18:01:07
| <defunctzombie> | techwraith: I like the rework module too |
18:01:37
| <defunctzombie> | st_luke: don't be sad |
18:01:48
| * shama | quit (Read error: Connection reset by peer) |
18:01:58
| * shama | joined |
18:02:39
| * mikolalysenko | quit (Ping timeout: 240 seconds) |
18:04:42
| <st_luke> | i think i got mono from someone and that makes me pissed at everything open source |
18:05:02
| <st_luke> | mini-aids |
18:05:33
| * fronx | joined |
18:06:14
| * dominictarr | quit (Ping timeout: 264 seconds) |
18:07:45
| <defunctzombie> | thlorenz: I think I am gonna add a --phantom flag to zuul that will run in phantomjs if the user has it installed |
18:08:05
| <thlorenz> | defunctzombie: ala zuul-mp? |
18:08:19
| <defunctzombie> | thlorenz: yea, except you won't need to specify the port |
18:08:30
| <thlorenz> | defunctzombie: I was gonna fix that actually |
18:08:43
| <defunctzombie> | cool |
18:08:57
| <thlorenz> | I realized I don't need a port specified, but I'd like to override in some cases to get no conflict |
18:09:31
| <thlorenz> | defunctzombie: so if you'd bake it into zuul you should make phantomjs a dependency (sucks to rely on global installed tools) |
18:09:40
| <defunctzombie> | thlorenz: bah |
18:09:44
| <thlorenz> | otherwise I just fix it in zuul today or tomorrow |
18:09:51
| <thlorenz> | s/zuul/zuul-mp |
18:09:52
| <defunctzombie> | thlorenz: I don't want to depend on phantomjs tho :/ |
18:09:58
| <Raynos> | techwraith: your proposed thing is not sustainable |
18:10:06
| <defunctzombie> | maybe best to leave as separate tool then |
18:10:14
| * dguttman | joined |
18:10:15
| <thlorenz> | defunctzombie: yeah agreed, I'll fix zuul-mp |
18:10:18
| <defunctzombie> | coo |
18:10:29
| <thlorenz> | maybe we can add a link in zuul readme so ppl can find ig |
18:10:29
| <Raynos> | CSS needs some mechanism to avoid the global namespace |
18:10:37
| <Raynos> | otherwise using it with npm will not work |
18:11:03
| * st_luke | quit (Remote host closed the connection) |
18:11:23
| * mikolalysenko | joined |
18:12:42
| * dominictarr | joined |
18:14:33
| * ralphtheninja | joined |
18:14:46
| <dominictarr> | Domenic_, yo |
18:15:46
| <prettyrobots> | dominictarr: Yo. |
18:15:53
| <prettyrobots> | Who is Domenic_? |
18:15:58
| <prettyrobots> | I are confuse. |
18:16:14
| * fronx | quit (Remote host closed the connection) |
18:17:19
| * st_luke | joined |
18:18:04
| * substack_ | changed nick to substack |
18:18:17
| * chrisdickinson_ | changed nick to chrisdickinson |
18:18:50
| <dominictarr> | prettyrobots, that is they other dominic |
18:18:55
| * fronx | joined |
18:19:03
| <prettyrobots> | I am https://github.com/bigeasy |
18:19:09
| <dominictarr> | he is like my evil twin |
18:19:09
| <dominictarr> | everything about me, he is the opposite |
18:19:32
| <dominictarr> | (except that we both do javascript) |
18:20:39
| <Domenic_> | dominictarr: haha, hi there |
18:20:53
| * fronx | quit (Remote host closed the connection) |
18:21:21
| * jgpelletier | joined |
18:21:55
| <prettyrobots> | Does Domenic_ have black felt goatee? |
18:22:19
| <st_luke> | yes |
18:22:20
| <st_luke> | he does |
18:22:38
| <prettyrobots> | Good. Someone watches Community. |
18:24:04
| <rowbit> | Hourly usage stats: [developer: 0, free: 47] |
18:24:13
| <Domenic_> | dominictarr: what's up |
18:24:40
| <defunctzombie> | prettyrobots: https://github.com/bigeasy/timezone |
18:24:46
| <defunctzombie> | prettyrobots: where does it get the tz data? |
18:25:00
| <prettyrobots> | The IANA TZ database. |
18:25:41
| <defunctzombie> | prettyrobots: do I have to provide that |
18:25:49
| <prettyrobots> | It's in there. |
18:25:50
| <dominictarr> | Domenic_, hey |
18:25:57
| <prettyrobots> | Compiled and ready to go. |
18:26:10
| <defunctzombie> | prettyrobots: huh for all timezones? |
18:26:15
| <defunctzombie> | prettyrobots: isn't that a big database? |
18:26:23
| <dominictarr> | <disclaimer> I'm a bit drunk right now |
18:26:25
| <prettyrobots> | Include the zones you need. |
18:26:47
| <prettyrobots> | dominictarr: Don't code any control systems for heavy machinery. |
18:27:28
| <prettyrobots> | defunctzombie: The library itself is tiny, 3.7k minzipped. |
18:27:30
| <dominictarr> | we are gonna talk about npm dev, does that count? |
18:27:48
| <defunctzombie> | prettyrobots: so I have to build something else? |
18:27:51
| <prettyrobots> | defunctzombie: The database is not so bad. It's all text files. |
18:27:53
| * pantograf | joined |
18:28:01
| <prettyrobots> | defunctzombie: No. |
18:28:06
| <prettyrobots> | defunctzombie: Just `require`. |
18:28:10
| <prettyrobots> | It's all built. |
18:28:27
| <prettyrobots> | defunctzombie: The database is just JSON. It's a directory of JSON files. |
18:28:31
| <defunctzombie> | prettyrobots: it is just not clear from the readme |
18:28:35
| <prettyrobots> | defunctzombie: The database is the rules. |
18:28:35
| <defunctzombie> | how to use this thing |
18:28:39
| <prettyrobots> | defunctzombie: Nope. |
18:28:46
| <prettyrobots> | defunctzombie: It sure ain't that. |
18:28:47
| * thlorenz | quit (Remote host closed the connection) |
18:30:24
| <st_luke> | this is so meta |
18:30:34
| * pantograf | quit (Remote host closed the connection) |
18:30:34
| * peutetre | quit (Quit: peutetre) |
18:32:38
| * dominictarr | quit (Ping timeout: 245 seconds) |
18:37:13
| <prettyrobots> | defunctzombie: I mean, the database only contains the rules for determining the time. The library calculates on the fly. |
18:39:11
| * timoxley | quit (Remote host closed the connection) |
18:41:42
| <techwraith> | Raynos: Why not? I'd love to make it sustainable :) |
18:43:01
| <Raynos> | techwraith: to make it sustainable you need to be able to depend on the CSS module at TWO different versions |
18:43:10
| <Raynos> | manually managing the namespace breaks unless you embed the version number in the namespace |
18:43:24
| <Raynos> | if you cant have two different versions of the same module then your using npm wrong. |
18:44:19
| <techwraith> | Raynos: I've been thinking about a way to handle this |
18:45:04
| <techwraith> | You could prefix the version number for anything that isn't the "latest" version, then pass that version into the template |
18:45:20
| <techwraith> | If you use Resin, it can do this namespacing for you |
18:45:29
| <techwraith> | It's not pretty, but it will work |
18:45:53
| <Raynos> | techwraith: or. |
18:46:27
| <techwraith> | The point is, it's better than the mess we're in right now :) |
18:46:31
| <Raynos> | techwraith: you use an existing solution that already works |
18:46:35
| <Raynos> | Like javascript. |
18:46:36
| <Raynos> | console.log('p', process._getActiveHandles); |
18:46:44
| <Raynos> | https://gist.github.com/Raynos/7223537 |
18:46:45
| <Raynos> | ^ |
18:47:00
| <Raynos> | techwraith: what we need is a LESS / SASS style CSS preprocessor that compiles down to javascript |
18:47:08
| <Raynos> | modular javascript. |
18:47:11
| * forfeit | joined |
18:47:34
| <techwraith> | That would be interesting, but then you don't benefit from precaching. Browsers aren't built for that kind of thing |
18:47:46
| <Raynos> | I'd considered using https://gist.github.com/Raynos/7224374 |
18:48:15
| <techwraith> | No good way for browsers to cache CSS that's inserted by JS |
18:48:16
| <Raynos> | as a way you build a widget that comes bundled with customizable CSS (customized by JSON config) |
18:48:19
| * feross | joined |
18:48:23
| <Raynos> | techwraith: who cares? |
18:48:37
| <Raynos> | i cache it myself |
18:48:38
| <techwraith> | People who develop mobile apps with JS and CSS :) |
18:48:43
| <Raynos> | Ah i see |
18:48:49
| <Raynos> | yeah i optimize for modular desktop web apps |
18:48:55
| <Raynos> | where im like +5kb ? who cares! |
18:49:01
| <techwraith> | :P |
18:49:12
| <Raynos> | I'm going to add 100kb because esprima is useful :D |
18:49:21
| <Raynos> | techwraith: BUT mobile browsers CAN cache javascript |
18:49:24
| <Raynos> | and its just javascript! |
18:49:30
| <Raynos> | so it shouldnt be a big deal |
18:49:52
| <techwraith> | Mobile browsers do special stuff for CSS |
18:49:55
| * forfeit | quit (Remote host closed the connection) |
18:50:03
| <techwraith> | Actually, all browsers |
18:50:53
| * calvinfo | quit (Quit: Leaving.) |
18:51:05
| <Raynos> | anyway |
18:51:12
| <Raynos> | efficient CSS caching is a compiler implementation detail |
18:51:27
| <Raynos> | optimize for recursive modularity, not performance. |
18:51:36
| <Raynos> | If that trade off isn't worth it then hand write all your CSS. |
18:51:47
| * fronx | joined |
18:52:06
| * st_luke | quit (Remote host closed the connection) |
18:52:56
| <techwraith> | Raynos: Sure, I agree there. It's all implementation details after that. |
18:54:31
| <Raynos> | but i havn't tried these ideas yet. |
18:54:37
| <Raynos> | I think there is much promise though |
18:54:50
| <Raynos> | this gets me excited https://gist.github.com/Raynos/7224374#file-index-js-L11 |
18:54:58
| * peutetre | joined |
18:55:02
| <Raynos> | pass in a theme as a json configuration object into a higher order CSS generating function |
18:55:14
| <Raynos> | instead of managing custom theming css files for plugins / modules |
18:55:48
| <techwraith> | But you'd have to write a CSS file as a JSON file at that point :P |
18:56:55
| * spondilo | joined |
18:57:21
| * fronx | quit (Ping timeout: 272 seconds) |
18:58:26
| * feross | quit (Ping timeout: 264 seconds) |
18:58:52
| * st_luke | joined |
18:58:57
| * thlorenz | joined |
18:59:20
| * spondilo | quit (Remote host closed the connection) |
19:00:05
| * feross | joined |
19:01:55
| * ins0mnia_ | changed nick to ins0mnia |
19:02:31
| * feross | quit (Client Quit) |
19:03:03
| <thlorenz> | Raynos: you should namespace your CSS selectors to your module that's what we are doing to make it apply only to part of the page |
19:03:15
| <thlorenz> | and if it isn't namespaced you can use: https://github.com/thlorenz/namespace-css |
19:04:13
| <Raynos> | thlorenz: then you have to embed the version number in the namespace |
19:04:35
| <Raynos> | thlorenz: I think managing the namespace manually is bullshit. |
19:04:50
| <thlorenz> | Raynos: that's fine you can autmate all that i.e.: https://github.com/thlorenz/jsdoc-githubify-inject/blob/master/scripts/update-jsdoc-css.sh |
19:04:58
| <techwraith> | Raynos: It doesn't have to be manual. |
19:05:04
| <thlorenz> | bullshit or not there seems to be no better way ;) |
19:05:08
| <Raynos> | ugh |
19:05:10
| <Raynos> | feels so ghetto |
19:05:17
| <Raynos> | thlorenz: there is another way! npm-scoped |
19:05:25
| <Raynos> | style scoped* |
19:05:34
| <techwraith> | It's fucking CSS, of course it feels ghetto :) |
19:05:39
| <thlorenz> | not without changing the CSS spec |
19:05:59
| <techwraith> | web components will fix this |
19:06:11
| <techwraith> | once we put these on npm, we'll be good |
19:06:17
| <techwraith> | This just has to be a stop gap |
19:06:19
| <Raynos> | just polyfill style scoped |
19:06:31
| <Raynos> | web components wont magically fix things |
19:06:42
| <Raynos> | we need to do something like https://github.com/jrburke/element |
19:06:52
| <Raynos> | all web components do is introduce another module system & another package manager |
19:06:57
| <Raynos> | both are worse then browserify & npm |
19:07:24
| <Raynos> | there needs to be a very strong exploration effort from the npm/browserify community to convince web components to do the right thing |
19:07:29
| <Raynos> | not to mention we still need to find the right thing |
19:08:58
| <techwraith> | Raynos: Once they come out, we'll be able to use them to get web components on npm, I'm sure |
19:09:21
| <Raynos> | thlorenz: https://gist.github.com/Raynos/7223537#file-style-scoped-js-L5 |
19:09:30
| <techwraith> | Once they're in most major browsers, I know I'm going to be working on this. |
19:09:35
| <Raynos> | techwraith: have you seen web components? They are a mess. |
19:09:44
| <Raynos> | they are a global soup & html imports system mess |
19:09:49
| <Raynos> | dont get me wrong |
19:09:54
| <Raynos> | shadow dom & template element are pretty cool |
19:10:02
| <thlorenz> | Raynos: so you add css to each element in the gist? |
19:10:25
| <thlorenz> | cause that would still affect all the children as well |
19:10:36
| <techwraith> | Raynos: Yep! But I'm not an idealist. I work with what I have, in a way that other people can easily replicate |
19:10:51
| <techwraith> | I don't want to reinvent the CSS spec, no one will use my fork :) |
19:12:26
| <thlorenz> | Raynos: ok, actually see what you are doing now, basically same as the namespace-css module except on the fly |
19:12:51
| <thlorenz> | downside is I have to write my css as object literals (or at least parse it on demand into one) |
19:13:05
| <Raynos> | thlorenz: upside is you write css as object literals |
19:13:22
| <Raynos> | which means you get all the advantages of https://github.com/dominictarr/hyperscript |
19:13:24
| <Raynos> | but for CSS |
19:13:28
| * oren | joined |
19:13:33
| <thlorenz> | last words of a dev to his designer before either got fired or left ;) |
19:13:47
| <Raynos> | Agreed |
19:13:57
| <techwraith> | thlorenz: lol, yep |
19:13:59
| <Raynos> | thats why i need to write a LESS / SASS style pre processor that compiles down to objects |
19:14:40
| <thlorenz> | Raynos: tj has css-parse |
19:14:46
| <thlorenz> | and css-stringify |
19:14:53
| <thlorenz> | may be just what you need |
19:14:54
| <Raynos> | yeah those only stringy & parse valid css :p |
19:19:21
| * defunctzombie | changed nick to defunctzombie_zz |
19:24:04
| <rowbit> | Hourly usage stats: [developer: 0, free: 134] |
19:28:28
| * calvinfo | joined |
19:31:36
| * feross | joined |
19:34:17
| * feross | quit (Client Quit) |
19:47:17
| * kevino80 | joined |
19:48:06
| * defunctzombie_zz | changed nick to defunctzombie |
19:49:49
| * enjawork | quit (Ping timeout: 265 seconds) |
19:50:12
| * timoxley | joined |
19:52:49
| * enjawork | joined |
19:54:43
| * timoxley | quit (Ping timeout: 250 seconds) |
20:01:43
| <defunctzombie> | Raynos: what do you use for async foreach? |
20:01:53
| <defunctzombie> | series execution |
20:01:55
| <thlorenz> | defunctzombie: runnel |
20:02:18
| <thlorenz> | defunctzombie: or to reduce an array to values you can use asyncreduce |
20:02:35
| <defunctzombie> | thlorenz: I want to run an async function for each array item |
20:02:40
| <thlorenz> | defunctzombie: i.e. you'd map your array to an array of functions |
20:02:46
| <defunctzombie> | and only go to next item when this one is done |
20:02:54
| <thlorenz> | yep that's what that does |
20:03:09
| <defunctzombie> | why is it so complicated? |
20:03:15
| <thlorenz> | https://github.com/thlorenz/runnel#passing-array-of-functions |
20:03:18
| <thlorenz> | it's not complicated |
20:03:19
| <defunctzombie> | why can't I just have each(arr, done_cb) ? |
20:03:42
| <thlorenz> | you could write a wrapper on top of it |
20:03:45
| <defunctzombie> | wut |
20:03:56
| <defunctzombie> | this each function that I want is like 5 lines of code... |
20:04:15
| <defunctzombie> | does runnel return a fuction? |
20:04:27
| <thlorenz> | i.e. all you have to do is [1, 2, 3].map(function (x) { return function (cb) { do async, cb(err, result) } }) |
20:04:28
| <defunctzombie> | runnel is overkill for what I want |
20:04:33
| <thlorenz> | ok, maybe |
20:05:00
| <defunctzombie> | hm |
20:05:00
| <thlorenz> | runnel returns undefined, but it will end up last function in the chain and bubble errors to that last function |
20:05:24
| <thlorenz> | so the last function becomes your final callback |
20:05:34
| <defunctzombie> | yea.. I don't wanna map each array to a new function... seems like it can be way simpler |
20:05:52
| <thlorenz> | maybe this is more like it then? https://github.com/thlorenz/asyncreduce |
20:06:08
| <thlorenz> | just give it an array, an accumulator a worker and a final function |
20:06:31
| <defunctzombie> | yea, that is a bit better |
20:06:41
| <defunctzombie> | I don't need the reduce functionality but I can just not use it |
20:06:49
| <thlorenz> | if you don't need to accumulate anything just give it null |
20:06:55
| <thlorenz> | and ignore the first param |
20:07:02
| <defunctzombie> | but it seems that this could be simpler |
20:07:05
| <defunctzombie> | for this use case |
20:07:43
| <thlorenz> | agreed, you could probably write something quickly, i.e. on top of runnel, i.e. something that automatically maps values to functions and passes it on to runnel |
20:08:06
| * ralphtheninja | part |
20:08:28
| * mikolalysenko | quit (Ping timeout: 245 seconds) |
20:09:00
| <defunctzombie> | https://npmjs.org/package/async-foreach |
20:09:08
| <defunctzombie> | this seems interesting but also seems overly engineered |
20:09:38
| <thlorenz> | defunctzombie: I hate stuff that messes with this |
20:09:47
| <defunctzombie> | messes with what? |
20:09:56
| <thlorenz> | that's why I wrote runnel cause I liked step but it overloaded 'this' |
20:10:09
| <defunctzombie> | oh "this" |
20:10:16
| <defunctzombie> | meh |
20:10:24
| <thlorenz> | cause then the functions I pass into it have to know about that special behavior |
20:10:34
| <defunctzombie> | yea, I agree it is weird sometimes |
20:10:42
| <defunctzombie> | well, they need to know something if they are async |
20:10:46
| <thlorenz> | the idea of runnel was that you could write your functions as you would if you just do simple callback style |
20:10:55
| <defunctzombie> | ah |
20:10:56
| <thlorenz> | but you can use them inside runnel as well w/out change |
20:11:36
| * feross | joined |
20:12:21
| * enjawork | quit (Ping timeout: 272 seconds) |
20:13:03
| <defunctzombie> | thlorenz: yea I can dig that |
20:13:04
| * enjawork | joined |
20:13:21
| * mikolalysenko | joined |
20:13:24
| <thlorenz> | also it's only ~80loc so I use it all over the place :) |
20:13:45
| <Raynos> | defunctzombie: series ? |
20:13:51
| <Raynos> | defunctzombie: continuable-series |
20:14:01
| <Raynos> | https://github.com/dominictarr/continuable-series |
20:14:18
| <defunctzombie> | sigh |
20:14:25
| <defunctzombie> | damn.. I guess I wasn't clear |
20:14:34
| <defunctzombie> | I didn't want an array of functions |
20:14:37
| <defunctzombie> | I have an array of values |
20:14:43
| <defunctzombie> | and I needed to do an async operations for each |
20:14:51
| <Raynos> | defunctzombie: https://gist.github.com/Raynos/1d6d6ad7885d3021aa44 |
20:14:52
| <defunctzombie> | in series |
20:15:07
| <defunctzombie> | this is bad |
20:15:13
| <thlorenz> | so yeah, asyncreduce is exactly that defunctzombie I don't think it gets much simpler |
20:15:15
| <defunctzombie> | I do not want to make a function for each array item |
20:15:17
| <Raynos> | I also wrote https://github.com/Colingo/in-order |
20:15:35
| <Raynos> | defunctzombie: creating a new function is no big deal |
20:15:55
| <defunctzombie> | it is when I don't need to make a function |
20:16:05
| <thlorenz> | Raynos: but it doesn't catch/bubble errors |
20:16:20
| <defunctzombie> | Raynos: in-order is what I want |
20:16:21
| <Raynos> | thlorenz: it does ? |
20:16:25
| <thlorenz> | I ran into lots of these issues with earlier runnel versions, hard to track bugs |
20:16:51
| <Raynos> | thats because runnel is a flow control library :D |
20:16:56
| <thlorenz> | Raynos: :) |
20:17:05
| <Raynos> | defunctzombie: i do recommend the creation of 'thunk' functions because of composability |
20:17:08
| <thlorenz> | well I just added https://github.com/thlorenz/runnel/blob/master/index.js#L55-L61 and it made my life a whole lot easier |
20:17:15
| <Raynos> | the overhead of creating thunks is neglible |
20:17:24
| <defunctzombie> | Raynos: meh, maybe if it was more complicated |
20:17:25
| <Raynos> | thlorenz: just never throw errors. |
20:17:27
| <thlorenz> | you could to that to in-order as well -- |
20:17:30
| <thlorenz> | not that |
20:17:30
| <defunctzombie> | but in this case it is just stupid business logic |
20:17:38
| <defunctzombie> | with one array looping |
20:17:44
| <Raynos> | thlorenz: try catch should never be needed |
20:17:48
| <thlorenz> | i.e. some var you are referencing may be undefined (i.e. typo) |
20:17:53
| <spion> | or with promises, Promise.all(array.map(asyncFn)).then(function(results) { ... }) |
20:18:08
| <Raynos> | thlorenz: if you have a typo the process should crash & die |
20:18:12
| <spion> | errors automatically propagated, LST available in some implementations |
20:18:13
| <Raynos> | thlorenz: then you fix the typo. Done. |
20:18:14
| <thlorenz> | I had lots of long debugging sessions with that when still using step, another reason I went away |
20:18:30
| <Raynos> | anything that uses try catch should die in hell fire. |
20:18:36
| <spion> | and .finally available to do transparent clean up |
20:18:37
| <thlorenz> | Raynos: yep, but if you have no good stacktrace cause it happened inside async -- good luck :) |
20:18:51
| <defunctzombie> | did someone just say Promises? |
20:18:55
| <defunctzombie> | Domenic_: ^ |
20:18:57
| <spion> | yes I did! |
20:20:44
| * defunctzombie | changed nick to defunctzombie_zz |
20:21:15
| * fronx | joined |
20:22:32
| <Raynos> | thlorenz: install long stack traces globally |
20:22:53
| <thlorenz> | Raynos: huh? not sure what you mean |
20:23:05
| <Raynos> | if you want a good stack trace then install long stack traces globally |
20:23:17
| <thlorenz> | how do I "install long stack traces globally" ? |
20:23:46
| * thlorenz | is getting ready for a relevation |
20:24:04
| <rowbit> | Hourly usage stats: [developer: 0, free: 48] |
20:24:13
| * thlorenz | and needs to practice spelling english |
20:24:48
| <Raynos> | thlorenz: https://github.com/tlrobinson/long-stack-traces |
20:24:54
| <Raynos> | thlorenz: https://github.com/mattinsler/longjohn |
20:25:03
| <thlorenz> | Raynos: thanks |
20:25:41
| <Raynos> | thlorenz: https://github.com/mattinsler/longjohn |
20:25:46
| <Raynos> | https://github.com/CrabDude/trycatch |
20:25:48
| <Raynos> | I mean that one |
20:26:01
| * fronx | quit (Ping timeout: 252 seconds) |
20:26:10
| <thlorenz> | nice |
20:26:22
| <Raynos> | you can also implement them yourself using async listener |
20:26:39
| * funkytek | joined |
20:26:59
| <Raynos> | thlorenz: long stack traces can get incredibly annoying though :p |
20:27:11
| <spion> | trycatch uses domains behind the scenes? |
20:27:14
| <Raynos> | I tend to enable them in "wtf debug" sesision |
20:27:20
| <Raynos> | yes trycatch piggy backs of domains |
20:27:28
| <spion> | then its potentially unsafe to use it to continue running. |
20:27:35
| <thlorenz> | I suppose, I guess you only add it to your script when shit hits the fan and you are clueless |
20:27:53
| <thlorenz> | good to know this exists though |
20:29:24
| <Raynos> | thlorenz: https://github.com/creationix/event-watcher/blob/master/dump.js#L1 |
20:29:39
| <Raynos> | here's an example of caswell using async listener to hook into every event emitted on every event emitter and then visualizing it |
20:29:58
| <Raynos> | spion: long stack traces are a debugging tool. all throw errors should terminate processes |
20:30:08
| <thlorenz> | Raynos: interesting |
20:30:13
| <spion> | Raynos, can I try to persuade you otherwise? |
20:30:14
| <spion> | :) |
20:30:52
| <Raynos> | spion: thrown errors crash processes. error objects passed around in a monadic fashion can be used for recovery |
20:32:14
| <spion> | promises pass errors around in a monadic fashion. |
20:32:39
| <spion> | they capture shallowly thrown errors, leaving deep async errors alone. |
20:33:10
| <spion> | domains capture all errors. node core isn't designed to continue running after a throw, and thats why its a problem to capture such errors coming from node core. |
20:33:41
| <spion> | promises give you finally, which allows you to design your code to work with thrown errors by reliably cleaning up |
20:34:43
| <spion> | and a good promise implementation like bluebird goes even further and gives you catch filters and .error(), which let you select which errors to catch (avoid capturing typeerror or referenceerror) |
20:35:23
| * feross | quit (Quit: feross) |
20:37:55
| <Raynos> | spion: but i dont want to capture shallow errors |
20:37:59
| <Raynos> | I want `yield new Error()` |
20:38:03
| <Raynos> | not `throw new Error()` |
20:38:20
| <Raynos> | spion: the problem is not capturing shallow errors. The problem is capturing all shallowly thrown errors |
20:38:29
| <Raynos> | I only want to capture shallowly yielded errors |
20:38:37
| <Raynos> | errors I yield VERY EXPLICITLY AND PURPOSEFULLY |
20:38:38
| <spion> | you'd use throw new RejectionError() |
20:38:47
| <Raynos> | that would work too |
20:38:50
| <spion> | and capture errors with .error() instead of .catch() |
20:38:51
| <Raynos> | but yield Error() is nicer |
20:39:07
| <Raynos> | yield Error() |
20:39:12
| <Raynos> | also avoids try catch penalties |
20:39:31
| <spion> | in bluebird, try-catch penalties are confined to a tiny function |
20:39:32
| <Raynos> | spion: I agree, i just think at the implementation detail using try / catch & throw RejectionError & filtering is bad. |
20:39:41
| <Raynos> | yield new Error() is far better |
20:40:06
| <spion> | capturing all throws in combination with finally lets you write robust code. |
20:40:20
| <Raynos> | no. |
20:40:21
| <spion> | that cleans up even if programmer errors occur (they're still reported to stderr) |
20:40:23
| <Raynos> | never throwing errors |
20:40:28
| <Raynos> | allows you to write robust code |
20:40:45
| <Raynos> | uncaughtException & domains handle the cleanup on process exit nicely |
20:40:48
| <spion> | yes it does. process-crash = finally cleanup |
20:40:53
| <spion> | except it costs a lot |
20:41:08
| <Raynos> | Oh your saying that promise error handling is cheaper then domains ? |
20:41:18
| <Raynos> | i'd need a benchmark |
20:41:21
| <Raynos> | of async listener vs promises |
20:41:23
| <Raynos> | to believe that |
20:41:26
| <spion> | yes, because "handling errors" with domains means that you have to let the process crash |
20:41:32
| <Raynos> | ... |
20:41:35
| <Raynos> | the process has to crash |
20:41:38
| <Raynos> | THE PROCESS IS CRASHING |
20:41:38
| <LOUDBOT> | STOP LIGHTING FIRES EVERY DAY |
20:41:50
| <Raynos> | all thrown errors have to crash process, you cant continue from throw Error() |
20:41:58
| <Raynos> | you can continue from yield Error() or throw RejectionError() |
20:41:58
| <spion> | no it does not. all you need to do is attach clean-up. |
20:42:05
| * funkytek | quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
20:42:09
| <Raynos> | ... |
20:42:25
| <spion> | think of it this way |
20:42:30
| <spion> | instead of destroying the entire process |
20:42:32
| <spion> | all its memory |
20:42:34
| <spion> | all its file handles |
20:42:40
| <spion> | you just destroy a small subset with finally |
20:42:51
| <Raynos> | http://blog.izs.me/post/65712662830/restart-node-js-servers-on-domain-errors-sensible-fud |
20:42:59
| <spion> | again, thats domains. |
20:43:01
| <Raynos> | spion: we cant do that in javascript |
20:43:06
| <Raynos> | spion: you need real coroutines to do that |
20:43:07
| <spion> | yes, we can |
20:43:12
| <Raynos> | spion: javascript has only one stack |
20:43:12
| <spion> | I really need to write an article about all this. |
20:43:17
| <Raynos> | real coroutines have a stack per coroutine |
20:43:27
| <Raynos> | spion: the problem is that there is only one stack shared between the entire process |
20:43:34
| <Raynos> | once you throw that stack is dead and you have to kill the entire process |
20:43:47
| <spion> | oh dear lord. |
20:43:53
| <Raynos> | spion: you can probably do this with fibers if it gives you one stack per coroutine |
20:43:55
| <spion> | the problem with domains is that they go deep inside node core and node core isn't designed to handle throws. |
20:44:07
| <spion> | there is nothing inherently wrong with JavaScript's throw otherwise. |
20:44:28
| <Raynos> | i dont have the level of confidence |
20:44:32
| <Raynos> | about node, v8 & my app |
20:44:37
| <Raynos> | to say I can continue after EVERY thrown error |
20:45:01
| <spion> | you don't continue after every thrown error. since node core isn't throw-safe, we crash if it throws. otherwise, if our own code throws, we can continue normally. |
20:45:27
| <spion> | provided we use simple abstractions such as promise-based context managers. |
20:45:59
| <spion> | return using (conn.open(blah), function(conn) { return some.typoo(conn, 'arg'); }); |
20:46:02
| <spion> | error gets reported |
20:46:06
| <spion> | connection gets cleaned up |
20:46:13
| <spion> | <3 |
20:46:14
| <Raynos> | spion: oh wait your suggesting that in promise land |
20:46:17
| <Raynos> | we write throw safe code |
20:46:24
| <Raynos> | spion: I dont trust my app to be throw safe |
20:46:34
| <Raynos> | spion: I dont trust third party modules I call to to be throw safe |
20:46:55
| <Raynos> | i dont trust my team of javascript engineers to know how to write throw safe javascript |
20:46:56
| <spion> | yes. its not really hard, since promises encourage some purity and there is the context-manager pattern which is dead-simple. |
20:46:59
| <Raynos> | thats a new skill. |
20:47:16
| <Raynos> | writing throw safe code is another layer of multi threaded complexity |
20:47:31
| <Raynos> | like debugging and gaurding against async race conditions is already pretty hard |
20:47:41
| <Raynos> | doing the same with gaurding againsts throws is also really hard |
20:47:51
| <Raynos> | i'd rather not go there. |
20:48:08
| <Raynos> | spion: but agreed, if you write throw safe code then within that real of throw safe code you can throw any error and catch all errors |
20:48:15
| <Raynos> | within that realm* |
20:48:39
| <spion> | Raynos, so you disagree that context-manager patterns make it trivial to write throw-safe promises code? |
20:49:37
| <spion> | in that case, I propose a project where we try to inspect this in more detail |
20:49:41
| <Raynos> | spion: not that |
20:49:51
| <Raynos> | spion: i disagree with the notion that mikeal/request is throw safe |
20:50:07
| <Raynos> | spion: and I want to continue using mikeal/request and do not want to learn how to determine how to make it throw safe |
20:50:11
| <spion> | thats easy. you use var promisifiedRequest = unsafePromisify(request); |
20:50:28
| <Raynos> | spion: but request can throw asynchronously internally |
20:50:30
| <spion> | and that promisifier doesn't propagate shallowly thrown errors. |
20:50:33
| <Raynos> | Oh wait |
20:50:36
| <spion> | nor deeply async errors. |
20:50:45
| <spion> | it crashes things. |
20:50:48
| <Raynos> | but then you need both :P |
20:50:55
| <Raynos> | then you need both a continue on my errors |
20:50:58
| <Raynos> | and crash hard on unknown errors |
20:51:13
| <spion> | yes, but you get what CrabDude is trying to get all this time. |
20:51:17
| <spion> | yes, crash on external, unsafe things |
20:51:22
| <spion> | no, don't always crash on throws. |
20:51:24
| <Raynos> | spion: so i would only see the value if all my app code was continue on errors and only crash hard node core errors |
20:51:45
| <spion> | I'll see if I can write promisifyUnsafe for bluebird |
20:51:57
| <Raynos> | spion: I also i dont see the value of a try /catch in a context manager when i can just implement monadicly with `yield Error()` |
20:52:06
| <spion> | for libraries where even shallow error capturing is considered unsafe. |
20:52:18
| <Raynos> | spion: I think there is a strong beauty in having two parallel error mechanisms. the one that is 'throw-safe' i.e. 'yield' |
20:52:23
| <Raynos> | and the one that is crash hard, i.e 'throw' |
20:52:29
| <Raynos> | two keywords for the two types of errors |
20:52:34
| <spion> | Raynos, you still have to clean up, either way. |
20:52:44
| <Raynos> | yes. |
20:52:47
| <Raynos> | so i agree with you about things |
20:52:54
| <Raynos> | i just dont want to use `throw` for both types of errors |
20:53:23
| <Raynos> | spion: because then when i look at some code that throws I can say "this is a hard crash exception. this is unrecoverable. this code is not throw safe. if it gets here process abort" |
20:53:38
| <Raynos> | and when I look at some code that yields I can say "this is throw safe error. I can recover and handle it" |
20:53:53
| <Raynos> | obvouisly unhandled yielded errors will crash the process if they bubble up |
20:54:39
| <spion> | where I disagree is that crashing and restarting node is always the sensible way to go... ever. |
20:54:45
| <spion> | (in your code) |
20:55:42
| <spion> | i believe it only makes sense for libraries that are designed to work that way. |
20:56:26
| <Raynos> | spion: we agree on that aspect |
20:56:47
| <Raynos> | spion: i just dont like using the keyword `throw` for recoverable errors because overload. I want a simpler two channel system |
20:57:48
| <spion> | hrm |
20:57:51
| <spion> | angular picked that route |
20:58:03
| <spion> | return $q.reject(new Error("text")) |
20:58:13
| * enjawork | quit (Ping timeout: 248 seconds) |
20:58:16
| <spion> | all other errors are always reported to the console |
20:58:22
| <spion> | (all throws) |
20:58:33
| <spion> | (even though they're still properly propagated) |
20:58:59
| <spion> | afaik all other promise implementations also let you return createRejectedPromise("args") |
20:59:15
| <Raynos> | thats fine too |
20:59:26
| <Raynos> | I dont use `return` because it doesnt work in `function* () {}` |
20:59:39
| <spion> | I decided to avoid generators |
20:59:42
| <Raynos> | `var foo = yield* foo()` if you return an error then `foo` is the error |
20:59:49
| <Raynos> | so it has to be `yield Error()` |
21:00:00
| <spion> | but for generators, yielding errors is a more sensible approach yes |
21:00:19
| <spion> | since the language has no error (e) { } or catch (e if condition(e)) { ... } |
21:00:39
| * funkytek | joined |
21:01:13
| <spion> | so yeah if you throw in generators you're forced with the pokemon exception handling pattern :D |
21:01:28
| <spion> | s/with/to use |
21:01:36
| * contrahax | joined |
21:02:53
| <spion> | not that great. |
21:03:24
| * crank | quit (Ping timeout: 252 seconds) |
21:04:05
| * enjawork | joined |
21:05:50
| * AvianFlu_ | joined |
21:07:44
| * AvianFlu | quit (Disconnected by services) |
21:07:48
| * AvianFlu_ | changed nick to AvianFlu |
21:08:01
| * crank | joined |
21:24:04
| <rowbit> | Hourly usage stats: [developer: 0, free: 67] |
21:28:34
| * kevino80 | quit (Remote host closed the connection) |
21:28:48
| * kevino80 | joined |
21:30:13
| * peutetre | quit (Ping timeout: 248 seconds) |
21:42:59
| <Raynos> | thlorenz: https://github.com/jacobgroundwater/node-stackup |
21:43:08
| <Raynos> | so jacob is working on a stack trace thing with async listener |
21:43:40
| * kevino80 | quit (Remote host closed the connection) |
21:44:24
| * kevino80 | joined |
21:44:45
| <thlorenz> | Raynos: interesting, for now I'll keep using runnel to give me more info out of the box, but I know there'll be a time when long stack traces will be god sent |
21:48:38
| * kevino80 | quit (Ping timeout: 240 seconds) |
21:50:19
| * kevino80 | joined |
21:50:26
| * jxson | joined |
21:50:31
| * jxson | quit (Remote host closed the connection) |
21:50:39
| * jxson | joined |
21:50:56
| * jcrugzz | joined |
21:51:45
| * peutetre | joined |
21:52:26
| * jxson | quit (Client Quit) |
21:54:01
| * jxson | joined |
21:54:51
| * feross | joined |
21:55:17
| * jcrugzz | quit (Ping timeout: 248 seconds) |
22:00:25
| * kevino80 | quit (Remote host closed the connection) |
22:01:10
| * kevino80 | joined |
22:04:40
| * AvianFlu_ | joined |
22:05:58
| * Guest34889 | changed nick to isaacs |
22:06:14
| * kevino80 | quit (Ping timeout: 264 seconds) |
22:06:54
| * AvianFlu | quit (Disconnected by services) |
22:06:57
| * AvianFlu_ | changed nick to AvianFlu |
22:19:02
| <jesusabdullah> | st_luke: hey hey o/ |
22:19:39
| <jesusabdullah> | st_luke: haven't heard from yahoo in, oh, last Tuesday? You know what's going on maybe? :) |
22:20:02
| <jesusabdullah> | st_luke: not trying to be annoying of course, I'd just love to keep it moving y'know? I'd feel bad if something that sounds this cool petered out |
22:21:12
| * fronx | joined |
22:21:47
| * defunctzombie_zz | changed nick to defunctzombie |
22:24:04
| <rowbit> | Hourly usage stats: [developer: 0, free: 46] |
22:25:57
| * fronx | quit (Ping timeout: 250 seconds) |
22:25:58
| * funkytek | quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
22:30:56
| <jesusabdullah> | CRAP someone tried calling me from Manhattan |
22:31:25
| <jesusabdullah> | CRAP I slept through a call from Lab49 |
22:32:47
| * tmcw | quit (Remote host closed the connection) |
22:36:17
| * timoxley | joined |
22:40:03
| * tmcw | joined |
22:41:50
| <thlorenz> | jesusabdullah: ws it that boring of a call :/ |
22:42:21
| <jesusabdullah> | thlorenz: No I mean I didn't even hear the phone ring |
22:42:26
| <thlorenz> | jesusabdullah: just write'em an email and apologize -- they'll reschedule |
22:42:32
| <jesusabdullah> | thlorenz: I picked up my phone and it was like, "4 MISSED CALLS FROM BROHATTAN" |
22:42:36
| <jesusabdullah> | "oh siiiick" |
22:42:39
| <jesusabdullah> | Yeah that's what I did thlorenz |
22:42:56
| <thlorenz> | cool shouldn't be a big deal |
22:43:06
| <jesusabdullah> | uuuugh I feel so lame, not for lab49 specifically but the whole thing of not getting up until 3:00 |
22:43:54
| <thlorenz> | I mean if you're writing code into the wee hours all shall be forgiven jesusabdullah |
22:44:12
| * contrahax | quit (Quit: Sleeping) |
22:46:09
| * kenperkins | quit (Quit: Computer has gone to sleep.) |
22:46:17
| <jesusabdullah> | I was playing minecraft <_<; |
22:46:24
| <jesusabdullah> | though I did write code earlier in the day |
22:46:34
| <jesusabdullah> | oh, actually, I *did* go through the django tutorial |
22:46:39
| <jesusabdullah> | and it finally clicked with me |
22:46:44
| <jesusabdullah> | what it's All About |
22:46:48
| <thlorenz> | see there ya go -- I saw that tweet |
22:46:50
| <jesusabdullah> | I don't really LIKE it but I'll ALLOW it |
22:47:05
| * timoxley | quit (Remote host closed the connection) |
22:47:07
| <thlorenz> | the only django I like is that gipsy guitar player |
22:47:10
| <jesusabdullah> | I had a coding assignment for a job that was like, "build a crud app" |
22:47:11
| <jesusabdullah> | and I did |
22:47:13
| <jesusabdullah> | and that was fine |
22:47:31
| <jesusabdullah> | but it was in express and it took significantly longer than their time estimate even though it's just ultra obvious MVC |
22:47:48
| <jesusabdullah> | so I'm like, okay shit, these "big frameworks" must be targeted at the stupid use case |
22:47:51
| <jesusabdullah> | sure as shit |
22:48:16
| * fronx | joined |
22:48:23
| <jesusabdullah> | little admin panel's kinda cool though |
22:48:31
| <jesusabdullah> | Big has that btw :) |
22:48:41
| <jesusabdullah> | That was my other realization |
22:49:01
| <jesusabdullah> | in some ways, Big is a pretty solid framework in terms of targeting that use case |
22:49:13
| <jesusabdullah> | I've been kinda following dev on it again |
22:53:09
| <thlorenz> | hey substack check it out: transform EVERYTHING https://github.com/thlorenz/transformify |
22:54:10
| * funkytek | joined |
22:54:35
| <jesusabdullah> | NU |
22:56:07
| <techwraith> | jesusabdullah: Should have just used Geddy :P |
22:56:14
| <jesusabdullah> | pfffff |
22:56:36
| <jesusabdullah> | Make it so I don't need an external bin to run geddy and we can talk >:P |
22:56:43
| <techwraith> | jesusabdullah: Done |
22:56:46
| <jesusabdullah> | orly |
22:56:51
| <techwraith> | (already, for over a year) |
22:56:54
| <jesusabdullah> | hah |
22:56:57
| <jesusabdullah> | I'd believe that |
22:57:03
| <jesusabdullah> | Yeah maybe I'll need to take another look |
22:57:26
| <techwraith> | Model is pretty kickass |
22:57:54
| * contrahax | joined |
22:59:08
| <jesusabdullah> | I'm kinda starting to develop my own ideas as to what such a framework should look like |
22:59:11
| <jesusabdullah> | I think everyone does |
22:59:23
| <jesusabdullah> | thing is, I want these things but I kinda don't like building crud apps |
23:02:14
| * contrahax | quit (Ping timeout: 240 seconds) |
23:03:29
| <techwraith> | jesusabdullah: I don't do a whole lot of crud these days either |
23:03:44
| <techwraith> | But I recognize the utility of such frameworks |
23:04:03
| <techwraith> | Especially for "internal tools" type apps. |
23:04:57
| * contrahax | joined |
23:06:04
| * timoxley | joined |
23:06:12
| * maksimlin | joined |
23:11:34
| <jesusabdullah> | techwraith: Yeah def |
23:12:05
| * jcrugzz | joined |
23:16:40
| * fronx | quit (Remote host closed the connection) |
23:17:15
| * kevino80 | joined |
23:21:08
| <rch> | techwraith: what's Model? |
23:21:34
| <techwraith> | rch: http://github.com/mde/model |
23:21:59
| <techwraith> | It's a model + database abstraction layer |
23:22:02
| <rch> | huh, ok thanks |
23:22:17
| <techwraith> | So you can use (almost) any database with the same API |
23:22:19
| <rch> | could use cass, i wonder how natural a fit that would be |
23:22:34
| <techwraith> | cass? |
23:22:35
| <rch> | i really wonder how portable APIs are across databases, the semantics of some databases are so different |
23:22:37
| <rch> | cassandra |
23:22:43
| <techwraith> | Ah, thought so |
23:23:11
| <techwraith> | True, it's not the most performant for non-ralational, or non-queryable dbs |
23:23:47
| * ins0mnia | quit (Read error: Operation timed out) |
23:24:03
| <rowbit> | Daily usage stats: [developer: 8, free: 1048] |
23:24:04
| <rowbit> | Hourly usage stats: [developer: 0, free: 25] |
23:34:16
| * defunctzombie | changed nick to defunctzombie_zz |
23:35:00
| * thlorenz | quit (Remote host closed the connection) |
23:35:10
| * peutetre | quit (Quit: peutetre) |
23:47:10
| * fronx | joined |
23:47:55
| * kevino80 | quit (Remote host closed the connection) |
23:48:09
| <robertkowalski> | i talked about npm today at our hamburg javascript usergroup |
23:50:37
| <robertkowalski> | Domenic_: promises was a topic in the talk afterwards. |
23:51:52
| * fronx | quit (Ping timeout: 240 seconds) |
23:52:13
| * jcrugzz | quit (Ping timeout: 245 seconds) |
23:54:06
| * tilgovi | joined |
23:55:13
| * AvianFlu | quit (Ping timeout: 250 seconds) |
23:58:09
| * funkytek | quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
23:59:14
| <ogd> | grncdr: techwraith http://github.com/mde/model https://github.com/grncdr/node-any-db |