00:00:41  <substack>tanepiper: trumpet
00:00:59  <substack>also check out https://npmjs.org/cheerio
00:01:15  <substack>except with cheerio you need to buffer the input
00:01:22  <substack>trumpet is more for streaming html transforms
00:01:41  <substack>but you can just use the scraping part
00:01:58  * dedis4quit (K-Lined)
00:03:38  <tanepiper>I'm looking at doing a Octopress-like tool that takes a template and MD and outputs the MD content in the template, but i'd like to make it streamy :)
00:04:32  <jjjjohnnny>should i sudo add-apt-repository?
00:04:36  <tanepiper>actually the base code uses cheerio
00:05:07  <st_luke>jjjjohnnny: I usually just edit my sources.list manually
00:05:37  <st_luke>can never remember the command
00:06:19  <st_luke>ubuntu studio is a good idea
00:11:53  <substack>I think my next OS install will just be arch
00:12:08  <substack>the first thing I do with a fresh ubuntu install is remove all the magic
00:13:00  <jjjjohnnny>yeha i could prolly go with less and add more
00:13:17  <ralphtheninja>I can recommend Lubuntu, much more lightweight with lxde
00:13:19  <substack>awesome thing: violin concerts on japanese commercial tv
00:14:11  <ralphtheninja>an option if you dislike Unity, which you do
00:14:24  <substack>I haven't even tried unity
00:14:42  <ralphtheninja>it's horrible
00:14:45  <substack>I just want the windows to not overlap and I want to turn off anything that takes up valuable screen real estate
00:15:09  <ralphtheninja>then I can recommend the awesome window manager .. it's .. awesome
00:15:34  <substack>I tried awesome but it took up too many pixels on the top of my screen
00:15:51  <substack>with some kind of bar thing
00:15:54  <substack>completely unacceptable
00:16:34  <ralphtheninja>oh yes, on a laptop it might not be optimal
00:16:36  <jjjjohnnny>YEAH HYPE THAT
00:16:36  <LOUDBOT>ACHIEVEMENT UNLOCKED: UNWASHED MASSES
00:19:59  <ralphtheninja>jjjjohnnny, st_luke you can just add a file to /etc/apt/sources.list.d/ folder and you're set
00:21:23  <jjjjohnnny>oh god i downloaded a linux music app with a gui why
00:25:08  <dominictarr>jjjjohnnny, PEER TO PEER DISTRIBUTED KICK STARTER!
00:25:27  <dominictarr>jjjjohnnny, just use mpg123
00:25:39  <dominictarr>(for music in linux)
00:26:22  <st_luke>ralphtheninja: that too, but putting things directly in sources.list is a habit after doing it forever
00:27:34  <ralphtheninja>old habits die hard :)
00:28:15  <st_luke>oh well, better than dealing with rhel repos
00:29:35  <jjjjohnnny>dominictarr: i am interested in a kickstarter where people become investors, which will be legal when some law goes into affect
00:30:02  <dominictarr>the JOBS act
00:30:24  <dominictarr>that comes in on Jan first I think
00:31:03  <jjjjohnnny>a p22 app to launch the service to invest in the company mode of action would make a splash
00:31:08  <jjjjohnnny>p2p
00:31:52  <dominictarr>I thought of this when I saw that some one was sueing kickstarter & a project over a patent thing
00:31:57  <jjjjohnnny>people who got on the network thru the app would feel important and give up the moneys
00:33:27  <st_luke>if I rig up a telescope by my office window with an arduino and a web app to control the zoom/focus/direction I wonder if anyone would use it
00:33:34  <st_luke>it's a pretty good view of the lower manhattan skyline
00:35:41  <ralphtheninja>that's a cool idea, I'd try it
00:36:32  <ralphtheninja>smoke a bowl and sit there for hours lol
00:37:16  <st_luke>I could do a system where you get unlimited time until someone's waiting in line, then people get 5 minute turns to control it, and everyone else can watch it in the meantime
00:38:38  * tilgoviquit (Remote host closed the connection)
00:38:50  <dominictarr>put it on wheels so we can drive it around your office!
00:39:09  <ralphtheninja>hehe
00:47:31  <substack>http://motherboard.vice.com/2012/11/21/meet-the-robot-that-makes-360-gourmet-burgers-per-hour
00:47:37  <substack>^ this is the future
00:50:38  <dominictarr>jjjjohnnny, http://www.vice.com/read/i-went-to-syria-to-learn-how-to-be-a-journalist
00:51:44  <dominictarr>substack, that looks about 100 times better than McD's
00:52:58  <substack>it's odd that existing burger chains haven't rolled out more automation
00:53:13  <substack>they have the scale to make it immediately profitable
00:53:31  * yorickquit (Read error: Connection reset by peer)
00:53:52  <substack>they're too invested into human labor probably
00:55:41  <ralphtheninja>that would be awesome, then people could do something useful instead of being slaves for Sauron
00:55:49  <dominictarr>substack, and low quality
00:56:32  <substack>ralphtheninja: most people wouldn't do anything useful
00:56:33  <dominictarr>McD couldn't just go and start using really good ingredients, it would have to totally change it's whole supply chain
00:56:35  <substack>but that's not important
00:56:46  <dominictarr>sure it is
00:56:48  <substack>the important part is that useful people would be free to be useful
00:56:57  <dominictarr>yes
00:56:58  <substack>not everybody needs to be useful
00:57:09  <dominictarr>but not from McD's perspective
00:57:20  <substack>it can be a lot of fun just going out and exploring and being useless
00:57:42  <substack>and away I go, off to the airport
00:57:45  <dominictarr>from McD's view, there are two types of important people, people who make burgers, and people who eat burgers
00:58:17  <dominictarr>substack, good trip
00:58:21  <substack>and most importantly, people who make money taking the burgers that people make and selling them to other people who eat them
00:58:54  <st_luke>how long until those hamburger robots make a drum circle
00:59:10  <substack>st_luke: write a hamburger robot virus
00:59:16  <rowbit>Hourly usage stats: [developer: 0, free: 28]
00:59:34  <st_luke>substack: that seems like it would be a cruel thing to do
00:59:50  <st_luke>for the robot
00:59:58  * substack&
00:59:59  <LOUDBOT>WTF/MINUTE LIMIT EXCEEDED. PLEASE INSERT HEAD INTO BUCKET OF SAND
01:02:21  <ralphtheninja>substack: I meant useful as in doing something useful for themselves
01:02:31  <ralphtheninja>for whatever reason
01:03:15  <dominictarr>LOUDBOT, twitlast
01:03:16  <LOUDBOT>http://twitter.com/LOUDBOT/status/271418533349560320
01:03:43  <Raynos>whats the most
01:03:45  <Raynos>dead simple way
01:03:49  <Raynos>to replicate leveldb
01:05:37  <ralphtheninja>substack: safe travels
01:06:50  <dominictarr>Raynos, there is an example in the readme, but it's only master slave
01:07:02  <Raynos>really
01:07:02  <dominictarr>it depends on what sort of data you are using.
01:07:24  <dominictarr>you just db.readStream().pipe(db.writeStream())
01:07:28  <Raynos>which readme
01:07:32  <dominictarr>levelup
01:07:43  <Raynos>oh thats copy
01:07:45  <Raynos>not replicate :P
01:08:07  <dominictarr>so, the next most simple way, would be to use a scuttlebutt pattern
01:08:31  <Raynos>replicate to me means synchronizing two ranges
01:08:36  <dominictarr>we could hook that up pretty easy with the stuff I've been working on
01:08:56  <Raynos>what about just sending the entire range
01:08:57  <Raynos>from both ends
01:09:01  <Raynos>and calling merge(a, b)
01:09:02  <Raynos>for each one
01:09:07  <dominictarr>that would work
01:09:17  <Raynos>with an optional handshake up front
01:09:20  <Raynos>to not send entire range
01:09:24  <Raynos>but only different values
01:10:09  <Raynos>stream.pipe(replicate(db, { start, end }).pipe(stream)
01:10:17  <dominictarr>I have an test in map-reduce that writes a update log
01:10:53  <dominictarr>would be cool to use different replication strageties for different key ranges
01:11:24  <Raynos>yeah
01:11:44  <Raynos>replicate(db, { start, end, merge, headshakeStrategy })
01:12:12  <Raynos>maybe also options
01:12:14  <Raynos>to read and write
01:12:17  <Raynos>so you can say
01:12:30  <Raynos>replicate(db, { read }).pipe(replicate(db, { write })
01:12:49  <Raynos>aw man
01:13:02  <Raynos>db.use(function (db) {
01:13:03  <Raynos> db.replicate = function () { ... }
01:13:03  <Raynos>})
01:17:12  <dominictarr>Raynos, the data is a global scope inside the db, with potential collisions, so having separate functions and shit on the outside doesn't help much
01:17:33  <Raynos>seperate functions are clean
01:17:36  <Raynos>because they are functions
01:17:40  <Raynos>and they export one thing
01:18:03  <dominictarr>but they have side effects
01:18:06  <dominictarr>on the database
01:18:08  <Raynos>I prefer the seperate function as a style choice
01:18:12  <dominictarr>so they arn't clean
01:18:36  <Raynos>its less magic
01:18:40  <Raynos>then something monkey patching the db
01:18:42  <dominictarr>this way reflects the underlying nature of the database
01:18:53  <Raynos>its simply cleaner api wise
01:19:20  <Raynos>db.use(replication) db.replicate(...) vs replicate(db, ...)
01:19:25  <Raynos>less bullshi
01:20:19  <dominictarr>if the database had internal closuers, I would do it that way
01:21:29  <dominictarr>you are sticking to a principle too strictly, I'm breaking the rules because I understand their purpose.
01:22:15  * st_lukequit
01:22:56  <Raynos>its not that im stickign too it too strictly
01:23:03  <Raynos>its that im saying one function call is simpler api wise then two
01:23:12  <Raynos>i dont see the benefit to the middleware pattern in this case
01:27:16  <dominictarr>well, nothing is set is stone yet
01:28:35  <ralphtheninja>can I use shoe to connect to a websocket on another site?
01:28:52  * AvianFlujoined
01:29:05  <Raynos>dominictarr: that was a genuine question of why are you breaking the rule. whats the benefit. whats the point
01:29:34  <Raynos>ralphtheninja: yes.
01:30:23  <ralphtheninja>var sock = shoe('www.somesite.com/namespace') ?
01:30:52  <Raynos>yes
01:31:05  <ralphtheninja>eeeexcellent *rubs hands like Mr Burns*
01:31:08  <Raynos>like var sock = shoe("//signalchannel.co/sock")
01:31:38  <dominictarr>Raynos, mainly, because the plugins must mutate the db inside, anyway
01:32:01  <dominictarr>so you need to know if you are, say, already queuing stuff in this database
01:32:18  <Raynos>just patch the db parameter in your function
01:32:19  <dominictarr>so, you should mutate it on the outside too
01:32:47  <dominictarr>you'd need to leave a mark on the db object, so the next time it's called you know what is up
01:32:59  <Raynos>thats fine
01:33:07  <dominictarr>or you'd have to track all these extra queue objects
01:33:07  <Raynos>or you use a weakmap
01:33:10  <dominictarr>and stuff
01:33:27  <dominictarr>weak map won't work in the browser
01:33:40  <Raynos>require("weakmap")
01:33:41  <Raynos>done.
01:33:50  <dominictarr>in the browser?
01:33:56  <Raynos>yes
01:34:05  <Raynos>its has the weakmap garbage semantics
01:34:13  <Raynos>its just not as efficient as a native weakmap
01:34:23  <dominictarr>but does it actually work?
01:34:29  <Raynos>yes.
01:34:32  <dominictarr>okay,
01:34:34  <dominictarr>but anyway,
01:34:35  <Raynos>it may not work on host objects
01:34:51  <Raynos>I agree you have to mutate the db somehow
01:35:05  <dominictarr>you'd also need to use the right objects, like map-reduce uses a queue and some hooks
01:35:23  <dominictarr>so if you tried to add more queues there is the potential of collisions
01:36:14  <dominictarr>you need the queue to know that there is a queue there already, and add to that instead.
01:36:22  <Raynos>oh
01:36:27  <Raynos>so its a shared queue
01:36:32  <Raynos>just between map-reduce
01:36:35  <Raynos>or other modules too?
01:37:05  <Raynos>var queue = map.get(db)
01:37:05  <Raynos>if (!queue) { queue = Queue() map.set(db, queue) }
01:37:30  <Raynos>alternatively
01:37:37  <Raynos>mapreduce = MapReduce(db); mapreduce(...)
01:37:52  <Raynos>now if you had a thing where you wanted to use the same queue
01:37:57  <Raynos>between multiple "leveldb plugins"
01:38:02  <Raynos>then yes .use is the right thing
01:38:18  <Raynos>and you instruct your user to .use(queue).use(mapreduce)
01:40:05  <dominictarr>Raynos, other modules too
01:40:31  <Raynos>how would you co-ordinate it other then tell the user "apply the queue before mapreduce and X"
01:40:40  <Raynos>oh I know
01:40:52  <dominictarr>correct. that is basically how it has to be,
01:40:55  <Raynos>function mapReduce(db) { var queue = require("queue/get")(db) ... }
01:41:04  <Raynos>queue keeps an internal weakmap
01:41:14  <Raynos>and map reduce has dependency on queue and asks queue to fetch a queue for the db
01:41:27  <Raynos>now you dont need to care about it and X can use the same queue module with the same weakmap
01:41:28  * tphummeljoined
01:41:33  <Raynos>except you have npm dedup issues now :/
01:41:39  <Raynos>thats ok
01:41:44  <Raynos>use an Raynos/individual
01:42:10  <Raynos>but thats just as ugly as .use(queue).use(mapReduce)
01:42:11  <dominictarr>I feel like weakmaps are more magic than the way I'm doing it.
01:42:21  <Raynos>except the uglyness is pushed into the implementation
01:42:56  <dominictarr>yes, and I want it to be easy to implement additional plugins
01:43:14  <Raynos>implementing additional plugins is easy. Write functions
01:43:29  <Raynos>if two plugins need access to shared state they should both require the same module and that module should encapsulate shared state
01:43:41  <Raynos>alternatively the user bolts the shared state onto db up front
01:43:43  <Raynos>in the right order
01:44:09  <Raynos>i would prefer the weakmap approach as the user api surface is far cleaner
01:45:31  <dominictarr>can you post an example of how you use weakmaps?
01:45:39  <dominictarr>I'm not really familiar with them
01:46:32  <Raynos>https://github.com/Colingo/data-set/blob/master/index.js#L7
01:46:41  <Raynos>name me another plugin that might need queue
01:48:02  <Raynos>https://github.com/Raynos/chain-stream/blob/master/lib/transformations.js#L208
01:48:48  <mbalho>dominictarr: ya'll should come by
01:48:56  <mbalho>i'm at my house now
01:49:02  <mbalho>Raynos: cc
01:49:04  <mbalho>jjjjohnnny: cc
01:49:05  <mbalho>:D
01:49:12  <Raynos>i need to get some more work done
01:49:16  <Raynos>I may skip tonight
01:49:18  <Raynos>and instead hang tomorrow
01:49:36  <dominictarr>gonna be over shortly, via walgreens
01:49:40  <dominictarr>for string
01:49:40  <mbalho>dominictarr: cramforce is bringing his really expensive drone
01:49:53  <dominictarr>mbalho, you have sticky tape?
01:50:29  <mbalho>dominictarr: yea at least some electrical tape
01:50:36  <mbalho>dominictarr: no string though
01:50:46  <dominictarr>okay, I gotta gather some supplies
01:50:58  <dominictarr>also, can we order pizza or something ?
01:51:07  <dominictarr>or is there a taco truck nearby?
01:53:09  <mbalho>theres food nearby yea
01:53:15  <mbalho>late night taco truck
01:53:19  <mbalho>and thai food
01:53:50  <ralphtheninja>I learn a shitload every day by hanging in here, thanks for enduring my stupid questions
01:59:16  <rowbit>Hourly usage stats: [developer: 0, free: 33]
02:00:46  <dominictarr>no problem
02:02:36  <dominictarr>jjjjohnnny, are you gonna come to max's thing?
02:09:39  * ralphtheninjaquit (Quit: leaving)
02:11:10  * defunctzombiejoined
02:11:11  * defunctzombiequit (Changing host)
02:11:11  * defunctzombiejoined
02:11:20  * ralphtheninjajoined
02:12:57  * mikealquit (Quit: Leaving.)
02:15:28  * defunctzombiequit (Ping timeout: 246 seconds)
02:32:51  * jibayquit (Quit: Leaving)
02:35:25  * dominictarrquit (Ping timeout: 246 seconds)
02:36:21  <Raynos>juliangruber: ping
02:40:01  * saijanai_quit (Quit: saijanai_)
02:43:16  * tphummelquit (Quit: tphummel)
02:53:13  * tphummeljoined
02:59:16  <rowbit>Hourly usage stats: [developer: 0, free: 25]
03:04:35  <Raynos>dominictarr: you said to make mux demux respect pipe just make it a duplex right?
03:13:54  <Raynos>dominictarr: +1 on the new duplex api. much cleaner
03:17:53  <Raynos>https://github.com/dominictarr/mux-demux/pull/19
03:28:12  * defunctzombiejoined
03:28:13  * defunctzombiequit (Changing host)
03:28:13  * defunctzombiejoined
03:29:28  <defunctzombie>substack: ping
03:31:31  <jjjjohnnny>substack: what should i do to this drone
03:31:40  * dominictarrjoined
03:34:00  <jjjjohnnny>substack: what should i do to this drone
03:38:46  * jjjjohnnnnyjoined
03:39:13  * ralphtheninjaquit (Ping timeout: 265 seconds)
03:40:15  <jjjjohnnnny>substack what should I do to this drone to get started
03:42:15  <jjjjohnnnny>IS THING ON
03:42:15  <LOUDBOT>ONLY CAPSLOCK IS ALLOWED IN HERE
03:43:07  <jjjjohnnnny>ECHO ECHO ECHO ECHO ECHO
03:43:08  <LOUDBOT>NO MOOSE WHAT SORT OF SOFTWARE HOUSE IS THIS
03:59:16  <rowbit>Hourly usage stats: [developer: 2, free: 27]
04:03:32  * jjjjohnnnnyquit (Ping timeout: 248 seconds)
04:27:41  * tphummelquit (Quit: tphummel)
04:35:09  * jjjjohnnnnyjoined
04:58:15  <rvagg>CAPSLOCKSCRIPTBOT
04:59:16  <rowbit>Hourly usage stats: [developer: 0, free: 32]
05:54:55  * defunctzombiequit (Remote host closed the connection)
05:59:16  <rowbit>Hourly usage stats: [developer: 0, free: 29]
05:59:23  * shykeschanged nick to zz_shykes
06:19:01  <Raynos>dominictarr: https://github.com/Raynos/mux-memo#mux-memo
06:19:03  <Raynos>I hope the PROSE
06:19:05  <Raynos>pleases you
06:35:24  * jjjjohnnnnyquit (Ping timeout: 250 seconds)
06:48:22  * st_lukejoined
06:59:16  <rowbit>Hourly usage stats: [developer: 0, free: 49]
07:03:02  * jjjjohnnnnyjoined
07:06:06  * AvianFluquit (Remote host closed the connection)
07:23:21  * nk109quit (Read error: Operation timed out)
07:41:54  * jjjjohnnnnyquit (Ping timeout: 240 seconds)
07:47:51  * dominictarrquit (Ping timeout: 244 seconds)
07:59:16  <rowbit>Hourly usage stats: [developer: 0, free: 35]
08:12:48  * zz_shykeschanged nick to shykes
08:33:35  * thatguydanjoined
08:38:44  <chrisdickinson>yay, progress: https://gist.github.com/f11661ec7abd7d474fb9
08:55:04  <Raynos>cool!
08:59:16  <rowbit>Hourly usage stats: [developer: 0, free: 48]
09:13:42  * thatguydanquit (Quit: thatguydan)
09:40:24  * shykeschanged nick to zz_shykes
09:49:57  <hij1nx>substack: ping
09:50:35  <hij1nx>substack: does testling/browserling want a really big contract?
09:50:52  * TylerGilliesquit (Remote host closed the connection)
09:56:17  <Raynos>by very big contract do you mean `jitsu test` will run my unit tests in testling!
09:56:50  <Raynos>that doesn't make any sense.
09:57:15  * st_lukequit (Read error: Connection reset by peer)
09:59:16  <rowbit>Hourly usage stats: [developer: 0, free: 36]
10:02:55  * st_lukejoined
10:31:43  <Raynos>dominictarr: https://github.com/Raynos/signal-channel
10:31:46  <Raynos>More prose!
10:32:12  * st_lukequit (Remote host closed the connection)
10:32:43  <Raynos>The best thing about signal-channel
10:32:57  <Raynos>is that you can run the examples as `node examples/offer/index.js` or `chrome examples/offer/static/index.html`
10:33:10  <Raynos>exact same code. <3 p2p
10:59:16  <rowbit>Hourly usage stats: [developer: 8, free: 50]
11:02:08  * jibayjoined
11:59:16  <rowbit>Hourly usage stats: [developer: 0, free: 33]
12:30:42  * ralphtheninjajoined
12:57:33  * defunctzombiejoined
12:57:33  * defunctzombiequit (Changing host)
12:57:33  * defunctzombiejoined
12:59:16  <rowbit>Hourly usage stats: [developer: 4, free: 44]
13:02:16  * defunctzombiequit (Ping timeout: 255 seconds)
13:05:09  * dominictarrjoined
13:14:48  <Raynos>dominictarr: and remote-events pull that one too :D
13:17:15  <ralphtheninja>-n
13:17:17  <ralphtheninja>ups
13:18:11  <dominictarr>Raynos, looks good
13:18:27  <Raynos>btw: https://github.com/Raynos/signal-channel#signal-channel I wrote that prose you wanted :P
13:18:39  <Raynos>now substack is going to bitch at me for "TOO MUCH TEXT NOT ENOUGH CODE"
13:21:30  * jibayquit (Ping timeout: 260 seconds)
13:22:22  <Raynos>Does anyone know what time the thing happens tomorrow
13:22:25  <Raynos>or today
13:22:28  <Raynos>thanks giving!
13:24:30  * jibayjoined
13:25:05  <dominictarr>Raynos, 3pm I think
13:25:15  <Raynos>oh balls
13:25:18  <Raynos>I better sleep
13:25:27  <Raynos>there will be barely any time!
13:25:35  <Raynos>ill have to wake up early ish
13:26:59  <dominictarr>pleasant dreams
13:30:41  <ralphtheninja>damn, btc up over 12$ now
13:36:12  * djootjoined
13:40:25  <ik>i like turtles
13:55:02  * shuaibjoined
13:56:39  <hij1nx>substack: ping
13:58:30  <hij1nx>Raynos: what the are you talking about?
13:59:11  <hij1nx>Im talking about hundreds of thousands of dollars to integrate with telefonica.
13:59:16  <rowbit>Hourly usage stats: [developer: 0, free: 51]
13:59:54  <hij1nx>I can take the offer to sauce labs though if he doesnt want it.
14:01:43  <hij1nx>Raynos: it's simply offensive that you would mock my offer.
14:03:17  <juliangruber>Raynos: hi
14:04:25  <hij1nx>juliangruber: i dont think he's here atm.
14:05:30  <juliangruber>hij1nx: mkay, thanks :)
14:09:42  <ralphtheninja>he went to get some sleep
14:11:59  <hij1nx>probably not ideal to drive off people who are trying to offer business to your friends.
14:14:54  <ralphtheninja>what kind of business? if I may ask :)
14:15:47  <ralphtheninja>hij1nx: and btw, I didn't get a chance to thank you for your talk in Dublin, so thanks! found it very interesting
14:24:59  <Raynos>hij1nx: I didn't mean to mock. I was trying to think about how nodejitsu and testling can integrate to do something awesome.
14:30:42  * AvianFlujoined
14:30:52  <Raynos>If you have application infrastructure and testing infrastructure working together it should make it far easier to test as close to a production environment as you can.
14:36:14  <hij1nx>Raynos: im pretty sure what i need, that's why I wanted to ask substack. I'll shoot him an email
14:58:28  * defunctzombiejoined
14:58:28  * defunctzombiequit (Changing host)
14:58:28  * defunctzombiejoined
14:59:16  <rowbit>Hourly usage stats: [developer: 5, free: 81]
15:03:07  * defunctzombiequit (Ping timeout: 265 seconds)
15:30:11  * defunctzombiejoined
15:37:59  * tomshredsjoined
15:46:34  * tommybergeronjoined
15:46:53  * tommybergeronquit (Client Quit)
15:47:05  * tommybergeronjoined
15:47:17  * tommybergeronquit (Client Quit)
15:50:30  * tomshredsquit (Ping timeout: 264 seconds)
15:59:16  <rowbit>Hourly usage stats: [developer: 3, free: 63]
16:45:11  * sveisvei_joined
16:45:32  * sveisveiquit (Read error: Connection reset by peer)
16:45:43  * sveisvei_changed nick to sveisvei
16:53:09  * AvianFluquit (Remote host closed the connection)
16:55:13  * tphummeljoined
16:59:16  <rowbit>Daily usage stats: [developer: 62, free: 957]
16:59:17  <rowbit>Hourly usage stats: [developer: 0, free: 34]
17:19:54  * st_lukejoined
17:36:17  * tphummelquit (Quit: tphummel)
17:51:41  <defunctzombie>substack: for node required, do you really think it is worthwhile to maintain a cache across multiple require calls? It isn't that detrimental to just start afresh for each call to required
17:51:58  <defunctzombie>substack: also, did you still want the option to include the source in the output?
17:55:32  * st_lukequit (Remote host closed the connection)
17:57:46  * thatguydanjoined
17:58:01  * thatguydanquit (Client Quit)
17:58:05  * st_lukejoined
18:01:03  * lyaunzbejoined
18:24:44  * substackin minneapolis
18:24:51  <substack>didn't pay much attention to the return leg
18:24:59  <substack>anyways it was a cheap flight so whatevs
18:25:30  <substack>defunctzombie: I think what I actually need is not required() but var r = required(); r.require()
18:26:01  <defunctzombie>substack: why is that?
18:26:15  <substack>defunctzombie: because bundles are composed of multiple files that should all share a cache
18:26:27  <substack>but that cache should only work for the current instance
18:26:48  <defunctzombie>so my point was.. why do you care about this cache sharing?
18:26:53  <substack>otherwise compiling multiple bundles in the same process will fuck up and the cache will get stale/inconsistent
18:27:22  <defunctzombie>from the point of view of required, it just tells you what files would be included
18:27:31  <substack>also required uses detective, not deputy
18:27:33  <defunctzombie>how you consume that information is up to you
18:27:37  <substack>just use deputy, which has a caching layer already
18:28:13  <defunctzombie>what is the point of this caching?
18:28:19  <substack>defunctzombie: except that required is already doing the fs.readFile() and I'd like to avoid doing multiple reads for each file
18:28:22  <defunctzombie>I don't see why any of it is necessary
18:28:34  <substack>caching is SO necessary for browserify
18:28:43  <substack>shit gets really slow without aggressive caching
18:28:55  <defunctzombie>how slow?
18:28:57  <substack>because so many files get read
18:29:06  <substack>defunctzombie: 30+ seconds for a big build with jquery
18:29:19  <defunctzombie>what do you consider a big build?
18:29:36  <defunctzombie>30+ seconds? holy shit
18:29:44  <defunctzombie>I would like to reproduce that
18:29:49  <substack>hij1nx: pong
18:30:34  <substack>hij1nx: testling thing sounds excellent!
18:30:54  <defunctzombie>but yes.. I understand the desire to have the source pulled in by required, that would be a good use case for the options
18:31:31  <defunctzombie>do you have an open source project that I can run browserify on and watch it take 30 seconds?
18:39:19  <substack>defunctzombie: just require('jquery-browserify')
18:39:22  <substack>that's a good test
18:39:26  <defunctzombie>k
18:40:54  <substack>1263ms for me
18:41:00  <substack>> var t0 = Date.now(); require('./')('x.js', function (err, deps) { var e = Date.now() - t0; console.log(e); console.dir([ err, deps ]) })
18:41:38  <substack>on a cold cache
18:43:32  <defunctzombie>what is the require('./') here? and is this a required run? or a browserify run?
18:43:55  <defunctzombie>and what is x.js? haha
18:43:56  <substack>'./' -> 'required'
18:44:07  <substack>from the node-required directory
18:44:15  <substack>x.js: require('jquery-browserify');
18:44:18  <defunctzombie>k
18:44:19  <defunctzombie>thx
18:45:16  <defunctzombie>333ms on my box
18:45:21  <defunctzombie>(desktop)
18:45:30  <defunctzombie>cold cache
18:45:36  <defunctzombie>get a better computer :p
18:46:01  <substack>333ms is still ages
18:46:11  <substack>are you on an ssd or a spinning disk?
18:46:15  <defunctzombie>ssd
18:46:25  <defunctzombie>spinning disk? what is this, the 90's?
18:46:55  <defunctzombie>I bet most of that work is in the ast generation
18:47:11  <substack>possible
18:47:11  <defunctzombie>but I haven't profiled it to verify
18:47:17  <defunctzombie>reading the file should be a joke
18:47:23  <substack>also it would rock if required could give me streaming updates
18:47:45  <defunctzombie>in what sense?
18:47:54  <substack>especially if it's going to inline the source files with the deps
18:48:11  <substack>the way I'm writing browserify v2 is as a readable stream
18:48:25  <fotoverite>Stream all the things
18:48:31  <substack>so you can pipe its output to a bundle() which is just a through stream
18:49:07  <defunctzombie>well, I don't think the ast generation does streaming
18:49:13  <substack>it doesn't need to
18:49:21  <mbalho>HEY PEOPLE HAPPY HOLIDAYS
18:49:22  <LOUDBOT>I EXIST TO CONFIRM YOUR CONFIRMATION BIAS
18:49:22  <substack>required could just output each file as it reads it
18:49:33  <mbalho>substack: are you gonna be back in time for festivities
18:49:40  <substack>that way all the files don't need to be buffered into memory and the plugins can start processing right away
18:49:53  <substack>mbalho: well I've already experienced nov 22
18:49:57  <mbalho>substack: lol
18:50:05  <substack>but it's groundhogs day except thanksgiving also
18:50:15  <substack>it's nov 23 in japan right now
18:50:16  <defunctzombie>the issue that I can see there is that you lose the parent information
18:50:17  <mbalho>substack: is browserify v2 gonna have a json output option
18:50:25  <mbalho>cause thast my only feature req
18:50:37  <fotoverite>HAPPY HOLIDAY TO YOU MAX AND TO LOUDBOT!
18:50:37  <LOUDBOT>FRIJOLE I AM A FAN OF YOUR LOUDS
18:50:42  <substack>true story: I left japan nov 22 at 15:00
18:50:49  <defunctzombie>right now, the output of required is a tree
18:50:51  <fotoverite>LOUDBOT: tweetlast
18:50:51  <LOUDBOT>fotoverite: <INSERT OBVIOUS COMMENT ABOUT PHP'S CHEAPNESS HERE>
18:50:52  <substack>it's not even nov 22 15:00 here yet
18:51:18  <substack>mbalho: I get back to SF at like eveningtime
18:51:53  <substack>so probs I can PARTAKE in some FESTIVITY EVENTS
18:52:17  <mbalho>wewtz
18:52:51  <defunctzombie>substack: I ran a fs.readFileSync on that jquery lib and timed around it, 0ms
18:53:10  <defunctzombie>so I am pretty confident that the reading is not the issue :)
18:53:38  <defunctzombie>even with reading to utf8 that only accounts for 4ms
19:01:00  <defunctzombie>substack: detective does not work with latest esprima
19:04:58  <substack>!
19:05:33  <defunctzombie>substack: I have the fix
19:05:34  <substack>think I got a pull req for this
19:05:41  <defunctzombie>also, if you don't do the range stuff in detective
19:05:46  <defunctzombie>it is way way faster
19:06:01  <defunctzombie>yea, the fix is just to remove the +1 on line 38
19:06:07  <defunctzombie>when you do the slice
19:06:47  <defunctzombie>anyhow.. if you don't do the slice stuff (and subsequently don't pass range: true) then it is much faster
19:07:14  <substack>hooray
19:07:22  <substack>well that's good
19:10:05  <defunctzombie>I gotta run off (Turkey day activities). If you want the source option added just assign an issue to me with that and I will do it tonight. As for the cache, if after the detective changes you still think it is a worthwhile benefit I am not against it
19:10:18  <substack>ok sweet!
19:10:31  <substack>yes I will mill over the detective changes
19:10:39  <substack>I think perhaps a streaming interface would work best too
19:10:48  <substack>to avoid buffering all the files in memory
19:11:03  <substack>and to allow immediate streaming processing
19:11:17  <defunctzombie>that would be challenging with the current use of esprima
19:11:18  <substack>which is especially important for cpu-bound plugins like transpilers
19:11:29  <substack>the file reads don't need to be streaming
19:11:39  <substack>just every fs.readFile, emit a 'data' event
19:11:45  <defunctzombie>as for streaming for required, the major thing to consider is how that translates to the tree data currently in place
19:11:56  <substack>oh true
19:12:10  <substack>I'm basically just reconstructing the cache data structure for browserify
19:12:16  <substack>it works much better to have a flat structure
19:12:26  <substack>so I'm flattening everything
19:12:31  <substack>I'll push my v2 branch
19:12:43  <defunctzombie>I flatten in script, but that happens outside of required
19:12:53  <defunctzombie>once the full information is known to be able to flatten
19:13:09  <substack>but cache is already flattened
19:13:09  <defunctzombie>I mean.. basically we are talking about a map/reduce of sorts :/
19:13:22  <substack>just a key/value with file => ref
19:14:23  <substack>https://github.com/substack/node-browserify/blob/v2.0/index.js#L40
19:14:26  <defunctzombie>yea, which might be why it is possible to get away with just specifying the parent file
19:14:35  <defunctzombie>if a streaming like interface is desired
19:15:13  <substack>oh I have an idea!
19:15:22  <substack>so keep the regular callback api as-is
19:15:25  <substack>but return a stream
19:15:37  <substack>a stream that emits the source files with the dependency data
19:15:42  <substack>the stream is flat, the callback is nested
19:15:46  <defunctzombie>fascinating
19:16:01  <substack>I'll look into this approach
19:16:05  <defunctzombie>var stream = required('/some/file');
19:16:13  <defunctzombie>so if there is no callback it will just do it with the stream
19:16:18  <defunctzombie>yea, I could see this working
19:16:29  * yorickjoined
19:16:29  * yorickquit (Changing host)
19:16:29  * yorickjoined
19:16:30  <substack>well it could return a stream in either case
19:16:30  <defunctzombie>the only thing is that when you emit a source file
19:16:34  <defunctzombie>yes
19:16:49  <defunctzombie>if you emit a source file tho you don't have the dependency data for it yet
19:16:52  <substack>and it can emit the source files so it doesn't need to keep all the source files in memory while compiling
19:17:28  <substack>you don't have the nested dependency data but I'm only converting to the first-order dependencies anyways
19:17:35  <defunctzombie>unless you emit backwards, but then backwards you lose the in memory thing
19:17:52  <substack>https://github.com/substack/node-browserify/blob/v2.0/index.js#L67-L70
19:18:27  <substack>the callback can return the complete graph, the stream events can return the immediate dependencies
19:18:40  <defunctzombie>does that take into account require('a") within two separate modules possibly leading to two separate files?
19:18:55  <defunctzombie>because that can happen
19:19:05  <substack>yes it's keyed on the filename
19:19:06  <substack>not the id
19:19:08  <defunctzombie>k
19:19:36  <substack>oh also if required() returns a stream it could have a method require() to load another file and to use the same cache
19:19:55  <substack>this is important because browserify bundles can have multiple entry points and explit requires
19:20:11  <defunctzombie>sure
19:20:45  <substack>required(file, cb) could just be sugar for `var r = required(); r.require(file, cb); return r`
19:20:58  <defunctzombie>I will think on it as well, one thing I will note is that it may not be all that much of a gain in the end. the amount of information we are talking about loading into memory is very small :)
19:21:00  <substack>in which case you can ignore my cache PR
19:21:35  <substack>I have some gigantic production bundles I can test this against
19:21:42  <defunctzombie>good :)
19:21:52  <defunctzombie>try removing the range: true from detective
19:21:55  <substack>when you use a lot of modules from npm with a lot of dependencies, this stuff can get pretty big
19:21:56  <defunctzombie>and starting from there
19:21:59  <substack>right
19:22:45  <defunctzombie>holding text files in memory is not the real killer here :) but the streaming interface could lead to something interesting
19:23:25  <substack>also at some point I'd like to take a stab at forking esprima to be streaming
19:24:02  <defunctzombie>that sounds more challenging.. cause again, you have the tree like structure
19:24:17  <substack>actually the code is written in such a way that it shouldn't be very complicated
19:24:30  <substack>the get() function to grab the next token is already abstracted out
19:24:37  <substack>it's just sync when it needs to be async for streaming
19:25:32  <defunctzombie>I don't see how it benefits from streaming as it is single file based
19:25:36  <defunctzombie>and all cpu bound
19:26:04  <defunctzombie>there is no IO within esprima iirc
19:26:41  <substack>incremental processing
19:27:22  * defunctzombiequit (Remote host closed the connection)
19:29:15  <dominictarr>substack, your back in the Democratic Republic of the United States Of America?
19:29:48  <substack>affirmative
19:29:54  <substack>dominictarr: hilariously I'm in minneapolis
19:31:38  <dominictarr>connecting flight?
19:32:03  <substack>yep
19:34:30  <dominictarr>Is there anything notable about minneapolis ? was that where wayne from wayne's world lives?
19:34:54  <substack>possible
19:35:10  <substack>it's just really suburban and has harsh winters
19:35:37  <substack>and for some reason a ton of immigrants
19:35:57  <substack>maybe because it's so "american"
19:36:15  * tphummeljoined
19:36:18  <mbalho>ive heard minneapolis is similar to portland in culture
19:36:23  <mbalho>lots of bikes and culture
19:36:23  * st_lukequit (Read error: Connection reset by peer)
19:37:11  <substack>well people drink a lot of coffee but that is true of all cold places
19:37:54  <substack>https://en.wikipedia.org/wiki/File:Coffee_consumption_map-en.svg
19:38:22  <substack>russia should drink more coffee what is up with that
19:38:49  <dominictarr>oh, wasn't bob dylan from minneapollis?
19:40:23  * tphummelquit (Client Quit)
19:42:04  <dominictarr>brazil must be stealing the russian coffee and drinking it first
19:42:13  <dominictarr>that is the only logical explaination.
19:42:15  <substack>plausible
19:42:26  <substack>how is the coffee scene in NZ?
19:42:28  <dominictarr>it would fit with your theory
19:42:30  <dominictarr>good
19:42:45  <dominictarr>every cafe has an expresso machine
19:43:00  <dominictarr>if you are in a city, some places will know how to use it properly.
19:43:42  <dominictarr>(the same skinny tattooed baristas you'd get in portland)
19:52:22  <mbalho>well its not just knowing how to use an espresso machine
19:52:34  <mbalho>its whether or not they wanna pay more money to get higher quality coffee
19:52:44  <mbalho>this article and the follow up one are quite good http://timwendelboe.no/2012/11/coffee-is-cheap/
19:56:40  <ralphtheninja>what? the norwegians drink more than swedes? fuckers
19:57:51  * defunctzombiejoined
19:59:05  <ralphtheninja>http://en.wikipedia.org/wiki/List_of_countries_by_coffee_consumption_per_capita
20:03:47  <ralphtheninja>richard roger wrote a cool node module site http://nodezoo.com
20:06:27  * defunctzombiequit (Ping timeout: 276 seconds)
20:08:44  <mbalho>i was in helsinki last month and the coffee was mostly terrible
20:08:52  <mbalho>like most of the world
20:11:44  <substack>boarding planes is so silly
20:11:48  * zz_shykeschanged nick to shykes
20:11:50  <substack>everybody wants to get on right away
20:11:57  <substack>but the plane leaves at the same time just the same
20:12:17  <substack>I just wait until the line is empty
20:12:21  <mbalho>yea and you cant sleep till after takeoff anyway
20:12:24  <mbalho>i do the same thing
20:12:33  <ralphtheninja>haha I use the same strategy :)
20:12:34  <mbalho>charge up until the last minute
20:12:42  <substack>exactly
20:12:44  <substack>computering up
20:14:00  * shykeschanged nick to zz_shykes
20:17:09  * zz_shykeschanged nick to shykes
20:17:40  * fotoveritequit (Quit: fotoverite)
20:37:41  <dominictarr>doing a Raynos on https://github.com/rjrodger/nodezoo/issues
20:43:12  <ralphtheninja>doing a Raynos?
20:44:44  * Altreusquit (Ping timeout: 246 seconds)
20:48:38  <ralphtheninja>weird search function in nodezoo, searching for stream and get like 0 hits from Raynos
21:21:57  * tphummeljoined
21:27:53  * fotoveritejoined
21:28:39  * tphummelquit (Quit: tphummel)
21:29:15  <juliangruber>yipee, just finished my 1st streaming parser and its twice as fast as the version depending on split_by_header
21:36:15  <mbalho>ralphtheninja: probably cause raynos doesnt use keywords in his package.jsons
21:36:32  <mbalho>most of*
21:52:53  * tphummeljoined
21:53:23  * tphummelquit (Client Quit)
22:07:30  <dominictarr>juliangruber, what is it a streaming parser for?
22:08:04  <dominictarr>mbalho, ralphtheninja it uses a text index, so could also be that Raynos doesn't have enough ENGLISH text in his readmes
22:08:37  <dominictarr>"doing a Raynos" = posting heaps of issues all at once.
22:10:32  <dominictarr>juliangruber, rvagg last night I woke up with an idea that if interfaced with the level db binding the right way, then I could use my map-reduce stuff with both levelup ande leveled
22:10:36  <Raynos>jjjjohnnny: When am i supposed to be at your place?
22:11:13  <Raynos>mbalho: I only use keywords in my webrtc packages to whore my libraries in the webrtc list :D
22:11:24  <juliangruber>dominictarr: it's a parser for binary stock data that we receive over a tcp stream
22:11:58  <juliangruber>dominictarr: can you explain further about the levelup leveled interface?
22:13:27  <dominictarr>Raynos, jjjjohnnny says arrive like, 3? (but any time you want really)
22:13:43  <Raynos>I see
22:13:48  <Raynos>well I knind o wont make that :D
22:13:58  <dominictarr>3 - 5 is good
22:14:43  <dominictarr>juliangruber, well, for a range leveled is an async function that returns an array - but levelup returns a stream
22:15:29  <dominictarr>i could go each(db.range, iterator(key, val) {...})({start: ..., end: ...})
22:15:57  <dominictarr>and each could test if the stream returns a stream or not, but otherwise give me the same interface
22:16:04  * shykeschanged nick to zz_shykes
22:17:51  <juliangruber>dominictarr: I've recently been thinking a lot about unifying interfaces for kv stores. It sucks having so many
22:18:23  <dominictarr>yeah, the other difficult place is batch operations
22:18:29  <dominictarr>you have a chaining interface
22:19:06  <dominictarr>but levelup passes an array
22:20:02  <dominictarr>leveldb is a good starting place for kv store. it's the lowest common denomenator of databases.
22:20:08  <juliangruber>perhaps a wrapper lib that lets you use different kv stores through an standardized interface
22:20:32  <dominictarr>it would be easy to polyfill other kv stores to the leveldb api
22:20:45  <dominictarr>or sql stores as well
22:21:10  <dominictarr>(ofcourse, you are ignoring most of the high level features there)
22:21:18  <juliangruber>so the question is, how does the most node style api for leveldb look like
22:21:25  <juliangruber>and i guess that is levelup
22:21:30  <Raynos>juliangruber: levelup has a pretty good api
22:21:38  <juliangruber>except for batches, chaining is better
22:21:41  <dominictarr>but that is pretty much a given for a unified interface
22:21:54  <Raynos>"chaining is better"
22:22:05  <Raynos>juliangruber: chaining is optional sugar a developer should opt into
22:22:07  <dominictarr>it depends on what you are doing
22:22:08  <Raynos>not the core api
22:22:16  <juliangruber>having the method in a field of the array sucks
22:22:23  <dominictarr>we don't need to paint a bike shed!
22:22:24  <juliangruber>or object
22:22:24  <Raynos>i prefer composition over chaining
22:22:29  <juliangruber>{ method : 'put' }
22:23:00  <dominictarr>the array is easier if you are generating the batch programmatically
22:23:20  <dominictarr>chaining looks better in a readme example
22:23:25  <juliangruber>maybe
22:23:58  <juliangruber>require('key-value')({ backend : 'levelup' })
22:24:01  <dominictarr>what does leveled do under the chaining?
22:24:26  <juliangruber>just pass anything it gets to c, not growing anything in js and then pass that to c
22:24:28  <dominictarr>gozala has an interesting approach to generating unified interfaces
22:24:44  <Raynos>yeah i do like method
22:24:54  <Raynos>juliangruber: why do you want a unified key value API
22:25:05  <dominictarr>so each call gets passed to C?
22:25:44  <dominictarr>I want a unified interface so I can build high level features and then have the low level stuff compete on performance
22:25:49  <juliangruber>Raynos: because I want to use one api that can have multiple backends like in-mem or fs
22:26:04  <Raynos>i dont think like that
22:26:10  <Raynos>I just thing "use levelup"
22:26:14  <Raynos>if I want in memory, which I do
22:26:16  <juliangruber>dominictarr: yes, batch.put() goes directly to c
22:26:19  <Raynos>ill build an in memory cache
22:26:37  <dominictarr>we need to get janl in on this conversation, he wants to reimplement leveldb in js
22:27:01  <Raynos>i see
22:27:04  <Raynos>that should be fun
22:27:07  <juliangruber>dominictarr: i thought about that too, that would be very interesting
22:27:44  <dominictarr>juliangruber, for my purposes I want to intercept puts and turn it into batches, to atomically add things like changes logs, or to queue map-reduce work etc
22:27:51  <juliangruber>dominictarr: although every batch.put() call goes to c it's faster then levelup bc levelup also iterates over that array
22:28:21  <dominictarr>your use case is special
22:28:28  <juliangruber>yup
22:28:33  <dominictarr>you really do need max performance
22:28:38  <dominictarr>fuck everything else
22:28:55  <dominictarr>I need features more than performance
22:29:06  <juliangruber>That's why there's almost no js in leveled, nice features should be added by wrappers. It's just the binding
22:29:41  <dominictarr>yeah, I could easily wrap your batch in a thing take an array like levelup has
22:30:22  <dominictarr>but just call the chaining stuff while iterating over the array.
22:30:37  <juliangruber>eventually I think levelup could swap its binding with leveldb and only do the nice js things
22:30:44  <juliangruber>*with leveled
22:31:20  <juliangruber>or I provide a levelup compatible wrapper
22:31:25  <dominictarr>right. there are some places where there are different compromises made
22:31:32  <dominictarr>like the range function
22:31:40  <juliangruber>mhm
22:32:00  <dominictarr>you are right to buffer everything and return it in one go for raw speed
22:32:13  <dominictarr>but there are other cases where it's faster to go slowly
22:32:49  <dominictarr>like if you have to send it over the network, or don't know how much of the range you actually want
22:32:56  <juliangruber>that still can be implemented on top of leveled, like split the range in even chunks and create a stream from that
22:32:57  <dominictarr>you can do that better with streams
22:33:05  <dominictarr>yup
22:33:47  <juliangruber>still the unified interface would be nice...because leveldb needs c and with that come compilation issues etc
22:34:00  <juliangruber>would be nice to provide a js-only backend
22:34:14  <dominictarr>yeah, it would make it easy to get started
22:35:07  <dominictarr>I can imagine some weird cases where it would be desirable to use an SQL backend too (!)
22:35:16  <juliangruber>haha yes! :D
22:35:31  <dominictarr>like cases where external factors are preventing you from accessing local disk
22:35:44  <juliangruber>or redis
22:35:47  <dominictarr>like on PaaS
22:36:16  <dominictarr>the api is pretty simple, we can make reusable tests that spec the api
22:36:39  <dominictarr>and make it a separate module that all the implementations can just run
22:37:11  <juliangruber>like your stream-spec
22:37:36  <dominictarr>yeah, but it will be a much tighter spec
22:37:47  <dominictarr>can include benchmarks too!
22:38:13  <juliangruber>sweet :)
22:38:32  <dominictarr>this is totally the database of the future
22:38:38  <juliangruber>it is
22:38:51  <juliangruber>leveldb directly in node, it's a dream
22:38:57  <juliangruber>have your heared about kdb?
22:38:59  <dominictarr>hey juliangruber are you gonna go/put in a proposal for mountainjs?
22:39:07  <dominictarr>no, what is kdb?
22:39:43  <juliangruber>it's like node, you build network apps and especially databases in it
22:39:55  <juliangruber>it has it's own languages, q and k (which are short!)
22:39:59  <juliangruber>and is super fast
22:40:11  <dominictarr>link?
22:40:17  <juliangruber>http://thesweeheng.wordpress.com/2008/11/30/more-sudoku-solvers-in-k-and-q/
22:40:37  <juliangruber>I've been introduced to the languages with those snippets
22:40:49  <juliangruber>hard to not get your brain on fire
22:41:06  <dominictarr>oh no, it's super terse!
22:41:18  <juliangruber>but also mighty
22:41:22  <juliangruber>i'd never use it
22:41:34  <dominictarr>does it have a module system that could fit into npm?
22:41:42  <juliangruber>there are given functions whose implementation is shorter than the name
22:41:54  <juliangruber>dunno, it's commercial anyway
22:42:32  <juliangruber>for mointainjs: you mean a talk about dbs in javascript?
22:42:55  <juliangruber>but kdb is basically the same direction as node and leveldb and it is used by hugh companies in production
22:43:14  <dominictarr>well anything, I'm gonna submit a proposal, and it's in your neck of the woods!
22:43:43  <juliangruber>yeah cool, me too :)
22:43:59  <juliangruber>would be my first conference talk
22:44:11  <dominictarr>sweet, my talk will be on building high level features on top of leveldb
22:44:23  <dominictarr>as that is what I'm super excited about right now
22:44:34  <dominictarr>you've done meetup talks?
22:44:52  <juliangruber>only university and in-company talks
22:44:58  <juliangruber>but i like giving talks
22:46:03  <dominictarr>cool
22:46:12  <dominictarr>so, who uses kdb?
22:46:24  <dominictarr>it looks interesting
22:47:41  <dominictarr>I'm getting a finance industry vibe from it
22:47:56  <juliangruber>yup
22:48:18  <juliangruber>can't tell you any names but the guy that evaluated it in my company said so
22:50:35  <dominictarr>I have a friend who has been working on an extremely terse language, I'll try to get him to come hangout
22:51:31  * yorickquit (Remote host closed the connection)
22:51:36  <juliangruber>will be cool to meet you :)
22:51:46  * yorickjoined
22:51:46  * yorickquit (Changing host)
22:51:47  * yorickjoined
22:53:46  * nrknjoined
22:55:48  <dominictarr>nrkn, welcomes to #stackvm!
22:56:34  <nrkn>Hola
22:56:59  <ralphtheninja>heya nrkn
22:57:03  <dominictarr>juliangruber, yeah! hopefully my talk is accepted
22:57:35  <dominictarr>so nrkn juliangruber was just telling me about k/q and it reminded me of tersch
22:58:47  <nrkn>Yeah I think I've vaguely come across them before while I was researching it. Main difference is unlike tersche they seek to be useful
22:58:58  <juliangruber>:D
22:59:16  <juliangruber>what's this tersche?
22:59:36  <nrkn>I was playing with a design for a stack based super terse language
23:00:38  <juliangruber>with what motivation?
23:02:01  * tphummeljoined
23:02:03  <dominictarr>nrkn, I thought you wanted tersch to be useful too?
23:02:58  <nrkn>No particular motivation but inspiration was doing some golfing comps
23:03:22  * defunctzombiejoined
23:03:23  * defunctzombiequit (Changing host)
23:03:23  * defunctzombiejoined
23:03:28  <nrkn>Dominic no not initially but I think we did talk once about some things it could be useful for
23:04:00  <nrkn>You know when you get an idea in your head and it just keeps bugging you it was one of those kinda things
23:04:25  * AvianPhonejoined
23:05:45  * tphummelquit (Client Quit)
23:07:46  * defunctzombiequit (Ping timeout: 246 seconds)
23:08:34  <dominictarr>aha, yeah, and it won't go away until you build it
23:09:20  <nrkn>This is the source for an extremely basic roguelike (terminal display, an @ sign for player moving around a single room map with '#' for walls using arrow keys) in tersche:
23:09:21  <nrkn>C#### ####"a# #### #"b# \8#"c## \6##"d # \6# "eabcdeedcba]mmW5xyxySaW}[email protected]'Dxayb}mb[a[ '=?}[email protected] 'D38x`y1-M}40x`y1+M}37`x1-yM}39`x1+yM}[email protected]'DKk}
23:09:42  <ralphtheninja>omg
23:11:09  <juliangruber>w00t
23:11:52  <ralphtheninja>M is movement?
23:12:34  <dominictarr>dose that define the map as well?
23:12:54  <AvianPhone>OH MY GOD I DO NOT UNDERSTAND
23:12:55  <LOUDBOT>WHY IS THERE A KID ON THE SHIELD
23:12:56  <dominictarr>oh, that C### ... is the map
23:13:35  <dominictarr>you need to make this compile to js
23:14:21  <nrkn>With whitespace
23:14:23  <nrkn>https://gist.github.com/f194ce6a7207510400cd
23:14:49  <nrkn>So the map parts are defined in lines 2-6 then assembled in line 8
23:14:53  <dominictarr>whitespace is for wimps
23:15:11  <nrkn>Agreed
23:15:12  <dominictarr>real men write thier code preminified
23:15:26  <ralphtheninja>aah cool "a is assigning to a?
23:15:32  <nrkn>Yeah
23:16:45  <nrkn>And yeah M is a function that handles movement
23:17:02  <nrkn>defined in lines 17022
23:17:07  <nrkn>Oops 17-22
23:17:16  <nrkn>Hey sorry biab gotta do some work :/
23:17:31  <dominictarr>bah!
23:17:34  <dominictarr>work!
23:17:46  <nrkn>Sorry, line 19-22
23:17:50  <nrkn>17 unrelated
23:17:53  <nrkn>Whitespace confusing me
23:18:16  <ralphtheninja>haha
23:18:19  <dominictarr>what defines which args are passed to which which function
23:19:10  <nrkn>}abM
23:19:17  <nrkn>It's all back to front
23:19:21  <dominictarr>ah, that was my guess
23:19:28  <nrkn>M( a, b )
23:19:29  <dominictarr>it means M takes 2 args
23:19:46  <dominictarr>whats }mb[a[ '=?
23:20:06  <dominictarr>is [ a invocation?
23:20:08  <nrkn>TBH I can't remember - I have some design docs somewhere
23:20:41  <nrkn>But hey sorry again I really gotta go back to work - um [ is something to do with creating or accessing arrays
23:20:43  <dominictarr>you just go xyM
23:20:54  <dominictarr>to do m(x,y)
23:20:58  <dominictarr>to do M(x,y)
23:22:27  * fotoveritequit (Quit: fotoverite)
23:23:00  <juliangruber>dominictarr: submitted :)
23:23:47  <dominictarr>what is your topic?
23:24:23  <juliangruber>building databases with node.js or using streams to simplify controlflow at client and server
23:25:24  <juliangruber>that should match the conference's idea of showcasing javascript and different use cases
23:26:44  <ralphtheninja>what conference are you talking about?
23:26:57  <juliangruber>building a daw in javascript would have been cool too but my thing just still is too early
23:27:01  <juliangruber>mountainjs
23:27:28  <ralphtheninja>ok
23:29:00  * ralphtheninjaquit (Quit: Reconnecting)
23:29:01  * ralphthe1injajoined
23:29:14  * AvianPhonequit (Remote host closed the connection)
23:32:52  * yorickquit (Remote host closed the connection)
23:33:53  <juliangruber>woah feels exciting applying for a talk
23:34:37  <juliangruber>dominictarr: have you read that paper about networking named content?
23:35:32  <dominictarr>juliangruber, no. link?
23:35:54  * lyaunzbequit (Ping timeout: 250 seconds)
23:36:50  <juliangruber>http://pages.cs.wisc.edu/~akella/CS838/F09/838-Papers/ccn.pdf
23:37:16  <juliangruber>with that as a npm module you could implement a basic seaport in like 20 loc
23:37:36  <dominictarr>juliangruber, what is a DAW?
23:37:44  <juliangruber>digital audio workstation
23:37:55  <dominictarr>that would be a cool talk
23:38:05  <dominictarr>it's good to make a talk that sounds kinda crazy
23:39:10  <dominictarr>juliangruber, that paper looks interesting
23:39:35  <juliangruber>very
23:41:04  <juliangruber>like without authorities, auto discovery etc
23:45:43  <juliangruber>I'll be off to sleep
23:45:49  <juliangruber>cya guys :)