00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:07  * ircretaryjoined
00:04:45  * mikealquit (Ping timeout: 276 seconds)
00:12:04  * mikolalysenkoquit (Ping timeout: 248 seconds)
00:26:51  * dguttmanjoined
00:30:48  * mikealjoined
00:33:37  * dguttmanquit (Quit: dguttman)
00:35:01  * mikealquit (Ping timeout: 245 seconds)
00:36:40  * mikolalysenkojoined
00:40:11  * yorickquit (Remote host closed the connection)
00:42:43  * dguttmanjoined
00:43:58  * dguttmanquit (Client Quit)
00:48:28  * CryptoQuickjoined
00:48:28  * CryptoQuickquit (Client Quit)
01:01:31  * mikealjoined
01:18:34  * gwenbelljoined
01:24:11  * mikealquit (Ping timeout: 245 seconds)
01:26:39  * thatguydanquit (Quit: thatguydan)
01:31:07  * gwenbellquit (Remote host closed the connection)
01:31:39  * jden_joined
01:31:54  <mbalho>isaacs: wanna get tacos downtown? i have a hacker cadre that has v8 optimization questions
01:32:04  * jden_changed nick to Guest18743
01:32:15  <isaacs>mbalho: i'm sore-backed and caring for sick mnm
01:32:23  <isaacs>mbalho: probably down for the evening
01:32:32  <isaacs>mbalho: but maybe later around dinner time?
01:32:38  <isaacs>oh, i guess that's almost now
01:35:09  <mbalho>isaacs: lol
01:35:09  * Guest18743quit (Read error: Connection reset by peer)
01:37:12  <substack>replaced the first part of the cable
01:37:43  <substack>not sure how to tighten it, I'll figure that out when I get back
01:39:17  <defunctzombie>isaacs: what is "module system is fragmented" even mean? and what is going on with all these posts about the mailing list?
01:39:47  * thatguydanjoined
01:40:10  * jden__joined
01:40:10  <mbalho>defunctzombie: "module systems are fragmented" as in there are incompatible competitors
01:41:01  <defunctzombie>ah
01:41:19  <defunctzombie>module systems like npm? or es6 module/require/amd?
01:41:29  <defunctzombie>too many overloaded terms :/
01:41:37  <mbalho>defunctzombie: yea agreed, i think they mean npm?
01:41:52  <isaacs>yeah
01:41:55  <isaacs>like, amd, etc.
01:42:19  <isaacs>people say" OOHHH nooOOOOOooooooOOOO!! FragmenTAAAAAshuns!! We must SPECIFY!!"
01:44:24  * isaacssaying in big spooky parody voice with waving hands, of course.
01:45:05  <isaacs>defunctzombie: the fact that you *didn't even know what I meant* because node's module system is the only one that matters, is proof that it is a stupid discussion to even be having.
01:45:17  <defunctzombie>+1
01:45:29  <isaacs>defunctzombie: spec people should be figuring out how to bring node's module system to the browser.
01:45:38  <isaacs>since it's the first successful module system in JavaScript, ever.
01:45:41  <defunctzombie>wtf is spec people?
01:45:49  <defunctzombie>oh.. standards people
01:45:51  <defunctzombie>yea
01:45:51  <isaacs>defunctzombie: TC-39 and es-discuss
01:46:01  <defunctzombie>they are all stupid
01:46:14  <isaacs>no, they're not.
01:46:15  <isaacs>that's the problem.
01:46:34  <defunctzombie>I love require, because it is clear and concise
01:46:36  <isaacs>stupid people would be too stupid to think up new things, and they'd just focus on solving a few specific problems, and steal as much as possible.
01:46:42  <defunctzombie>haha
01:46:47  <fotoverite>LoL
01:46:49  <fotoverite>Very true
01:46:55  <defunctzombie>I meant stupid in a "street" way versus academic way
01:46:57  <isaacs>Node's nodule system has problems in it because Ryan and I were not stupid ENouGH
01:47:02  <fotoverite>I'll see what rick says tomorrow when I see him.
01:47:06  <isaacs>we tried to be clever in a few places.
01:47:09  <defunctzombie>they are being too theoretical imho
01:47:13  <isaacs>and it was 100% the wrong choice, every time.
01:47:21  <jden__>modules, lol
01:47:22  <isaacs>and now we're stuck with many of those.
01:47:25  <jden__>that shits redic
01:47:27  <defunctzombie>such as?
01:47:48  <isaacs>defunctzombie: require.extensions, require.paths (ripped that out in the nick of time, actually), NODE_PATH
01:47:56  <defunctzombie>ah
01:48:12  <defunctzombie>I think most people just feel like bikeshedding over the name "node_modules"
01:48:18  <isaacs>hahahah
01:48:21  <isaacs>oh, man.
01:48:23  <defunctzombie>and also that they want to just reference internal modules easier
01:48:36  <isaacs>tht comes up surprisingly often, given how silly it is
01:48:57  <defunctzombie>the internal/project modules thing is whatever. I either make external modules or symlink into node_modules if I care
01:50:36  <defunctzombie>I wish support for installing from github was better, but otherwise I am pretty happy
01:51:19  * mikealjoined
01:56:00  * mikealquit (Ping timeout: 264 seconds)
01:57:10  * dguttmanjoined
02:18:01  <substack>I like that es6 is catching so much shit again
02:22:06  * mikealjoined
02:26:36  * mikealquit (Ping timeout: 264 seconds)
02:29:01  <isaacs>defunctzombie: in npm 1.2.10, installing from github is pretty nice, actually
02:29:15  <isaacs>defunctzombie: caches the git remote, shrinkwrap locks down to a commit, etc.
02:29:39  <defunctzombie>isaacs: I don't use shrinkwrap, I specify the commitish in package.json
02:31:39  <mbalho>anyone wanna take a break from arguing with brendan eich to eat tacos
02:31:58  <defunctzombie>hahaha
02:32:15  <substack>mbalho: can't until my bike is fixed
02:32:19  <defunctzombie>what is their argument for their module system?
02:32:30  <mbalho>substack: dang
02:32:30  <defunctzombie>and how it cannot be used since no one will ever support it?
02:32:37  <substack>defunctzombie: I haven't ever read any argument for it.
02:32:56  <substack>some guy wrote a spec that is old and so that's what they are rolling with
02:33:10  <substack>some guy who is on tc39
02:33:11  <substack>is why
02:34:08  * ins0mniaquit (Ping timeout: 255 seconds)
02:36:07  <chrisdickinson>brendan eich seems a bit acerbic on twitter :|
02:36:24  <substack>brendan eich is part of the problem
02:36:41  <mbalho>twitter is an acerbic medium
02:37:15  <chrisdickinson>agreed
02:38:12  <chrisdickinson>i think the last time i tweeted at him he shut me down immediately; then i had to manage being a) somewhat tipsy at a karaoke bar and b) carrying on an argument with him on twitter.
02:38:20  <mbalho>lol
02:39:34  <chrisdickinson>substack: if js was specified as a streaming parse, it could start requesting / parsing other js files while the current file is in-flight
02:40:24  <defunctzombie>chrisdickinson: does that really matter that much?
02:40:32  <chrisdickinson>which doesn't help dynamic imports, but i've come around to the opinion that dynamic imports are a bit of a misfeature
02:41:08  <chrisdickinson>defunctzombie: in that "it could work in a cool way", yes. in the larger scope of things, nope! not one bit :)
02:41:48  <defunctzombie>I don't like dynamic imports :/
02:42:00  <substack>same
02:42:06  <substack>static imports are plenty good
02:42:06  <chrisdickinson>same.
02:42:22  <defunctzombie>I think if you want dynamic, then you import something static that then provides whatever you want
02:42:27  <substack>you can always use Function() to eval modules in a custom context
02:43:18  <chrisdickinson>about the only issue with absolutely dropping dynamic imports is loading chunks of code on demand -- for example, three.js and voxel.js
02:43:38  <chrisdickinson>but that could be a standard library function with a big red warning label on it
02:43:57  <chrisdickinson>"this will be slower than using static imports"
02:44:04  <substack>just have an api for dynamic imports
02:44:06  <chrisdickinson>"but you can monitor the progress of the download"
02:44:08  <chrisdickinson>yeah
02:44:10  <substack>you don't need special magic syntax for it
02:44:13  <chrisdickinson>exactly
02:44:23  <substack>almost all of the time: api > syntax
02:44:27  * chrisdickinsonnods
02:45:57  <chrisdickinson>var otherModuleRequest = Script.load('other-module-name'); otherModuleRequest.on('progress', function(pct) {console.log('module is '+pct+'% finished'); }); otherModuleRequest.once('done', function(module) { /* use the module */ })
02:46:17  <defunctzombie>sounds like AMD nonsense to me
02:46:37  <chrisdickinson>make it painful, make it not the default, but make it possible
02:47:01  <defunctzombie>I think anything regarding loading/modules/bundles should be left to tools
02:47:21  <defunctzombie>too many people write too much crap in their source that has no purpose
02:48:03  <substack>Script.load('filename', function (err, src, requires) { /* ... */ })
02:48:10  <defunctzombie>your source should do what it needs to do, not educate me on the ways to load my modules
02:48:14  <substack>where requires is an array of the statically-analyzed require() strings
02:48:17  <defunctzombie>or other nonsense
02:48:19  <substack>then you decide what to do with that
02:48:32  <chrisdickinson>substack: array or tree?
02:48:42  <chrisdickinson>or just from the top level?
02:48:47  <substack>chrisdickinson: an array of strings
02:48:50  <chrisdickinson>ah
02:48:51  <chrisdickinson>yeah
02:48:53  <chrisdickinson>that makes sense
02:49:02  <substack>unfancy
02:49:32  <substack>then your loader can determine how the module resolution should work
02:49:33  <defunctzombie>modules should not make loading decisions
02:49:38  <substack>and how the recursion should proceed
02:49:46  <defunctzombie>they should just specify the things they need in a minimal and easy to type manner
02:49:49  <substack>defunctzombie: agree
02:50:19  <substack>Script.load() would be an api that loaders use, not modules
02:50:41  <defunctzombie>sure, we can already do script loading in browsers
02:50:45  <substack>yep
02:51:00  <chrisdickinson>not cross-domain, though, in a lot of cases
02:51:04  <defunctzombie>but yes, I agree
02:51:11  <defunctzombie>chrisdickinson: why does that matter?
02:51:12  <substack>problem solved
02:51:19  <substack>defunctzombie: new pernicious idea
02:51:27  <defunctzombie>o.o
02:51:29  <chrisdickinson>a lot of people put static assets on S3, not hosted through their main website.
02:51:40  <substack>browserify v2 should suport wreq-style non-bundling
02:51:49  <chrisdickinson>yes, please
02:51:55  <defunctzombie>chrisdickinson: good CDN should automatically fetch the needed resources
02:51:58  <substack>I can just write it in such a way that it works in the browser
02:52:12  <substack>in much the same way that wreq itself is browserified
02:53:05  * mikealjoined
02:53:32  <defunctzombie>substack: what does wreq do to fetch the missing resources?
02:53:42  <defunctzombie>just make more requests?
02:54:05  <defunctzombie>that won't be so hot for urls which are not visible to the outside world tho
02:54:47  <defunctzombie>as of today, I prefer to be explicit about what modules I separate out for caching reasons generally
02:54:53  <defunctzombie>so I bundle things like engine.io
02:54:59  <defunctzombie>but serve it up as a separate script tag
02:55:04  <defunctzombie>since it will change less than my app code
02:55:38  * thatguydanquit (Remote host closed the connection)
02:55:47  <substack>I do that sometimes too
02:55:52  * thatguydanjoined
02:55:57  <substack>especially for really giant libs like jquery
02:56:01  <defunctzombie>yep
02:56:10  <defunctzombie>I remember when you first posted wreq, quite cool
02:56:23  <defunctzombie>just wasn't part of my workflow
02:56:36  <defunctzombie>since I don't have a build step
02:56:44  <defunctzombie>I just do it all on demand
02:57:17  <defunctzombie>I think manual build steps are lame :D
02:57:23  * mikealquit (Ping timeout: 240 seconds)
02:57:29  <substack>well I mostly roll with watch mode
02:57:59  <substack>I'd like to experiment with code academy style reloading too
02:58:20  <substack>or khan academy rather
02:58:23  <defunctzombie>watch doesn't do it for me cause I don't have separately deployed js files either
02:58:24  <substack>wherever ressig works
02:58:32  <defunctzombie>khan
02:58:39  <substack>KHAAAAAAN
02:58:45  <defunctzombie>I just ask my webserver for /js/foo.js
02:58:53  <defunctzombie>and I expect a bundled and usable file
02:59:23  <defunctzombie>all the cache, CDN, etc can all be done on top of that with various stuffs
03:00:55  * mikolalysenkoquit (Ping timeout: 260 seconds)
03:01:38  <defunctzombie>substack: https://gist.github.com/shtylman/4662333 <-- this is everything I use to serve up, fingerprinted, cached, bundled, resources with support for standalone "web widgets" and namespaced css
03:01:55  <defunctzombie>and it is all assembled from individual components
03:02:03  <defunctzombie>so I can change/remove whatever I want in most cases
03:04:38  <defunctzombie>no other makefiles or things needed to run a pretty flexible webstack
03:15:33  <Raynos>defunctzombie: whats fingerprinting?
03:16:21  <defunctzombie>Raynos: /static/<short md5 hash>/css/widgets.css
03:16:37  <defunctzombie>ensures that I can give that resources a long expiry but that if I ever update it
03:16:43  <defunctzombie>users will get new versions
03:17:52  <Raynos>how does it rewrite html?
03:17:53  * thatguydanquit (Ping timeout: 240 seconds)
03:17:57  <Raynos>intercepts res.write and res.end?
03:18:08  <defunctzombie>something like that
03:18:17  <defunctzombie>more specifically intercepts res.render
03:18:37  <Raynos>whats veto?
03:18:44  <defunctzombie>param checking
03:18:53  <Raynos>?
03:18:56  <Raynos>I dont get it
03:18:56  <defunctzombie>https://github.com/shtylman/node-veto
03:19:25  <defunctzombie>make sure post/get/del etc arguments are specified as expected
03:19:25  <Raynos>oh lol
03:19:30  <Raynos>it monkey patches req
03:19:49  <defunctzombie>yep
03:19:55  <Raynos>you really should stop using express
03:20:00  <defunctzombie>cause req is the "baton" we have to pass around
03:20:03  <defunctzombie>I love using express
03:20:07  <defunctzombie>it does very little
03:20:11  <defunctzombie>and lets me do whatever the fuck I want
03:20:24  <Raynos>I love using http
03:20:27  <defunctzombie>people who don't use express are re-inventing the wheel imho
03:20:28  <Raynos>it does very little
03:20:33  <defunctzombie>I would end up doing what it does anyway
03:20:33  <Raynos>and lets me do whatever te fuck I want
03:20:39  <substack>node http is broken in annoying ways
03:20:47  <substack>that make using it as a streaming transport frought with problems
03:20:49  <Raynos>Agreed http is complex and annoying as is
03:21:02  <defunctzombie>that is because http is not really a streaming transport
03:21:02  <Raynos>My main beef with express is middleware
03:21:03  <substack>2 small fixes would really help
03:21:05  <Raynos>fuck middleware
03:21:07  <defunctzombie>it is a req/res pair
03:21:10  <substack>Raynos: agreed
03:21:12  <substack>not necessary
03:21:17  * thatguydanjoined
03:21:17  <defunctzombie>Raynos: middleware is just another word for "pipe"
03:21:18  <defunctzombie>btw
03:21:22  <substack>defunctzombie: req and res are streams
03:21:40  <Raynos>i dont like pipe either
03:21:42  <substack>but they have frustrating defaults like idle timeouts and pooling limits
03:21:46  <substack>those are hard to turn off
03:21:50  <defunctzombie>middleware lets me do common tasks in a common way
03:21:55  <Raynos>not the excessive chaining of pipe
03:22:01  <defunctzombie>every other crap I have seen with http etc is fail
03:22:19  <Raynos>I just use http and dont do bullshit
03:22:30  <defunctzombie>using node raw http for a web app is almost certainly not what someone wants in the long run
03:22:42  <Raynos>of course you use modules
03:22:51  <defunctzombie>you will end up making the same types of infrstructure
03:22:53  <Raynos>but you dont build a http server pipe line
03:22:56  <substack>defunctzombie: ecstatic + core http has served me pretty well
03:22:58  <Raynos>no you dont
03:23:05  <defunctzombie>substack: doesn't do enough for me
03:23:22  <defunctzombie>I don't do manual js builds, and need css autopackaged
03:23:28  <substack>then I just send json to the browser
03:23:29  <defunctzombie>and want consolidated error responses
03:23:35  <substack>and the browser renders the json
03:23:36  <defunctzombie>and parameter handling
03:23:44  <Raynos>that can all be done
03:23:53  * mikealjoined
03:23:56  <defunctzombie>yes, I agree.. and it has been with the stack I use
03:24:01  <defunctzombie>so I don't need to do it again
03:24:08  <Raynos>but you dont need express or middleware
03:24:29  <defunctzombie>I like that approach, it is clear and lets me do consolidated easily
03:24:44  <defunctzombie>the error handling alone is worth it
03:25:06  <defunctzombie>and the "middleware" that you hate so much is just a stack of pipeline processing before the main app code kicks in
03:25:29  * dguttmanquit (Quit: dguttman)
03:25:38  <substack>defunctzombie: middleware doesn't work well for streaming responses and processing
03:25:45  <substack>I like to just use pipe() directly
03:25:52  <defunctzombie>substack: it can
03:25:59  <substack>and I try not to do fancy things with headers
03:26:01  <defunctzombie>and honestly, the times I need streaming are more limited
03:26:09  <defunctzombie>than the times I benefit from this stack
03:26:11  <Raynos>consolidated error handling is trivial to do
03:26:20  <defunctzombie>Raynos: show me?
03:26:25  <Raynos>error-page
03:26:37  <Raynos>if (err) { errorPage(req, res, err) }
03:26:41  <Raynos>done.
03:26:53  <defunctzombie>that is stupid
03:27:01  <defunctzombie>now I have to type all that shit
03:27:05  <defunctzombie>for every if (err) check
03:27:06  <Raynos>its the same as res.error(...)
03:27:13  <defunctzombie>of which I generally have a non trivial amount
03:27:17  <defunctzombie>no, it isn't
03:27:22  <substack>I dislike punching the res and req objects
03:27:22  <defunctzombie>with res.error(err)
03:27:25  <defunctzombie>or next(err)
03:27:29  <defunctzombie>the req, res are alreayd known
03:27:32  <Raynos>...
03:27:32  <substack>it obscures the origins of functionality
03:27:37  <Raynos>if (err) { next(err) }
03:27:44  <defunctzombie>substack: I don't
03:27:46  <Raynos>is the same as if (err) { callback(err) }
03:27:49  <defunctzombie>it is just a documentation issue
03:27:57  <defunctzombie>Raynos: yea, that is why i like it so much
03:28:03  <substack>which is the same reason why I like how require() returns a value instead of mutating the module scope
03:28:03  <defunctzombie>it is simple
03:28:06  <Raynos>but just use callbacks
03:28:07  <defunctzombie>and then I have 1 function
03:28:10  <defunctzombie>to handle the error
03:28:13  <defunctzombie>there is no callback
03:28:16  <defunctzombie>it is a request handler
03:28:20  <Raynos>sure there is
03:28:20  * mikealquit (Ping timeout: 248 seconds)
03:28:29  <substack>defunctzombie: readability is poor if you're just looking at the code and don't have the documentation open for all the modules that could modify req and res
03:28:33  <substack>scales badly
03:28:41  <defunctzombie>the error-page usage eample
03:28:43  <Raynos>theres always a callback
03:28:49  <defunctzombie>is exactly what next(err) does for you already
03:28:55  <defunctzombie>the error page example is what people want
03:29:01  <defunctzombie>and I don't want to write it every time
03:29:05  <defunctzombie>so I have middleware that alreayd did it
03:29:06  <Raynos>...
03:29:10  <Raynos>then use functions
03:29:14  <Raynos>this isnt hard
03:29:28  <Raynos>Middleware is a bullshit abstraction
03:29:38  <Raynos>complexity for the sake of complexity
03:29:40  <defunctzombie>substack: sure, but then you end up with much more verbose code that requires more effort to maintain imho
03:29:44  <defunctzombie>substack: also why I created docserv
03:29:45  <Raynos>framework for the sake of framework
03:29:59  <Raynos>you should just use rails
03:30:00  <defunctzombie>Raynos: middleware is just "hey, run these functions for me"
03:30:02  <defunctzombie>that is it
03:30:07  <Raynos>you get to write lots of terse easy to write code
03:30:16  <Raynos>and lots of magic that does the heavy lifting for you
03:30:44  <defunctzombie>I don't understand.. you guys are telling me something I do very successfully and reliably right now is the wrong way :p
03:30:54  <Raynos>it is
03:30:59  <Raynos>because its not very readable
03:30:59  <substack>I'm saying that I dislike that style
03:31:00  <defunctzombie>I am telling you I like it because I have found it leads to fewer erros
03:31:01  <Raynos>and its magic
03:31:03  <defunctzombie>and better responses
03:31:07  <Raynos>you fucking monkeypatch res.write & res.end
03:31:14  <defunctzombie>Raynos: magic is only bad when it doesn't work
03:31:19  <Raynos>...
03:31:22  * Raynosquit
03:31:26  <defunctzombie>I did not
03:31:33  <defunctzombie>I added functions to req and res
03:31:39  <defunctzombie>no big deal
03:31:57  <substack>object mutation that adds functionality is harder for me to reason about and it's less obvious which module adds which piece of functionality
03:32:03  <defunctzombie>the builtin ones are too limiting, so ou add more
03:32:07  <substack>and it's really hard for middleware to depend on other pieces of middleware
03:32:10  <defunctzombie>substack: it is easier to reason about at the point of code
03:32:16  <substack>because you need to ensure that the middleware works in the correct order
03:32:25  <substack>so you impose an external constraint upstream on module users
03:32:40  <defunctzombie>substack: middleware is not coupled
03:32:45  <substack>or you check for the module side effect by looking for a property and do that yourself
03:32:56  <defunctzombie>I don't write middleware that depends on other middleware req/res stuff
03:32:59  <substack>defunctzombie: what if a middleware needs to response to the value of a cookie?
03:33:10  <defunctzombie>?
03:33:26  <substack>needs to parse cookie values
03:33:31  <defunctzombie>what about it?
03:33:32  <substack>needs a cookie parser
03:33:36  <defunctzombie>there is middleware that does it
03:33:38  <substack>there are middleware cookie parsers
03:33:40  <substack>yes but
03:33:42  <defunctzombie>yea, so
03:33:59  <substack>the middleware that needs to read cookie values needs to make sure that the cookie middleware is already loaded ahead of it
03:34:00  <defunctzombie>then you put that before things that need the parsed cookies
03:34:03  <defunctzombie>yea
03:34:04  <substack>yes
03:34:05  <defunctzombie>so what?
03:34:08  <defunctzombie>that is trivial
03:34:10  <substack>that is what I mean by an external constraint
03:34:13  <defunctzombie>and once done is never touched again
03:34:14  <substack>that manifests upstream
03:34:23  <defunctzombie>you have that anyway
03:34:28  <substack>defunctzombie: what about when you go in later and refactor the code?
03:34:28  <defunctzombie>in whatever thing you wanted
03:34:34  <defunctzombie>if you have a stream that needs cookies
03:34:36  <substack>you lose the context of how those pieces fit together
03:34:46  <defunctzombie>comment the fucking code then :)
03:34:54  <substack>because it's not an explicit relationship
03:34:57  <defunctzombie>I don't "lose context"
03:35:00  <substack>I dislike that greatly.
03:35:05  <defunctzombie>it is cause it will just not work tho
03:35:16  <defunctzombie>you can't just assume you can "refactor" without knowing what is going on
03:35:19  <substack>maybe it will not work on some obscure code path
03:35:24  <substack>that you don't often hit
03:35:29  <defunctzombie>this is no different than streams
03:35:35  <defunctzombie>if some stream thing needs parsed json
03:35:39  <defunctzombie>then if you don't parse json
03:35:41  <defunctzombie>it won't work
03:35:43  <defunctzombie>same thing
03:35:47  <defunctzombie>same reliance
03:35:50  <defunctzombie>same everything
03:35:57  * Raynosjoined
03:36:41  <substack>with streams it's much easier to specify the shape of the inputs and outputs
03:36:44  <defunctzombie>everything is dependent on something. It is just a matter of what you feel comfortable with
03:36:52  <substack>middleware relies fundamentally on req and res mutation
03:36:59  <substack>the coupling is much higher
03:37:01  <defunctzombie>substack: I don't thin kthat is true at all with streams
03:37:05  <defunctzombie>I can output anything
03:37:27  <defunctzombie>substack: most of the middleware is not coupled highly in my experience
03:37:35  <defunctzombie>and monkey patch middleware is used at the app level
03:37:40  <substack>streams don't mutate their inputs to pass along as output though
03:37:41  <defunctzombie>and not by other middleware
03:37:48  <defunctzombie>substack: yea they do
03:37:50  <defunctzombie>absolutely
03:38:03  <substack>I mean mutation in the functional programming sense
03:38:10  <defunctzombie>a stream of newline data, separated into lines
03:38:14  <defunctzombie>that is very much a mutation
03:38:16  <defunctzombie>a filter stream
03:38:18  <defunctzombie>that is a mutation
03:38:23  <substack>that is not what I mean by mutation
03:38:29  <substack>mutation in the context of side effects
03:38:32  <substack>versus pure computation
03:38:40  <defunctzombie>I see
03:38:42  <substack>most streaming abstractions tend to be pure computation
03:39:04  <substack>nearly all middleware mutates req and res
03:39:07  <Raynos>middleware is just a global state machine :/
03:39:10  <defunctzombie>but it doesn't matter. I select what I want done to the req/res object
03:39:12  <Raynos>Its like wtf
03:39:19  <Raynos>why would you want a global state machine
03:39:19  <defunctzombie>it is not a state machine
03:39:22  <Raynos>this is just stupid.
03:39:34  <Raynos>but there is no point
03:39:37  <Raynos>to this conversation
03:39:43  <defunctzombie>substack: most reads it
03:39:55  <substack>I still have legacy middleware-riddled express code that I hate ;_;
03:40:07  <defunctzombie>substack: maybe you have shitty middleware?
03:40:15  <defunctzombie>or haven't updated it
03:40:18  <substack>I dislike the abstraction altogether
03:40:26  <defunctzombie>I don't have middleware code I hate
03:40:35  <defunctzombie>I find it works very very well and very reliably for me
03:40:44  <defunctzombie>and I have a wide range of apps deployed using it
03:41:41  <mbalho>does anyone else
03:42:02  <mbalho>oh express middleware
03:42:09  <mbalho>nvm
03:43:52  * mikolalysenkojoined
03:44:09  * calvinfoquit (Ping timeout: 276 seconds)
03:45:31  <defunctzombie>I am not against a less patchy interface, but I have yet to see one that I like and that I have found to work better than some simple functions and routes for a wide range of APIs and web apps
03:46:09  <defunctzombie>if one of you creates something clever then I might try it, but until then, most other web things i have seen outside of these simple approaches I have hated
03:46:49  <defunctzombie>anything that does more than some middleware and routes is too much and anything that does less generally leads me to have to recreate what already exists
03:47:00  <Raynos>you dont need anything clever
03:47:02  <Raynos>you grab a router
03:47:05  <Raynos>and you write functions
03:47:25  <Raynos>maybe you just need to learn to write functions
03:47:34  <defunctzombie>routing is just one thing
03:47:35  <Raynos>Writing functions is more verbose though
03:47:43  <defunctzombie>a router is generally the last thing that runs
03:47:49  <Raynos>no
03:47:51  <Raynos>its the very first
03:48:27  <Raynos>there are only very few cases where you want something to run before the router
03:54:34  * mikealjoined
03:58:53  * mikealquit (Ping timeout: 240 seconds)
04:00:15  * calvinfojoined
04:06:10  * st_lukejoined
04:07:36  <substack>st_luke: you could also move to oakland!
04:10:49  * defunctzombiechanged nick to defunctzombie_zz
04:18:49  <substack>st_luke: there's an open room at hackistan starting in april
04:25:15  * mikealjoined
04:27:32  * mikolalysenkoquit (Read error: Connection reset by peer)
04:32:35  * mikolalysenkojoined
04:34:51  * calvinfoquit (Ping timeout: 276 seconds)
04:41:19  * jden__quit (Read error: Connection reset by peer)
04:47:19  * mikealquit (Ping timeout: 260 seconds)
04:50:15  * calvinfojoined
05:12:06  * CryptoQuickjoined
05:14:08  * mikealjoined
05:19:21  * mikealquit (Ping timeout: 276 seconds)
05:34:27  * farnsworthquit (Ping timeout: 248 seconds)
05:35:06  * cubertquit (Ping timeout: 252 seconds)
05:39:40  * cubertjoined
05:41:02  * farnsworthjoined
05:41:47  * mikolalysenkoquit (Ping timeout: 255 seconds)
05:44:54  * mikealjoined
05:49:26  * mikealquit (Ping timeout: 255 seconds)
06:11:30  <hij1nx>dominictarr
06:15:41  * mikealjoined
06:19:59  * mikealquit (Ping timeout: 244 seconds)
06:23:41  * dguttmanjoined
06:29:04  * thatguydan_joined
06:31:41  * thatguydanquit (Ping timeout: 252 seconds)
06:31:41  * thatguydan_changed nick to thatguydan
06:33:34  * mikolalysenkojoined
06:39:00  * thatguydanquit (Quit: thatguydan)
06:46:30  * mikealjoined
06:52:50  * dguttmanquit (Quit: dguttman)
06:58:09  * mikealquit (Read error: Connection reset by peer)
07:09:41  * st_lukequit (Remote host closed the connection)
07:10:13  * mikealjoined
07:10:15  * mikealquit (Client Quit)
07:10:37  * mikealjoined
07:30:55  * AvianFluquit (Remote host closed the connection)
07:32:44  * nk109joined
07:35:36  * nk109quit (Client Quit)
07:42:08  * mikolalysenkoquit (Ping timeout: 244 seconds)
08:06:03  * nk109joined
08:07:18  * Madarsjoined
08:09:47  * nk109quit (Client Quit)
08:49:22  * mikolalysenkojoined
08:53:56  * mikolalysenkoquit (Ping timeout: 255 seconds)
09:02:50  * nk109joined
09:10:10  * nk109quit (Quit: Computer has gone to sleep.)
09:23:14  * CryptoQuickquit (Quit: CryptoQuick)
09:24:13  * CryptoQuickjoined
09:36:03  * slaskisjoined
09:53:21  * slaskisquit (Remote host closed the connection)
09:57:17  * slaskisjoined
10:13:13  * slaskis_joined
10:14:55  * slaskisquit (Ping timeout: 260 seconds)
10:29:46  * defunctzombie_zzchanged nick to defunctzombie
10:32:54  * defunctzombiechanged nick to defunctzombie_zz
10:49:34  * defunctzombie_zzchanged nick to defunctzombie
10:59:25  * defunctzombiechanged nick to defunctzombie_zz
11:51:15  * nk109joined
11:53:08  * nk109quit (Client Quit)
13:41:07  * ins0mniajoined
14:26:35  * ins0mniaquit (Ping timeout: 255 seconds)
14:54:23  * ins0mniajoined
16:09:16  * AvianFlujoined
16:51:44  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
16:51:44  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
16:52:12  <fotoverite>Cash Monies!
16:57:55  <jesusabdullah>I noticed something
16:58:26  <jesusabdullah>Excepting for broofa everybody that's opted out of hoarders is a one-module person
16:58:32  <jesusabdullah>for the most part
17:00:03  <jesusabdullah>in other news, class-based error handling a la python suuuuuucks
17:00:26  <jesusabdullah>class SomeStupidError(SomeBullshitBaseAppErrorThatInheritsFromError):
17:00:28  <jesusabdullah> pass
17:00:53  <jesusabdullah>OH SIIICK
17:23:23  * mikealquit (Quit: Leaving.)
17:30:10  <jesusabdullah>oh maaan now I actually *want* v0.10 streams
17:30:22  <jesusabdullah>cause I don't want to buffer these things
17:59:05  * mikealjoined
18:14:25  * shuaibjoined
18:19:35  * alunnyjoined
18:21:31  * mikolalysenkojoined
18:26:14  * mikealquit (Quit: Leaving.)
18:49:21  * on9joined
18:49:30  * on9quit (Remote host closed the connection)
18:50:04  * no9joined
18:56:28  * mikealjoined
19:10:26  * no9quit (Ping timeout: 255 seconds)
19:36:52  * nk109joined
19:47:55  * nk109quit (Quit: Computer has gone to sleep.)
19:52:39  * alunnyquit (Ping timeout: 260 seconds)
20:05:28  * pkruminsquit (Quit: bbl)
20:09:05  * pkruminsjoined
20:09:06  * pkruminsquit (Changing host)
20:09:06  * pkruminsjoined
20:10:56  * jden_joined
20:11:22  * jden_changed nick to Guest43487
20:13:10  * lyaunzbejoined
20:23:39  <Raynos>jesusabdullah: var R = require("readable-stream"); var wrap = function (s) { r = new R; return r.wrap(s) }
20:49:33  * mikolalysenkoquit (Ping timeout: 252 seconds)
20:56:04  * fotoveritequit (Quit: fotoverite)
20:56:53  * fotoveritejoined
21:01:51  * fotoveritequit (Ping timeout: 276 seconds)
21:13:57  * slaskis_quit (Remote host closed the connection)
21:24:41  * lyaunzbequit (Remote host closed the connection)
21:31:24  * mikealquit (Quit: Leaving.)
21:33:43  * slaskisjoined
21:36:13  * mikolalysenkojoined
21:41:34  * yorickjoined
21:41:34  * yorickquit (Changing host)
21:41:34  * yorickjoined
21:42:15  * lyaunzbejoined
21:43:02  * mikolalysenkoquit (Ping timeout: 252 seconds)
22:02:17  * mikealjoined
22:10:10  * slaskisquit (Remote host closed the connection)
22:12:19  * slaskisjoined
22:21:31  * thatguydanjoined
22:24:56  * evboguejoined
22:34:03  * slaskisquit (Remote host closed the connection)
22:36:35  * fotoveritejoined
22:36:59  * dguttmanjoined
23:03:22  * mikealquit (Quit: Leaving.)
23:04:06  * mikealjoined
23:06:51  * evboguequit (Ping timeout: 240 seconds)
23:07:07  * mikealquit (Client Quit)
23:15:24  * thatguydan_joined
23:17:35  * thatguydanquit (Ping timeout: 255 seconds)
23:17:35  * thatguydan_changed nick to thatguydan
23:20:42  * dguttmanquit (Quit: dguttman)
23:29:28  * mikealjoined
23:34:06  * lyaunzbequit (Read error: Operation timed out)
23:45:16  * lyaunzbejoined