00:00:02  <dominictarr>I'd want to read it opts at the top, and defaults at the end.
00:00:16  <isaacs>right
00:00:18  <isaacs>so it's a push
00:00:41  <isaacs>cc.add(cli).add(env).add(userconfig).add(globalconfig).add(
00:00:49  <dominictarr>yeah, that it is a prototype list is backwards for visualizing this.
00:01:01  <isaacs>each one is lower priority
00:01:41  <isaacs>nah, you just put the item 0 at the top :)
00:01:42  <isaacs>and visualize it that way
00:02:02  <dominictarr>and each item points to the one to check next.
00:02:11  <isaacs>yep
00:02:28  <isaacs>ok, i'm convinced.
00:02:35  * _sorensenquit (Ping timeout: 276 seconds)
00:02:35  <isaacs>and i think that's how you had it already, so that's good
00:02:36  <isaacs>:)
00:02:41  <dominictarr>yeah.
00:02:47  * blakmatrixjoined
00:02:48  <isaacs>just wanted to think it through a little
00:02:59  <isaacs>but if i can anchor the bottom item, then i'm happy
00:03:08  <isaacs>and i just added that to ProtoList
00:03:11  <isaacs>so we're good :)
00:04:39  <dominictarr>cool.
00:05:06  <isaacs>dominictarr: so, what i'm doing is having addFile and addUrl put a "marker" object in the chain
00:05:22  <isaacs>then when it resolves, it splices out that marker with the actual data
00:06:09  <dominictarr>makes sense.
00:14:01  * mikealjoined
00:17:50  * simcop2387quit (Excess Flood)
00:20:10  * thatguydanjoined
00:20:27  * simcop2387joined
00:28:14  * captain_morganquit (Remote host closed the connection)
00:32:55  * captain_morganjoined
00:36:34  * st_lukejoined
00:46:49  <devaholic>dominictarr: are you using rc?
00:46:54  <devaholic>your module
00:46:58  <dominictarr>yes!
00:51:08  * mikealquit (Quit: Leaving.)
00:58:28  * mikealjoined
01:00:33  <isaacs>dominictarr: https://github.com/dominictarr/config-chain/pull/1
01:01:45  * mikealquit (Client Quit)
01:02:29  * thatguydanquit (Quit: thatguydan)
01:06:03  * wiwilliajoined
01:15:37  <dominictarr>isaacs, [email protected]
01:15:41  <dominictarr>!
01:16:28  <dominictarr>and nice use of the the caps lock.
01:18:53  <dominictarr>Raynos, error submission: nice.
01:23:49  <isaacs>dominictarr: THANK YOU KIND SIR
01:23:58  <dominictarr>NO PROBLEMO
01:23:58  * shykeschanged nick to zz_shykes
01:24:02  <isaacs>lol
01:24:51  <isaacs>LOUDBOT: twitlast
01:24:51  <LOUDBOT>isaacs: http://twitter.com/loudbot/status/235184946191421440 (/)
01:25:16  <isaacs>ok, now the tedious work to actually use this thing in npm
01:29:04  * maksjoined
01:29:29  * makschanged nick to Guest82456
01:35:26  <dominictarr>hey maks / Guest82456
01:35:28  <dominictarr>whats up?
01:36:02  <Guest82456>hi dominictarr - just your comment about headers/footers
01:36:40  <Guest82456>that sounds exactly what would work well for search, thanks! just havign look at eg. plugin now...
01:38:18  <Guest82456>btw would you believe have used net since uni and never used irc so dont even know how to set back my nick :-( and of course am using webchat client
01:38:18  <dominictarr> /nick yourname
01:38:45  <dominictarr>irc is the most important method of communication for opensource.
01:40:53  * Guest82456changed nick to maksimlin
01:41:34  <maksimlin>thanks!
01:42:53  <maksimlin>actually I do remember now I *did* try using it once but the project had everyone else in europe, so I stuck to using maillist
01:43:20  * wiwilliaquit
01:44:58  <dominictarr>maksimlin, haha yeah. europe is hard from the antipodes. US is easier timezone wise.
01:48:25  <dominictarr>irc is much better for gauging how someone feels about things than email. informal communication.
01:49:49  <dominictarr>Raynos, is there any other crap we should get rid of from event-stream?
01:50:21  <dominictarr>hmm, what about writeArray?... that is pretty dumb.
01:54:31  <maksimlin>sure, email def nto the best in many cases - happy to give this a try.
02:08:32  <maksimlin>first question: in your issue comment, did you mean line-nums.js and if so is footer similiar to the margin space for linenumber rendering?
02:08:52  <dominictarr>oh, oops. I've just gotta push it
02:14:55  * captain_morganquit (Remote host closed the connection)
02:23:47  <dominictarr>pushed.
02:24:34  <dominictarr>it's similar. but it's on the bottom.
02:25:19  <dominictarr>you can also start it with a --header N --footer M
02:25:36  <dominictarr>to set the number to rows used for the footer and header respectively.
02:25:56  <dominictarr>which may be useful debugging.
02:29:36  <dominictarr>but otherwise, your plugin should set rc.footer = 1 or whatever number of rows you need.
02:33:15  <maksimlin>oh, cool that make sense now - thanks
02:52:52  <maksimlin>as a side note, if you get a chance to write up quick instructions on how you managed to get easywriter running in dosbox I for one would be very happy
02:56:14  <maksimlin>i loved reading his webpage on the story of how he wrote easywriter and it made me get jonesforth txt file again and start re-reading it
02:58:02  <dominictarr>jonesforth?
03:03:17  <dominictarr>maksimlin, I got it from here http://vetusware.com/download/EasyWriter%201.2/?id=7227
03:07:19  <dominictarr>it pretty much just worked.
03:09:21  <dominictarr>the hard part was finding a copy.
03:10:03  <dominictarr>and not something else that happened to be named EasyWriter.
03:14:00  <maksimlin>oh cool, I spotted on vetusware but registering put me off, will go grab it and try it out
03:19:55  <maksimlin>yep, googling for easywriter and actually geting result for the orig app is a pain but man theres something about the notes at the end of each line (with hipster) that I so like!
03:54:46  <dominictarr>I think I've gotta approve of vetusware's retro thing.
03:54:47  <dominictarr>... if only the adverts where ascii art too.
04:07:03  * Altreusquit (*.net *.split)
04:07:03  * purrquit (*.net *.split)
04:07:03  * CAPSLOCKBOTquit (*.net *.split)
04:07:03  * ITproquit (*.net *.split)
04:07:03  * sorensenquit (*.net *.split)
04:07:03  * blakmatrixquit (*.net *.split)
04:07:03  * rannmannquit (*.net *.split)
04:07:04  * maksimlinquit (*.net *.split)
04:07:04  * ircretaryquit (*.net *.split)
04:07:04  * maxogdenquit (*.net *.split)
04:07:04  * isaacsquit (*.net *.split)
04:07:04  * rowbitquit (*.net *.split)
04:07:04  * Madarsquit (*.net *.split)
04:07:04  * jesusabdullahquit (*.net *.split)
04:07:04  * perlbotquit (*.net *.split)
04:07:04  * munroquit (*.net *.split)
04:07:04  * framlinquit (*.net *.split)
04:07:04  * paul_irishquit (*.net *.split)
04:07:04  * joshwnjquit (*.net *.split)
04:07:04  * devaholicquit (*.net *.split)
04:07:04  * niftylettucequit (*.net *.split)
04:07:04  * simcop2387quit (*.net *.split)
04:07:04  * pikpikquit (*.net *.split)
04:07:04  * sveisveiquit (*.net *.split)
04:07:05  * zuquit (*.net *.split)
04:07:05  * pkruminsquit (*.net *.split)
04:07:05  * tanepiperquit (*.net *.split)
04:07:05  * zz_shykesquit (*.net *.split)
04:07:05  * LOUDBOTquit (*.net *.split)
04:07:05  * guybrushquit (*.net *.split)
04:07:05  * coffeecupquit (*.net *.split)
04:07:05  * Raynosquit (*.net *.split)
04:07:05  * yorickquit (*.net *.split)
04:07:05  * farnsworthquit (*.net *.split)
04:07:05  * cubertquit (*.net *.split)
04:07:05  * egadcablequit (*.net *.split)
04:07:06  * doolsquit (*.net *.split)
04:07:06  * ryanseddonquit (*.net *.split)
04:07:06  * substackquit (*.net *.split)
04:07:06  * antixquit (*.net *.split)
04:07:06  * elliottcablequit (*.net *.split)
04:07:06  * dominictarrquit (*.net *.split)
04:07:06  * st_lukequit (*.net *.split)
04:07:06  * chapelquit (*.net *.split)
06:38:26  * purrjoined
06:38:26  * captain_morganjoined
06:38:26  * ryan_stevensjoined
06:38:26  * dominictarrjoined
06:38:26  * timoxleyjoined
06:38:26  * maksimlinjoined
06:38:26  * simcop2387joined
06:38:26  * blakmatrixjoined
06:38:26  * joshwnjjoined
06:38:26  * devaholicjoined
06:38:26  * rannmannjoined
06:38:26  * Raynosjoined
06:38:26  * niftylettucejoined
06:38:26  * pikpikjoined
06:38:26  * ircretaryjoined
06:38:26  * sveisveijoined
06:38:26  * ryanseddonjoined
06:38:26  * cablemortjoined
06:38:26  * ITprojoined
06:38:26  * substackjoined
06:38:26  * yorickjoined
06:38:26  * doolsjoined
06:38:26  * sorensenjoined
06:38:26  * chapeljoined
06:38:26  * maxogdenjoined
06:38:26  * guybrushjoined
06:38:26  * Altreusjoined
06:38:26  * tanepiperjoined
06:38:26  * LOUDBOTjoined
06:38:26  * munrojoined
06:38:26  * CAPSLOCKBOTjoined
06:38:26  * pkruminsjoined
06:38:26  * zujoined
06:38:26  * paul_irishjoined
06:38:26  * framlinjoined
06:38:26  * zz_shykesjoined
06:38:26  * isaacsjoined
06:38:26  * rowbitjoined
06:38:26  * Madarsjoined
06:38:26  * jesusabdullahjoined
06:38:26  * perlbotjoined
06:38:26  * antixjoined
06:38:26  * coffeecupjoined
06:38:26  * elliottcablejoined
06:38:26  * cubertjoined
06:38:26  * farnsworthjoined
06:55:09  <substack>pushover's "push" event now emits the commit hash as the second arg
06:55:47  * ryan_stevensquit (Quit: Leaving.)
06:57:03  * thatguydanjoined
07:05:32  * mikealjoined
07:05:32  * joshwnjquit (Quit: ERC Version 5.3 (IRC client for Emacs))
07:08:09  * captain_morganquit (Remote host closed the connection)
07:32:24  * mikealquit (Quit: Leaving.)
07:41:02  * mikealjoined
08:00:02  <Raynos>dominictarr: o/ you win at open sauce
08:00:14  <Raynos>dominictarr: how do I use crdt and https://github.com/Raynos/distributed-map together?
08:20:29  * thatguydanquit (Ping timeout: 276 seconds)
08:24:28  * captain_morganjoined
08:38:53  * captain_morganquit (Remote host closed the connection)
08:53:55  * thatguydanjoined
09:21:45  * captain_morganjoined
09:55:46  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
09:55:46  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
09:56:49  <substack>yay
10:16:51  <substack>this prototype json scraper is partly working
10:17:05  <substack>works in the simple case at least
10:23:45  * maksimlinquit (Quit: Page closed)
10:27:18  <substack>bwahahaha
10:27:31  <substack># pass 100
10:50:05  <substack>craps there is another bug with nested structures
11:01:05  <substack>pow got it
11:01:07  <substack>tricky one
11:14:48  * Altreus_joined
11:16:31  * Altreusquit (Disconnected by services)
11:16:32  * Altreus_changed nick to Altreus
11:16:40  * Altreusquit (Changing host)
11:16:40  * Altreusjoined
11:22:35  <thatguydan>Hey peeps, I'm thinking of putting out a blog post somewhere of how do control flow management sans stuff like async
11:23:00  <thatguydan>I've got a gist with the gist of it, looking for some early feedback whether it's worth pursuing further
11:23:17  <substack>maxogden wrote http://callbackhell.com/
11:25:52  <thatguydan>I've gone down the route of using custom events heavily
11:26:15  <thatguydan>https://gist.github.com/3348294
11:26:38  <thatguydan>Pretty verbose, but this way you're able to create a workflow using listeners for custom events
11:27:22  <thatguydan>Downside is kinda reverses the flow of logic, last step first, first step last
11:27:46  <substack>dominictarr: https://github.com/substack/json-scrape
11:28:42  <thatguydan>I'm keen for any feedback whether its worth explaining a bit more to the community, or if it's a throwaway. I haven't seen custom events being used much in the way of control flow logic management
11:29:31  <substack>if you think it's a useful approach then go for it!
11:30:02  <thatguydan>(Obviously for small projects this is a very verbose way of doing it, but when you need to do 6 things before returning a result it has had the effect of us not throwing our laptops out the window :p)
11:33:34  <thatguydan>cheers, might just
11:36:29  <thatguydan>you know, in all of my free time :p
11:37:49  <thatguydan>If I find the dickhead who thought moving from heroku to ec2, while simultaneously moving from socket.io to dnode, and deploying the code to 150 full linux stacks sitting in people's living rooms i'm gonna kill the bastard.
11:37:55  <thatguydan>oh wait
11:38:16  <thatguydan>:p
11:40:08  <thatguydan>substack: what do you use for monitoring, on a side note
11:45:31  <substack>nothing
11:49:16  <thatguydan>fair enough
12:23:34  <dominictarr>substack, that is super awesome.
12:29:48  <substack>dominictarr: I'm going to use it for my ci system
12:29:53  <substack>you just write json objects to stdout
12:30:09  <substack>and you can be messy and write lots of other noise
12:30:20  <dominictarr>ci like testing?
12:30:24  <substack>yep
12:30:46  <substack>and the json objects from script output go directly into couch
12:30:58  <substack>but not just tests with pass or fail, any kind of value
12:31:18  <dominictarr>you want to know as much as possible.
12:31:44  <substack>and then you can write map/reduces to plot graphs of performance over time or browser support over time
12:31:50  <dominictarr>when I was working on that stuff i eventually decided that anything more than just stdout was too hard.
12:32:08  <dominictarr>thats good.
12:32:15  <substack>anything more?
12:33:22  <substack>stdout is great because it's the universal interface
12:33:28  <substack>you can write your scripts however you want
12:37:16  <dominictarr>well, I was trying to hook into the test framework.
12:38:48  <dominictarr>that failed. people kept on making new frameworks.
12:39:22  <dominictarr>although a test could write {passed: true}
12:39:39  <dominictarr>and make it look like the test passed when It didn't.
12:42:04  <substack>quite possibly
12:42:23  <substack>although in that case you'd have one object saying passed and another saying failed
12:42:53  <substack>since this system will write all the objects to the db
12:42:57  * hij1nxjoined
12:43:05  <substack>without bothering to actually look at them itself
12:43:12  <substack>that is the job of the analysis tools
12:43:59  <hij1nx>i think i just noticed that process.title is broken. in .8+ can anyone verify?
12:44:37  <substack>what seems broken about it?
12:45:54  <hij1nx>i set it, and then i still see `node` when i ps | grep
12:46:11  <hij1nx>the process.title never seems to get changed.
12:47:05  <substack>seems to work on my linux box on 0.8.0
12:47:15  <hij1nx>ah, could be Darwin
12:47:48  <hij1nx>im going to ask in #node.js
12:52:23  <hij1nx>i guess because its not cross platform (win)??
12:52:45  <hij1nx>looks like the transition to libuv broke it in darwin.
12:59:27  <dominictarr>substack, aha but what if I console.log(JSON.stringify({passed: true}); process.exit(0)
12:59:50  <substack>then don't do that :p
13:01:01  <substack>I don't think many tests are quite so hostile to create false positives
13:01:58  <dominictarr>yeah, you'd have to actually have code that tried to maliciously pass the test.
13:08:26  * saijanai_joined
13:16:21  * thatguydanquit (Quit: thatguydan)
13:27:13  <dominictarr>so, looks like nodedublin isn't just in IRELAND, but actually in the GUINESS BREWERY
13:27:30  <substack>YES
13:27:44  <dominictarr>that would be like having a US JS conf in the WHITEHOUSE
13:45:24  * hij1nxquit (Ping timeout: 246 seconds)
13:54:51  <substack>pow pushover emits the branch now too
14:00:46  <substack>FUCK YES
14:00:55  <substack>so I just wrote a functional ci server in like 3 hours
14:02:56  * wiwillia2joined
14:34:00  * thatguydanjoined
14:37:02  <substack>pow https://github.com/substack/cicada
14:37:49  <substack>isaacs: ^^^
14:48:20  * thatguydanquit (Quit: thatguydan)
14:51:08  * AvianFlujoined
14:55:24  * wiwillia2quit (Ping timeout: 246 seconds)
15:03:16  * wiwillia2joined
15:06:19  * xaqjoined
15:17:30  <dominictarr>substack, jesusabdullah Raynos dools : photos of my recent adventure in Cambodia: http://www.facebook.com/media/set/?set=a.10151169688417037.503937.523207036&type=3
15:17:44  <dominictarr>(you don't need facebook for that link to work)
15:22:46  <substack>sweet!
15:31:50  <dominictarr>inspired more or less by CAPSLOCKSCRIPT, am now looking into FORTH
15:34:24  <dominictarr>it's close to the metal, but still high level / meta.
15:34:33  <dominictarr>"close to the metal" == literally.
15:34:56  <dominictarr>it's designed to run with no operating system.
15:35:06  * wiwillia2quit (Ping timeout: 268 seconds)
15:55:19  * st_lukejoined
16:13:31  <substack>fixed a bug in json-scrape
16:13:55  <substack>jsonparse is very tricky indeed
16:20:13  <isaacs>dominictarr: it'd be nice if cc.save() took a cb optionally
16:20:45  <isaacs>i'm doing a lot of cc.save("user"); cb = once(cb); cc.once("save", cb); cc.once("error", cb)
16:21:58  <dominictarr>yeah, that makes sense.
16:26:27  <isaacs>k, pull req coming
16:26:35  <isaacs>also, i'm still going to end up having an npmconf module, i think
16:26:57  <isaacs>putting all the specialized logic in npm.js is getting too hairy, and putting any npm-specific logic in config-chain feels wrong
16:28:22  <dominictarr>isaacs, I did something just like that here: http://npm.im/rc
16:28:45  <dominictarr>it's hard-wired configuration.
16:28:59  <dominictarr>you only pass in the name of your app, and the defaults.
16:29:31  <dominictarr>then it checks in ~/.apprc, ~/.app/config, and so on...
16:29:39  <guybrush>oh that looks handy
16:29:51  <isaacs>dominictarr: yeah, that's fine, but npm already has established semantics that i'm not at liberty to change without significant work.
16:30:01  <isaacs>ie, there are other systems depending on it not changing
16:30:03  <guybrush>have a lot like that in every package newly implemented right now :D
16:30:29  <dominictarr>yeah, I'm not proposing that you use rc.
16:31:02  * ryan_stevensjoined
16:31:12  <dominictarr>but same idea.
16:31:34  <dominictarr>the potential win here is one configuration pattern that everyone just uses.
16:31:50  <dominictarr>less needlessly different code to read.
16:33:23  <isaacs>true
16:33:37  <isaacs>now that config-chain has chaining and saving, it's like 90% of what npm needs.
16:34:06  <isaacs>but all that config bs is the most relevant glue holding the npm katamari together at this point.
16:34:11  <substack>isaacs: does cicada seem like a satisfactory basis for your ci dream for node?
16:34:22  <isaacs>substack: it seems like it might be a good start.
16:34:26  <isaacs>i haven't looked too closely at it.
16:34:27  <substack>there's not much to it right now
16:34:40  <substack>I'll try to have a git hook thing working with it soonish
16:34:51  <substack>need that to start generating badges
16:35:08  <isaacs>substack: i whipped up a little thing a while back using pushover just basically to figure out what i wanted.
16:35:23  <isaacs>but without the intent of actually continuing to develop it. just basically a throwaway program.
16:35:37  <isaacs>cicada seems like it's got most of the same basic structure
16:36:00  <substack>it uses npm run-script for things which I think will be handy
16:36:13  <substack>and it just gives you the process to do with what you will
16:36:20  <isaacs>of course, for node itself, that means we'll need a package.json
16:36:26  <substack>I intend to use json-scrape to parse the stdout and dump that to couch
16:36:30  <substack>yes
16:36:56  <isaacs>so, also: you need a way to have a swarm of cicadas
16:37:11  <isaacs>so that i an push to one, and have it run tests on 5 different platforms in parallel
16:37:17  <substack>true
16:37:27  <substack>you can add git remotes for each target platform
16:37:33  * captain_morganquit (Remote host closed the connection)
16:37:35  <isaacs>also, the workers need to connect to the hub, rather than the other way around
16:37:44  <substack>and write a tiny shell script to push to all the remotes
16:37:50  <dominictarr>what about just have it listen on npm updates?
16:37:51  <isaacs>because i dont' want my windows or mac machines to be publicly addressable
16:38:07  <dominictarr>hmm, i guess you want to maybe test before you publish
16:38:08  <isaacs>dominictarr: yeah, but i'm not gonna publish node to npm, and you really want to run tests *before* publishing
16:38:11  <isaacs>right :)
16:38:26  <substack>isaacs: luckily everything is over http so you can just reverse-proxy the http connections the usual way
16:38:48  <isaacs>substack: adding git remotes for each target is ok, but setting up proxying and all that bs is a bunch of annoying stuff.
16:39:02  <substack>could use mountie for that
16:39:21  <isaacs>each swarm droneshould have a persistent connection to the server, and the server should ping it to tell it to get updates (or push them over that connection)
16:39:39  <isaacs>what would be really nice is like a persistent git connection.
16:40:18  <isaacs>so drone D connects to hub H. i push to H, at which point, H pushes those refs to D, but D only has outbound network.
16:40:21  <isaacs>because it's in my house.
16:40:24  <isaacs>or on your laptop
16:41:02  <isaacs>failing that, H could write a message to D telling it to fetch from H's public address, and then D could pull and run tests.
16:41:05  <dominictarr>make it peer to peer with a gossip protocol
16:41:26  <isaacs>dominictarr: p2p should be for hubs only
16:41:30  <isaacs>and that could come way way later.
16:41:38  <isaacs>each drone should connect to a single hub
16:41:46  <isaacs>and then you can seaport that or whatever later on
16:42:38  <isaacs>so, i do: git push hub; then the hub sees the new refs, accepts them, and tells all connected drones to pull, at which point the drones pull, run tests, and report the results over the connection
16:43:31  * captain_morganjoined
16:43:39  <substack>fleet does something like that
16:43:57  <substack>but it's much more geared towards running clustered services than ci
16:46:07  <isaacs>right
16:46:24  <isaacs>i tried using fleet for my little PoC, and found that it is really not suitable.
16:46:29  <isaacs>but some of the ideas are very good.
16:46:43  <isaacs>substack: why you write such big modules??
16:46:45  <isaacs>;P
16:48:13  <substack>I write big modules when I can't switch in to convergent thinking mode
16:48:30  <isaacs>writing smaller modules is very hard.
16:48:43  <isaacs>often you don't see the joints until you've hacked into the wrong place a few times.
16:49:03  <isaacs>a butcher has it easy: every cow is shaped roughly the same.
16:49:19  <substack>I would have written a smaller module, but I didn't have the time.
16:49:20  <isaacs>but as programmers, new problems are rarely all that similar to old ones
16:50:39  <substack>well for the occupation known as programming that is overwhelmingly false
16:50:45  <substack>which is why things like rails are so popular
16:50:57  <substack>great for solving the same problem ad nauseum
16:52:00  <isaacs>true, i guess
16:52:02  * mikealquit (Ping timeout: 276 seconds)
16:52:27  <isaacs>certain sorts of development are very similar to butchering.
16:53:00  <isaacs>both in the repetitiveness and the disparity between the ugliness of the process and hte deliciousness of the result.
16:53:24  <isaacs>but "software developmnet" is a bit different
16:53:28  <substack>sausages
16:53:30  <isaacs>depending on what you mean by that :)
16:53:42  * mikealjoined
16:59:41  * mikealquit (Ping timeout: 244 seconds)
16:59:59  * mikealjoined
17:02:01  <isaacs>dominictarr: Y U NO ADD REPO FIELD? https://npmjs.org/package/rc
17:02:10  <isaacs>dominictarr: i'd send you a pull req for that, but i literally don't know where to do so
17:02:10  <dominictarr>oh, oops.
17:02:15  <isaacs>;P
17:02:34  * isaacsso very very close to making that a required field in the registry..
17:03:03  <isaacs>maybe we can just add lots and lots of awesome features foranyone who has a git url
17:03:22  <isaacs>and if your packge doesn't, there's a big red warning saying, "THIS AUTHOR HATES CONTRIBUTIONS APPARENTLY"
17:03:31  * isaacs.oO(too much?)
17:03:58  <isaacs>aha, guessed correctly https://github.com/dominictarr/rc
17:04:41  <dominictarr>fixed in [email protected]
17:05:30  * substackgroceries it up &
17:05:38  <dominictarr>or something to bring this to the attention of the author.
17:05:52  <dominictarr>maybe an email.
17:06:22  <dominictarr>or just have npm complain/prompt.
17:15:02  <isaacs>yeah
17:15:13  <isaacs>i think it should be a warning (like missing readme is now)
17:15:45  <isaacs>and then we should have a bot that crawls the registry and emails authors to nag them if their package lacks a git repo, or the git repo is unreachable
17:15:54  <isaacs>should allow hg probably,too
17:15:57  <isaacs>there are a few of those
17:17:37  <isaacs>dominictarr: lol! i was up too late last night coding.
17:17:49  <substack>isaacs: why do some readmes not show up on the npmjs.org site?
17:17:51  <isaacs>dominictarr: apparently the save method already does take a cb, and i squashed it into my master, and then you merged it
17:17:52  <substack>as in: most
17:18:11  <isaacs>substack: if they were published with an npm version that didn't have the "also publish the readme" bits in it yet.
17:18:15  <isaacs>substack: typically
17:18:25  <isaacs>substack: history will correct this problem as people move up in versions
17:18:33  <dominictarr>isaacs, it already had a save method?
17:18:42  <substack>readmes don't show for my new stuff either
17:18:46  <isaacs>dominictarr: well, it had the save method, but i already added the cb to it
17:18:54  <isaacs>substack: what module, and what version of npm are you using?
17:18:55  <substack>https://npmjs.org/package/cicada <-- nothing
17:19:02  <isaacs>substack: npm -v
17:19:02  <substack>1.1.41
17:19:03  <dominictarr>I've written too many modules to remember what their features are.
17:19:52  <isaacs>substack: ah. yes. update to 1.1.48
17:20:05  <isaacs>substack: a bug where things not named 'README{,.md}' were not seen
17:20:10  <isaacs>substack: your readme is lowercase.
17:20:40  <substack>didn't realize that npm itself was the limiting factor
17:21:11  <substack>Error: npm doesn't work with node v0.6.10
17:21:15  <substack>so that's annoying
17:21:35  <substack>umm this seems really hard to roll back
17:22:16  <isaacs>substack: the new read module requires 0.8 tty, and npm init uses tha
17:22:18  <substack>oh nevermind, had an old node build installed with nave
17:22:36  <substack>not upgrading until production versions are upgraded
17:22:38  <isaacs>0.6.10 is really super old and busted, too
17:22:43  <substack>pfft
17:22:47  <substack>I don't even care.
17:22:51  <isaacs>yeah, i know
17:22:54  <substack>upgrading breaks code
17:23:03  <isaacs>you see node working, i see how node is broken
17:23:15  <isaacs>you see upgrades breaking shit, i see upgrades fixing shit.
17:23:22  <isaacs>you see sausage, i see pig guts.
17:24:38  <isaacs>substack: mind if i try something with cicada's package registry?
17:24:45  <substack>go for it
17:24:48  <isaacs>er, package registry doc
17:24:50  <isaacs>k, one sec
17:25:03  <substack>it seems odd that the website depends on the npm command itself to make readmes work
17:25:19  <substack>instead of reaching into the tarballs itself
17:25:35  <isaacs>whoops, unpublished it
17:25:38  <isaacs>k, one sec
17:27:23  <dominictarr>hey isaacs, where would system config usually go in windows?
17:27:46  <isaacs>substack: ok, hard-refresh, it's there: https://npmjs.org/package/cicada
17:28:00  <isaacs>dominictarr: that really depends.
17:28:02  <dominictarr>I mean what is the equivalent to /etc/app
17:28:05  <isaacs>right
17:28:19  <isaacs>i think %AppData%/app
17:28:20  <dominictarr>or does this concept even apply?
17:28:20  <isaacs>probably?
17:28:30  <isaacs>process.env.APPDATA
17:28:37  <isaacs>or if that's not set... i don't know?
17:29:06  <dominictarr>if that is not set, then I'll assume there is no system config.
17:32:18  * mikealquit (Quit: Leaving.)
17:34:39  <isaacs>c:\node-v0.8.6>npm get globalconfig
17:34:39  <isaacs>C:\Users\Isaac Schlueter\AppData\Roaming\npm\etc\npmrc
17:34:39  <isaacs>c:\node-v0.8.6>node -pe process.env.APPDATA
17:34:39  <isaacs>C:\Users\Isaac Schlueter\AppData\Roaming
17:34:39  <isaacs>c:\node-v0.8.6>npm prefix -g
17:34:41  <isaacs>C:\Users\Isaac Schlueter\AppData\Roaming\npm
17:34:44  <isaacs>dominictarr: ^
17:35:16  <isaacs>dominictarr: %AppData% is a bit like the ~/Library/Application Support/ folder on osx
17:35:30  <isaacs>dominictarr: but os x also has all the unixy /usr/local/etc stuff
17:35:34  <dominictarr>what is "Roaming"?
17:35:39  <isaacs>dominictarr: no clue
17:35:44  <isaacs>that's what the AppData folder is set to
17:35:54  <isaacs>just the default place in Windows 7
17:36:23  <dominictarr>right.
17:37:44  <dominictarr>thanks
17:42:45  * ITproquit (Ping timeout: 268 seconds)
17:43:27  * ITprojoined
17:51:46  * captain_morganquit (Remote host closed the connection)
17:53:06  * captain_morganjoined
18:01:21  * mikealjoined
18:11:26  <substack>isaacs: maintainer is you now for that package
18:11:50  <substack>oh wait, npm view must be cached
18:12:26  * _sorensenjoined
18:12:50  <substack>did an npm cache clean, nope
18:13:08  <isaacs>oh, weird... it's giving me 200s when i add you, but it seems like it's not making the PUT
18:13:10  <substack> $ npm view cicada maintainers
18:13:10  <substack>isaacs <[email protected]>
18:13:11  <isaacs>one sec
18:13:59  <isaacs>oh, hahaha
18:14:15  <isaacs>$ npm owner ls cicada -q
18:14:15  <isaacs>substack <[email protected]>
18:14:27  * wiwillia2joined
18:14:33  <isaacs>the version sub-doc shows the maintainers as it was set when the package was published
18:14:41  <isaacs>i'll go in and evil-ly manipulate the datas
18:14:57  <isaacs>`npm view` shows the data about the "latest" version, rather than the top-level doc
18:16:35  <isaacs>$ npm cache clean cicada
18:16:35  <isaacs>$ npm view cicada maintainers -q
18:16:35  <isaacs>substack <[email protected]>
18:16:35  <isaacs>$ npm owner ls cicada -q
18:16:37  <isaacs>substack <[email protected]>
18:16:42  <isaacs>all set
18:17:06  <isaacs>https://npmjs.org/package/cicada/latest will update once the caches expire
18:47:13  * wiwillia2quit (Ping timeout: 252 seconds)
18:49:04  <substack>hoora
18:51:10  <substack>isaacs: it seems that your tinkering inflated the number of modules npm thinks I have by 2
18:53:41  * ryan_stevensquit (Quit: Leaving.)
18:56:21  * captain_morganquit (Read error: No route to host)
18:59:44  <dominictarr>Raynos, you there?
19:00:00  * mikealquit (Quit: Leaving.)
19:00:33  <dominictarr>substack, npm is probably just looking ahead to the end of the day.
19:00:45  <dominictarr>"pre-consistent"
19:04:55  <Raynos>dominictarr: hey
19:05:24  <dominictarr>Raynos, is there anything else we should get rid of in event-stream
19:05:30  <dominictarr>?
19:06:14  <Raynos>dominictarr: ideally I would like to deprecate event-stream because it's a utility grabbag. It's a pain to do. I've tried doing similar things with after & routil, it involves turning every function into a seperate module
19:06:52  <Raynos>for now that pipeable guy annoys me with browserify spamming stdout because event-stream can't be browserified cleanly
19:07:20  <dominictarr>could just put (require)(opts.protocol)
19:07:22  <Raynos>dominictarr: seperate question, can we make mux-demux streams pause streams?
19:07:38  <dominictarr>that fools browserify.
19:07:46  <Raynos>dominictarr: https://github.com/dominictarr/event-stream/blob/master/index.js#L577
19:07:59  <Raynos>it doesn't fool browserifies "expression in require" message
19:08:12  <Raynos>which might be a bug in browserify cc Substack
19:08:28  <dominictarr>no, if you put (require) in brackets then browserify can't see it.
19:08:43  <dominictarr>doesn't even realize there is a require there
19:08:53  <Raynos>that's not what my code sees
19:09:01  <Raynos>my code still complains
19:09:10  <Raynos>like I said, it might be a bug in browserify
19:10:57  <dominictarr>okay. hmm.
19:11:07  <dominictarr>well I want to remove it anyway.
19:12:09  <dominictarr>Raynos, it is a bag, but that's because I wrote it before substack convinced everyone that bags are bad.
19:12:29  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
19:12:29  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
19:13:00  <dominictarr>I think I'd rather leave it as is, but refactor every function out, and then bundle them back in.
19:14:42  <Raynos>dominictarr: I know what you mean ( https://github.com/Raynos/routil/commit/f6b2b285f709b0b30e021e5572b7f6cae7f216f0 )
19:14:59  <Raynos>I did the same with routil, I got convinced by substack that the bag was bad
19:15:33  <dominictarr>I've started this process, but it's kinda unnecessary work. just refactor out as you need each module.
19:15:36  <Raynos>I turned routil into a list of small cool modules and swapped it out https://github.com/Raynos/routil/blob/master/index.js#L1
19:16:01  <Raynos>dominictarr: I agree, that's what I did with duplexer. maybe I should just refactor the rest out too
19:16:25  <dominictarr>yeah, or the important stuff at least.
19:16:33  <dominictarr>pipeline (aka connect)
19:16:44  <Raynos>oh ...
19:16:54  <Raynos>dominictarr: mux-demux relies on event-stream, thats why event-stream annoys me
19:17:00  <dominictarr>so one has written a module with that name https://github.com/pgte/pipeline
19:17:43  <Raynos>dominictarr: https://github.com/dominictarr/mux-demux/blob/master/index.js#L1
19:17:58  <Raynos>I'll refactor that away later
19:17:59  <dominictarr>it would take a pr to get it the same.
19:18:32  <dominictarr>mux-demux needs a serializer. and it gets that from event stream
19:19:09  <dominictarr>a straight up module for line seperated json would fix that though.
19:19:48  <dominictarr>then it could just use lsjson, and duplexer
19:20:26  <dominictarr>hey, Raynos I just had an idea:
19:20:32  <dominictarr>crossover-stream
19:20:38  <dominictarr>you get a pair of streams,
19:21:01  <dominictarr>but A.write(X) -> B.emit('data', X)
19:21:05  <dominictarr>and vice versa
19:21:55  <Raynos>dominictarr: https://gist.github.com/db5b2923e43def4daf74
19:22:17  <Raynos>That is very common code for me. I think it is of value to make mux-demux streams buffer on pause
19:23:00  <dominictarr>very similar pattern
19:24:15  <Raynos>im writing this code again right now ._.
19:24:28  <Raynos>I should write a function for this
19:25:50  <Raynos>its weird that the readable part is buffered
19:26:21  <dominictarr>in mux-demux?
19:26:43  <dominictarr>or in your code?
19:27:23  <Raynos>in my code
19:28:51  <Raynos>https://gist.github.com/3351995
19:28:53  <Raynos>NPM that up later
19:31:45  <Raynos>The only way to deal with streams is make many small functions that reduce complexity
19:32:04  <dominictarr>thats confusing, because your app will be reading from the writable side.
19:32:42  <dominictarr>what if you made a function that wrapped mux-demux like thin
19:32:43  <dominictarr>s
19:33:05  <dominictarr>twoStream(mdm, function (req, res) { ... })
19:33:16  <dominictarr>or something like that
19:33:48  <dominictarr>that makes sense because it's just like the http module with two streams.
19:34:12  <AvianFlu>twoStream().pipe(redStream).pipe(blueStream)
19:34:18  <Raynos>dominictarr: why is that confusing?
19:34:51  <Raynos>i could rewite that code with a duplex stream
19:35:08  <dominictarr>because you app will go bufferedWritable.on('data', ...
19:35:25  <dominictarr>and bufferedReadable.write(...)
19:35:52  <dominictarr>you are reading from the stream labeled writable, and writing to the stream labled readable
19:37:04  <Raynos>dominictarr: no it wont
19:37:34  <Raynos>the app goes bufferStream.on('data", ...) and bufferStream.write(...)
19:38:44  <dominictarr>oh right, I see now
19:39:39  <dominictarr>you can simplify that.
19:40:26  <dominictarr>bufferedStream = duplex(stream, stream.pipe(pauseStream()))
19:43:47  * xaq_joined
19:47:37  * xaqquit (Ping timeout: 245 seconds)
19:50:59  * ryan_stevensjoined
19:54:36  * ryan_stevensquit (Client Quit)
19:54:41  * xaqjoined
19:56:10  * ryan_stevensjoined
19:57:59  * xaq_quit (Ping timeout: 252 seconds)
19:58:02  * wiwillia2joined
20:10:41  <Raynos>dominictarr: hmm
20:10:48  <Raynos>your right
20:10:56  <Raynos>I dont have to create an empty through stream
20:14:41  <Raynos>no it doesn't work cleanly like that either :(
20:27:25  * captain_morganjoined
20:27:56  * tilgovijoined
20:29:31  * wiwillia2quit (Ping timeout: 256 seconds)
20:29:53  <Raynos>dominictarr: https://github.com/dominictarr/mux-demux/pull/11
20:33:30  * ryan_stevensquit (Quit: Leaving.)
21:11:18  <dominictarr>Raynos, [email protected]
21:11:25  <Raynos>boya!
21:11:45  <dominictarr>I was wondering about that...
21:12:01  <rannmann>browserling's queue is barely moving :(
21:12:10  <rannmann>been waiting almost 10 minutes and I've gone up one slot
21:12:51  <dominictarr>... you would still need to make it a string if you are using a non json serializer streams
21:21:09  * AvianFluquit (Quit: AvianFlu)
21:36:43  * joshwnjjoined
21:44:53  * xaqquit (Remote host closed the connection)
21:45:40  * xaqjoined
21:45:48  * xaqquit (Remote host closed the connection)
21:51:25  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
21:51:25  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
21:56:54  * tilgoviquit (Ping timeout: 252 seconds)
22:06:31  * tilgovijoined
22:13:06  * ryan_stevensjoined
23:06:01  * joshwnjquit (Quit: ERC Version 5.3 (IRC client for Emacs))
23:13:26  * captain_morganquit (Remote host closed the connection)
23:19:00  <dominictarr>Raynos, just had a realization
23:19:24  <Raynos>?
23:19:27  <dominictarr>the easy way to refactor out a module is clone the original repo, and then delete everything else
23:19:30  <Raynos>distributed data all the days?
23:19:52  <dominictarr>you get the histroy that way
23:20:29  <dominictarr>I just about started to move some stuff from event-stream, but then was like BAH! this is too much work.
23:20:45  <Raynos>oh i see
23:20:47  <Raynos>When I refactor
23:20:52  <Raynos>I just choose to lose history
23:21:09  <dominictarr>also, that way you don't just copy paste the tests and then recreate package.json
23:21:51  <dominictarr>I like the idea of keeping the histroy because then you can see who contributed to the project.
23:22:29  <dominictarr>and people like to see that they've contributed to a project
23:22:43  <dominictarr>also, their potential future employers.
23:23:06  <dominictarr>but mainly, it's about not having to get the tests going again.
23:50:39  * joshwnjjoined
23:57:52  <dominictarr>Raynos, https://github.com/dominictarr/autonode
23:58:17  <dominictarr>I've forgotten how to use my old distributed modules
23:58:39  <dominictarr>which is good because now I get a new-user experience with my own code.