00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:02:30  * AvianFluquit (Remote host closed the connection)
00:06:12  <defunctzombie>thlorenz: amazing
00:06:16  <defunctzombie>thlorenz: glorious success
00:06:37  <thlorenz>:( I don't even know why I kept trying
00:06:41  <defunctzombie>hahaha
00:06:49  * thlorenzjust wasted 20min more of his time
00:06:54  <defunctzombie>thlorenz: I think the other errors will go away with array stuff
00:06:58  <defunctzombie>which I will tackle now
00:07:01  <thlorenz>hopefully
00:07:04  <defunctzombie>have you pushed the latest you have?
00:07:20  <thlorenz>yes, but let me double check
00:07:34  <thlorenz>yep, good to go
00:08:59  <defunctzombie>kk
00:13:36  <rowbit>substack, pkrumins: These encoders are STILL down: 50.57.72.69(free7)
00:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 9]
00:30:00  * dominictarrjoined
00:36:38  * dominictarrquit (Ping timeout: 240 seconds)
00:36:57  * dominictarrjoined
00:43:13  * indexzerojoined
00:43:13  * indexzeroquit (Client Quit)
00:45:00  * mikolalysenkoquit (Ping timeout: 245 seconds)
00:45:44  * thlorenzquit (Remote host closed the connection)
00:49:27  * mikolalysenkojoined
00:56:59  * mikolalysenkoquit (Ping timeout: 260 seconds)
01:02:01  * dominictarrquit (Ping timeout: 246 seconds)
01:15:40  * mikolalysenkojoined
01:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 5]
01:25:36  <rowbit>substack, pkrumins: These encoders are STILL down: 50.57.72.230(dev-ie7-4)
01:48:30  <jesusabdullah>So I decided to read rails guides on a whim
01:48:36  <jesusabdullah>$ rails generate controller welcome index
01:48:45  <jesusabdullah>Holy shit, you can fill-in-the-blanks on this shit?
01:49:02  <substack>jesusabdullah: learning rails?
01:49:03  <jesusabdullah>I mean, yeah you kind of can
01:49:10  <jesusabdullah>substack: taking a break from learning c
01:49:32  <jesusabdullah>substack: I did the django tutorial, figured I'd look up something for rails
01:49:58  <jesusabdullah>substack: I'm having kind of a crisis, I'm realizing my skills have me pretty much set for writing mvc stuff but it's, like
01:50:02  <jesusabdullah>substack: I find it dull
01:50:18  <jesusabdullah>substack: :(
01:51:29  * thlorenzjoined
01:51:45  <jesusabdullah>substack: but maybe if I had a rails that didn't make me really really angry, I could consider that a Solved Problem and move on
01:52:51  <jesusabdullah>substack: ugh the problem with these is they're a nice integrated solution until you want to back your model by something that isn't the blessed orm
01:54:04  <substack>or if you ever want to build anything that the creators of rails didn't envision
01:54:10  <jesusabdullah>Right, I mean
01:54:26  <jesusabdullah>I actually kind of love this idea of, "oh hey controllers are stupid here we'll just write them for you"
01:54:38  <jesusabdullah>and "hey backing models to a db is dumb so we did it for you"
01:54:41  <jesusabdullah>that's great
01:55:21  <jesusabdullah>but if I say, "Ugh I want to back this model by making calls to a third party web api, I don't need a db for that
01:55:25  <chapel>its only great when you are bored or tired of doing it yourself :)
01:55:29  <jesusabdullah>", it's like, "hahahaha eat it"
01:55:40  <jesusabdullah>well chapel, why shouldn't I be? XD
01:55:42  <grncdr>jesusabdullah: to be fair you can get pretty far with the ActiveModel mixins
01:55:43  <chapel>its not great if thats all you know, and you didn't learn to do it yourself
01:55:58  * thlorenzquit (Ping timeout: 245 seconds)
01:56:01  <chapel>no comment on you jesusabdullah :)
01:56:01  <jesusabdullah>grncdr: Yeah, I mean, most of this is based on me reading django's docs
01:56:08  <grncdr>if you don't want to use ActiveRecord for some reason
01:56:35  <chapel>I tried to learn rails before I got into node, glad I didn't put much effort into it
01:56:54  <jesusabdullah>grncdr: that actoually sounds about right
01:57:00  <grncdr>meh, if I was going to do a "big framework" style dev I'd go with rails
01:57:15  <grncdr>it's slow as balls, inconsistent, somewhat inflexible
01:57:21  <jesusabdullah>chapel: don't get me wrong I think the whole thing is yawn-worthy
01:57:32  <grncdr>but it's also the most popular, which is the only reason to use a "big framework" anyways
01:57:36  <chapel>jesusabdullah: I think its good to explore and learn other things
01:57:37  <jesusabdullah>chapel: this is about trying to automate away dumb problems as best you can
01:57:48  <chapel>you can't know what you don't like unless you've at least looked at it, maybe tried it
01:57:49  <jesusabdullah>chapel: so you can concentrate on more interesting problems
01:57:53  <chapel>yeah
01:58:25  <chapel>I am using java and spring at work
01:58:30  <chapel>so I understand
01:58:30  <jesusabdullah>reminds me, I heard rumors that geddy is better than it used to be
01:58:31  <grncdr>:o
01:58:38  <jesusabdullah>grncdr: eh?
01:58:46  <grncdr>at "java and spring"
01:58:51  <chapel>lol
01:59:00  <chapel>very light java/spring
01:59:01  <grncdr>my one time working on a Spring app made me never want to go back there
01:59:23  <grncdr>like, I think it was a problem of there was one guy on the team who was pretty proficient with Java tooling
01:59:30  <grncdr>and he was kind of a tool
01:59:42  <grncdr>so the project did not go particularly well overall
01:59:48  <chapel>I am not particularly fond of it, but I am one engineer out of many brought in to help keep up the pace
02:00:17  <chapel>most of my code is in front end js though
02:01:04  <grncdr>yeah, I feel like that's where things are getting more interesting anyways
02:01:13  <jesusabdullah>I think once I get bored with c I might poke at java next
02:01:42  <jesusabdullah>Ugh I need to be less lazy, I haven't done shit the last week
02:01:43  <grncdr>have you ever done anything with it at all in the past?
02:01:53  <grncdr>(Java)
02:01:57  <chapel>I haven't
02:02:15  <chapel>well I had a short lived project on an android app
02:02:17  * yorickquit (Remote host closed the connection)
02:02:43  <grncdr>yeah, I feel like Java you spend relatively little time learning the language, because it's really quite simple
02:02:53  <grncdr>but tons of time learning the tools and libraries
02:03:05  <chapel>the language is straight forward, its the peculiarities of the platform
02:03:19  <chapel>conventions and standards
02:04:00  <chapel>it isn't bad though, I don't hate it, but I still get to do node as I like at work
02:04:10  <grncdr>yeah, it helps me to remember that it was initially developed and promoted in a time when ubiquitous internet access wasn't really a thing
02:04:28  <grncdr>so like, of course you would ship an entire platform with a huge stdlib
02:05:20  <substack>internet access was good but there weren't central repositories that made tiny modules feasible
02:05:25  <grncdr>the "keep core small" ethos (combined with npm) is my favorite thing about node
02:05:32  <substack>it was always a huge hassle to go use any third party code
02:05:52  <substack>and there was no thought put into making it really easy to publish modules
02:05:54  <grncdr>substack: really though? I mean, was CPAN not a thing at the time?
02:06:08  <grncdr>(not Java obv. but you think they would've looked at it)
02:06:18  <grncdr>I agree re: publishing
02:06:30  <substack>CPAN existed but took a while to win mindshare as a viable way of organizing code
02:06:35  <substack>and perl still has a really big stdlib
02:06:38  <grncdr>yeah
02:06:42  <grncdr>that's def. true
02:07:44  <chapel>purposefully keeping the core small has allowed modules to rule
02:08:30  <grncdr>yeah, the fact that they did a pretty solid job of module loading early on helped a lot too
02:08:31  <chapel>when modules have to compete with core, and vice versa, it makes things more complicated for all involved
02:08:38  <chapel>yeah for sure
02:08:47  <chapel>and local modules was a big win
02:09:21  <grncdr>like, we could've ended up with a convention of treating it like a browser (I don't know how likely that really was) and everybody just banging their stuff into the global namespace
02:09:22  <chapel>I remember the transition, it was hard, and I didn't like it, but not long after I saw the value
02:10:29  <chapel>not sure about the es6 module loading
02:10:42  <chapel>commonjs isn't perfect, but it is sane
02:11:45  <grncdr>yeah, I'm kind of consoling myself by remembering that it will be at least another couple of years before people actually start using it
02:13:53  <chapel>though node can use whatever version v8 supports
02:14:02  <chapel>so we will see it sooner in node
02:20:57  * thlorenzjoined
02:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 3]
02:39:14  <defunctzombie>substack: https://github.com/defunctzombie/commonjs-assert/commit/8cde1fdcddffe4efd719113f7794b7d7a1c82d31
02:39:18  <defunctzombie>substack: what do you think of this?
02:51:17  <thlorenz>defunctzombie: looks good, but see my comment
02:51:31  <defunctzombie>thlorenz: I could add a comment
02:51:41  <thlorenz>maybe or just another var
02:51:43  <defunctzombie>it is to get the next line
02:51:52  <defunctzombie>k
02:51:56  <thlorenz>I kind of guessed that, but it's hard to read
02:52:18  <thlorenz>defunctzombie: awesome though if that works in all browsers :)
02:52:27  <defunctzombie>thlorenz: works in more browsers
02:52:28  <defunctzombie>heh
02:52:33  <defunctzombie>I dunno about "all" yet
02:52:39  <defunctzombie>but it does give stacks in firefox and safari
02:52:49  <defunctzombie>IE as well I think
02:52:57  <thlorenz>well seems like this is what progress is like when dealing with browsers
02:53:33  <defunctzombie>yes
02:53:48  <defunctzombie>thlorenz: also
02:53:49  <defunctzombie>https://github.com/thlorenz/stack-mapper/tree/stack-frames
02:53:58  <defunctzombie>thlorenz: crude cut, but gives you the idea
02:54:08  <defunctzombie>I dunno what you wanna do about the un-prepared tests tho
02:54:17  <defunctzombie>those seem like they can be deleted
02:54:20  <defunctzombie>or something
02:54:27  <defunctzombie>the prepared tests will just run in browsers
02:56:18  <thlorenz>we should keep those since they integrate with browserify and show that this works all the way
02:56:36  <thlorenz>btw what's up with all these white space changes? can hardly see what you actually changed
02:57:05  <thlorenz>do you have auto trim turned on or something? I did the same to substack once (he made me redo it) ;)
02:57:32  <defunctzombie>thlorenz: yea, maybe
02:57:37  <defunctzombie>thlorenz: I hate trailing whitespace
02:57:40  <thlorenz>defunctzombie: I don't really care that much, but it truly makes it harder to see what you changed
02:57:47  <defunctzombie>when it comes time for real commit I can clean it up
02:57:51  <thlorenz>cool
02:57:57  <thlorenz>looks good so far
02:58:08  <thlorenz>you got rid of error-stack module?
02:58:11  <defunctzombie>well, the integration tests with browserify need to be rethought then
02:58:21  <defunctzombie>cause those don't work now :)
02:58:24  <defunctzombie>yea
02:58:28  <defunctzombie>that module is not needed
02:58:35  <defunctzombie>frames should be passed in as an array
02:58:43  <defunctzombie>of { line:, column:, filename: }
02:58:44  <defunctzombie>objects
02:58:50  <thlorenz>cool
02:58:51  <defunctzombie>gotta document that on readme
02:59:01  <defunctzombie>so yea.. dunno what to do with those tests
02:59:41  <defunctzombie>could add them in and use the stack parsing module in those tests only to make the frames
02:59:46  <defunctzombie>that would run in node land
02:59:46  <thlorenz>well definitely keep them, they can serve as an example on how to do this all he way
02:59:59  <thlorenz>yep that'd be good
03:00:07  <thlorenz>just add it back as a devdep
03:01:36  <rowbit>substack, pkrumins: These encoders are STILL down: 50.56.27.70(dev-ie6-1)
03:01:39  <thlorenz>:( I think that great keyboard mapper is actually slowing down my typing
03:02:00  <thlorenz>it's so cool to use the space bar instead of reaching for Shift though
03:02:18  <defunctzombie>thlorenz: will do
03:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 13]
03:34:01  <defunctzombie>thlorenz: any reason you have tape and tap?
03:34:07  <defunctzombie>thlorenz: can I just leave tape?
03:34:25  <thlorenz>yeah, I had tap on serverside tests cuz it gives better deep equal errors
03:34:39  <thlorenz>but you can change it back to tape if you want
03:34:58  <defunctzombie>k
03:42:24  <defunctzombie>thlorenz: includeSources
03:42:29  <defunctzombie>thlorenz: do you want that feature to stay?
03:42:36  <thlorenz>yep, definitely
03:42:41  <defunctzombie>how do you want it to stay?
03:42:46  <defunctzombie>just a source field in the frame?
03:42:53  <thlorenz>it's nice if you can see the assert statement right in the trace
03:43:01  <defunctzombie>we no longer produce traces
03:43:10  <defunctzombie>this is not for this library to do
03:43:17  <defunctzombie>just return array of frames
03:43:38  <thlorenz>ok, add it as a field then and or insert it right below the frame that traced that line
03:51:52  <defunctzombie>thlorenz: is it only suppose to exist for the first frame?
03:52:09  <thlorenz>defunctzombie: yes
03:52:29  <thlorenz>otherwise the frames get too cluttered, but it could be made to include more
03:52:41  <defunctzombie>this seems weird.. why doesn't whatever uses this library get it if it wants it?
03:52:56  <defunctzombie>that thing could get how many ever lines of context right
03:53:01  <defunctzombie>cause it has the map file
03:53:07  <defunctzombie>and will have the new frames
03:53:25  <thlorenz>but then it'd have to run source map consumer again
03:53:33  <defunctzombie>would you?
03:53:34  <thlorenz>to map it to the right code
03:53:44  <defunctzombie>don't you already have the map json with teh sources?
03:54:05  <defunctzombie>just newline split them and get the line right?
03:54:08  <thlorenz>yes, you maybe right, I'm not entirely clear what you are returning
03:54:09  <thlorenz>yep
03:54:45  <thlorenz>you could rip it out and I'll write another module that inserts the source line
03:54:51  <defunctzombie>all this module will do is change filename, line and column to a sourcemap capable one
03:54:58  <defunctzombie>give the map file provided
03:55:04  <defunctzombie>you can use that new info as you wish
03:55:06  <defunctzombie>to make pretty traces
03:55:08  <thlorenz>defunctzombie: it's different now since you return me an array
03:55:10  <defunctzombie>to get real content
03:55:13  <defunctzombie>etc
03:55:15  <defunctzombie>yep
03:55:28  <thlorenz>before with the string it was harder to get the source in there after the fact
03:55:41  <defunctzombie>yea
03:55:43  <defunctzombie>agreed
03:56:04  <thlorenz>so go ahead and remove that, I'll move it into another module later
03:56:32  <thlorenz>also remove the second test in pretty much every file (since mostly it tests for the inclusion of the source)
04:12:23  * cpupjoined
04:17:40  * mikolalysenkoquit (Ping timeout: 246 seconds)
04:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 19]
04:27:38  <jden>jesusabdullah: ping
04:28:45  <defunctzombie>thlorenz: https://github.com/thlorenz/stack-mapper/commit/3a567f98f01c74b0aeaad82a043ff47cb59ccb90
04:28:51  <defunctzombie>cleaned up and fixed tests
04:28:57  <defunctzombie>npm test now runs all the tests
04:29:01  <defunctzombie>prepared and un-prepared
04:29:06  <thlorenz>cool, reading through it
04:31:20  <thlorenz>some comments need to be synced up, but otherwise lgtm
04:31:36  <defunctzombie>thlorenz: which comments?
04:31:44  <thlorenz>defunctzombie: also I think you may have overlooked this example: https://github.com/thlorenz/stack-mapper/blob/3a567f98f01c74b0aeaad82a043ff47cb59ccb90/example/twofile.js
04:31:55  <defunctzombie>oh yea
04:32:02  <defunctzombie>I didn't even notice an examples folder haha
04:32:08  <thlorenz>https://github.com/thlorenz/stack-mapper/blob/3a567f98f01c74b0aeaad82a043ff47cb59ccb90/lib/setup-consumer.js#L9-L19
04:32:16  <defunctzombie>why is that even a thing
04:32:29  <defunctzombie>the tests are already so good as examples :)
04:32:33  <thlorenz>https://github.com/thlorenz/stack-mapper/blob/3a567f98f01c74b0aeaad82a043ff47cb59ccb90/index.js#L83-L86
04:32:44  <defunctzombie>ah yes
04:32:49  <defunctzombie>that was the last thing I changed
04:32:52  <defunctzombie>to remove all the source stuff
04:32:56  <defunctzombie>will fix the comment
04:32:58  <thlorenz>defunctzombie: I just wrote that example and then pasted into the readme
04:33:10  <defunctzombie>can I just delete that example
04:33:16  <defunctzombie>kinda annoying to update 3 places
04:33:21  <defunctzombie>with the exact same code heh
04:33:24  <thlorenz>defunctzombie: cool, thanks, and yeah go ahead - nuke it :)
04:34:41  <thlorenz>defunctzombie: also you need to change all tap.test requires to tape -- shits failing on travis: https://travis-ci.org/thlorenz/stack-mapper/jobs/16091935
04:34:48  * jcrugzzjoined
04:35:22  <defunctzombie>ah
04:36:08  <defunctzombie>thlorenz: ok changed and comments updated
04:36:10  <defunctzombie>and file nuked
04:36:26  <thlorenz>cool, thanks will merge once the travis build goes through
04:37:59  <defunctzombie>cool
04:38:03  <defunctzombie>I also published assert 1.1.0
04:38:07  <defunctzombie>with cross browser shit
04:38:09  <defunctzombie>substack: ^
04:38:16  <defunctzombie>renamed the var
04:38:20  <defunctzombie>to next_line
04:38:22  <defunctzombie>and added a comment
04:40:03  <substack>great!
04:42:56  <thlorenz>defunctzombie: I'm still getting old docs in js files and Readme
04:43:03  * mikolalysenkojoined
04:43:21  <substack>defunctzombie, thlorenz: browserify 3.17.0 published
04:43:32  <substack>uses assert 1.1.0 and implements global transforms
04:43:39  <substack>thlorenz: please give `-g` a spin!
04:43:41  <defunctzombie>wooo wow
04:43:47  <thlorenz>substack: awesome! <3, thanks a lot
04:43:50  <defunctzombie>thlorenz: oh yea.. return value doc
04:43:51  <defunctzombie>jesus
04:44:00  <substack>thlorenz: it was trickier than I was expecting actually
04:44:01  <thlorenz>defunctzombie: I can do it don't worry
04:44:29  <defunctzombie>kk
04:44:30  <defunctzombie>thanks
04:44:36  <defunctzombie>I am working on testing in IE8 :)
04:44:37  <thlorenz>substack: wow wouldn't have thought, I thought just appending global txs to all locals would do the trick
04:45:02  <substack>there was another bug that made it tricky
04:45:21  <substack>browser-resolve wasn't giving me the pkg contents for an entry file with a package.json in the same directory
04:45:25  <substack>but that's all fixed now
04:45:26  <defunctzombie>thlorenz:
04:45:30  <defunctzombie>thlorenz: IE8 works
04:45:38  <defunctzombie>thlorenz: at least it seems to run tests
04:45:51  <defunctzombie>this is a miracle
04:45:51  <thlorenz>defunctzombie: wow, yeah, just saw that
04:45:54  <thlorenz>:)
04:45:57  <substack>defunctzombie: get it into testling-ci!
04:46:09  <thlorenz>substack: way ahead of you :)
04:46:25  <thlorenz>https://ci.testling.com/thlorenz/stack-mapper
04:46:29  * jcrugzzquit (Ping timeout: 272 seconds)
04:46:54  <defunctzombie>thlorenz: yea.. that identifier shit for ie 6 and 7
04:46:58  <defunctzombie>is a trailing comma
04:47:04  <defunctzombie>in an object definition
04:47:09  <defunctzombie>not sure which module
04:47:19  <defunctzombie>but if it is one you control if you fix that should be good to go
04:47:25  <thlorenz>defunctzombie: do you know how to grep for ',' ?
04:47:41  <thlorenz>I'll look into it
04:47:44  <defunctzombie>thlorenz: well, what I do is download the js bundle
04:47:48  <defunctzombie>and go to that line
04:48:04  <thlorenz>don't need to download, I do open
04:48:13  <thlorenz>straight from testling
04:48:50  <thlorenz>defunctzombie: found it, and yes it's one I control
04:48:57  <defunctzombie>cool
04:49:04  <thlorenz>that's what I was looking at the whole time, but didn't see the trailing comma
04:53:31  <thlorenz>defunctzombie: hey actually those trailing commas are in stack-trace module
04:53:39  <thlorenz>I thought we aren't using that anymore
04:53:53  <defunctzombie>thlorenz: we aren't
04:54:08  <thlorenz>ok, well it's still a dependency, I'll remove that
04:54:24  <thlorenz>ah, nm it's for the tests
04:54:43  <defunctzombie>thlorenz: on shit
04:54:46  <thlorenz>defunctzombie: but we are still requiring it in index
04:54:49  <thlorenz>I'll fix it np
04:54:58  <defunctzombie>thlorenz: test/util/frames.js
04:55:03  <defunctzombie>thlorenz: that file should be split up
04:55:11  <defunctzombie>thlorenz: into one that is the v8 stuff and one that isn't
04:55:17  <defunctzombie>thlorenz: that is why as well
04:55:22  <thlorenz>ok, I'll do it
04:55:29  <defunctzombie>cool awesome
05:01:32  * cpupquit (Ping timeout: 252 seconds)
05:04:23  <thlorenz>defunctzombie: http://i193.photobucket.com/albums/z7/Scrapbookartkj/HappyDance.gif
05:04:32  <thlorenz>passing in IE6,7,8!
05:04:40  <defunctzombie>thlorenz: glorious victory
05:04:47  <thlorenz>nice work!
05:04:53  <defunctzombie>indeed
05:05:01  <defunctzombie>very awesome module
05:05:27  <thlorenz>only problem will be for peeps to parse their stack trace i.e. via the error-stack module
05:05:39  <thlorenz>although we could probably PR on that to fix that trailing ,
05:07:11  <defunctzombie>yea
05:07:18  <defunctzombie>and that module is only good for v8 anyway
05:07:23  <defunctzombie>in zuul I am using tracekit for now
05:07:31  <defunctzombie>which has its own problems but seems to be doing a bit better
05:10:20  * cpupjoined
05:11:11  <thlorenz>defunctzombie: we should add something to the readme along the lines I did for how to obtain source maps, except "how to obtain a stacktrace"
05:11:23  <defunctzombie>yea
05:11:29  <defunctzombie>once we have a better idea of it
05:11:51  <thlorenz>cool, not urgent as long as zuul does it (and thus zuul-mp) I'm very happy :)
05:12:06  <thlorenz>imagine mapped stacktraces in phantomjs
05:13:01  <thlorenz>substack: when I get a chance I'll rip viralify browser-swap and try to do it just with browserify and global transforms
05:13:16  <thlorenz>*viralify out of
05:13:54  <thlorenz>substack: although before that I'll need to be able to declare them in my package.json
05:21:07  <rowbit>substack, pkrumins: These encoders are STILL down: 50.57.174.105(dev-ie8-2)
05:23:48  <thlorenz>defunctzombie: just saw this - https://github.com/thlorenz/stack-mapper/blob/master/test/onefile.js#L24
05:23:58  <thlorenz>so these tests will break if you change the test file
05:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 7]
05:24:06  <thlorenz>i.e. just adding an empty line
05:25:00  <thlorenz>that's why I removed the location info previously, not a problem now, but just so you don't tear your hair out if you come back to this and wonder why the tests are failing ;)
05:26:36  <defunctzombie>thlorenz: yea
05:26:45  <defunctzombie>thlorenz: or we could cut out the last frames
05:26:48  <defunctzombie>that could change
05:27:01  <thlorenz>well I wanna make sure that it returns the right frames
05:27:34  <thlorenz>we can just add this https://github.com/thlorenz/stack-mapper/blob/b83ff460a2a0e02975f70990e8753644f44a4529/test/util/relevant.js#L9-L11 later some time
05:27:56  <grncdr>I need a good module to group streams
05:28:18  <thlorenz>defunctzombie: so btw how do I map the original frames to the one returned by .map?
05:28:31  <defunctzombie>thlorenz: ?
05:28:37  <grncdr>like, buffer all the data until some chunk matches a predicate function, then emit that buffer as a data event...
05:28:48  <thlorenz>I saw that you just continue here: https://github.com/thlorenz/stack-mapper/blob/master/index.js#L60
05:29:04  <thlorenz>so I may end up with less than before and can not match'em up anymore by index
05:29:53  <thlorenz>defunctzombie: I mean I want to fix my error message somehow, like replace traces like I did before
05:30:03  <thlorenz>but then I need to know what to replace with what
05:30:05  <defunctzombie>thlorenz: you won't end up with less
05:30:18  <defunctzombie>thlorenz: the input frames array is copied
05:30:24  <defunctzombie>thlorenz: and frames are changed inplace on that one
05:30:32  <thlorenz>ah, cool
05:30:33  <defunctzombie>output should always === input length
05:32:09  <thlorenz>that makes sense and will make it super easy to fix your error message
05:34:43  <thlorenz>defunctzombie: once this all is finalized we need to add that to the readme as well, i.e. that any other properties you add to the frames (like message string) are includeded in the returned frames
05:34:57  <defunctzombie>yep
05:35:42  <thlorenz>defunctzombie: so when I wake up tomorrow you are done integrating this into zuul? ;)
05:36:01  <defunctzombie>thlorenz: I already have it working with the mocha stuff
05:36:07  <defunctzombie>had that earlier today :)
05:36:10  <thlorenz>awesome!
05:36:13  <defunctzombie>just had to cleanup all these little things
05:36:23  <thlorenz>can't wait
05:36:33  <defunctzombie>trying to test in IE11 right now
05:36:37  <defunctzombie>but stacktraces are a bitch
05:36:42  <defunctzombie>works great in chrome and firefox tho
05:37:09  <thlorenz>nice and also test phontomjs, cuz that would be killer if that worked
05:37:23  <defunctzombie>yea
05:37:34  <defunctzombie>I tried it just now with zuul-mp but phantom still reports old stuff
05:37:42  <defunctzombie>I think cause it prints before I have a chance to change the stack
05:38:00  <defunctzombie>anyhow.. my new phantom integration stuff will just not use any of that nonsesnse
05:38:11  <defunctzombie>and it will also let you use phantom with tape tests easily
05:38:24  <thlorenz>well the option there is to parse the errors out of the output
05:38:37  <thlorenz>ah, cool, so no need for zuul-mp then anymore?
05:39:34  <defunctzombie>hopefully..but that is a bit away still
05:39:42  <defunctzombie>right now I have opened IE 11 in some fullscreen mode
05:39:47  <defunctzombie>and dunno how to make it stop
05:39:47  <defunctzombie>:(
05:39:48  <defunctzombie>sigh
05:39:50  <defunctzombie>I hate windows
05:41:35  <thlorenz>defunctzombie: I think F12
05:41:44  <defunctzombie>I finally figured it out
05:42:40  <defunctzombie>ok.. tracekit is being a little bitch
05:42:44  <defunctzombie>I have had enough for tonight
05:42:52  <defunctzombie>tomorrow I try to solve some more issues
05:42:53  <defunctzombie>night
05:42:54  <thlorenz>:) ok talk to you tomorrow
05:43:33  * cpupquit (Read error: No route to host)
05:43:44  * defunctzombiechanged nick to defunctzombie_zz
05:47:47  * cpupjoined
05:50:45  * thlorenzquit (Remote host closed the connection)
05:51:18  * thlorenzjoined
05:55:33  * thlorenzquit (Ping timeout: 245 seconds)
05:58:53  * indexzerojoined
06:13:37  <rowbit>substack, pkrumins: These encoders are STILL down: 50.57.72.69(free7)
06:14:53  * cpupquit (Read error: No route to host)
06:19:53  * cpupjoined
06:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 5]
06:25:59  * anvakajoined
06:27:27  * cpupquit (Read error: No route to host)
06:29:11  * cpupjoined
06:44:17  * tilgoviquit (Ping timeout: 272 seconds)
07:00:53  * cpupquit (Ping timeout: 252 seconds)
07:10:09  * anvakaquit (Remote host closed the connection)
07:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 7]
07:25:37  <rowbit>substack, pkrumins: These encoders are STILL down: 50.57.72.230(dev-ie7-4)
07:29:27  * pfrazequit (Ping timeout: 260 seconds)
07:31:02  * mikolalysenkoquit (Ping timeout: 246 seconds)
08:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 2]
08:41:38  * jcrugzzjoined
08:46:07  * jcrugzzquit (Ping timeout: 246 seconds)
09:01:37  <rowbit>substack, pkrumins: These encoders are STILL down: 50.56.27.70(dev-ie6-1)
09:07:43  * pfrazejoined
09:19:40  <rowbit>/!\ ATTENTION: (default-local) tanya@... successfully signed up for developer browserling plan ($20). Cash money! /!\
09:19:40  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
09:24:04  <rowbit>Hourly usage stats: [developer: 3, free: 6]
10:24:04  <rowbit>Hourly usage stats: [developer: 4, free: 24]
10:27:57  * saijanai_joined
11:02:08  * fronxjoined
11:05:26  * fronxquit (Remote host closed the connection)
11:08:02  * fronxjoined
11:20:41  * fronxquit (Remote host closed the connection)
11:21:08  <rowbit>substack, pkrumins: These encoders are STILL down: 50.57.174.105(dev-ie8-2)
11:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 10]
11:28:52  * pfrazequit (Ping timeout: 246 seconds)
11:39:04  * fronxjoined
12:03:10  * fronxquit (Remote host closed the connection)
12:07:44  * indexzeroquit (Quit: indexzero)
12:11:40  * fronxjoined
12:13:38  <rowbit>substack, pkrumins: These encoders are STILL down: 50.57.72.69(free7)
12:17:27  * ferossjoined
12:18:50  * ferossquit (Client Quit)
12:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 67]
12:41:11  * saijanai_quit (Quit: saijanai_)
13:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 39]
13:25:38  <rowbit>substack, pkrumins: These encoders are STILL down: 50.57.72.230(dev-ie7-4)
13:26:43  * yorickjoined
13:42:38  * fronxquit (Remote host closed the connection)
13:48:24  * cpupjoined
14:04:15  * AndreasMadsenjoined
14:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 40]
14:39:31  * cpupquit (Read error: No route to host)
14:39:55  * cpupjoined
14:40:19  * cpupquit (Read error: No route to host)
14:43:03  * cpupjoined
14:45:30  * defunctzombie_zzchanged nick to defunctzombie
14:49:53  * ralphthe1injajoined
14:50:07  * ralphthe1injaquit (Client Quit)
15:01:38  <rowbit>substack, pkrumins: These encoders are STILL down: 50.56.27.70(dev-ie6-1)
15:17:39  <defunctzombie>chrisdickinson: is beefy working with latest browserify?
15:20:00  * cpupquit (Ping timeout: 246 seconds)
15:20:45  * ogdquit (Ping timeout: 246 seconds)
15:21:08  * cpupjoined
15:21:20  * ogdjoined
15:23:29  * cpupquit (Read error: No route to host)
15:23:57  * cpupjoined
15:25:22  * AvianFlujoined
15:28:48  * mk30_joined
15:32:14  * creationix_joined
15:33:02  * mikolalysenkojoined
15:33:24  * rowbitquit (*.net *.split)
15:33:24  * mk30quit (*.net *.split)
15:33:25  * creationixquit (*.net *.split)
15:33:25  * rchquit (*.net *.split)
15:33:44  * creationix_changed nick to creationix
15:38:04  * AndreasMadsenquit (Remote host closed the connection)
15:38:58  * AndreasMadsenjoined
15:40:58  * rowbitjoined
15:48:36  * cpupquit (Read error: No route to host)
15:50:29  * cpupjoined
15:51:03  * ogdquit (Ping timeout: 240 seconds)
15:51:10  * ogdjoined
15:53:23  * fronxjoined
16:09:18  * AvianFluquit (Remote host closed the connection)
16:20:50  * cpupquit (Read error: No route to host)
16:21:29  * cpupjoined
16:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 19]
16:25:33  * cpupquit (Read error: No route to host)
16:30:12  * cpupjoined
16:35:07  * fronxquit (Remote host closed the connection)
16:36:01  <defunctzombie>substack: ping
16:36:18  <substack>pong
16:37:37  <defunctzombie>so I have a quest
16:38:05  <defunctzombie>I have started cleaning up stacktrace-js
16:38:17  <defunctzombie>which will parse string stacks into frames
16:38:24  <defunctzombie>from browsers we care about
16:38:31  <defunctzombie>namely, safari, firefox, ie, and chrome
16:38:42  <defunctzombie>but.. I want to make a listing of all the various stack formats
16:38:44  <defunctzombie>so
16:38:45  <defunctzombie>https://gist.github.com/defunctzombie/8172105
16:39:02  <defunctzombie>we need to run that code in as many browsers as we can to see what the stacks look like
16:39:13  <defunctzombie>and make a database of stacktraces
16:39:17  <defunctzombie>for browsers
16:44:13  <substack>you can make an empty test that always passes on testling-ci and just console.log(whatever)
16:44:56  <substack>and then you can scrape the results out of https://ci.testling.com/defunctzombie/some-project.json
16:46:47  <defunctzombie>substack: awesome
16:46:55  <defunctzombie>thanks!
16:48:03  * pfrazejoined
16:53:34  * mikolaly1enkojoined
16:55:21  <defunctzombie>substack: https://ci.testling.com/defunctzombie/browser-stacks
16:55:25  <defunctzombie>what does that mean?
16:56:43  * mikolalysenkoquit (Ping timeout: 272 seconds)
16:59:09  * fronxjoined
17:13:25  * spionquit (*.net *.split)
17:15:15  <substack>defunctzombie: that means we are using node 0.8 to run browserify
17:16:04  * spionjoined
17:16:06  * cpupquit (Read error: No route to host)
17:17:08  <defunctzombie>I just made something that lets me run arbitrary js in cloud browsers
17:17:10  <defunctzombie>I like this
17:17:14  <defunctzombie>I can just eval anything
17:17:17  <defunctzombie>in whatever browser
17:17:58  <substack>for a quick fix you can put "browserify": "~3.16.0" in the devDependencies
17:20:45  * thlorenzjoined
17:21:09  <rowbit>substack, pkrumins: These encoders are STILL down: 50.57.174.105(dev-ie8-2)
17:24:04  <rowbit>Hourly usage stats: [developer: 2, free: 37]
17:24:12  * fronxquit (Remote host closed the connection)
17:24:31  * rchjoined
17:26:04  * cpupjoined
17:31:18  * AndreasMadsenquit (Remote host closed the connection)
17:43:32  * fronxjoined
17:44:56  * mikolaly1enkoquit (Ping timeout: 252 seconds)
17:46:03  <pkrumins>defunctzombie: testling now uses node 0.10.24 to run browserify
17:50:55  * mikolalysenkojoined
17:55:43  * cpupquit (Ping timeout: 260 seconds)
17:56:50  * AvianFlujoined
18:02:04  * AndreasMadsenjoined
18:08:47  * AndreasMadsenquit (Ping timeout: 260 seconds)
18:08:48  * AvianFluquit (Remote host closed the connection)
18:13:39  <rowbit>substack, pkrumins: These encoders are STILL down: 50.57.72.69(free7)
18:18:38  <pkrumins>none of these encoders are down
18:18:51  <pkrumins>seaport is fucking up
18:19:32  * farnsworthjoined
18:19:35  * cubertjoined
18:21:43  * cpupjoined
18:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 19]
18:24:35  <defunctzombie>not the seaport!!
18:24:39  <rowbit>substack, pkrumins: Encoders down: 50.57.72.230 (dev-ie7-4)
18:25:27  * AndreasMadsenjoined
18:29:04  <pkrumins>no it's not
18:29:12  * fronxquit (Remote host closed the connection)
18:29:16  <pkrumins>Encoders up: 50.57.72.230 (dev-ie7-4)
18:29:36  <defunctzombie>haha
18:31:20  <defunctzombie>thlorenz: we need something to parse tap output for that "extra" stuff
18:31:31  <defunctzombie>thlorenz: if we hope to make zuul tap support not suck
18:31:47  <thlorenz>defunctzombie: like parse out errors like I've been saying?
18:32:05  <defunctzombie>thlorenz: yea, whatever tap/tape output in the "extra" shit
18:32:11  <defunctzombie>thlorenz: the "---" areas I think
18:32:29  <thlorenz>so you need the errors only or more stuff?
18:32:36  <defunctzombie>thlorenz: ideally tap-parser (or something) will have a "test" event
18:32:48  <defunctzombie>with the name, and any failed assertions
18:32:50  <substack>defunctzombie: it's yaml
18:32:58  <defunctzombie>assertions have an "at" I think and an "errors" stack
18:33:01  <defunctzombie>substack: yep
18:33:12  <defunctzombie>substack: we just need a statemachine or something to parse the stream
18:33:14  <substack>but you should guard a yaml.parse() in a try/catch in case it isn't yaml
18:33:37  <defunctzombie>cause the results come as a stream and I would like to still have each test result before waiting for all to finish
18:33:42  <substack>because the TAP protocol says nothing about extra data that doesn't /^(ok|not ok|1..\d)/
18:33:47  <defunctzombie>yea
18:34:06  <defunctzombie>I figured, that is ok, tape output will be the "standard" for this
18:34:07  <defunctzombie>heh
18:34:18  <thlorenz>defunctzombie: shouldn't be too hard right? just some simple regex stuff over each line?
18:34:19  <defunctzombie>since no one is using anything but tape browser side if they are using tap stuff
18:34:24  <defunctzombie>thlorenz: I guess
18:34:37  <defunctzombie>thlorenz: I am gonna work on a generic view for tests
18:34:44  <defunctzombie>thlorenz: no more mocha specific or whatnot
18:34:50  <defunctzombie>this way tape tests will also look pretty
18:34:56  <substack>hooray
18:34:58  <defunctzombie>and it will be needed so we can show the better stacktraces
18:35:10  <defunctzombie>that we have patched up
18:35:16  <defunctzombie>cause some browsers don't let you reset error.stack
18:35:19  <defunctzombie>like safari
18:35:23  <thlorenz>cool, wasn't there already a tap-parser or does that ignore errors?
18:35:28  <substack>defunctzombie: you can re-run browser-stacks now
18:35:34  <substack>we fixed the issue with node 0.8
18:35:40  <pkrumins>nice job
18:35:46  <substack>cd browser-stacks; testlingify test
18:35:52  <defunctzombie>substack: I changed it to hit saucelabs for now
18:35:55  <defunctzombie>oh interesting
18:35:57  <pkrumins>noooo
18:36:06  <defunctzombie>pkrumins: I hade it eval in remote browser
18:36:14  <defunctzombie>if testling could do that I would use testling :(
18:36:15  <pkrumins>ic
18:36:19  <pkrumins>we actually can do that too
18:36:32  <defunctzombie>so I don't have to commit, I can just run arbitrary js remotely
18:36:35  <defunctzombie>and save the result locally
18:36:43  <defunctzombie>oh yea?
18:36:55  <substack>we've had that since the beginning
18:36:58  <thlorenz>defunctzombie: substack looks like this is already parsing out the errors: https://github.com/substack/tap-parser/blob/master/index.js#L43-L47
18:37:08  <pkrumins>defunctzombie: substack: yeah, it's the original testling
18:37:23  <thlorenz>or is that missing the trace info somehow
18:37:26  <defunctzombie>pkrumins: substack: dunno how to use it tho cause there are no docs
18:37:31  <defunctzombie>thlorenz: I think that is a tap parsing error
18:37:38  <defunctzombie>thlorenz: not an assertion error or stack
18:37:44  <thlorenz>ah, we need something more generic
18:37:50  <defunctzombie>or maybe it is
18:37:58  <substack>defunctzombie: I've been revamping browser-launcher so that you'll be able to run arbitrary js on testling servers
18:38:16  <thlorenz>but that wouldn't work for mocha errors or any things just blowing up in your tests
18:38:20  <defunctzombie>the biggest requirements I use in zuul are:
18:38:26  <defunctzombie>run arbitrary js in browsers
18:38:32  <defunctzombie>and open a browser to a specific url
18:38:43  <defunctzombie>this is how I get it to do all the remote testing
18:39:07  <defunctzombie>thlorenz: yea, we need to parse the tap output, it has those extra things when it catches errors
18:39:15  <defunctzombie>thlorenz: for mocha we have the "failure" event
18:39:22  <defunctzombie>which has the test and error
18:39:33  <defunctzombie>would like something similar for tape parser
18:39:36  <thlorenz>but wouldn't you just want something you can just pipe stderr into?
18:39:44  <thlorenz>regardless of testing tool you use
18:39:50  <defunctzombie>no, because this is in browser
18:39:59  <thlorenz>ah, ok
18:40:09  <defunctzombie>this is for the in browser view on things
18:40:22  <defunctzombie>and you don't want to just pipe because we need to transform the stacks
18:40:33  <defunctzombie>so we need to intercept the stream
18:40:33  <thlorenz>ok, so we'll have to look into a module that picks the right error parser depending on the testing tool you are using
18:40:44  <defunctzombie>thlorenz: na, just tape
18:40:52  <pkrumins>defunctzombie: i'll bring the docs back about how to run arbitrary js in testling
18:41:07  <defunctzombie>all we need is something that takes the tape output and gives us events for when a test is done failure or success
18:41:08  <pkrumins>defunctzombie: right after i'm done with cutting our costs by 65% in the next few days
18:41:09  <thlorenz>defunctzombie: so zuul only will support mocha and tape ever?
18:41:18  <defunctzombie>thlorenz: it can support anything
18:41:27  <defunctzombie>thlorenz: most things give you the events you need
18:41:32  <defunctzombie>thlorenz: like qunit also has assert events
18:41:35  <defunctzombie>and test done events
18:41:41  <defunctzombie>pkrumins: nice
18:41:46  <defunctzombie>pkrumins: cost cutting is always good
18:42:23  * mikolalysenkoquit (Ping timeout: 260 seconds)
18:42:56  <thlorenz>defunctzombie: so zuul will know how to get the traces and which parser to use?
18:43:02  <defunctzombie>thlorenz: yep
18:43:10  <thlorenz>I thought we'd create a separate lib that knows that
18:43:21  <defunctzombie>thlorenz: zuul does different things for each testing thing you want to use
18:43:30  <defunctzombie>maybe we are talking about different things
18:43:44  <defunctzombie>thlorenz: fyi https://github.com/defunctzombie/browser-stacks/tree/master/stacks
18:43:46  <defunctzombie>substack: https://github.com/defunctzombie/browser-stacks/tree/master/stacks
18:43:55  <defunctzombie>those are error objects from various browsers
18:44:23  <defunctzombie>thlorenz: I have been working on this this morning https://github.com/defunctzombie/stacktrace.js
18:44:34  <defunctzombie>that is meant to parse all those types of stacks into frame arrays
18:44:48  <thlorenz>that's exactly what I meant :)
18:45:00  <thlorenz>a lib that does that instead of being baked into zuul
18:45:27  <defunctzombie>thlorenz: yes, but that is just one little part of the stuff I was talking about
18:45:29  <thlorenz>and knows to call the tape parser for tape tests and others for other tests
18:45:49  <defunctzombie>that part is in zuul
18:45:58  <defunctzombie>cause zuul initializes those different testing environments
18:46:14  <defunctzombie>the only thing that is generic is the need to parse tap output for better events
18:46:24  <thlorenz>ah, ok makes sense I guess, although pulling it out would be nice too, so testling could use it
18:46:28  <defunctzombie>right now tape in the browser just streams to console log
18:46:38  <defunctzombie>we need something like tap-parser but with "test" events
18:46:41  <defunctzombie>and yes
18:46:45  <defunctzombie>that will be a module for testling to use too
18:46:56  <defunctzombie>then.. once you have those test events (with crappy browser stacks)
18:47:07  <defunctzombie>you can use the stacktrace-js on it to get frames
18:47:15  <defunctzombie>then use stack-mapper to turn those frames into good frames
18:47:19  <defunctzombie>and then show the person good frames
18:47:27  <defunctzombie>this is what zuul does for mocha right now
18:47:35  <thlorenz>nice! good luck with all those things :)
18:48:01  <thlorenz>I'm gonna try to not get side tracked today and keep adapting libuv book examples to new API ;)
18:48:52  <thlorenz>but tomorrow I''m game to launch into any tasks, including PRing on browserify and adding a global-transforms field after I convinced substack that we should add it ;)
18:52:39  * sorensenjoined
19:05:11  * fronxjoined
19:10:19  * mikolalysenkojoined
19:12:44  * AvianFlujoined
19:19:59  * fronxquit (Remote host closed the connection)
19:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 35]
19:26:21  * farnsworthquit (Remote host closed the connection)
19:26:21  * cubertquit (Remote host closed the connection)
19:36:04  * AndreasMadsenquit (Remote host closed the connection)
19:56:01  * thlorenzquit (Remote host closed the connection)
20:17:48  * tilgovijoined
20:19:38  * tilgoviquit (Read error: Connection reset by peer)
20:21:41  * mikolalysenkoquit (Ping timeout: 252 seconds)
20:21:48  * farnsworthjoined
20:21:48  * cubertjoined
20:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 25]
20:33:31  <chrisdickinson>defunctzombie: if beefy isn't working with latest browserify, that would be a bug! will check momentarily
20:34:06  * jcrugzzjoined
20:34:17  * AndreasMadsenjoined
20:35:59  * AndreasMadsenquit (Remote host closed the connection)
20:36:17  * AndreasMadsenjoined
20:43:02  <ogd>this d00d should hang out in here https://github.com/dcodeIO?tab=repositories
20:48:16  * mikolalysenkojoined
20:52:22  * mikolalysenkoquit (Ping timeout: 246 seconds)
20:52:38  * rchquit (Ping timeout: 240 seconds)
21:08:39  * thlorenzjoined
21:09:07  <ogd>Domenic_: any reason this wouldn't work on windows? https://github.com/mikeal/getport/blob/master/index.js
21:09:15  <ogd>Domenic_: just curious, i know very little about windows
21:15:00  <jesusabdullah>substack: https://github.com/jesusabdullah/node-ecstatic/pull/93 holey moley!
21:20:08  * AndreasMadsenquit (Remote host closed the connection)
21:23:06  * justinabrahmsquit (Excess Flood)
21:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 7]
21:25:24  * justinabrahmsjoined
21:27:07  * cubertquit (Ping timeout: 260 seconds)
21:27:47  * farnsworthquit (Ping timeout: 272 seconds)
21:29:37  * AndreasMadsenjoined
21:33:00  * cubertjoined
21:33:03  * farnsworthjoined
21:45:03  <defunctzombie>ogd: get him in here!
21:47:03  <ogd>defunctzombie: i invited via github issue :D
21:47:16  <ogd>ISSUE not part of stackvm
21:47:17  <defunctzombie>ogd: nice :)
21:47:39  <ogd>we should write a bot that auto opens that issue on repos of prolific module authors
21:47:47  <defunctzombie>hahaha
21:48:03  <ogd>github.com/stackvm_recruiter
21:49:54  * jlord_changed nick to jlord
21:51:26  <grncdr>I clicked that as well :)
21:51:49  <grncdr>so! shell-parse now parses while/until loops
21:52:06  <substack>wow
21:52:09  <grncdr>but esprima chokes on the generated parser code :(
21:52:28  <grncdr>so covert is not telling me anything useful
21:52:50  <grncdr>anyways, I need to push this stuff onto github
21:53:23  <grncdr>I also hacked up a super quick streaming tokenizer and a "shell-frontend" module so you can pipe a stream into it and get commands out
21:54:13  <grncdr>I think I might change the way that works to be more like bash though
21:54:48  <grncdr>like, I don't really need to tokenize, just try parsing and buffer on failures
21:56:07  <substack>jesusabdullah: that's a pretty small patch
21:56:16  <substack>to node-ecstatic
21:56:23  <substack>needs some test coverage though
21:59:30  <jesusabdullah>substack: yeah for sure
21:59:54  <jesusabdullah>I think I'm gonna write a blog post about https://gitlab.com/ev/evbogue/blob/master/content/nodeisdone.md
22:04:39  <ogd>lol
22:06:34  <substack>node is done and that means it can get out of the way so we can build cool things with it
22:06:36  * mikolalysenkojoined
22:07:51  <jlord>I need ideas!
22:08:30  <jlord>I am working on the Git/GitHub workshopper and one challenge will be to do a pull request and I want the pull request to be contributing to something neato.
22:09:11  <jlord>Some sort of page that builds up something cool or some cool kind of information from everyone who has completed the workshop
22:09:27  <jlord>And what if it was so cool that people who already know this stuff went and contributed too!
22:09:44  <substack>tricky!
22:09:49  <jlord>ALSO! I work at GitHub so there are all kinds of potential for what I could tie it into
22:10:15  <jlord>Cause I was thinking, what if it tied into the `Explore` page. Because if you just learned about GIt/GitHub and went through the steps of learning the basics, now you need something to work on!
22:10:19  <jlord>Something cool to hack with!
22:10:44  <jlord>So what if it showed you repos/orgs/users that are working on music/space/whatever that you're into, too
22:12:02  <chapel>jesusabdullah: thats an insane post, the logic is far and away
22:12:21  <chapel>github is done, cooked, better get off of it before you are spammed today
22:12:37  <jesusabdullah>chapel: There's a glimmer of truth there, if he had rewritten it 3 or 4 times, cleaned up his ideas and lost the misplaced ire, it could've been good
22:12:39  <chapel>to death
22:13:02  <chapel>well, it seems like a subtle troll against node
22:13:45  <chapel>well subtle in that whoever wrote it is trying to present themselves as someone who uses node or knows a good deal about it
22:14:15  * AndreasMadsenquit
22:17:05  <chapel>but looking at his other posts, its pretty obvious his inflammatory nature is intentional
22:17:23  <jesusabdullah>chapel: not-so-subtle
22:17:41  <jesusabdullah>ugh need more energy and focus so I can make a good email to mapbox
22:17:45  <jesusabdullah>I've put this off long enough!
22:22:20  <substack>new thiny radical things lose their radicalness over time and become boring pieces of infrastructure we all take for granted
22:22:24  <substack>like npm
22:22:51  <substack>the important thing is not the tools themselves but the things you can build with them
22:23:24  <grncdr>I'm pretty sure I met evbogue right?
22:23:29  <jesusabdullah>Yeah, I mean, Ryan never claimed node was all that game-changing, he always thought of it as, "javascript? libev? NOW KISS"
22:23:37  <jesusabdullah>idk if I have tbhirlimo
22:23:51  <substack>grncdr: not sure
22:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 7]
22:26:01  <jesusabdullah>jlord: find the shittiest github service in prod and open source it
22:26:19  <jesusabdullah>jlord: then there will be tons of things to fix and they'll be obvious in prod, it'll be great!
22:37:43  <mikolalysenko>jesusabdullah: do you have a link to the troll article?
22:38:05  <jesusabdullah>Yeah, a few lines up mikolalysenko
22:38:15  <jesusabdullah>https://gitlab.com/ev/evbogue/blob/master/content/nodeisdone.md
22:38:16  <jesusabdullah>that one
22:39:45  <mikolalysenko>well, obvious troll is obvious
22:39:58  <jesusabdullah>I mean, yeah, it's angry and incoherent
22:40:02  <mikolalysenko>some choice bits in there though, like the bit about package managers
22:40:07  <jesusabdullah>yeah def
22:40:20  <mikolalysenko>and also how all the modules are written by TJ or something and we should all just use express :P
22:40:46  <substack>tj doesn't even use express anymore
22:40:46  <mikolalysenko>also a serious lack of vision regarding the scope of what you can do with npm/javascript
22:41:08  <mikolalysenko>substack: really?
22:41:22  <jesusabdullah>mikolalysenko: he wrote a New Express using gener8ors
22:41:34  <chapel>koa.js
22:41:35  <mikolalysenko>but still middleware...
22:41:41  <substack>https://github.com/koajs/koa
22:41:42  <mikolalysenko>oh that thing
22:41:45  <jcrugzz>yea same thing
22:41:48  <jcrugzz>except prettier
22:41:51  <jcrugzz>i guess
22:42:02  <mikolalysenko>meh, generators have some nice things going for them. if they become standard enough I suppose I'll use em
22:42:12  <jesusabdullah>I mean, like, I don't really even care
22:42:13  <mikolalysenko>but middleware is a flawed concept
22:42:14  <jesusabdullah>hah
22:42:34  <jesusabdullah>mikolalysenko: I think middleware is a long story
22:42:38  <jesusabdullah>mikolalysenko: I should write that blog post too
22:42:50  <mikolalysenko>it reminds me of the whole mutator paradigm that unreal tournament had
22:42:55  <mikolalysenko>which didn't really work so well
22:42:59  <jesusabdullah>unfamiliar
22:43:07  <substack> this.body = 'Hello World';
22:43:10  <substack>that part is really weird
22:43:14  <mikolalysenko>oh, the way you would write mods for ut was you would write these things called mutators
22:43:21  <jesusabdullah>I mean, you have to keep in mind that middlewares were invented as a consequence of WSGI
22:43:23  <mikolalysenko>and then add them to a linked list
22:43:40  <mikolalysenko>you were responsible for calling the next mutator in the list, it was a real mess and created lots of crazy bugs
22:43:51  <jesusabdullah>if you read the PEP for WSGI it's like, "oh so I realized that you can have wsgi--wsgi adapters, we can call them middlewares and they can munge the req and res going in and out
22:43:58  <jesusabdullah>which is more like what koa's "middlewares" do
22:44:14  <jesusabdullah>node has no concept of GIs so has no need for middlewares as such
22:44:29  <mikolalysenko>ah, I see
22:44:35  <jesusabdullah>but by then everyone was used to the idea, since everyone with a custom GI (wsgi, rack, etc) had them
22:44:52  <mikolalysenko>never knew that side of the history
22:44:55  <jesusabdullah>so connect implemented "middlewares" but a cursory glance shows they're very little like "real" middlewares
22:45:36  <jesusabdullah>Yeah okay, after I shoot an email to mapbox hiring I'll start writing these
22:46:07  <jcrugzz>jesusabdullah: get your writing flow on son
22:46:11  <jesusabdullah>yeah
22:46:17  <jesusabdullah>I haven't blogged in months
22:46:26  <mikolalysenko>there are so many reasons why unstructured middleware is a terrible idea
22:47:01  <mikolalysenko>but it may not be obvious I guess if you are still thinking in terms of CGI style web apps
22:47:26  <jesusabdullah>yeah
22:47:36  <jesusabdullah>A common API for "that kind of thing" is useful
22:47:49  <jesusabdullah>cause not everyone wants to write conditionals in their handlers
22:47:50  <mikolalysenko>maybe the case to be made is that middleware is a symptom of CGI-style thinking
22:48:08  <mikolalysenko>but when you control the application, not a framework, it becomes more feasible to write applications by composition
22:48:09  <jesusabdullah>oh yeah, for sure, or at least that it's an atavism
22:48:12  <mikolalysenko>instead of by patching
22:48:45  <jesusabdullah>indeed
22:49:35  <mikolalysenko>once http becomes a library instead of a framework, you can use functions to add features instead of patching in gunk to some massive evolving system
22:50:16  <chapel>what do you guys think about hapi's "middleware"
22:50:24  <chapel>it isn't really middleware in the traditional or connect sense
22:50:39  <chapel>just per route functions
22:50:50  <mikolalysenko>still bad
22:50:58  <chapel>why though?
22:51:00  <mikolalysenko>the problem with middleware is how to communicate data between components
22:51:12  <mikolalysenko>in middleware you do this with patching/mutating the request and response
22:51:14  <chapel>have you looked at hapi?
22:51:17  <mikolalysenko>with functions, you just call stuff
22:51:26  <chapel>by default you aren't supposed to mess with req/res
22:51:32  * rchjoined
22:51:40  <mikolalysenko>the other problem is structuring
22:51:41  <chapel>the middleware calls next with a data payload
22:51:48  <chapel>and then in the hander, you have access to the data
22:51:51  <mikolalysenko>sometimes you might want a middleware, sometimes you don't
22:51:57  <chapel>so its just a function that outputs something
22:52:09  <mikolalysenko>well, then why not just use callbacks?
22:52:27  <chapel>well its an abstraction to make it easier to handle over multiple routes
22:52:43  <mikolalysenko>just use normal structured programming constructs
22:52:47  <mikolalysenko>eg switch statements
22:52:55  <chapel>not a fan of switches
22:53:04  <chapel>mostly because people use them wrong
22:53:06  <mikolalysenko>not a fan of inventing new control flow structures for no reason
22:53:16  <chapel>so I avoid using them so people don't mess them up
22:53:30  <chapel>the point of pre's in hapi isn't for conditional flow control
22:53:55  <chapel>its for abstracting common functions on routes, e.g. fetching data
22:54:10  <chapel>obviously you could just as easily use pure functions
22:54:15  <chapel>but it gets messy fast
22:54:28  <chapel>and the purpose of hapi was built for enterprise usage (at Walmart)
22:55:45  <mikolalysenko>not really sure what you mean
22:56:06  <mikolalysenko>regarding how functions get messy
22:56:37  <chapel>well without a predefined structure, e.g. a convention, using just functions can get messy between many developers
22:56:48  <chapel>even with consistent code style and quality guidelines
22:57:01  <mikolalysenko>but code is still made out of functions at the end of the day
22:57:06  <chapel>sure
22:57:07  <mikolalysenko>if you can't handle functions, what can you do?
22:57:38  <chapel>it has nothing to do about not handling functions… it is about large scale development
22:57:51  <chapel>things change when there is more than a couple people working on a project in a production system
22:58:13  <chapel>you can and should still keep things modular
22:58:16  <mikolalysenko>maybe, though using modules lets you keep things small
22:58:33  <chapel>that doesn't prevent clumsy or gross glue code
22:58:41  <mikolalysenko>so you can just build larger things by composing small things instead of trying to shoehorn 10 programmers into a single project
22:58:43  <chapel>essentially the routes are glue code
22:58:52  <mikolalysenko>glue can be made into modules too
22:58:55  <chapel>obviously you haven't looked at hapi :P
22:59:06  <mikolalysenko>not very carefully, I must admit
22:59:14  <chapel>no worries, I didn't expect you too
22:59:35  <chapel>modular isn't an issue here, eran and his team have made things very modular
22:59:38  <chapel>not substack modular
23:00:01  * ralphtheninjaquit (Read error: Connection reset by peer)
23:00:10  <chapel>hapi itself was built around being modular, easy to compose multiple servers that are modules themselves, and the routes themselves being modules
23:00:35  <chapel>then again, express can be completely modular as well
23:01:00  <mikolalysenko>yeah, I think the problem with middleware isn't modules
23:01:08  <chapel>its the mutation
23:01:11  <mikolalysenko>though the reliance on middleware can be a symptom of non-modularity
23:01:12  <mikolalysenko>yeah
23:01:13  * ralphtheninjajoined
23:01:23  <chapel>the concept of in/out is kind of ruined
23:01:27  <mikolalysenko>and also the lack of structured control flow
23:01:36  * ralphtheninjaquit (Read error: Connection reset by peer)
23:01:38  <mikolalysenko>you can't use loops, conditionals and normal programming constructs
23:01:42  <chapel>and no guarantee the world will be the same each run through
23:01:55  <mikolalysenko>right, you also get peer dependencies in middleware
23:02:06  <chapel>but middleware is an optional thing about express
23:02:15  <mikolalysenko>not really...
23:02:32  <mikolalysenko>I mean, you could just use it the same as http, but then why bother?
23:03:28  <chapel>sometimes people care more about getting business logic done vs pure coding
23:04:23  <mikolalysenko>well, even then I don't see much point in adopting a library like express
23:04:36  <mikolalysenko>just grab the stuff you need and stick it together
23:04:39  <chapel>again, more convention
23:05:03  <chapel>honest question (not trolling), have you worked for any large companies?
23:05:11  <mikolalysenko>I work part time at 3d systems
23:05:16  <chapel>ah cool
23:05:17  <mikolalysenko>their code is pretty messy c++
23:05:47  <chapel>I see the value of convention when more than a few people are working on things
23:06:05  <mikolalysenko>yeah, I still think modular programming is a better way to manage things
23:06:13  <mikolalysenko>even with many people
23:06:15  <chapel>those aren't mutually exclusive
23:06:30  <mikolalysenko>what do you mean by convention?
23:06:35  <chapel>its just harder to enforce a particular type of modular code without conventions
23:06:46  <mikolalysenko>like coding style? that stuff is easy
23:07:25  <mikolalysenko>just run a lint checker with the right parameters, and carry on with life
23:07:34  <chapel>e.g. this is how the code is broken up, this is where it lives, this is how you glue it together, this is the library you use, everyone should be experience in this library
23:08:00  <chapel>the less documentation you have to maintain for new people coming in the better
23:08:15  <chapel>e.g. for express, anyone that has used express can probably come in and work on an express app
23:08:26  <mikolalysenko>well, again I think this is a good argument for making it more modular
23:08:37  <mikolalysenko>and NOT using a library like express
23:08:48  <chapel>but if you are using pure http, there are a lot of ways to handle it, and if you are using a small module there is no guarantee anyone else has used it
23:09:07  <mikolalysenko>it would be the same no matter what choice you made
23:09:10  <mikolalysenko>small or big
23:09:35  <chapel>I am not arguing against small modules, quite like it for the most part
23:09:41  <chapel>just saying it isn't the end all be all
23:09:57  <mikolalysenko>I agree with that point, but not for those reasons
23:10:01  <chapel>unfortunately there isn't just one right way to program
23:10:06  <chapel>thats fair
23:10:14  <mikolalysenko>I think that small modules can fail when you get a problem that doesn't decompose into smaller pieces easily
23:10:33  <chapel>that happens a lot with complex business logic
23:10:39  <mikolalysenko>express is not good because we know better ways to do what express does in smaller pieces now
23:10:44  <chapel>though we have been working hard to break things up as much as possible
23:10:56  <mikolalysenko>yeah, absolutely
23:11:08  <mikolalysenko>and it is hard to do, so sometimes you just slog through it
23:11:08  <chapel>funny thing is, express is small compared to other "frameworks" in other languages
23:11:16  <mikolalysenko>oh, I agree
23:11:31  * ralphtheninjajoined
23:11:32  <mikolalysenko>but we can also do much better
23:11:40  <chapel>I bet people outside of node think we would be crazy arguing about a small framework like express
23:11:46  <chapel>I agree
23:12:17  * ralphtheninjaquit (Read error: Connection reset by peer)
23:13:16  <mikolalysenko>also I think that regarding conventions libraries like express make interoperability harder
23:13:32  <mikolalysenko>since you need to agree on where you stick mutated parameters in the request/response objects
23:13:55  <mikolalysenko>if you just pass parameters, it is no big deal. look at the docs and call the function with the right arguments
23:15:26  <chapel>yeah, I agree there
23:15:53  <mikolalysenko>so, an example of a place where I don't yet know how to modularize things is not web servers
23:16:08  <mikolalysenko>but I think that 3d graphics is not really a solved problem
23:16:33  <mikolalysenko>we have these massive rendering engines that are fairly monolothic, and people still haven't figured out how to split them up at all
23:16:35  * pfrazequit (Ping timeout: 252 seconds)
23:17:01  <mikolalysenko>you have usually many different effects and things you want to do, which rely on separate techniques, but connecting them all together is difficult
23:17:40  <mikolalysenko>like you might have one project that does shadow mapping, another one that does some fancy local lighting model, another one for some surface effect
23:18:06  <mikolalysenko>and you need to pass the data to all these things efficiently and consistently
23:18:36  <mikolalysenko>usually each of these effects requires modifying how you store your data, how you render the scene, maybe how many passes you use, and so on
23:19:03  <mikolalysenko>and so you end up usually having to rewrite everything from scratch whenever you change something about how all this works or make some new combination of features
23:19:33  <mikolalysenko>and different engines support different combinations and configurations and implementations of all these concepts, and have their own protocols and formats, etc.
23:19:34  <chapel>that sounds interesting and challenging, I have no experience there
23:20:16  <mikolalysenko>well, I was using it as more an example of a problem where I have no idea how to use small modules effectively
23:20:22  <chapel>I guess the problem with those, is there would need to be some convention (e.g. nodes commonjs/npm module convention)
23:20:39  <mikolalysenko>so, there are two general approaches people use
23:20:40  <chapel>but not just npm, module interfaces
23:21:04  <mikolalysenko>the first is sort of shader creator type interfaces, where users specify twiddle parameters and glue and generate custom renderers
23:21:14  <mikolalysenko>but this is usually slow and inefficient
23:21:20  <chapel>but I guess in a way they do, c/etc have imports
23:21:37  <mikolalysenko>the second option is you write a gigantic mega shader/crazy mess and use that to do everything
23:21:52  * ralphtheninjajoined
23:22:34  <mikolalysenko>it also isn't just c, you have code that is written in a special dsl that runs on the gpu to do the rendering logic
23:22:39  <mikolalysenko>and all these things are tied together
23:22:52  * ralphtheninjaquit (Read error: Connection reset by peer)
23:23:09  <mikolalysenko>so you can't just glue shader code together, since it typically needs some extra stuff done on the cpu side to make everything work
23:23:48  <mikolalysenko>eg with shadows, you need to do an extra pass to rasterize the scene so you can check for occlusion
23:24:03  <rowbit>Daily usage stats: [developer: 9, free: 441]
23:24:04  <rowbit>Hourly usage stats: [developer: 0, free: 16]
23:24:18  <mikolalysenko>tldr; it is a mess and I have not yet seen a convincing modular solution to this problem that scales
23:26:13  <chapel>well hopefully modular code can infect everything :)
23:26:53  * ralphtheninjajoined
23:27:11  * ralphtheninjaquit (Read error: Connection reset by peer)
23:27:38  <mikolalysenko>chapel: would be nice! but I don't think it will be easy
23:38:02  * mikolalysenkoquit (Ping timeout: 264 seconds)
23:39:17  * kenperkinsquit (Quit: Computer has gone to sleep.)
23:40:35  * kenperkinsjoined
23:43:26  * calvinfojoined
23:47:20  * ralphtheninjajoined
23:52:18  <jesusabdullah>dangit where is tmcw
23:54:11  * mikolalysenkojoined
23:54:54  <mikolalysenko>chapel: sorry for ranting a bit just now, I had a couple of glasses of wine and did not mean to come off so unhingned
23:55:37  <mikolalysenko>regarding hapi, I did not mean to disparage it. you are right, I don't have any first hand experience using it
23:56:24  <mikolalysenko>and while I do try to avoid express today, I have used it in the past and it is possible that there is some value to using it for people coming from a mostly CGI background as they ease into nodejs and modular programming
23:58:18  <jesusabdullah>mikolalysenko: I suspect that hapi was written primarily to closely fit WML's use cases, everyone else be damned
23:58:46  <chapel>jesusabdullah: in a way, it was built for a purpose
23:58:54  <jesusabdullah>yeah exactly
23:59:00  <chapel>first proxy, then for more generic http server
23:59:27  <chapel>the good thing about it, the maintainers use it in production on large installations, and they are quality maintainers
23:59:36  <Domenic_>ogd: looks fine I think. named pipes are a problem, but that seems pretty straightforward for windows.