00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:02  <substack>just tell people not to use bad abstractions and show them good abstractions instead
00:00:05  <dominictarr>yes, that is an interpretation I can live with
00:00:08  * ircretaryjoined
00:00:37  * tmcwjoined
00:00:54  * defunctzombiechanged nick to defunctzombie_zz
00:01:22  <substack>all the best practices you ever need to know are all on http://www.faqs.org/docs/artu/ch01s06.html
00:01:28  <substack>everything else is just a special case
00:01:37  <dominictarr>but then, some of the current core abstractions, has sort of deabstracted a bit...
00:02:26  <dominictarr>these are all what you arrive at following "programming muthafucker!"
00:03:01  <dominictarr>prehaps I should sleep on this before I respond.
00:03:44  * mikealjoined
00:04:08  <dominictarr>on that note
00:04:10  <dominictarr>night all
00:05:30  * dominictarrquit (Quit: dominictarr)
00:06:28  * tmcwquit (Ping timeout: 276 seconds)
00:07:16  * vitorpachecojoined
00:09:51  * defunctzombie_zzchanged nick to defunctzombie
00:10:36  <Raynos>isaacs: https://github.com/isaacs/npm/issues/3491
00:10:50  <Raynos>npm publish is slow, recommend areas of code to optimize and ill look into it
00:10:53  <jesusabdullah>substack: any advice/modules for recursively traversing a directory?
00:15:12  <isaacs>Raynos: yeah, we've talked about this
00:15:26  <isaacs>Raynos: whneever i explain the situation, whoever i'm talking to glazes over and goes, "I guess 10 seconds isn't so bad..."
00:15:26  <Raynos>isaacs: we have?
00:15:34  <isaacs>Raynos: either you or defunctzombie i think
00:15:54  <Raynos>npm publish is pretty critical to my "MODULE ALL THE FUNCTIONS" work flow
00:15:55  <isaacs>Raynos: it's next up once 'm done with the new http client.
00:16:00  <isaacs>Raynos: yeah
00:16:02  <isaacs>Raynos: i agree.
00:16:04  * timoxleyquit (Quit: Computer has gone to sleep.)
00:16:05  <Raynos>which means
00:16:10  <Raynos>I will actually try to fix it
00:16:12  <isaacs>Raynos: there are two things that will make this much better:
00:16:14  <defunctzombie>the code has to be completely rewritten
00:16:18  <isaacs>right
00:16:25  <Raynos>or at least steal the easy subsets of the problem and write modules
00:16:25  <defunctzombie>I unfortunately don't have the time to devote right now :)
00:16:30  <defunctzombie>so have stopped complaining
00:16:43  <isaacs>basically, i need a standalone module thing that gets modules out of the npm registry, and puts them in
00:16:51  <isaacs>and it should always be a single stream pipe chain
00:16:57  <Raynos>i can do that with some guidance
00:17:01  <defunctzombie>at one point I had figure out more or less a good module breakdown
00:17:08  <defunctzombie>cause i was working on the tryme stuff
00:17:13  <defunctzombie>which needed to download and install stuff
00:17:44  <Raynos>if someone can add comments to the thread explaining potential solutions i will see what I can do
00:18:26  * mikolalysenkoquit (Ping timeout: 252 seconds)
00:20:52  * dominictarrjoined
00:21:57  * ralphtheninjaquit (Ping timeout: 248 seconds)
00:27:25  * thl0joined
00:28:47  * mikealquit (Quit: Leaving.)
00:31:09  <Raynos>isaacs: what would the api for getting and putting to a registry look like?
00:34:02  <isaacs>Raynos: whatever.
00:34:26  <Raynos>isaacs: It's more, I'm not sure _what_ is being put
00:34:30  <Raynos>is it a tarball ?
00:34:35  <Raynos>or files
00:34:37  <Raynos>or a folder
00:34:44  <Raynos>or a package.json
00:34:44  <isaacs>Raynos: construct a thing passing some config options to a constructor. then the object has a publish(thing, cb) and a install(thing, place, cb) method
00:34:48  <isaacs>Raynos: yes, any of those.
00:34:58  <isaacs>Raynos: i want to throw any random shit at it, and it figures it the fuck out.
00:35:02  <Raynos>oh
00:35:03  <Raynos>I see
00:35:04  * dguttmanquit (Ping timeout: 276 seconds)
00:35:06  <isaacs>Raynos: i'm curisng because you'll curse, writing this thing, i promise.
00:35:08  <isaacs>:)
00:35:11  <Raynos>is there a list
00:35:15  <Raynos>of all possible things ?
00:35:15  <isaacs>Raynos: lib/cache.js
00:35:18  <isaacs>Raynos: in npm.
00:35:26  * dominictarrquit (Quit: dominictarr)
00:35:31  <isaacs>Raynos: that's the thing with all the logic that figures out what you're trying to fetch
00:35:50  <Raynos>so I just need to write a fast publish(thing, cb) to make npm publish fast
00:35:51  <isaacs>Raynos: it *shouldn't* do all the logic of install.
00:35:56  <isaacs>Raynos: basically, yeah.
00:35:59  <Raynos>is a fast install(thing, place, cb) needed for npm publish ?
00:36:06  <Raynos>or is that someone else's problem? :D
00:36:20  <isaacs>Raynos: also, instead of putting everything in one place first, and doing 3 PUT requests, it should do one PUT request, and not use any temp or caches.
00:36:30  <isaacs>Raynos: this codebase predates Stream.pipe
00:36:33  <Raynos>fast is fast
00:37:38  <isaacs>Raynos: to do the one PUT, it probably should use some kind of "put a couchdb doc with an attachment in one single atomic put using base64" lib.
00:37:51  <isaacs>Raynos: without deleting all the other attachments.
00:38:52  <Raynos>ok cool
00:38:56  <Raynos>that's a decent enough starting place
00:39:00  <Raynos>I may do this
00:39:05  <Raynos>I may ragequit after I read lib/cache.js though
00:40:17  * vitorpachecoquit (Quit: Saindo)
00:40:27  <substack>https://github.com/substack/persona-id
00:41:05  <isaacs>Raynos: i predict that it'll take me a week or two to do this.
00:41:11  <isaacs>Raynos: and i'm intimately familiar with the codebase.
00:41:24  <Raynos>isaacs: so I can't just "do this", this evening? :(
00:41:37  <isaacs>Raynos: here's the thing: if you YOU do it, it'll STILL take me 2 weeks to accept it, unless you're interested in supporting npm forever.
00:41:50  * vitorpachecojoined
00:41:51  <isaacs>Raynos: because i'll have to read everything you do and really grok it
00:43:48  <Raynos>i see.
00:43:54  <Raynos>that kind of sucks
00:45:26  <isaacs>substack: why do you use ecstatic rather than st?
00:45:51  <jesusabdullah>why do you use st instead of ecstatic?
00:46:11  <isaacs>jesusabdullah: because it does a lot fewer syscalls.
00:46:17  <isaacs>jesusabdullah: and caches way more agressively.
00:46:59  <substack>isaacs: I bounce completely on the st readme
00:47:03  <substack>there's too much config
00:47:13  <isaacs>substack: it's like 100% optional
00:47:37  <substack>that's not obvious
00:47:57  <isaacs>substack: i'll write a tl;dr section. thanks for the feedback :)
00:48:21  <substack>write a tinier example and put it before the longer one
00:50:17  <thl0>Raynos: https://github.com/thlorenz/testlingify/commits/master
00:50:51  <Raynos>isaacs: I use ecstatic instead of st because of the caching
00:51:00  <Raynos>i find st's caching defaults way too aggressive locally
00:51:06  <Raynos>I use st in production
00:51:26  <Raynos>thl0: cool
00:51:48  <thl0>yeah, you guys convinced me it's the right thing to do
00:51:56  <jesusabdullah>fyi I take pull requests on ecstatic XD
00:52:45  * substackfoods it up &
00:53:32  <isaacs>Raynos: yeah, i set cache:false in dev
00:53:40  <isaacs>Raynos: this is why configuration is better than convention ;)
00:53:50  <isaacs>Raynos: or i just restart the server all the time in dev.
00:53:51  <isaacs>cuz why not.
00:54:01  * dguttmanjoined
00:54:06  <Raynos>thats a pain in the ass
00:54:46  * mikolalysenkojoined
01:02:30  * jcrugzzjoined
01:03:47  * fallsemoquit (Quit: Leaving.)
01:05:15  * tmcwjoined
01:08:37  * dguttmanquit (Quit: dguttman)
01:11:12  <defunctzombie>I just restart the server using node-dev
01:11:23  <defunctzombie>I don't use st or ecstatic tho :)
01:11:24  * dguttmanjoined
01:12:55  * vitorpachecoquit (Remote host closed the connection)
01:14:39  * vitorpachecojoined
01:14:40  * timoxleyjoined
01:17:01  <timoxley>ok need some streams assistance
01:17:12  <timoxley>consider: childProcess.stdout.pipe(anotherStream)
01:17:18  <timoxley>when the childProcess exits, I want to write to anotherStream some data about the status code it exited with…
01:17:51  <timoxley>but anotherStream is ended before I get a chance to do such a thing
01:18:49  <timoxley>I've gotten around it by doing something like:
01:19:35  <timoxley>a through stream with an end handler
01:20:33  <timoxley>that waits for the childProcess 'close' and writing before emitting end
01:20:55  <timoxley>but I'm not sure if this is "the way" to solve this
01:21:42  * mikolalysenkoquit (Ping timeout: 256 seconds)
01:22:56  * vitorpachecoquit (Remote host closed the connection)
01:24:33  * vitorpachecojoined
01:24:35  <guybrush_>woah this is nice
01:24:36  <guybrush_>http://bitcoop.sourceforge.net/
01:25:16  <guybrush_>friends can share their backups, encrypted and compressed
01:32:55  <defunctzombie>timoxley: yea, I think that is the way
01:33:04  <defunctzombie>timoxley: you can also do pipe with end: false
01:33:08  <defunctzombie>and wait for close yourself
01:33:13  <timoxley>defunctzombie ahh
01:33:49  <defunctzombie>guybrush_: would be interesting to see something like this built on bittorrent sync
01:34:39  <jesusabdullah>guys I wrote a CONTROVERSIAL BLOG POST http://jesusabdullah.github.io/
01:35:31  <jesusabdullah>https://twitter.com/jesusabdullah/status/339555476532518912 if you care to retweet
01:35:48  <jesusabdullah>who was I talking about this stuff about with the other day
01:37:32  <defunctzombie>jesusabdullah: the dependency issue is better solved be separating CLI from "lib" like modules
01:37:42  <defunctzombie>but we don't really do that much cause it doesn't matter that much
01:37:48  <defunctzombie>the space taken by the deps is trivial
01:38:10  <defunctzombie>also, I don't like that this has you write in some weird ORM like language
01:38:21  <defunctzombie>versus just making it basic js
01:38:23  <Raynos>timoxley:
01:38:24  <jesusabdullah>read closer
01:38:28  <Raynos>a.pipe(b, { end: false })
01:38:48  <defunctzombie>the express thing you described is actually not bad at all
01:39:00  <timoxley>Raynos that simple. great. thanks.
01:39:16  <Raynos>timoxley: remember to manually call .end()
01:39:33  <timoxley>is there a better way to signal exit status across a stream than a magic bit at the end?
01:40:04  <Raynos>timoxley: events?
01:40:16  <timoxley>stream is across a network
01:40:21  <Raynos>oh
01:40:27  <Raynos>custom documented protocol
01:40:29  <Raynos>that works
01:40:30  <timoxley>ok
01:40:35  <Raynos>or use HTTP and trailing headers
01:40:40  <timoxley>that's exactly what I was trying to avoid
01:41:01  <timoxley>trailing headers?
01:41:14  * timoxleyinvestigates
01:41:55  <Raynos>they are HTTP 1.1 and weird
01:44:00  <timoxley>jesusabdullah your npm install output is gross ├──
01:44:23  <timoxley>jesusabdullah try npm install --color false prompt
01:44:28  <jesusabdullah>oh maaaaan
01:44:30  <jesusabdullah>what is that
01:44:34  <jesusabdullah>browser y u no
01:44:50  <jesusabdullah>timoxley: it's the tree characters not the colors
01:44:58  <timoxley>oooh
01:45:11  * defunctzombiechanged nick to defunctzombie_zz
01:51:03  * tmcwquit (Remote host closed the connection)
01:51:34  <jesusabdullah>timoxley: maybe a screenie is a good idea though
01:51:59  <isaacs>substack: updated the st readme
02:26:45  * dguttmanquit (Ping timeout: 248 seconds)
02:26:47  <jesusabdullah>woo chilts thx4retweet
02:30:48  <chilts>jesusabdullah: pleasure ... I like the idea and will have to try it to see if I like it more :)
02:31:23  <chilts>hmm, I need to make my irssi highlight when people say my nick in the middle of lines
02:31:42  <jesusabdullah>hah
02:50:46  * vitorpachecoquit (Remote host closed the connection)
02:52:04  * vitorpachecojoined
02:54:55  <jesusabdullah>dangit youdaman I sold the shit out of that
02:54:58  <jesusabdullah>XD
03:06:27  * mikealjoined
03:08:08  * vitorpachecoquit (Remote host closed the connection)
03:08:27  * mikealquit (Client Quit)
03:10:06  * jcrugzzquit (Ping timeout: 240 seconds)
03:15:37  * fallsemojoined
03:30:16  * thl0quit (Remote host closed the connection)
03:35:24  * mikolalysenkojoined
03:36:04  * jaz303quit (Ping timeout: 246 seconds)
03:38:01  * jaz303joined
03:52:32  * heathquit (Read error: Connection reset by peer)
04:05:44  * heathjoined
04:08:27  * defunctzombie_zzchanged nick to defunctzombie
04:13:48  * purrquit (Remote host closed the connection)
04:13:56  * purrjoined
04:29:47  * jcrugzzjoined
04:47:58  * nicholasfjoined
04:52:09  * nicholasfquit (Ping timeout: 240 seconds)
05:10:48  * fallsemoquit (Quit: Leaving.)
05:36:38  * timoxleyquit (Quit: Computer has gone to sleep.)
05:44:55  <Nexxy>jesusabdullah, thanks :) we weren't technically until today
05:46:28  <jesusabdullah>ah!
05:46:32  <jesusabdullah>well that's fantastic!
05:46:37  <jesusabdullah>where did you have it?
05:47:06  <Nexxy>this tiny little chapel in the mountains of Washington
05:47:12  <jesusabdullah>oh nice
05:47:29  <Nexxy>it's a liek
05:47:43  <Nexxy>chapel/women's retreat/nursery
05:47:56  <Nexxy>with a giant wooden checkers board and a garden train and
05:48:05  <Nexxy>a view of the gorge
05:48:14  * defunctzombiechanged nick to defunctzombie_zz
05:48:17  <substack>congrats! even though I scorn both marriage and chapels in the abstract
05:48:20  <jesusabdullah>elven sanctuary
05:48:32  * dguttmanjoined
05:48:36  <Nexxy>haha yeah
05:48:41  <Nexxy>it was a non-secular chapel
05:48:46  <Nexxy>just a pretty place
05:48:59  <substack>good good
05:49:08  <Nexxy>also marriage is an important legal distinction when you have a child
05:49:33  <substack>yeah it's fucked up still
05:52:10  <substack>but anyways!
05:55:55  <Nexxy>substack, but there's also the aspect that my state doesn't do same sex marriage
05:56:10  <Nexxy>and yet we are legally married because of how fucked up the system is
05:56:40  <substack>yes everything is so screwy :/
06:00:10  <substack>but things that are not screwy: npm modules
06:00:15  <substack>and streams! yay
06:00:27  <substack>this streaming templatey stuff is quite nice
06:08:17  <substack>isaacs: st(__dirname + '/static') was hanging on some of my routes :/
06:10:24  * dguttmanquit (Quit: dguttman)
06:34:54  * timoxleyjoined
06:43:59  * mikolalysenkoquit (Ping timeout: 252 seconds)
06:44:10  <owen1>isaacs: love the new readme. send a pull request but it's just my opinion. feel free to ignore it
06:46:17  * mikolalysenkojoined
06:48:27  * nicholasfjoined
06:53:12  * nicholasfquit (Ping timeout: 256 seconds)
06:57:07  * ralphtheninjajoined
06:58:00  * shamaquit (Remote host closed the connection)
07:00:59  <jesusabdullah>dangit where's dominic?
07:16:53  * mikolalysenkoquit (Ping timeout: 240 seconds)
07:34:54  * nicholasfjoined
07:48:22  * dominictarrjoined
07:52:45  <timoxley>substack how to go about dynamically updating a "row" in a stream
07:53:01  <timoxley>as in, I've rendered some data, but that data has changed
07:53:03  * no9joined
07:53:12  <timoxley>don't want to redraw whole list
07:53:32  <timoxley>this is in the browser
07:57:23  <substack>timoxley: save the rows into an object or array and check the rows that stream in to do something custom
07:57:41  <substack>or you could just query for the row from the dom directly given the row params
07:58:52  <timoxley>substack my brain wants to call for "data binding"
07:59:40  <dominictarr>timoxley: give each row an ID of some kind?
08:02:21  <timoxley>ok I think I have an idea. the complexity is that the dom is rendered once via one stream, and then updated based on another
08:02:27  <timoxley>"complexity"
08:02:35  <substack>it can be the same stream for both
08:02:44  <substack>just check for a property to tell you what kind of update you're dealing with
08:03:31  <timoxley>ok. sounds simple.
08:11:41  * num9joined
08:19:20  * ins0mniajoined
08:22:55  * mikolalysenkojoined
08:27:09  * mikolalysenkoquit (Ping timeout: 245 seconds)
08:33:28  * jcrugzzquit (Ping timeout: 276 seconds)
08:36:30  * jcrugzzjoined
08:43:38  <timoxley>dominictarr is map-stream the best way to make a stream filter
08:43:56  <dominictarr>no, use through
08:44:14  <dominictarr>bbab, food
08:44:17  <timoxley>and just don't push if the data shouldn't be included
08:44:19  <jesusabdullah>dangit dominictarr I was gonna ask you about something and now I don't remember what
08:44:19  <timoxley>ok
08:44:25  <jesusabdullah>oh I remember now
08:44:31  <jesusabdullah>dominictarr: whenever you get back lol
08:44:38  <dominictarr>jesusabdullah: what was it?
08:44:55  <jesusabdullah>remember when we talked about mtimes stuff? for emulating make?
08:45:02  <dominictarr>yeah
08:45:04  <jesusabdullah>did we ever find anything that did that? I know we talked api
08:45:17  <jesusabdullah>I think I could use it bout now
08:45:48  <dominictarr>no. I don't know if anyone has written a module for it.
08:45:56  <jesusabdullah>yeah I couldn't find one
08:46:12  <dominictarr>jesusabdullah: you win! that means you get to write it!
08:46:42  <dominictarr>bbaib. food.
08:54:38  <jesusabdullah>hah was it really this easy? XD
08:55:54  * hij1nxquit (Ping timeout: 264 seconds)
08:56:55  * hij1nxjoined
08:57:01  <jesusabdullah>dominictarr: how about a recursive directory listing? You know of one of those?
08:59:53  <jesusabdullah>dominictarr: ohey you wrote that
09:00:42  <jesusabdullah>dominictarr: bad readme! BAD https://github.com/dominictarr/ls-r
09:09:33  <jesusabdullah>hahaha! Anyways I used that plus 'behind' (new module) to implement mtime-based recompile ^__^
09:18:03  <jesusabdullah>don't worry, readme for behind is next to useless as well
09:18:17  <jesusabdullah>no, nonexistent therefore actually useless
09:22:13  * jcrugzzquit (Ping timeout: 248 seconds)
09:35:07  <dominictarr>jesusabdullah: I wrote a way better one: pull-glob
09:36:46  <jesusabdullah>feel free to show me
09:50:56  <dominictarr>var glob = require('pull-glob'); glob('./**/*.js').pipe(….) //get a pull-stream of js files above current working directory
09:51:57  <dominictarr>jesusabdullah: ^
09:54:57  <jesusabdullah>stream's too complex for my needs
09:55:01  <jesusabdullah>also idk how a pull-stream works
09:56:26  <dominictarr>glob('./**/*.js').pipe(pull.collect(function (err, array) {…})) // get an array like that
09:56:39  <jesusabdullah>I don't understand
09:56:41  <jesusabdullah>what is pull
09:56:44  <dominictarr>jesusabdullah: it's super simple, much simpler than node streams
09:56:54  <dominictarr>var pull = require('pull-stream')
09:56:58  <jesusabdullah>I, uhh
09:57:02  <jesusabdullah>but what IS it
09:57:42  <dominictarr>so, the converse is a push stream
09:57:53  <dominictarr>node's streams 0.8 and before where push stream
09:58:14  <dominictarr>a push stream is like a normal plumbing...
09:58:37  <dominictarr>when the tap is open the data just comes squirting out.
09:59:05  <dominictarr>a pull stream is the opposite, it's like a drinking straw.
09:59:39  <jesusabdullah>what are 0.10 streams
09:59:46  <dominictarr>the data only moves when the consumer pulls ("sucks") it through.
09:59:57  <dominictarr>0.10 are almost pull streams
10:00:06  <dominictarr>they are pull when you only have two,
10:00:35  <dominictarr>but 0.10 streams are more like veins, or your throat...
10:00:39  <dominictarr>"swallow streams"
10:00:54  * jibayjoined
10:01:02  <dominictarr>each streams pull-pushes it into the next bit
10:01:33  <jesusabdullah>why are there 3 kinds of streams now :C
10:01:59  <dominictarr>in 0.10 pipe pulls out of the readable and then pushes into the writable
10:02:06  <dominictarr>jesusabdullah: there are more than 3.
10:02:24  <dominictarr>but these are the basic 3 types the occur in nature :)
10:02:53  <jesusabdullah>but why
10:03:08  <jesusabdullah>why do I have to know this stuff now?
10:03:23  <dominictarr>because you are an engineer.
10:03:48  <jesusabdullah>ugh
10:03:56  <jesusabdullah>I'm irritated that people are making up too many abstractions
10:04:05  <dominictarr>yes, well.
10:04:10  <dominictarr>streams2 broke the seal.
10:04:29  <jesusabdullah>okay so let me get this straight
10:04:34  <jesusabdullah>streams2 has a lot of nitty-gritty
10:04:36  <dominictarr>the difference between 1 and 2, is really the difference between 1 ande infinite
10:04:53  <jesusabdullah>so you can make streams that implement *part* of it?
10:05:04  <jesusabdullah>are these streams all vaguely compatible?
10:05:09  <dominictarr>yes.
10:05:21  <dominictarr>ultimately, they are all the same idea
10:05:35  <jesusabdullah>but what can and what can't I pipe to what?
10:05:40  <dominictarr>but they are all crude implementations of the platonic ideal steam.
10:06:22  <timoxley>dominictarr is "from" still good? or is there an alternative?
10:06:25  <dominictarr>so, you can pipe stream1 and streams2, but with pull streams you need to use a converter to pipe it to node stremas
10:06:54  <dominictarr>timoxley: sure, I never found that I needed it much, though.
10:07:01  <jesusabdullah>okay that's kind of weird dominictarr why can't you pile a pull stream to a node stream
10:07:38  <dominictarr>just because adding the feature detection, etc, would make it ugly and complicated.
10:07:43  <timoxley>dominictarr I just want to cache some data so each time someone connects to the server I don't have to go fetch it from the remote service again
10:08:00  <jesusabdullah>what's the "converter" ?
10:08:17  <dominictarr>stream-to-pull-stream, and pull-stream-to-stream
10:10:26  <dominictarr>jesusabdullah: so, a pull stream is very simple, and optimized for "object" streams
10:10:48  <jesusabdullah>huh
10:10:57  <dominictarr>you have a readable stream, which is just an async function that you call repeatedly
10:11:10  <dominictarr>and it calls back with each chunk
10:12:35  <dominictarr>function values (array) { var i = 0; return function (abort, cb) { if(i < array.length) cb(null, array[i++]); else cb(true) } }
10:12:47  <dominictarr>that is a valid readable stream that reads an array!
10:14:31  <jesusabdullah>I'll allow it
10:14:49  <dominictarr>and then instead of a writable stream,
10:14:55  <dominictarr>you have a READER stream
10:15:02  <dominictarr>that is also just a function
10:15:46  <jesusabdullah>uhuh
10:15:50  <dominictarr>function logger (read) { read(null, function next (end, data) { if(end) return; console.log(data); read(null, next) }}
10:16:19  <dominictarr>a function that calls a read function repeatedly, until it cb(truthy)
10:16:33  <jesusabdullah>whose using this in the wild right now?
10:16:53  <dominictarr>(end and error are both things that end a stream)
10:16:59  <dominictarr>I'm using it heaps
10:17:03  <dominictarr>raynos
10:17:17  <dominictarr>creationix is using something very similar
10:17:26  <jesusabdullah>hmm
10:17:38  <dominictarr>some of my level modules use it, so people who use that
10:17:57  <dominictarr>one other person published 2 modules with it.
10:18:23  <jesusabdullah>cool
10:19:09  <timoxley>dominictarr you should blog on it
10:19:19  <timoxley>pull streams
10:19:31  <dominictarr>was just thinking about that at breakfast, actually.
10:21:22  <dominictarr>jesusabdullah: and so a through stream is simple too,
10:21:27  <substack>There are so many leveldb libs now. Is there an easy thing for just storing data and subscribing to updates?
10:21:45  <jesusabdullah>dominictarr: yeah I bet
10:21:54  <dominictarr>substack: level + level-sublevel
10:22:04  <dominictarr>then db.post(listener)
10:22:19  <substack>ok
10:26:05  <dominictarr>jesusabdullah: a through stream is also just a function
10:26:24  <dominictarr>but, it's like a reader stream that returns a readable stream
10:26:52  <dominictarr>function through (read) { return function (abort, cb) { read(abort, cb) } }
10:27:11  <dominictarr>then can pipe them like this
10:27:35  <dominictarr>logger(through(values([1, 2, 3])))
10:28:28  <dominictarr>now, streams1 was pretty simple. but I'd never be able to explain it by typing the code into irc...
10:30:42  <dominictarr>substack: can you publish the new baudio on npm?
10:30:46  * timoxleyquit (Quit: Computer has gone to sleep.)
10:30:48  <dominictarr>it seems to be out of date
10:31:10  <dominictarr>oh, hang on
10:36:30  <substack>the new?
10:43:42  * timoxleyjoined
10:53:09  <dominictarr>okay, I got it working...
10:53:17  <dominictarr>but my old stuff is now playing half speed
10:55:33  <substack>how old?
10:56:31  <dominictarr>oh, figured it out.
10:56:45  <dominictarr>was playing sounds for two channels in one channel
10:59:33  * thl0joined
11:14:44  <dominictarr>substack: did you see this? http://www.youtube.com/watch?v=NnvynOyZI-Q
11:25:39  <dominictarr>jjjjohnn1y: webaudio is not on github!
12:01:48  * Guest67151changed nick to jden
12:23:47  * Domenic_quit (Ping timeout: 260 seconds)
12:31:18  * nicholasfquit (Read error: Connection reset by peer)
12:31:44  * nicholasfjoined
12:31:51  * AvianFlujoined
12:33:39  * thl0quit (Remote host closed the connection)
12:39:19  * AvianFluquit
12:39:30  * AvianFlujoined
12:39:50  * AvianFluquit (Client Quit)
12:42:39  * AvianFlujoined
13:05:06  * yorickjoined
13:17:00  * thl0joined
13:17:11  * shuaibjoined
13:18:58  * jcrugzzjoined
13:21:18  * fallsemojoined
13:23:55  * jcrugzzquit (Ping timeout: 264 seconds)
13:24:02  * shuaibquit (Read error: Connection reset by peer)
13:24:29  * kevino80joined
13:24:42  * blingcoderjoined
13:29:08  * shuaibjoined
13:36:18  * tmcwjoined
13:47:16  * AvianFluquit (Remote host closed the connection)
13:50:31  * jxsonjoined
13:52:10  * AvianFlujoined
13:53:57  * fallsemoquit (Quit: Leaving.)
13:59:04  * mikolalysenkojoined
14:03:58  <ralphtheninja>dominictarr: http://radar.oreilly.com/2013/05/bitcoin-is-a-money-platform-with-many-apis.html
14:07:16  * no9quit (Ping timeout: 256 seconds)
14:07:17  <dominictarr>good article
14:07:17  * num9quit (Ping timeout: 252 seconds)
14:07:51  <ralphtheninja>yup, by one of the guys in lets talk bitcoin
14:09:42  * jxsonquit (Remote host closed the connection)
14:12:26  * fallsemojoined
14:18:51  * fallsemoquit (Quit: Leaving.)
14:19:42  * jxsonjoined
14:19:55  * Domenic_joined
14:24:33  * ins0mniaquit (Remote host closed the connection)
14:25:02  * AvianFluquit (Remote host closed the connection)
14:31:36  * jxsonquit (Remote host closed the connection)
14:32:53  <dominictarr>substack: http://mashable.com/2013/05/24/3d-printed-ear-princeton/#:eyJzIjoiZyIsImkiOiIxMTU5Mzg2MTQwMTg4NzI4Mzg4MzgifQ
14:33:22  <dominictarr>bionic ear that lets you hear radio
14:34:52  * AvianFlujoined
14:37:51  * jxsonjoined
14:45:04  * shuaibquit (Quit: Textual IRC Client: http://www.textualapp.com/)
14:46:23  * yorickquit (Remote host closed the connection)
14:47:01  * fallsemojoined
14:47:59  * nicholasfquit (Ping timeout: 252 seconds)
14:58:07  * no9joined
14:58:27  * num9joined
15:00:36  * jxsonquit (Remote host closed the connection)
15:07:19  * yorickjoined
15:12:30  * yorickquit (Remote host closed the connection)
15:16:05  * jxsonjoined
15:17:30  * yorickjoined
15:19:29  * AvianFluquit (Remote host closed the connection)
15:20:33  * jxsonquit (Ping timeout: 248 seconds)
15:21:22  * jxsonjoined
15:21:23  * dguttmanjoined
15:26:16  * AvianFlujoined
15:26:16  * brianloveswordsquit (Excess Flood)
15:27:18  * brianloveswordsjoined
15:30:55  * dguttmanquit (Quit: dguttman)
15:35:20  * sorensen_joined
15:38:24  * thl0quit (Ping timeout: 245 seconds)
15:39:14  * thl0joined
15:39:14  * sorensen_quit (Client Quit)
15:43:22  * dguttmanjoined
15:46:42  * AvianFluquit (Remote host closed the connection)
15:51:55  * defunctzombie_zzchanged nick to defunctzombie
15:52:29  * dguttmanquit (Quit: dguttman)
15:54:10  * AvianFlujoined
15:56:06  * shamajoined
16:10:51  * jcrugzzjoined
16:14:03  * ryanseddonquit
16:18:24  * mikolalysenkoquit (Ping timeout: 245 seconds)
16:20:24  * pikpikquit (Ping timeout: 261 seconds)
16:27:11  * mikolalysenkojoined
16:29:45  * jxsonquit (Remote host closed the connection)
16:31:34  * AvianFluquit (Remote host closed the connection)
16:37:11  <Raynos>Dominictarr: pong
16:37:19  <dominictarr>yo
16:38:09  <isaacs>substack: so, it seems like st's semantics around the url mounting is a bit different from ecstatic's
16:38:27  <dominictarr>Raynos: I figured out how to do pull stream with multiple errors
16:38:41  <isaacs>substack: specificlaly st(__dirname+'/static') is not equal to st({path:__dirname+'/static',url:''})
16:39:27  <isaacs>substack: lmk when you become online and waking. i'm not opposed to changing the default to be more intuitive, but wanna make sure i grok what you're expecting it to do.
16:39:29  <dominictarr>you just make the error a stream of errors.
16:40:32  <mbalho>isaacs: ecstatic (and github.coms gh-pages http server) both have defaults, like '/' defaults to index.html and '/index' if 404 will try /index.html (you can specify the default extension to try on 404)
16:41:26  <dominictarr>which is also very similar to how node resolves .js files
16:41:50  <dominictarr>back later
16:45:41  * mikolalysenkoquit (Ping timeout: 252 seconds)
16:45:46  * thl0quit (Remote host closed the connection)
16:48:19  * timoxleyquit (Quit: Computer has gone to sleep.)
16:49:50  * shuaibjoined
16:57:26  <jjjjohnn1y>dominictarr: use https://npmjs.org/package/jsynth
16:58:51  <jjjjohnn1y>dominictarr: i've been waiting for advanced attachable ears
17:03:52  <jjjjohnn1y>dominictarr: http://secret.synth.fm/
17:05:48  <jez0990>jjjjohnn1y: you seen this before http://synth.bitsnbites.eu/ ?
17:05:58  * shuaibquit (Ping timeout: 252 seconds)
17:06:13  <jez0990>and what are your thoughts about loading in .wav samples? how does that fit into your vision?
17:07:27  <jjjjohnn1y>jez0990: pretty sweet
17:07:49  <jjjjohnn1y>jez0990: i have a module for loading files into web audio https://npmjs.org/package/jsynth-file-sample
17:09:31  * shuaibjoined
17:09:34  <jjjjohnn1y>it is slow in the b2a conversion, but its only meant for small samples, and I havent optimized it yet
17:10:14  <jez0990>jjjjohnn1y: awesome :)
17:10:26  <jjjjohnn1y>https://github.com/nhq/jsynth-file-sample
17:10:29  <jjjjohnn1y>theres the repo
17:10:46  <jjjjohnn1y>its tiny
17:10:47  <jjjjohnn1y>https://github.com/NHQ/jsynth-file-sample/blob/master/index.js
17:11:10  <jjjjohnn1y>loading waves with xhr as ArrayBuffers is even more straightforward
17:11:22  <jjjjohnn1y>just cut the base64 part out
17:11:40  <jjjjohnn1y>jez0990: try this out https://gist.github.com/NHQ/5610708
17:11:43  <Raynos>dominictarr: show me
17:11:45  <Raynos>show it me now
17:13:20  <jjjjohnn1y>the next update to the dsp live coder at secret.synth.com will keep yr compile diffs so you can go back, plus many more cool things
17:13:47  <jjjjohnn1y>and that is only one "synth" of many about to come through there
17:14:30  <jjjjohnn1y>by the way, if anybody wants to get a jump on making synthesizers, you will be able to distribute / integrate them with the synth.fm music playing platypus
17:14:51  <jjjjohnn1y>ie sell them app store like
17:15:18  <jjjjohnn1y>just use use https://github.com/nhq/jsynth
17:15:20  <jjjjohnn1y>as yr base
17:15:29  <jjjjohnn1y>or whatever
17:16:17  <jjjjohnn1y>if it can connect and / or recieve connections a la the web audio api, that is all that matters
17:16:18  <jez0990>jjjjohnn1y: the bells are great!
17:16:39  <jjjjohnn1y>THX ^_^
17:16:40  <LOUDBOT>BITCHES DON'T KNOW 'BOUT MY CYTOKINE STORMS
17:17:17  <jjjjohnn1y>YR MOM DO THO
17:17:17  <LOUDBOT>I KNOW, LET'S HAVE THE REMNANT OF HUMANITY GO TO THEIR CIVILIZATION'S REBIRTH ON THE CONTINENT WHERE HUMANITY WAS BORN, AT AN APPROPRIATELY NAMED LOCATION
17:18:10  * jxsonjoined
17:18:43  * mikolalysenkojoined
17:21:36  * defunctzombiechanged nick to defunctzombie_zz
17:21:44  <jjjjohnn1y>jez0990: the constants on line 15 do a lot
17:22:03  <jjjjohnn1y>you can change them for effect
17:22:13  <jjjjohnn1y>recompiling repeatedly has a cool effect
17:25:25  <jjjjohnn1y>i made this when I hacked that algoritmo https://soundcloud.com/the-pipes-of-unix/gaussian-one-way-2
17:28:15  <jjjjohnn1y>at 3:55 my lady says "i love you, but you have a long way to go before kraftwerk"
17:28:34  <mbalho>lol
17:29:31  * AvianFlujoined
17:30:13  * FAUNTLEjoined
17:30:21  * rchjoined
17:30:51  <jjjjohnn1y>i like the long way
17:35:47  * FAUNTLEchanged nick to fauntle
17:40:19  <dominictarr>Raynos: I'm not gonna implement it unless you can give me a real-world example that actually warrants it.
17:41:53  <Raynos>dominictarr: oh I see. I have none
17:42:21  <dominictarr>if we ever come across one, we can use that approach though
17:43:29  * jcrugzzquit (Ping timeout: 248 seconds)
17:47:06  * jcrugzzjoined
17:47:37  * dguttmanjoined
17:48:02  <dominictarr>jjjjohnn1y: jsynth demo doesn't work
17:48:36  <dominictarr>HUP HUP GUP
17:48:36  <LOUDBOT>THE ONLY SHIT I REMEMBER IS THE SHIT THAT CAME OUT OF MY ASS A FEW HOURS AGO
17:48:36  <dominictarr>Error: Cannot find module 'brfs'
17:48:51  <dominictarr>npm install brfs
17:49:01  <dominictarr>opa
17:49:02  <dominictarr>Server listening at http://localhost:11001
17:49:03  <dominictarr>HUP HUP GUP
17:49:03  <LOUDBOT>ALL EVENTS POSSIBLE ARE EQUALLY LIKELY TO OCCUR
17:49:04  <dominictarr>Error: module "./jsynth" not found from "/Users/dominictarr/c/jsynth/entry.js"
17:49:04  * shuaibquit (Ping timeout: 261 seconds)
17:49:16  * thl0joined
17:52:33  * shuaibjoined
17:57:08  * tmcwquit (Remote host closed the connection)
18:02:19  * shuaibquit (Ping timeout: 264 seconds)
18:03:33  * shuaibjoined
18:09:52  * dguttmanquit (Quit: dguttman)
18:13:31  * dguttmanjoined
18:15:35  * tmcwjoined
18:16:55  <isaacs>mbalho: right, so in ecstatic, if you don't specify a url folder, it mounts on /?
18:17:51  <mbalho>isaacs: i dunno what the url option does, all i know is that ecstatic will run a static file server from the directory you give
18:18:04  <isaacs>mbalho: i mean: ecstatic('/static')(req, res)
18:18:13  <isaacs>mbalho: if i request http://localhost/foo
18:18:17  <isaacs>mbalho: what gets loaded?
18:18:21  <isaacs>mbalho: ./static/foo?
18:18:32  <isaacs>mbalho: what if i do http://localhost/static/foo?
18:18:40  <isaacs>mbalho: will that look in ./static/static/foo?
18:18:41  * pikpikjoined
18:18:54  <mbalho>yea
18:18:57  <isaacs>i see.
18:19:12  <isaacs>so yeah, in st terms, the default "url" param is / rather than "path to static folders, minus cwd"
18:20:05  <isaacs>that's strictly simpler. i like it.
18:20:19  <mbalho>yea
18:20:25  <isaacs>but changing it requires updating some of my stuff, and is a potentially surprising breaking change.
18:20:29  <mbalho>the way st works seems liek it would confuse me every once in a while
18:20:46  <isaacs>mbalho: it's good when you have a ./static file that's ./static on the server.
18:21:29  <mbalho>i guess i dont expect urls and file system trees to match up
18:21:52  <mbalho>isaacs: are you in florida?
18:24:14  <mbalho>isaacs: also how do i get the path to the node core .js files on my system, the ones that `node` uses
18:31:59  * shuaibquit (Ping timeout: 260 seconds)
18:33:06  * shuaibjoined
18:34:04  <guybrush_>hey isaacs regarding st it doesnt parse the dot-arg properly https://github.com/isaacs/st/pull/18
18:34:40  * defunctzombie_zzchanged nick to defunctzombie
18:38:12  <dominictarr>ralphtheninja: so, I'm guessing that the bitcoin server guy is normally a c programmer
18:45:54  <isaacs>mbalho: no
18:46:01  <isaacs>mbalho: those files are not on your system.
18:46:05  <isaacs>mbalho: they're inside of node
18:46:27  <dominictarr>it's so disapointing to see some one use javascript to write C.
18:47:29  <dominictarr>this is a classic example: https://github.com/bitcoinjs/bitcoinjs-server/blob/master/lib/storage.js#L12-L51
18:47:38  <mbalho>isaacs: oh!
18:47:55  <mbalho>isaacs: i got an error like 'at Object.exports.resolve (path.js:313:15)' and was like NEED PATH
18:47:55  <dominictarr>could just be require('./db/''+storageProtocol+'/storage')
18:48:42  <isaacs>mbalho: it's at process.binding('natives').path
18:48:46  <isaacs>mbalho: that's where the code lives.
18:48:50  <isaacs>mbalho: once it's compiled.
18:49:07  <isaacs>mbalho: you can edit it in the node source code lib/ folder.
18:49:11  <isaacs>mbalho: then recompile and see your changes.
18:53:33  <chrisdickinson>dominictarr: or an object mapping!
18:53:56  <dominictarr>indeed.
18:54:13  <ralphtheninja>dominictarr: who do you mean?
18:54:22  <chrisdickinson>i suppose require'ing those storages has side effects
18:54:22  <ralphtheninja>aah ok
18:54:24  * jcrugzzquit (Ping timeout: 252 seconds)
18:54:26  <chrisdickinson>which is kind of sad
18:54:34  <chrisdickinson>otherwise i'd say just require 'em all at the top
18:54:38  <chrisdickinson>then map
18:54:41  <dominictarr>well, I'm assuming that it's mostly written by one guy
18:54:48  <ralphtheninja>yeah it is
18:55:03  <ralphtheninja>mostly
18:55:09  <dominictarr>best is each storage thing is an outside module
18:57:07  <ralphtheninja>dominictarr: https://github.com/spesmilo/libbitcoin
18:57:28  <ralphtheninja>that's amir taakis async c++ lib
18:57:33  <isaacs>mbalho: are you in florida?
18:58:02  <dominictarr>ralphtheninja: are you suggesting it's a direct 1:1 port?
18:59:11  <ralphtheninja>that what is a direct port of what? :)
19:00:19  <ralphtheninja>I saw amirs talk about async and realized he basically made his own node to get an asyncronous bitcoin implementation
19:01:06  <dominictarr>ralphtheninja: oh, so this is different to the satoshi one?
19:01:08  <ralphtheninja>I think the best way to get a node version of bitcoin is to start with one simple module and build ontop of that
19:01:19  <ralphtheninja>yeah that's another implementation of the bitcoin protocol
19:01:32  * shuaibquit (Ping timeout: 252 seconds)
19:01:37  <dominictarr>aha, but everyone uses amir's?
19:02:47  <dominictarr>there are other silly things too, like this: https://github.com/bitcoinjs/bitcoinjs-server/blob/master/lib/db/levelup/storage.js#L18-L37
19:03:00  <dominictarr>when you can just have Block.prototype.toJSON
19:03:23  <dominictarr>and then it gets used once, instead of c/p into every storage adapter
19:04:52  <ralphtheninja>nope, not everyone uses amirs .. bitcoind/bitcoin-qt is the reference implementation that gavin andresen et al codes
19:05:35  * shuaibjoined
19:06:28  <dominictarr>this one? https://github.com/bitcoin/bitcoin
19:06:37  <ralphtheninja>I was thinking that you could build a small core that basically just talks to other peers and stores the blockchain and then build modules for each functionality in the protocol
19:06:40  <ralphtheninja>yeah that's the one
19:07:15  <ralphtheninja>but it's a shitload of work :)
19:08:26  <dominictarr>you could probably get a long way by just tiding up bitcoinjs-server
19:08:51  <dominictarr>plus, if that dude learns to write js properly, then it's a double win
19:09:41  * jxsonquit (Remote host closed the connection)
19:10:17  <ralphtheninja>aye, or start from scratch and pick out the good parts from it
19:11:59  * shuaibquit (Ping timeout: 252 seconds)
19:14:06  * shuaibjoined
19:15:41  <jjjjohnn1y>dominictarr: lol HUP HUP GUP should mean its working, but I thought I took that out
19:15:42  <dominictarr>sure, but then you are working in parallel, instead of together
19:16:22  <dominictarr>maybe you havn't published your latest version?
19:16:26  <ralphtheninja>aye, you're right
19:17:27  <jjjjohnn1y>i am an embarassement to npm
19:18:56  * jxsonjoined
19:20:54  * mikealjoined
19:21:10  <dominictarr>and none of the examples are node.on('trx_to_me', ...)
19:22:00  <jjjjohnn1y>ok i fixed the entry file and pushed it
19:22:04  * jxsonquit (Remote host closed the connection)
19:22:37  <jjjjohnn1y>example should work
19:24:00  * paul_irish_changed nick to paul_irish
19:25:49  <dominictarr>ralphtheninja: looks like the core would be Block, Transaction, Script, and ScriptInterpreter
19:27:43  * shuaibquit (Ping timeout: 256 seconds)
19:28:22  <jjjjohnn1y>ralphtheninja: dominictarr are we gonna pay ourselved with distributed client side bitcoin mining or what?
19:28:23  <dominictarr>ralphtheninja: what about a struct.js lib, that let you transform c style structs to js objects and back?
19:29:00  <dominictarr>jjjjohnn1y: nah, gonna get everyone to fund open source with bitcoins
19:31:33  * jxsonjoined
19:31:56  * shuaibjoined
19:32:37  <jjjjohnn1y>dominictarr: the people who need ot be open funding open source are not not internet technology people, and probably won't go near bitcoin yet
19:33:12  <jjjjohnn1y>open source needs to be funded by non programmers, by particular industries or niches
19:33:19  <jjjjohnn1y>by the users
19:33:40  <dominictarr>hmm, that is a fair point.
19:33:41  <ralphtheninja>jxson: why funded by non programmers?
19:33:51  <ralphtheninja>jxson: sorry meant jjjjohnn1y
19:34:06  <dominictarr>my reasoning though, is that credit cards are horrible
19:34:17  <jjjjohnn1y>true
19:34:24  <dominictarr>but you could make a bitcoin module that just let you do
19:34:26  <jjjjohnn1y>dwolla looks neat
19:34:56  <dominictarr>bitcoins.on('pay_me', function (amt, bal) { this.pay(jjjohnny, 1) })
19:34:58  <dominictarr>that easy
19:34:58  <jjjjohnn1y>but i dont really care if the capital system has to get its cut so I can fund my cuts at the capital system
19:35:07  <ralphtheninja>jjjjohnn1y: bitcoin is still very experimental and lacks infrastructure for non internet technology people, but that will change
19:35:45  <dominictarr>also, the technology people who are into bitcoin need to fund bitcoin development
19:35:52  <jjjjohnn1y>ralphtheninja: yeah thats my point. it will be a while yet I predict, until you can get money from your uncle in bitcoin
19:35:54  <dominictarr>because bitcoin is opensource money
19:36:04  <jjjjohnn1y>unless greece or spain adopt it as their currency
19:36:10  <dominictarr>jjjjohnn1y: that is true
19:36:24  * jxsonquit (Remote host closed the connection)
19:36:31  <guybrush_>haha bitcoins.on('pay_me',fn) i would use that
19:36:34  <dominictarr>but it's like node
19:36:56  <jjjjohnn1y>however, if you can make an open source app that is used by millions, and you have them mine coin for you in another process
19:37:03  <dominictarr>you could say: oh, but you can build a perfectly fine block with php
19:37:23  <dominictarr>blog, I mean
19:37:39  <jjjjohnn1y>which is why I am always looking for an up to date implementation of the miner in JS.
19:37:41  * num9quit (Ping timeout: 248 seconds)
19:37:41  * no9quit (Ping timeout: 248 seconds)
19:38:10  <dominictarr>jjjjohnn1y: this is the sort of thing where you must be ahead of the curve.
19:38:20  <jjjjohnn1y>:(
19:38:34  <dominictarr>there is no point in waiting for some one else to write the miner, if you think that is a good plan.
19:38:45  <jjjjohnn1y>i am ahead of some curves, but not the crypto programming one
19:38:46  * kevino80quit (Remote host closed the connection)
19:38:51  * dguttmanquit (Quit: dguttman)
19:39:03  * jxsonjoined
19:39:26  <jjjjohnn1y>its cool, i mean, this stuff is still a short future away.
19:39:28  <dominictarr>jjjjohnn1y: If I had more free time I'd seriously consider this http://www.matasano.com/articles/crypto-challenges/
19:40:44  <dominictarr>anyway, it's not about crypto per se
19:40:54  <dominictarr>it's about technology development patterns
19:41:04  <dominictarr>read innovators delemma
19:41:10  <jjjjohnn1y>i was going to say laziness
19:41:25  <jjjjohnn1y>dominictarr: i am pretty clever at waiting
19:41:33  <jjjjohnn1y>i call it patience
19:41:39  * kevino80joined
19:42:58  <jjjjohnn1y>i guess i should read that
19:43:13  <dominictarr>you can read it while you are waiting
19:43:47  * mbalho1joined
19:43:57  * dguttmanjoined
19:45:16  * mikolalysenkoquit (Ping timeout: 240 seconds)
19:46:54  * no9joined
19:48:08  * defunctzombiechanged nick to defunctzombie_zz
19:48:20  * kevinohara80joined
19:49:21  <dominictarr>ralphtheninja: I figure that the basic stuff to handle the data should be one module
19:49:32  <ralphtheninja>gah there are so much code duplication
19:49:39  <dominictarr>because it could be useful to work with blocks etc on it's own
19:49:40  <ralphtheninja>and why have support for a million databases?
19:49:48  <dominictarr>indeed.
19:50:12  * yorick_joined
19:50:16  <dominictarr>when I see stuff like that, I'm like, why are you even using javascript?
19:50:21  <ralphtheninja>hehe
19:51:00  <dominictarr>just support one database, and hit the others with polyfils
19:51:20  <dominictarr>(naturally, that one database is levelup)
19:51:34  * Altreus_joined
19:52:31  * kevinohara80quit (Remote host closed the connection)
19:52:44  * jden_joined
19:52:59  <ralphtheninja>they have support for both levelup and leveldown
19:53:05  <ralphtheninja>ffs
19:53:51  * mbalho1quit (Remote host closed the connection)
19:54:41  * kevino80quit (Ping timeout: 276 seconds)
19:54:41  * ircretaryquit (Ping timeout: 276 seconds)
19:54:42  * yorickquit (Ping timeout: 276 seconds)
19:54:42  * jdenquit (Ping timeout: 276 seconds)
19:54:42  * Altreusquit (Ping timeout: 276 seconds)
19:58:02  * defunctzombie_zzchanged nick to defunctzombie
19:59:39  * kevino80joined
20:03:01  * defunctzombiechanged nick to defunctzombie_zz
20:03:05  <ralphtheninja>dominictarr: is there any advantage to use leveldown instead of levelup?
20:03:29  * num9joined
20:03:29  <dominictarr>mainly, it's a disadvantage
20:03:46  <dominictarr>maybe you could argue it's slightly more performant
20:03:55  * jxsonquit (Remote host closed the connection)
20:04:07  <ralphtheninja>nods, I know he's all about performance
20:04:08  <dominictarr>but I don't think that is a bottlekneck for this application
20:04:09  * AvianFluquit (Remote host closed the connection)
20:04:25  <ralphtheninja>what are the disadvantages? gonna try lobby for levelup
20:04:51  <dominictarr>well, with levelup, we can hook in all the levelup modules
20:05:16  <dominictarr>that is the biggest thing
20:05:22  <ralphtheninja>aah of course
20:05:24  <dominictarr>make it easy to work with the data
20:05:32  <dominictarr>which is what I really want.
20:06:43  <ralphtheninja>hmm so you could in theory export the levelup db from bitcoinjs-server and apply some level-* to it
20:07:30  <dominictarr>yeah!
20:07:41  <dominictarr>although, running them in the same process
20:07:48  <dominictarr>or, maybe adding some extensions
20:07:56  <dominictarr>and then connecting the app to it with multilevel
20:07:57  * shuaibquit (Ping timeout: 256 seconds)
20:08:28  * dguttmanquit (Quit: dguttman)
20:11:12  * dguttmanjoined
20:11:28  * mikolalysenkojoined
20:12:04  * dguttmanquit (Client Quit)
20:12:27  * shuaibjoined
20:12:34  * jxsonjoined
20:12:38  <ralphtheninja>dominictarr: multilevel in itself is a good argument for picking levelup
20:13:09  <ralphtheninja>so you could have a bitcoin node running and serve stuff over shoe or whatever
20:13:28  <dominictarr>exactly
20:13:50  <dominictarr>and the level-* community
20:14:01  <ralphtheninja>keep the bitcoin node simple and build stuff ontop of it via multilevel instead
20:14:04  <ralphtheninja>nods
20:14:07  <dominictarr>there could also be a btc-* community
20:14:22  <ralphtheninja>can you apply level-* on the other end of multilevel? like on the client side?
20:16:25  * AvianFlujoined
20:16:40  * defunctzombie_zzchanged nick to defunctzombie
20:18:57  * thl0quit (Ping timeout: 240 seconds)
20:20:29  * thl0joined
20:21:03  <dominictarr>some parts you can, but as a rule no.
20:21:30  <dominictarr>you need to have direct access to the database for anything that uses prehooks to work properly.
20:26:46  * jcrugzzjoined
20:45:27  <defunctzombie>substack: what is this sudoroom thing?
20:46:39  <substack>defunctzombie: east bay hackerspace
20:46:55  <defunctzombie>huh
20:48:01  <mbalho>east bay: a region of the san francisco bay area located on the east side of the bay
20:48:16  <mbalho>hackerspace: a place for hackers to hang out and work on projects
20:48:32  <defunctzombie>thank you
20:49:36  <dominictarr>defunctzombie: what do you do to integrate into bitcoin stuff? what modules do you use?
20:50:08  <defunctzombie>dominictarr: depends on what you need to integrate with and how
20:50:22  <defunctzombie>dominictarr: https://github.com/bitfloor/node-bitcoin
20:50:39  <defunctzombie>I use that to talk to the bitcoind client when I don't need to many crazy custom things
20:50:58  <defunctzombie>dominictarr: https://github.com/bitfloor/bitcoinjs-lib
20:51:14  <defunctzombie>I use that if I want to do some address/custom related things without the whole client or blockchain
20:52:19  <dominictarr>right, ralphtheninja and I had just been looking at the more recent version of that lib bitcoinjs-server
20:52:19  * dguttmanjoined
20:52:36  <dominictarr>very disapointed at how unmodular it was :(
20:52:42  <defunctzombie>yea
20:52:43  * thl0quit (Ping timeout: 256 seconds)
20:52:48  <defunctzombie>I started to make it more modular
20:52:54  <defunctzombie>thus I pointed you at my fork
20:53:00  * thl0joined
20:54:06  <dominictarr>yes, I can trust you would do a good job of that.
20:54:37  <dominictarr>there is a long way bitcoinjs-server needs to come before it's stackvm compatible
20:54:45  <defunctzombie>yes
20:54:52  <defunctzombie>I haven't even touched the server stuff
20:55:22  <defunctzombie>and the -lib stuff has things that need to be separate libs and other parts that should just be "examples" as they are really too high level
20:55:42  <defunctzombie>stefan (guy who started the project) is now working on ripple
20:55:49  <defunctzombie>so this project doesn't get much love
20:55:58  <ralphtheninja>oh my
21:03:05  * shuaibquit (Ping timeout: 252 seconds)
21:03:59  * shuaibjoined
21:06:23  <dominictarr>he works at ripple?
21:06:51  <dominictarr>defunctzombie: but how did you import the bitcoin blockchain?
21:07:07  <defunctzombie>dominictarr: ?
21:07:30  <dominictarr>oh, you didn't need to
21:08:22  <defunctzombie>depends what you want to do and what you are talking about :)
21:12:09  * jxsonquit (Remote host closed the connection)
21:12:12  <defunctzombie>anyone know anything about boost.vc ? I am thinking about applying for their summer "class" to work on courseoff stuff
21:17:01  * yorick_quit (Remote host closed the connection)
21:19:21  * shuaibquit (Remote host closed the connection)
21:19:54  * shuaibjoined
21:21:09  * defunctzombiechanged nick to defunctzombie_zz
21:23:19  * jcrugzzquit (Ping timeout: 264 seconds)
21:23:44  * jcrugzzjoined
21:23:44  * jcrugzzquit (Client Quit)
21:23:53  * jcrugzz_joined
21:24:06  * dguttmanquit (Quit: dguttman)
21:25:11  * defunctzombie_zzchanged nick to defunctzombie
21:27:17  * defunctzombiechanged nick to defunctzombie_zz
21:27:22  * defunctzombie_zzchanged nick to defunctzombie
21:28:59  * jxsonjoined
21:31:33  * jxsonquit (Remote host closed the connection)
21:32:09  * dguttmanjoined
21:35:15  * dguttmanquit (Client Quit)
21:36:44  * jxsonjoined
21:38:00  * AvianFluquit (Remote host closed the connection)
21:40:26  * dominictarrquit (Quit: dominictarr)
21:41:48  * blingcoderquit (Quit: leaving)
21:42:05  * dominictarrjoined
21:47:49  * paul_irishquit (Ping timeout: 248 seconds)
21:49:11  * nicholasfjoined
21:49:23  * shuaibquit (Ping timeout: 256 seconds)
21:50:28  * shuaibjoined
21:50:37  * shuaibquit (Client Quit)
21:50:59  * paul_irishjoined
22:01:31  * nicholasfquit (Read error: Connection reset by peer)
22:01:53  * nicholasfjoined
22:03:00  * jxsonquit (Remote host closed the connection)
22:04:19  * thl0quit (Ping timeout: 260 seconds)
22:05:49  * thl0joined
22:07:21  * timoxleyjoined
22:07:45  * kevino80quit (Remote host closed the connection)
22:09:12  * thl0quit (Remote host closed the connection)
22:20:09  * dguttmanjoined
22:20:32  * defunctzombiechanged nick to defunctzombie_zz
22:22:21  * defunctzombie_zzchanged nick to defunctzombie
22:27:02  <jesusabdullah>dominictarr: pull streams remind me a little bit of python iterators
22:27:04  <jesusabdullah>dominictarr: kind of
22:28:54  <dominictarr>is that a good thing?
22:29:21  <dominictarr>anyway, that is what I mean when I say they are all the same abstraction.
22:30:40  * jcrugzz_changed nick to jcrugzz
22:33:18  <jesusabdullah>dominictarr: yeah, it kind of is
22:33:48  <jesusabdullah>dominictarr: because it's "lazy" the same way pull-streams are, in that it only has to calculate the next value when something pulls on it
22:34:45  <dominictarr>yeah, turns out that is super useful
22:35:10  <jesusabdullah>right, that's the useful part of python iterators
22:35:19  <dominictarr>I was reluctant to leave classic-streams at first, but eventually raynos showed be the light
22:38:09  <substack>if I just keep using through will I get all the new-fangled benefits without updating my code?
22:39:26  <dominictarr>in some cases it's easy to drop in through
22:39:41  <dominictarr>if you only do this.queue(…) that works
22:39:44  <dominictarr>with pull-through
22:40:00  <dominictarr>but if you do t = through()
22:40:05  <dominictarr>t.queue(...)
22:40:30  <dominictarr>that doesn't work well, because the way that pull-streams are functions, not objects.
22:40:54  <dominictarr>but, it's not really a big deal, because pull-streams are very simple
22:44:49  * nicholasfquit (Remote host closed the connection)
22:56:50  * tmcwquit (Remote host closed the connection)
22:59:06  * AvianFlujoined
22:59:16  * mikolalysenkoquit (Ping timeout: 276 seconds)
23:02:25  * dguttmanquit (Quit: dguttman)
23:05:18  <jesusabdullah>https://github.com/joyent/node/issues/5596 hehe
23:05:39  <jesusabdullah>waiting for the "y ur using writeFileSync??" "does it matter there is still a perf problem here"
23:07:07  * jcrugzzquit (Ping timeout: 264 seconds)
23:10:16  <dominictarr>this guy has figured out enough, he could make a pull request
23:11:28  * ins0mniajoined
23:11:37  <AvianFlu>jesusabdullah: there's a lot of lulz in core issues quite a bit of the time
23:11:54  <AvianFlu>did you see the one where the dude made like 40 lines of libuv changes in node's deps/libuv folder?
23:12:05  <AvianFlu>I saw that a few minutes ago and was deeply amused
23:12:35  <jesusabdullah>yeah AvianFlu I Actually Follow node
23:12:43  <jesusabdullah>AvianFlu: did not actually see the libuv changes one
23:12:48  <jesusabdullah>where's that? XD
23:12:57  <AvianFlu>I'll link
23:13:05  <AvianFlu>I've spent a lot of today reading over node and libuv issues
23:13:24  <AvianFlu>https://github.com/joyent/node/pull/5595
23:13:38  <AvianFlu>also bonus points cause it's one big commit that touches like 6 different files
23:13:54  <AvianFlu>OH MAN
23:14:05  <AvianFlu>I DIDN'T LOOK AT HIS FIXTURE UNTIL JUST NOW
23:14:05  <LOUDBOT>CAN I SCRAP THE SYSTEM AND START OVER!
23:14:06  <AvianFlu>that's kinda priceless by itself
23:14:08  * elliottcablechanged nick to elliottcable^
23:14:22  <defunctzombie>well, to be fair all the code is in the one repo
23:14:30  <AvianFlu>yeah it's true
23:14:34  <defunctzombie>so from the standpoint of a user
23:14:39  <defunctzombie>they fixed it in the project
23:15:02  * elliottcable^changed nick to ^lliott^able
23:15:12  <defunctzombie>this is why you don't copy the deps to your project unless you plan to maintain a separate "fork" of it
23:15:23  <jesusabdullah>AvianFlu: lolwut all the "fixes" are pure libuv
23:15:41  <AvianFlu>defunctzombie: static linking like this is an exception in my mind
23:15:47  * ^lliott^ablechanged nick to elliottcable^
23:15:48  <AvianFlu>node bundles that stuff for simplicity
23:15:51  <defunctzombie>yea
23:15:53  <AvianFlu>jesusabdullah: also yes lolz
23:15:58  <defunctzombie>there are never any good answers
23:16:03  <defunctzombie>people do what they are familiar with
23:16:07  <AvianFlu>this guy's ultimate point is probably a good one, about the windows stdio stuff
23:16:09  <AvianFlu>it's just kinda lulz
23:16:22  <jesusabdullah>yeah
23:16:22  <defunctzombie>in this case I would have favored github subrepo or whatever, but doesn't matter
23:16:22  <AvianFlu>and like BRO USE A LOOP IN THAT FIXTURE PLEASE
23:16:28  <defunctzombie>yea
23:16:29  <AvianFlu>right
23:16:30  <defunctzombie>that was funny
23:16:33  <jesusabdullah>defunctzombie: git submodules brah
23:16:39  <defunctzombie>yea.. that one
23:16:59  <defunctzombie>clearly I never use it
23:17:02  <AvianFlu>we use submodules when we take libuv as a static dep, but it still ends up in a deps/ folder
23:17:12  <defunctzombie>yea
23:17:14  <AvianFlu>so it's not really that different to me
23:17:40  <defunctzombie>isaacs: one thing that trumps namespaces for me is some sort of "hash" on what I expect to be installed via npm
23:17:54  <isaacs>hash?
23:17:59  <isaacs>defunctzombie: like a checksum hash?
23:18:00  * elliottcable^changed nick to elliottcable
23:18:03  <defunctzombie>yea
23:18:13  <defunctzombie>of the downloaded content
23:18:30  <isaacs>defunctzombie: you know that npm has this already, right?
23:18:41  <defunctzombie>?
23:18:47  <isaacs>defunctzombie: but it's only used for in-transit errors, because legacy codebase
23:18:54  <isaacs>defunctzombie: ie, not for locking down contents in a shrinkwrap
23:18:57  <isaacs>defunctzombie: but that IS hte plan
23:18:59  <defunctzombie>right
23:19:03  <defunctzombie>that is what I am talking about
23:19:07  <isaacs>right
23:19:08  <defunctzombie>when I list a dep v#.#.#
23:19:23  <defunctzombie>I really want to say a specific hash as well
23:19:26  <defunctzombie>or whatnot
23:19:42  <isaacs>well, you can just install it as dep@x.y.z and then do `npm shrinkwrap` and it'll lock down the hash
23:19:47  <isaacs>and if that chnages, then the install fails.
23:19:54  <isaacs>to track force publishes
23:20:05  <defunctzombie>ah
23:20:07  <defunctzombie>didn't know that
23:20:30  <isaacs>defunctzombie: well, it's vaporware for now :)
23:20:33  <isaacs>defunctzombie: like i said.
23:20:37  <isaacs>defunctzombie: because legacy shit code.
23:20:49  <isaacs>defunctzombie: but that's an explicit goal of the forthcoming rewrite
23:20:53  <defunctzombie>heh
23:21:03  <defunctzombie>I always found it weird that shrinkwarp was separate
23:21:07  <substack>whoa https://github.com/facebook/react/blob/master/package.json#L41
23:21:21  <defunctzombie>to me the whole notion of a module manager is to lock down deps
23:21:30  <isaacs>substack: you're famous!
23:21:49  * isaacsstill gets a kick out of this whole file. "Facebook has a package.json! squeee!"
23:22:01  <jesusabdullah>haha nice
23:22:04  <defunctzombie>non pinned dependencies ...
23:22:17  <isaacs>defunctzombie: you're too dogmatic!
23:22:23  <defunctzombie>yea
23:22:41  <defunctzombie>I like preservation of history :)
23:23:05  <substack>isaacs: pretty much yeah
23:23:09  <jesusabdullah>http://facebook.github.io/react/docs/syntax.html wut
23:23:15  <defunctzombie>substack: you need some browserify stuff to avoid those build.sh files :)
23:23:18  <substack>it seems like every frontend build tool is written in node
23:23:28  <substack>defunctzombie: I like sh files
23:23:36  <substack>I can just as well put them in package.json scripts but meh
23:23:50  <defunctzombie>I meant more along the lines of nothing at all :)
23:24:01  <defunctzombie>should just happen when you launch server.js or whatever
23:24:07  <substack>I only do that for apps though
23:24:16  <defunctzombie>unless you are making a static site for github pages or something
23:24:21  <substack>I don't want to build the whole bundle when my server.js fires up because that's slow
23:24:32  <defunctzombie>"Writing JavaScript with XML syntax."
23:24:33  <defunctzombie>wow
23:24:39  <defunctzombie>well, make it faster :p
23:24:41  <substack>and if my server crashes and comes back I don't want it to hang while the bundle recompiles
23:24:45  <substack>working on that
23:24:55  <defunctzombie>I have it rebuild all the time, never causes much problems
23:25:02  <defunctzombie>by the time I refresh the webpage it is good to go
23:25:31  <substack>isaacs: use of browserify is just an artifact of npm "winning"
23:26:24  <defunctzombie>+1
23:26:51  <isaacs>substack: yep
23:26:59  <isaacs>substack: well, not JUST an artifact.
23:27:09  <isaacs>substack: browserify is *helping* npm win
23:27:22  <isaacs>substack: as npm wins, browserify gets more useful, and vice versa.
23:27:27  * isaacsfeeling all symbiotic
23:27:47  <jesusabdullah>gross
23:27:50  <substack>virtuous cycles!
23:27:52  <defunctzombie>hahaha
23:27:57  <substack>npm is the kind of thing where network effects dominate
23:28:01  <defunctzombie>complementary
23:28:09  <substack>that's why I think all these little upstart competitors are so silly
23:28:13  <substack>like bower, jam, et all
23:28:42  <substack>if you publish to a smaller repository your options for dependencies are limited
23:28:44  <defunctzombie>I personally like browserify cause it works the best with my workflow
23:28:48  <defunctzombie>I am already using npm
23:28:53  <defunctzombie>so why would I use anything else?
23:30:05  <defunctzombie>isaacs: idea, apt-get repo like stacking of npm deps
23:30:08  <jesusabdullah>because component
23:30:29  <defunctzombie>isaacs: so instead of running a full clone of npm or whatnot, I can give it a list of priority check places
23:30:35  <isaacs>defunctzombie: yeah
23:30:43  <isaacs>defunctzombie: something like that is planned, but not exactly that
23:30:48  <substack>nice
23:30:51  <defunctzombie>this could also be the thing that handles all the github stuff, etc
23:31:08  <defunctzombie>cause you can just make "simulated" repo providers that do all the github passthrough, etc
23:31:34  <defunctzombie>all very hand wavey but could be interesting for those who want some level of isolated control (or maybe a company deployment setting)
23:35:20  <substack>isaacs: oh also, the binary dists of node for linux are really crappy
23:35:24  <substack>there's no `make install`
23:35:33  <substack>I want a dist of node that ships with nave
23:35:46  <substack>so you can just bootstrap into getting whatever versions you need
23:37:30  <defunctzombie>substack: I just use nvm
23:38:23  <isaacs>substack: why not just use nave, then?
23:38:32  <isaacs>substack: it's just a bash script, put it wherever
23:38:47  <substack>isaacs: because you need to have node and npm already installed
23:38:53  <isaacs>substack: nuh uh
23:38:53  <substack>oh wait...
23:38:56  <substack>!!
23:38:57  <substack>didn't know this
23:39:10  <substack>there should be a dedicated website explaining how to do this
23:39:13  <isaacs>substack: wget https://raw.github.com/isaacs/nave/master/nave.sh
23:39:23  <isaacs>substack: or curl https://raw.github.com/isaacs/nave/master/nave.sh > /usr/local/bin/nave
23:39:26  <isaacs>or whatever.
23:39:28  <substack>that's pretty sweet
23:39:52  <isaacs>substack: i made a dedicated website for you: https://github.com/isaacs/nave#installation
23:40:06  <substack>hooray!
23:40:17  <substack>I just need to update my mental firmware to take this into account
23:40:28  * elliottcablechanged nick to elliottcable^
23:40:38  <defunctzombie>isaacs: how is nave different from nvm?
23:40:38  <isaacs>:D
23:40:48  <isaacs>defunctzombie: nave is a shell script. nvm is a shell function.
23:40:53  * elliottcable^changed nick to elliottcable
23:40:53  <isaacs>defunctzombie: nave doesn't require you to source anything.
23:40:59  <isaacs>defunctzombie: and it leaves your parent env pristine
23:40:59  * elliottcablechanged nick to elliottcable^
23:41:07  <defunctzombie>isaacs: subshell?
23:41:10  <isaacs>defunctzombie: it does this by entering a bash child process
23:41:11  <isaacs>yes.
23:41:14  <isaacs>subshell
23:41:14  <defunctzombie>ah
23:41:19  <defunctzombie>hm
23:41:26  <isaacs>though, you can use `nave usemain 0.10` or whateer to install to the default global location
23:41:35  <defunctzombie>so if you want to just have node available to a user you always have to use nave?
23:41:41  <isaacs>like /usr/local or whatever.
23:41:45  <defunctzombie>the nice thing about nvm is that by sourcing it
23:41:52  <defunctzombie>I can have a local node installed and always available to use
23:42:02  <defunctzombie>without /usr/local or such
23:42:19  <defunctzombie>but to each his own
23:44:05  * fallsemoquit (Quit: Leaving.)
23:44:45  <isaacs>defunctzombie: sure, so, do something like this in your bashrc: `[ "$NAVE" == "" ] && nave use 0.8`
23:45:35  <defunctzombie>isaacs: you should make it replace the current shell (methinks there is some way to do that)
23:45:55  <defunctzombie>I will remember nave for my next deployments and maybe give it a try
23:46:18  <defunctzombie>too bad digitalocean snapshots can't be shared
23:46:24  <defunctzombie>otherwise would be cool to have a node ready one
23:46:29  <defunctzombie>for people to experiment with
23:51:46  * purrquit (Remote host closed the connection)
23:52:13  * purrjoined
23:52:50  * dominictarrquit (Quit: dominictarr)