00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:06  * mikealjoined
00:00:07  * ircretaryjoined
00:01:42  <st_luke>are you creating the leveldb instance by default?
00:02:25  * cianomaidinjoined
00:02:26  * cianomaidinquit (Read error: Connection reset by peer)
00:02:26  * nicholasfquit (Read error: Connection reset by peer)
00:02:43  <mikeal>rvagg: i'm seeing some strange shit
00:02:49  * nicholasfjoined
00:03:01  <dominictarr>st_luke: levelup does that now
00:03:26  <dominictarr>you havn't had to do {createIfMissing: true} in ages
00:03:38  <st_luke>yeah sorry, I should have been more specific
00:03:50  <st_luke>what's the default location for the level in this?
00:03:53  <st_luke>I should just read the source
00:04:16  <dominictarr>~/.npmd
00:04:32  <st_luke>my brain is totally fucked as ofa couple days ago, sorry
00:04:48  <st_luke>oh this is beautiful
00:06:27  <st_luke>I did a lot of drugs on wednesday night and woke up friday evening and there was mexican food all over the place in my apartment, was kind of a disaster
00:06:58  <dominictarr>oh, well - it happens to the best of us
00:13:33  <dominictarr>it's my bed time! night all!
00:16:32  * thl0quit (Remote host closed the connection)
00:20:49  <rvagg>mikeal: perhaps you need back off on the mind altering substances then
00:21:34  <mikeal>yes
00:21:45  <mikeal>hrm…. i wrote a test and it's not picking up this behavior
00:22:00  <mikeal>so something else is going on
00:22:18  <rvagg>mikeal: k, gist if you have something narrowed down
00:23:24  <mikeal>basically, i'm not getting back as many rows as I should be getting
00:23:41  <mikeal>but i wrote a test that doesn't use my database, just raw levelup and bytewise, and its passing
00:23:59  * dominictarrquit (Quit: dominictarr)
00:25:04  <rvagg>mikeal: do you know if the rows you're not getting are at one end of your range or are they in the middle/scattered?
00:25:16  <rvagg>could be something to do with bitwise and what it's giving you for start/end keys
00:25:49  <mikeal>that's the crazy part, i'm only get one when there should be two, and if i change names of them I still only get one, even if i reuse the name i was getting
00:25:54  * wolfeida_joined
00:25:58  * wolfeidauquit (Read error: Connection reset by peer)
00:26:13  <mikeal>see, i thought that could be the case, so i wrote a test that just did the bounding with bytewise and levelup and it passes fine
00:27:00  <rvagg>are you using sublevel or any other plugins?
00:27:10  <rvagg>sublevel does some special stuff with range rewriting
00:33:12  <mikeal>figured it out
00:33:18  <mikeal>man
00:33:25  <mikeal>i wish there was some kind of validation i could put on levelup
00:33:33  <mikeal>like, "if the key is not a buffer, throw"
00:33:44  <st_luke>hmm
00:34:12  <mikeal>i've hit some nasty bugs from fucking up the key
00:34:21  <rvagg>mikeal: sounds like you just came up your first levelup plugin idea, go make it
00:34:34  <mikeal>plugins are bad
00:34:47  <mikeal>plugin systems are just frameworks with less "i wanna be famous" attached to them
00:34:50  <rvagg>mikeal: tbh I'm pretty sure there are very few people using non-utf8 keys
00:35:41  <rvagg>by plugin, I mean: a monkey patching piece of javascript madness
00:36:08  <mikeal>is there an event before each write?
00:36:59  <rvagg>mikeal: not yet, it's a post-put event
00:37:08  <rvagg>mikeal: but level-hooks is doing some prehook stuff
00:37:33  <rvagg>probably going to be integrated in to core in some form to make this kind of thing easier
00:37:54  <mikeal>basically what i want is an event for every change, including changes that are being sent to batch
00:38:23  <mikeal>so i can do
00:38:26  <rvagg>the events are all after-the-fact at the moment
00:38:31  * nicholasfquit (Read error: Connection reset by peer)
00:38:55  * nicholasfjoined
00:38:59  <mikeal>db.on('change', function { if (!Buffer.isBuffer(change.key) throw new Error('NO!') })
00:39:45  <rvagg>mikeal: see https://github.com/dominictarr/level-hooks, it's sync so without looking at the details I imagine that exceptions will bubble up properly
00:39:57  <rvagg>the pre hook intercepts writes
00:40:13  * ins0mniajoined
00:40:46  * nicholasfquit (Read error: Connection reset by peer)
00:41:00  * nicholasfjoined
00:41:28  * nicholasfquit (Read error: Connection reset by peer)
00:41:55  * nicholasfjoined
00:43:18  * nicholasfquit (Read error: Connection reset by peer)
00:43:39  * nicholasfjoined
00:45:24  * nicholasfquit (Read error: Connection reset by peer)
00:45:53  * nicholasfjoined
00:50:46  * nicholas_joined
00:51:00  * nicholasfquit (Read error: Connection reset by peer)
00:56:08  <st_luke>level-hooks are wonderful.
01:00:58  <rvagg>tho, all of dominic's levelup extensions assume utf8-everything
01:01:09  <rvagg>something we need to work on
01:05:09  * fallsemoquit (Quit: Leaving.)
01:05:54  <st_luke>imo a mailing list would be nice
01:06:12  <st_luke>we're currently corralling everything into the issues on rvagg/node-levelup
01:06:19  <st_luke>which is fine but perhaps getting out of scope
01:07:07  <rvagg>st_luke: then make one and let us know
01:07:41  <st_luke>is everyone cool with google groups for it?
01:07:52  <st_luke>I wish there were a better option, their web interface kind of sucks
01:08:06  <rvagg>majordomo...
01:08:07  <st_luke>well it's better than the gnu one
01:08:14  <rvagg>oh wait, this isn't the '90's anymore
01:08:46  <st_luke>it would be so awesome if github started doing mailing list stuff
01:09:19  <rvagg>issues effectively are a mailing list
01:10:22  <st_luke>rvagg: yeah, I guess as long as we use labels for stuff then it's not a big deal
01:10:40  <st_luke>just could get confusing for people that are new, seeing tons of threads on things that aren't directly node-levelup related
01:10:48  <st_luke>but the last thing I want to do is make it committee style
01:11:12  <st_luke>because next thing we know mikeal will be doing a conference talk on how inefficient the levelup committee is
01:11:55  <rvagg>I wonder if committees can be made to work if they are uber-inclusive, or is their nature to tend towards exclusivity and become cliques?
01:12:15  <rvagg>we sort of already have a committee, but a fairly open culture atm
01:13:15  <st_luke>rvagg: the levelup group we have going is really special, has the vibe that small projects can have while the group is small
01:15:35  * timoxleyjoined
01:23:28  <mikeal>committees get worse when they add more people
01:23:31  <mikeal>look at ECMA
01:23:43  <mikeal>the more "open" they get the more derailed their foolishness is
01:24:00  <rvagg>mikeal: so is your opinion that TC39 was *better* at some previous incarnation?
01:24:42  <mikeal>their approach is flawed, that's why the work they do isn't going anywhere
01:24:59  <mikeal>but it was going nowhere faster before they tried to include all the dissaffected groups they now try to attract
01:25:13  <mikeal>now its going nowhere and its doing slow very very slowly
01:25:43  * spionquit (Ping timeout: 246 seconds)
01:31:52  * saijanai_quit (Excess Flood)
01:36:48  * wolfeida_quit (Read error: Connection reset by peer)
01:37:05  * wolfeidaujoined
01:38:34  * defunctzombiechanged nick to defunctzombie_zz
01:39:09  * Domenic__quit (Read error: Connection reset by peer)
01:48:54  <st_luke>https://groups.google.com/forum/?fromgroups#!forum/node-levelup
01:49:23  <st_luke>as long as we never have a leveldb conference we will be ok
01:51:30  * thl0joined
01:52:53  <st_luke>is there a way to auto approve new members?
01:56:07  <st_luke>rvagg ralphtheninja: i added you both as owners on the list, we should make as many people owners as possible, dont want to make this a stratocracy
01:56:28  <rvagg>
01:57:25  <st_luke>also this way it can live on if one of us leaves the internet
02:01:55  <rvagg>st_luke: "Anyone can join" :tick: done
02:02:09  <rvagg>hm, my :tick: isn't working!
02:02:10  <rvagg>
02:02:14  <rvagg>pfft
02:02:38  <st_luke>rvagg: ah cool
02:02:51  <st_luke>I couldn't find it, google's interfaces confuse the hell out of me
02:03:25  <rvagg>ralphtheninja: says your email is bouncing
02:03:45  <ins0mnia>rvagg: can I join? :)
02:03:56  <st_luke>ins0mnia: everyone can join!
02:04:07  <rvagg>s/PARTH/PARTY
02:04:11  <rvagg>sorry, manflu
02:04:17  <ins0mnia>awesome!!! just wanted to be member nr 1 lol
02:04:29  <ins0mnia>make sure I mean
02:04:37  <ins0mnia>this is awesome
02:05:24  * jibayquit (Remote host closed the connection)
02:09:45  <st_luke>rvagg: i made it so replies are sent to the entire group
02:09:50  * defunctzombie_zzchanged nick to defunctzombie
02:09:54  <st_luke>to keep discussion open
02:11:03  <st_luke>if there are any good issues then anyone can forward them to [email protected]
02:12:26  * ins0mniaquit (Ping timeout: 256 seconds)
02:31:25  <jesusabdullah>oh shit it looks like node's docs on EE are incomplete :(
02:37:53  <jesusabdullah>oh, no, I guess that's okay
02:48:48  * defunctzombiechanged nick to defunctzombie_zz
02:50:33  * thl0quit (Remote host closed the connection)
03:02:06  * timoxleyquit (Quit: Computer has gone to sleep.)
03:08:40  * dguttmanjoined
03:11:26  * fotoveritequit (Quit: fotoverite)
03:13:55  <st_luke>rvagg: do you have a hi-res version of the leveldb image karolina made?
03:17:24  * fotoveritejoined
03:19:25  <jesusabdullah>shit I just came the long way around here
03:19:59  <jesusabdullah>I was like, "I don't want bashful it's an implementation of bash with a bunch of stuff missing" then I realized that I was implementing the same API for something with less features
03:20:05  <jesusabdullah>less *planned* features anyway
03:25:40  * nicholas_quit (Read error: Connection reset by peer)
03:26:00  * nicholasfjoined
03:27:55  <rvagg>st_luke: take a knife over to hij1nx's place and get it off him, pass me on a copy when you get it, I keep on asking him for it but he keeps on forgetting
03:28:13  <rvagg>st_luke: karolina doesn't have the final version, she tried to bug him for it for me too
03:29:03  <st_luke>rvagg: I don't know if my muay thai is a match for hij1nx's judo
03:29:28  <rvagg>st_luke: guns are pretty easy to come by over there aren't the?
03:29:31  <rvagg>s/the/they
03:30:41  <st_luke>rvagg: not really in the city
03:30:47  <rvagg>lame
03:30:56  <st_luke>probably a good thing though
03:35:16  * fotoveritequit (Quit: fotoverite)
03:42:16  * Benvie1joined
03:44:48  * ralphtheninjaquit (Ping timeout: 256 seconds)
04:09:39  * shuaibjoined
04:12:01  * dguttmanquit (Quit: dguttman)
04:18:06  * dguttmanjoined
04:20:34  * st_lukequit (Read error: Connection reset by peer)
04:20:58  * st_lukejoined
04:22:19  * dguttmanquit (Client Quit)
04:23:42  * AvianFlujoined
04:32:07  * nicholasfquit (Read error: Connection reset by peer)
04:32:21  * nicholasfjoined
04:34:27  * mikolalysenkojoined
05:01:32  * Benvie1quit (Ping timeout: 252 seconds)
05:09:06  * fotoveritejoined
05:13:07  <owen1>st_luke: last week i built google-groups clone for a hackathon using leveldb - it's only read only and i hardcode most of it for the hackathon day.
05:13:44  <owen1>st_luke: i mention it since you talked about google groups a while ago.
05:13:55  <st_luke>owen1: were you the one i was helping in ##leveldb last week?
05:14:01  <owen1>st_luke: probably
05:14:10  <st_luke>you were originally using sqlite or something?
05:14:23  <owen1>no. jumped to level right away
05:14:32  <owen1>after listening to nodeup podcast about ti
05:14:34  <owen1>it
05:15:52  <st_luke>oh i was confusing you with someone else
05:16:11  <owen1>the problem i have is i don't underastand how to use the related modules. the index one and the sub-level. their readme assumes you are more experienced than myself and there are no complete usecases and examples.
05:16:12  <st_luke>glad to hear the podcast inspired you to use it
05:16:26  <st_luke>owen1: yeah that's a problem right now
05:16:34  <owen1>yeah. wrote a blog post about it and shared with reddit and google+ communities
05:16:46  <st_luke>everyone that's using it is taking for granted how easy we feel it is but it's not necessarily very welcoming
05:17:12  * fotoveritequit (Quit: fotoverite)
05:17:39  <owen1>right now it's a bit painful for me. i have group!<timestamp>, topic!<timestamp>!<timestamp> and reply!<timestamp>!<timestamp>
05:17:41  * mikealquit (Quit: Leaving.)
05:17:58  <rvagg>dominic needs some help with his documentation skills, we need to get hooks, sublevel and the whole concept of namespacing better documented
05:18:03  <owen1>i know the index package and sub-level can help me, i just couldn't figure out how to use them.
05:18:40  <owen1>yes. and i'll be happy to assist by writing more blog posts. i just can't since i don't get how to use those (:
05:18:56  <rvagg>yeah, well once you do it'll be good to document from an incoming perspective
05:19:05  <owen1>if u'r a node core guy, i am sure the readme + the codebase are enough.
05:19:11  <rvagg>we'll get there, it's all coming together
05:19:23  <owen1>good. i feel less stupid (;
05:19:57  <rvagg>heh, owen1 you're an early-adopter and you're bound to suffer from poor documentation, you're doing pretty well I reckon
05:20:08  <st_luke>rvagg: truth
05:20:23  <rvagg>sublevel is conceptually very simple, you're just creating automatically namespaced versions of a single levelup instance
05:21:05  <owen1>i feel like level is filling a nice spot in the current usecases for apps. especially with node. speed+disk persistence+easy to use.
05:21:17  <st_luke>owen1: I've been very busy with work stuff lately which is all level oriented, really focused on launching a product so I haven't had much time for a lot of open source stuff currently. once that's out of the way I hope to write a lot of docs for level stuff with my experiences
05:22:20  <rvagg>I have 2 more dailyjs.com posts coming, the next one is going to mainly focused on levelup but the last one will be focused on extending levelup, with sublevel as a core concept
05:22:24  <owen1>rvagg: even what u just said "automatically namespaced versions of a single levelup instance" is not easy to digest by newcomers
05:22:27  <rvagg>hopefully that'll help clear up confusion
05:22:58  <rvagg>owen1: yeah, I understand, we need better documentation on namespacing cause it's so key to what you can do
05:23:26  <rvagg>st_luke: do you have a launch date you're aiming for yet?
05:23:28  <owen1>i guess it's the !group, !topic and !reply (in my case)
05:23:51  <rvagg>owen1: yep, except sublevel uses \xff instead of ! cause it's further down the utf8 character space
05:24:17  <owen1>when i tried sub-level, i didn't know how to read subset of the keys with createReadStream
05:24:45  <owen1>and how to connect a topic to a group
05:25:42  <owen1>so i tried reading it's codebase and it's examples, but it was a bit over my head
05:25:46  <rvagg>var foodb = db.sublevel('foo'); simply gives you a levelup interface that you can use as if it were you original db object but entries are all restricted to the '\xfffoo\xff' prefix, puts, deletes, gets, readstream, etc.
05:25:56  <rvagg>dominic's code is over most people's head
05:26:06  <rvagg>don't let that make you feel bad
05:26:08  <owen1>(:
05:26:26  <owen1>that's the best way to get better. read stuff like that.
05:27:02  <owen1>and go to NodeConf! i am leading the node adoption at my employer so they'r cool with sending me.
05:27:16  <rvagg>excellent
05:27:20  <rvagg>dominic will be there, bug him
05:27:27  <owen1>u'r not coming?
05:27:44  <rvagg>I'm in Australia and have blown my personal travel budget for the year
05:27:57  <rvagg>would love to but I honestly can't justify it
05:29:29  <owen1>too bad. i heard mikeal will not attend
05:31:23  <rvagg>oh? I hadn't heard that, that sucks considering he's organising it
05:31:59  * mikealjoined
05:32:56  <owen1>someone mentioned it in nodeup
05:39:22  <owen1>interesting. dominic is working on a twitter example - https://github.com/dominictarr/level-twitter-example
05:39:48  * nicholasfquit (Read error: Connection reset by peer)
05:40:11  * nicholasfjoined
05:40:21  * AvianFluquit (Remote host closed the connection)
05:42:45  * mikolalysenkoquit (Ping timeout: 256 seconds)
05:47:51  * mikealquit (Quit: Leaving.)
05:53:58  * mikealjoined
05:54:30  * mikealquit (Client Quit)
05:57:14  <st_luke>rvagg: sorry, was in the middle of something
05:57:20  <st_luke>rvagg: hopefully in 1.5 months
05:57:34  <st_luke>if you have a long running script with a lot of output
05:57:44  <st_luke>and you're `exec`ing it in node
05:58:25  <st_luke>var out = exec('make start').stdio[1].pipe(process.stdout)
05:58:27  <st_luke>sneaky
05:58:27  <rvagg>st_luke: oo, that's soon, good luck then, hopefully you're on target with the codebase
05:59:27  <st_luke>i mean some of this is just straight up confusing
06:01:34  <st_luke>fucking adobe keeps putting their garbage back in os x' launchd
06:01:42  <st_luke>why are they even allowed to pull that bullshit
06:01:51  <st_luke>so sneaky
06:02:35  * shamaquit (Remote host closed the connection)
06:04:41  * wolfeidauquit (Read error: Connection reset by peer)
06:04:56  * wolfeidaujoined
06:08:50  * dominictarrjoined
06:11:41  * mikealjoined
06:12:05  <chrisdickinson>woo: npm.im/inflate
06:12:16  <chrisdickinson>cc dominictarr ^^
06:12:56  <dominictarr>EPIC
06:13:38  <rvagg>chrisdickinson: nice work!
06:13:47  <chrisdickinson>thanks!
06:13:48  <chrisdickinson>:D
06:14:04  <chrisdickinson>also, v8's jit is really touchy!
06:15:08  <dominictarr>what is the difference between become() and take()?
06:17:04  <chrisdickinson>become and unbecome are a pair
06:17:22  <chrisdickinson>it's kind of like poor man's tail call
06:17:39  <chrisdickinson>so they manage calling other functions / the transition between functions over time
06:17:59  <chrisdickinson>so, "become bytes, here's the state for bytes, then return the result to the next function"
06:18:24  <chrisdickinson>take just takes a byte at a time -- and if it can't take that byte it'll set the "need_input" flag and bail on the current write
06:18:56  <chilts>is 'through' just like the new stream.Transform streams?
06:19:07  <chilts>and does it just use that if it's under v0.10
06:19:14  <chrisdickinson>each state transition is (weirdly enough) codified in those `_call_(bits|bytes|decode|*)` objects
06:19:46  <chrisdickinson>(also `unbecome` pops off the state stack and sets the `.last` member of the new current state to whatever was passed to `unbecome`)
06:20:26  <chrisdickinson>chilts: i've been using it to ease writing streams (at least as of 0.8.X), but it also seems to help portability between 0.8.X and 0.10.X
06:20:38  <chrisdickinson>dominictarr wrote it, he may be able to better answer that question
06:20:48  <chilts>thanks
06:20:50  <dominictarr>chilts: yes, it's the same thing, but for classic streams
06:20:59  <chilts>yeah, I guess if it papers over the v0.8 and v0.10 cracks
06:21:12  <chilts>dominictarr: so for v0.10 would you recommend using it, or using stream.Tranform instead?
06:22:26  <dominictarr>oh, well, it really does exactly the same thing as Transform, that is, make it really easy to implement a stream that is writable, readable and has no side effects
06:23:54  <dominictarr>actually, I plan to have a thing to make it drop in compatible with streams2, so you can just do require('through/streams2')
06:23:54  <dominictarr>and everything will just work
06:24:04  <chilts>nice
06:24:24  <dominictarr>and all the streams written with it will be a one line change to port to streams2… although, it pretty much still works the same.
06:24:43  <dominictarr>I should put that better
06:25:23  <dominictarr>for "through" streams, streams2 isn't any better than streams2
06:25:35  <dominictarr>than streams1
06:27:32  <dominictarr>chrisdickinson: so, how much difference did using become and unbecome make?
06:27:41  <chrisdickinson>dominictarr: for perf?
06:27:47  <dominictarr>yeah?
06:27:56  <chrisdickinson>huge
06:28:22  <dominictarr>like, as a percentage?
06:28:44  <chrisdickinson>1 sec will compare two directly
06:33:46  <dominictarr>chrisdickinson: you don't have the whole history in the repo!
06:34:22  <chrisdickinson>so, old inflate === 47953ms to clone plate
06:34:30  <chrisdickinson>well, old inflate + old list pack
06:34:36  <chrisdickinson>new inflate + new list pack === 2573ms
06:35:21  <chrisdickinson>dominictarr: yeah, there was a lot of junk in my working directory unfortunately
06:35:32  <chrisdickinson>):
06:35:45  <dominictarr>wow, that is a big difference!
06:36:36  <dominictarr>chrisdickinson: it's just interesting too see the changes, what happened to the gist you showed me the other day?
06:36:56  <chrisdickinson>it's here: https://gist.github.com/chrisdickinson/a5feecd1906b15638d50
06:37:01  <chrisdickinson>first file is the first stab
06:37:23  <chrisdickinson>there was all sorts of hilarity involved in working out the bugs in the second version :|
06:37:51  <chrisdickinson>https://gist.github.com/chrisdickinson/a5feecd1906b15638d50#file-inflate2-js-L513-L515
06:38:01  <chrisdickinson>didn't save the state.value back
06:38:15  <chrisdickinson>so at intermittent chunk sizes, you'd occasionally get huge errors
06:38:23  <chrisdickinson>https://gist.github.com/chrisdickinson/a5feecd1906b15638d50#file-inflate2-js-L532-L534
06:38:34  <dominictarr>damn, and how do you debug this stuff? it's both binary and random!
06:38:35  <chrisdickinson>it had already decremented how many it needed (but still needed one more!)
06:38:46  <chrisdickinson>so, luckily i had that first version, which i knew worked
06:38:57  <chrisdickinson>so i did a lot of console.log'ing various outputs and then using `diff -u`
06:39:06  <dominictarr>of course
06:39:18  <chrisdickinson>and for the first version, i had the puff.c, which was again a lot of console.log'ing / diffing.
06:39:38  <chrisdickinson>eventually when it came down to it i just setup my test so that i could set the chunk size as an env var
06:39:44  <chrisdickinson>and found a chunk size that never failed
06:39:50  <chrisdickinson>then a chunk size that always failed
06:39:55  <chrisdickinson>… and then yet more diffing.
06:40:06  <chrisdickinson>and a lot of "oh, it is because i was/am dumb!"
06:40:40  <dominictarr>I know the feeling
06:40:42  <chrisdickinson>other fun facts: https://gist.github.com/chrisdickinson/a5feecd1906b15638d50#file-inflate2-js-L484 caused a deopt
06:40:54  <chrisdickinson>as did https://gist.github.com/chrisdickinson/a5feecd1906b15638d50#file-inflate2-js-L560-L562
06:42:01  <dominictarr>you should link to that gist from your readme
06:42:02  <chrisdickinson>plus, i added a `stream.recycle` so that the JIT'd versions of all of the functions in that closure would persist
06:42:10  <chrisdickinson>good point!
06:42:12  <dominictarr>heh
06:47:34  <chrisdickinson>also for fun: https://github.com/chrisdickinson/git-list-pack/blob/master/index.js
06:47:39  <chrisdickinson>uses unbecome / become and take now too
06:47:58  <chrisdickinson>though a much simplified version
06:48:19  <chrisdickinson>since it's basically only transitioning from "whatever it's doing now" -> bytes -> "whatever it wants to do next"
06:48:49  <chrisdickinson>so instead of having "state" objects i can get away with just having them in scope
06:50:26  <chrisdickinson>i am tempted to go back into inflate and do things that way, but am also really really glad to be done with inflate
06:50:35  <chrisdickinson>"done" === "hopefully done" in this case
06:57:09  * wolfeidauquit (Remote host closed the connection)
07:03:23  * timoxleyjoined
07:10:22  <dominictarr>hmm, maybe make a js -> js lang that sticks tail call optimisation in for you!
07:13:38  * wolfeidaujoined
07:14:23  <jesusabdullah>substack: I think I see something odd in bashful, hit me up when you're online so we can talk about it
07:15:28  * dominictarrquit (Quit: dominictarr)
07:17:06  <jesusabdullah>substack: yeah with https://github.com/substack/bashful/blob/master/index.js#L70-L74 I don't see anything happening to the stdio here?
07:17:58  <jesusabdullah>substack: I'm not sure an ee is right here because you want to pipe stdio to/from the spawned process to/from bashful
07:30:15  * dominictarrjoined
07:40:34  * cianomaidinjoined
07:47:30  <jesusabdullah>substack: maybe something like, bash.on('command', function (cmd, args, env, cb) { cb(null, require('child_process').spawn.apply(null, cmd, args, env)); });
07:47:36  <jesusabdullah>substack: SOMETHING like that
07:48:34  <jesusabdullah>maybe bash.on('command', function (callback) { callback(null, require('child_process').spawn); }); // yeah, like that
07:49:17  <substack>it has a special thing to capture return values https://github.com/substack/bashful/blob/master/index.js#L48
07:49:59  <jesusabdullah>yeah I see it now
07:50:20  <jesusabdullah>because of the "return the result of the event" thing which I don't think is actually documented? (I looked)
07:51:40  <jesusabdullah>aha, I see, cool
07:51:41  <jesusabdullah>*whew*
07:56:25  * timoxleyquit (Quit: Computer has gone to sleep.)
08:05:00  <jesusabdullah>ahhhh
08:05:19  <jesusabdullah>substack: no handling of stderr, you cool if I PR that to you?
08:05:47  <jesusabdullah>substack: basically, if process.stdin, also pipe out process.stderr
08:07:03  <jesusabdullah>ahhh but in this case I can just return a stream instead of a tri-stream dillio
08:07:16  <jesusabdullah>that's perfectly fine for my needs right now
08:07:19  <jesusabdullah>oho!
08:10:49  <st_luke>jesusabdullah: just do require('child_process').exec('command').stdio[1].pipe(process.stdout)
08:13:29  * ITproquit (Ping timeout: 252 seconds)
08:13:54  <st_luke>without the [1]
08:14:24  * ITprojoined
08:16:13  * cianomaidinquit (Quit: cianomaidin)
09:14:37  <jesusabdullah>https://gist.github.com/jesusabdullah/5433462
09:17:05  * yorickjoined
09:22:14  * dominictarrquit (Quit: dominictarr)
09:30:18  <niftylettuce>Linode vs EC2 test with apache benchmark -- testing cluster vs single app process @ https://gist.github.com/niftylettuce/5433412
09:38:39  * ITproquit (Ping timeout: 260 seconds)
09:42:35  * jibayjoined
09:58:10  * spionjoined
10:01:41  * dominictarrjoined
10:04:09  <rvagg>numbers niftylettuce!
10:04:25  <niftylettuce>rvagg: they're in there, scroll down
10:04:39  <niftylettuce>rvagg: 3K requests/second with Linode vs 600 requests/second with EC2
10:04:48  <rvagg>oh, right, scroll, I know what that is
10:05:15  <rvagg>niftylettuce: what region for ec2?
10:05:55  <rvagg>I suppose the parallelism helps there quite a bit
10:07:01  <niftylettuce>rvagg: us east 1d
10:07:45  <rvagg>niftylettuce: perhaps you should try something other than us east? oregon has pretty good perf, us east is too unpredictable cause it's so overloaded
10:10:15  <niftylettuce>rvagg: bah shouldn't matter
10:10:19  <niftylettuce>rvagg: shouldn't be crap
10:10:26  <rvagg>yeah, I know
10:10:27  <niftylettuce>rvagg: at this point im going to let $1400 in credits rot
10:10:32  <niftylettuce>http://i.imgur.com/7C0Wahs.png
10:10:34  <niftylettuce>rvagg: %
10:10:45  <rvagg>niftylettuce: also, try c1.medium, that's my preferred instance
10:11:07  <niftylettuce>rvagg: yea but look at the price point
10:11:26  <niftylettuce>$1K+/year for C1 Medium and you still only get 5 cores
10:11:33  <niftylettuce>Linode will still beat a C1 medium
10:11:48  <niftylettuce>AWS is a rip off joke crap
10:11:50  <rvagg>do you get a guaranteed full 8 cores on linode?
10:11:56  <niftylettuce>rvagg: 1x priority
10:11:57  <rvagg>or is it shared?
10:12:31  <niftylettuce>rvagg: its shared i believe, but they have such a good infrastructure
10:12:45  <niftylettuce>rvagg: they don't have so much depth like EC2
10:12:49  <niftylettuce>afaik
10:12:58  <rvagg>perhaps they're just underused at the moment
10:19:34  <niftylettuce>rvagg: i could run a high GPU ec2 instance with 22 GB RAM, 33.5 EC2 Compute Units (2 x Intel Xeon X5570, quad-core), and 2 x NVIDIA Tesla “Fermi” M2050 GPUs for ~$1500/month for one month :D
10:34:05  * thl0joined
10:50:00  * chapelquit (Ping timeout: 264 seconds)
10:51:49  * chapeljoined
11:04:03  * ins0mniajoined
11:25:10  * ins0mniaquit (Ping timeout: 272 seconds)
11:35:40  * nicholasfquit (Read error: Connection reset by peer)
11:35:59  * nicholasfjoined
11:45:06  * ralphtheninjajoined
11:47:20  <hij1nx>this is awesome http://subprotocol.com/2013/04/18/introducing-verlet-js.html
11:51:30  <ralphtheninja>rvagg: still problems with my email?
11:53:10  <rvagg>ralphtheninja: says so, "Bouncing"
11:55:15  <ralphtheninja>rvagg: now I see it, what to do about it?
11:55:35  <rvagg>ralphtheninja: look in your spam folder for the emails perhaps and tell it they aren't spam?
11:56:06  <ralphtheninja>but I do get the emails .. weird
12:05:09  <rvagg>ignore it then
12:13:54  <dominictarr>hij1nx: hmm, I have wanted to make a physics/adventure game where you have to stop a giant blob of goo from taking over a spacestation
12:14:16  <hij1nx>fps?
12:15:10  <dominictarr>2d side scroller
12:15:49  <dominictarr>you'd do things like cut it in half with doors, and make it run down hill and then set it on fire etc
12:16:05  <dominictarr>it would ooze into a room, and then slowly fill it up
12:16:40  <dominictarr>consuming organic material and becoming stronger
12:17:12  <substack>could be a voxeljs game!
12:17:39  <dominictarr>could be. the key is surface tension...
12:19:43  <dominictarr>you'd do things like block it from getting food, or cutting off a part that is away from the food, so that part dies
12:19:53  <dominictarr>or maybe you could freeze it, or set it on fire
12:23:29  <hij1nx>leveldb might be a really good storage option for multi player
12:27:18  <hij1nx>so many engines out there https://github.com/bebraw/jswiki/wiki/Game-Engines
12:32:24  * st_lukequit (Remote host closed the connection)
12:36:06  * AvianFlujoined
12:43:58  * fotoveritejoined
12:48:09  * ins0mniajoined
13:00:36  * defunctzombie_zzchanged nick to defunctzombie
13:03:53  * fallsemojoined
13:10:07  * thl0quit (Remote host closed the connection)
13:15:42  <dominictarr>hij1nx: hmm, well, maybe a good spatial map lib will get them involved
13:21:41  * tmcwjoined
13:45:45  * tmcwquit (Remote host closed the connection)
13:49:13  * tmcwjoined
13:50:34  * thl0joined
13:57:56  <tmcw>are there any simple modules that basically do _.extend()?
13:58:10  <tmcw>the inherits module is more focused on prototypes
14:06:37  * thl0quit (Read error: Connection reset by peer)
14:06:56  * thl0joined
14:16:04  * cianomaidinjoined
14:17:21  * fallsemoquit (Quit: Leaving.)
14:17:57  * fallsemojoined
14:44:19  * mikealquit (Quit: Leaving.)
14:52:05  * cianomaidinquit (Quit: cianomaidin)
14:53:11  * cianomaidinjoined
14:59:46  <juliangruber>tmcw: https://github.com/Raynos/xtend
15:00:16  <tmcw>sweet, thx juliangruber
15:03:05  * paul_irish_changed nick to paul_irish
15:19:52  * defunctzombiechanged nick to defunctzombie_zz
15:30:27  <hij1nx>dominictarr: in web inspector you can click the litle magnifying glass at the bottom, you can get what you need
15:31:19  <dominictarr>nah, that isn't what I'm after
15:31:43  <dominictarr>I want a little arrow that shows the offset from absolute position, etc
15:35:18  * st_lukejoined
15:36:27  <thl0>dominictarr: in canary you can turn on "show rulers" maybe that may help you?
15:36:40  <dominictarr>that sounds good
15:38:02  <thl0>when you inspect an element, it draws all kinds of helper lines as well - great for aligning elements on page
15:38:19  <dominictarr>downloading it now
15:39:25  * AvianFluquit (Read error: Connection reset by peer)
15:40:01  * AvianFlujoined
15:42:51  <dominictarr>ah, well, that is half way there
15:43:11  <thl0>at least it should help ;)
15:44:08  <thl0>dominictarr: you also know of the metrics section (right bottom when in elements tab)? - though that doesn't relate to absolute positions
15:46:54  <dominictarr>ah I see it
15:51:55  * Benvie1joined
15:52:14  * mikealjoined
15:55:39  * dguttmanjoined
15:55:40  * cianomaidinquit (Read error: Connection reset by peer)
15:57:09  * mikealquit (Quit: Leaving.)
15:57:38  * cianomaidinjoined
15:57:58  <st_luke>great for absolute positioning every element on the page
15:58:12  * mikolalysenkojoined
15:59:46  * shamajoined
16:01:40  * dguttmanquit (Quit: dguttman)
16:06:26  * st_lukequit (Remote host closed the connection)
16:08:12  * jcrugzzjoined
16:14:34  * cianomaidinquit (Quit: cianomaidin)
16:40:12  * st_lukejoined
16:40:24  * nicholasfquit (Ping timeout: 264 seconds)
16:42:08  * st_lukequit (Remote host closed the connection)
16:46:48  * mikealjoined
16:49:26  * jibayquit (Ping timeout: 272 seconds)
16:50:09  * shuaibquit (Ping timeout: 252 seconds)
16:51:12  <Domenic_>juliangruber: too bad that package doesn't work on Chrome 9-12 and 14-22...
16:51:43  <juliangruber>Domenic_: haha yup, fail
16:51:58  <juliangruber>they must have been drunk during those versions
16:58:43  * mikolalysenkoquit (Ping timeout: 264 seconds)
16:59:36  * cianomaidinjoined
17:02:00  * jxsonjoined
17:03:16  * shuaibjoined
17:06:03  * mikealquit (Quit: Leaving.)
17:14:41  * jibayjoined
17:19:44  * mikealjoined
17:20:35  * mikolalysenkojoined
17:21:10  * dguttmanjoined
17:21:40  * ins0mniaquit (Ping timeout: 256 seconds)
17:26:11  * mikolalysenkoquit (Ping timeout: 256 seconds)
17:28:55  * spionquit (Ping timeout: 246 seconds)
17:32:12  * mikolalysenkojoined
17:37:16  * tmcwquit (Remote host closed the connection)
17:47:46  * spionjoined
17:54:25  <dominictarr>hmm, we need a hyperscript for css.
17:54:49  <mikeal>ok, question about browserify
17:55:04  <mikeal>i have a little library, and i want to use localStorage in the browser and fs in node
17:55:13  <mikeal>so when i browserify it i don't want fs to get loaded
17:55:49  <mikeal>how do i do that?
17:56:17  <mikeal>i was thinking about delaying the require('fs') until a callback but substack said it'll find that too
17:58:06  <mbalho>there are many ways but the hackiest is var require_ = require; require_('canvas')
17:58:20  <mbalho>there is some other way with package.json
17:58:41  * tmcwjoined
17:59:00  <thl0>mikeal: you can set browser fields in package json
18:00:03  <thl0>i.e. 'browser: { fs: 'clientsidefs.js' }
18:00:10  <thl0>don't remember exact syntax
18:00:30  <thl0>you could then point that to an empty file to not load fs when browserifying
18:01:12  <thl0>it basically redirects requires resolve during the browserify step
18:01:36  <mikeal>ah, nice
18:01:37  <mikeal>thanks :)
18:02:06  <thl0>sure - we need more documentation/blogs for this
18:02:41  <thl0>at this point most of the stuff you can do with browserify is not discoverable
18:04:29  * CoverSli1echanged nick to CoverSlide
18:10:17  * dominictarrquit (Quit: dominictarr)
18:16:42  <mikeal>is there a stub for domains?
18:25:33  * cianomaidinquit (Quit: cianomaidin)
18:28:14  <thl0>mikeal: you mean a domains stub that works in the browser (not sure how that makes sense)
18:28:40  <thl0>if you just wanna stub it out with nothing, you can point it to an empty file in the browser field
18:29:25  <mikeal>yeah, i may end up doing that
18:29:58  <mikeal>i just want to be able to browserify my tests
18:30:06  <mikeal>but they have domains in them
18:32:20  <thl0>mikeal: specifically for tests you can also use https://github.com/thlorenz/proxyquireify
18:32:48  <thl0>but in that case it will inject require('domains') in order to make browserify include the original in the bundle
18:33:15  <thl0>however if you specify @noCallThru it will never even resolve it browser side
18:34:52  <mikeal>is there a hook in testling for when the tests are over?
18:36:23  <thl0>not sure, I just use tape in my tests and browserify them into a bundle to run them locally
18:36:57  <thl0>i.e. browserify test/*.js > bundle.js -- then open that with an index.html to see output in console
18:37:38  <thl0>mikeal: also made myself a test dev server to automate this during development: https://github.com/thlorenz/scriptie-talkie/blob/master/test/browser/dev-server.js
18:37:53  <thl0>also juliangruber has beefy that does the same via a file watcher
18:38:20  <thl0>actually beefy is chrisdickinson's
18:38:43  <chrisdickinson>o/
18:45:26  * jcrugzzquit (Ping timeout: 252 seconds)
18:54:33  <niftylettuce>thl0: i added CLI helper for node readme-docs btw
18:59:31  <thl0>niftylettuce: cool, I think I saw that
19:02:25  * nk109quit (Quit: Computer has gone to sleep.)
19:04:24  * dominictarrjoined
19:05:39  * stagas_joined
19:06:10  * stagas_changed nick to stagas
19:09:42  <niftylettuce>stagas: yo
19:09:55  <niftylettuce>stagas: https://gist.github.com/niftylettuce/5433412
19:09:57  * mikolalysenkoquit (Ping timeout: 248 seconds)
19:10:33  * ins0mniajoined
19:13:38  <stagas>niftylettuce: neat
19:22:24  * shuaibquit (Ping timeout: 264 seconds)
19:24:48  * shuaibjoined
19:36:35  * mikolalysenkojoined
19:37:19  * jcrugzzjoined
19:44:40  * shuaibquit (Ping timeout: 252 seconds)
19:45:30  * mikolalysenkoquit (Ping timeout: 272 seconds)
19:45:37  * mikolalysenkojoined
19:46:36  * ins0mniaquit (Read error: Connection reset by peer)
19:50:34  * tilgovijoined
20:03:04  * shuaibjoined
20:07:38  * fallsemoquit (Quit: Leaving.)
20:10:51  <mikeal>hrm....
20:10:51  <mikeal>% testling test.js --browsers=iexplore/7.0,iexplore/8.0,firefox/3.5 ~/Documents/git/couchie
20:10:52  <mikeal>ok ./test.js ............................................ 9/9
20:10:52  <mikeal>total ................................................... 9/9
20:10:52  <mikeal>ok
20:10:59  <mikeal>those are not running in browsers :)
20:12:41  <thl0>mikeal: so you got this working locally or remotely?
20:13:14  * fallsemojoined
20:14:43  * fallsemoquit (Client Quit)
20:22:29  * fotoveritequit (Ping timeout: 248 seconds)
20:23:37  <pkrumins>mikeal: testling doesn't exist anymore, there is only testling-ci
20:26:01  * fotoveritejoined
20:33:45  <mbalho>"I know, i'll write a package manager for client side code, because obviously npm is just for node code"
20:33:54  <mbalho>"step 1: npm install my-package-manager"
20:34:35  <jesusabdullah>hah
20:51:20  * mikolalysenkoquit (Ping timeout: 255 seconds)
20:54:51  * thl0quit (Remote host closed the connection)
20:56:49  <dominictarr>mbalho: so, we need to make npm run in the client, and then publish it as a component.
20:59:05  * tilgoviquit (Remote host closed the connection)
21:05:39  * mikolalysenkojoined
21:06:02  <mbalho>dominictarr: i tried to get substack to agree to that yesterday but apparently didnt make a convincing enough argument
21:07:17  <dominictarr>I think an epic troll is a pretty good argument
21:07:36  <mbalho>dominictarr: oh you meant a tj componeont
21:07:40  <mbalho>dominictarr: component*
21:07:47  <mbalho>dominictarr: i thought you mean the general usage of the word component
21:08:09  <dominictarr>oh, I thought that was what you where referning to...
21:08:23  <dominictarr>"I know, i'll write a package manager for client side code, because obviously npm is just for node code"
21:08:24  <dominictarr>"step 1: npm install my-package-manager"
21:08:53  <mbalho>dominictarr: ahah so you could do component install npm
21:08:57  <mbalho>dominictarr: YES
21:09:52  <dominictarr>or, you could use component to bundle npm into the browser, and then you could just use npm from there
21:10:09  <mbalho>lol
21:10:12  <mbalho>such a good idea
21:11:58  * st_lukejoined
21:12:57  <CoverSlide>whoooaa
21:14:02  <CoverSlide>but does npm have CORS headers?
21:14:37  <CoverSlide>doesn't look like it does
21:15:26  <mbalho>nope
21:15:30  <mbalho>but! couchdb 1.3 supports cors
21:15:52  <mbalho>and as of last week npm is running on it
21:18:52  * spionquit (Ping timeout: 246 seconds)
21:19:04  <dominictarr>mbalho: so, issaacs wrote an npm in about 100 lines
21:19:33  <dominictarr>should be pretty easy to do a minimal client side npm
21:19:45  <mbalho>dominictarr: yea we just need cors to get enabled
21:19:49  <mbalho>ill go bug #iriscouch
21:21:29  * cianomaidinjoined
21:22:09  * mikolalysenkoquit (Quit: Lost terminal)
21:22:59  <dominictarr>http://englishrussia.com/2013/04/19/in-the-lava-mountains/?utm_source=buffer&utm_medium=twitter&utm_campaign=Buffer:%[email protected]%20on%20twitter&buffer_share=19098
21:23:10  <dominictarr>who wants to go to the mountains?
21:23:43  <mbalho>are those the ones on the east cost of russia?
21:23:49  <mbalho>near petropavlosk?
21:24:08  * ins0mniajoined
21:26:12  <Raynos>http://englishrussia.com/wp-content/uploads/2013/04/0_b1f18_9164062e_XXL-700x684.jpg
21:26:15  <Raynos>Hes wearing a hat
21:26:20  <Raynos>I expect it to be very warm near lava
21:26:55  * tilgovijoined
21:27:01  <CoverSlide>it's hard to tell the depth of that photo
21:27:45  <CoverSlide>but you can see snow in the distance
21:29:49  * Altreusquit (Read error: Operation timed out)
21:30:05  <mikeal>pkrumins: the testling website still has that as an example
21:30:30  <jesusabdullah>Raynos: probably hot up front, frigid on the back
21:30:37  <jesusabdullah>Raynos: if it's anything like a Fairbanks bonfire
21:30:59  * notalexgordon_quit (Ping timeout: 252 seconds)
21:32:48  * Altreusjoined
21:32:52  * notalexgordon_joined
21:33:19  * cianomaidinquit (Quit: cianomaidin)
21:40:27  <pkrumins>mikeal: how did you access testling's website? it should redirect to ci.testling.com
21:41:31  <mikeal>http://testling.com/docs/
21:41:39  <mikeal>i was reading the docs
21:41:43  <mikeal>thats where i got the cli usage
21:44:57  <pkrumins>sorry, the docs should redirect to ci.testling.com too
21:45:34  <pkrumins>only stuff that's on ci.testling.com works
21:47:22  * wolfeidauquit (Remote host closed the connection)
21:53:01  <mikeal>ok
21:53:10  <mikeal>how do i make my test run without doing a git push?
21:57:05  <mikeal>pkrumins: ^^
21:57:10  <st_luke>mikeal:
21:57:16  <st_luke>did you make javascriptnana
21:57:21  <st_luke>I cant stop laughing
21:59:32  <mbalho>chrisdickinson: do you know any workflow for doing env variables with beefy/browserify? i wanna have my client side code run in a dev mode when in beefy but then production mode when i bundle it and run it as a static site
21:59:35  <mikeal>this is the first i'm hearing of it
22:00:08  <Raynos>mikeal: go into the github web hooks page and press the test button
22:00:17  <st_luke>the bio is amazing "DOUGLAS I HAVEN'T HEARD FROM YOU IN DAYS PLESE GIVE NANA A CALL ^C^C^C :wq"
22:00:25  <mikeal>no, i want to run my tests before i do a checkin
22:00:47  <mikeal>my checkins trigger deploys
22:00:49  <chrisdickinson>mbalho: hm. at the moment it's just "point beefy at `development.js` that requires the main entry point after setting some vars"
22:00:53  <mikeal>i can't be checking shit in just to test it :)
22:01:00  <mbalho>chrisdickinson: oh thats not a bad hack
22:01:17  <pkrumins>mikeal: you can only run the tests with git push in testling-ci
22:01:22  <mbalho>chrisdickinson: might be cool to magically make process.env available?
22:01:54  <mikeal>pkrumins: really? this feels like a downgrade from what testling used to do
22:01:57  <chrisdickinson>mbalho: possibly -- though i like to keep it on the side of "beefy just outputs whatever browserify outputs"
22:02:09  <mikeal>can i run the tests if i'm in your "PROFESH" edition :)
22:02:21  <chrisdickinson>though no matter what that workaround should be documented
22:02:28  <pkrumins>mikeal: you still have to push them :)
22:02:37  <mikeal>what happened to the old way?
22:02:42  <mikeal>that was better, i could just run tests
22:03:09  <chrisdickinson>mbalho: write a module that uses a custom transform to pull in process.env at the moment of compilation and then require that module!
22:03:16  <mbalho>chrisdickinson: also can i pass multiple files to beefyify? like beefy foo.js bar.js so it will beefy whichever one gets requested (multiple pages)
22:03:21  <mbalho>chrisdickinson: cool
22:03:31  <chrisdickinson>right now beefy is just one file at a time
22:03:34  <jesusabdullah>st_luke I HAVEN'T HEARD FROM YOU DAYS GIVE YOUR NANA A CALL ^C^C^C :wq
22:03:45  <chrisdickinson>though that's more because of browserify than anything else
22:03:58  <jesusabdullah>oh, guys, so bad news and good news
22:04:04  <jesusabdullah>bad news: sounds like I have to cancel scotlandjs
22:04:05  <mikeal>pkrumins: is there a way i can push at testling instead of pushing to github?
22:04:06  <chrisdickinson>(i haven't really seen a lot of "here's how to use browserify responsibly in a multiple-entry-point situation" info)
22:04:26  <jesusabdullah>good news: I get to give a talk this thursday to some local dudes on node.js and I can basically do whatever I want
22:04:44  <jesusabdullah>was going to be trial run of other talk
22:05:18  * thl0joined
22:05:34  <mbalho>chrisdickinson: im just thinking if i have 2 pages, index.html and subpage.html, i would have two separate entry points but they are both in the same app so i would want to say `beefy index.js subpage.js` for it to work with either one
22:05:46  <mbalho>chrisdickinson: i think it would be a really tiny change
22:05:57  <mikeal>pkrumins: and does it run tests on branches? how do i tell if a branch is passing?
22:05:59  * chrisdickinsonnods
22:06:06  <jesusabdullah>so guys what cool things can I show some non-noders?
22:06:19  <jesusabdullah>I'm thinking just do a tutorial, have them write a few small-but-fun apps
22:06:46  <chrisdickinson>mbalho: i'm open to that
22:07:30  <pkrumins>mikeal: yes, with profesh you can push at testling directly
22:07:51  <mikeal>ok, i'll need to get in on that then :)
22:07:53  <pkrumins>i'm going to set it up for you
22:08:06  <pkrumins>currently you can push only the master branch
22:08:38  <mikeal>once i know it all works i can throw some startup money at you :)
22:09:29  * thl0quit (Ping timeout: 252 seconds)
22:09:44  * wolfeidaujoined
22:09:47  * yorick_joined
22:09:47  * wolfeidauquit (Remote host closed the connection)
22:09:58  * wolfeidaujoined
22:10:18  <dominictarr>jesusabdullah: bummed that your will miss scotland js!
22:10:39  <pkrumins>mikeal: we shut down the original testling because people were confused by the new testling-ci
22:10:54  <pkrumins>mikeal: they would ask questions about testling and talk about testling-ci or the other way around
22:11:06  <mikeal>i see
22:11:41  <mikeal>would be great if i could just do $ browserify test.js | testling —browsers=ie
22:11:59  * mbalho_joined
22:12:19  <pkrumins>i think that's something similar to what substack has planned to do with the testling command line tool
22:12:55  <mikeal>does the PROFESH edition support private repos?
22:13:02  * Benvie1quit (Quit: Benvie1)
22:13:44  <pkrumins>yes that's what profesh is all about
22:14:34  * Benviejoined
22:15:16  <mikeal>cool
22:15:49  <pkrumins>i just setup profesh for you
22:15:54  <pkrumins>sending you an email with instructions
22:16:39  <mikeal>sweet
22:17:01  * notalexgordon_quit (*.net *.split)
22:17:02  * yorickquit (*.net *.split)
22:17:02  * pikpikquit (*.net *.split)
22:17:02  * Domenic_quit (*.net *.split)
22:17:02  * mbalhoquit (*.net *.split)
22:17:02  * rook2pawnquit (*.net *.split)
22:17:02  * py1honquit (*.net *.split)
22:17:22  <mikeal>pkrumins: do you guys run tests in just node as an option?
22:17:46  <pkrumins>no, the tests only run in the browsers
22:18:00  * notalexgordon_joined
22:18:00  * pikpikjoined
22:18:00  * Domenic_joined
22:18:00  * rook2pawnjoined
22:18:00  * py1honjoined
22:18:19  <CoverSlide>jesusabdullah: robots
22:18:55  <mikeal>cool
22:21:21  * tmcwquit (Remote host closed the connection)
22:21:32  <pkrumins>mikeal: emailed!
22:21:35  * shuaibquit (Ping timeout: 252 seconds)
22:22:09  <pkrumins>mikeal: i also wrote this small tutorial http://www.catonmat.net/blog/howto-write-testling-ci-tests/
22:22:11  <jesusabdullah>CoverSlide: I have 3 days and no money
22:22:38  <jesusabdullah>CoverSlide: they want like very basic, "this is node, here are some things you can do with it"
22:22:59  <jesusabdullah>CoverSlide: so I'm thinking, basic apps examples, plus a few cool stream demos
22:24:56  <pkrumins>jesusabdullah: is that a topic they want someone to talk about at a conference?
22:25:07  <jesusabdullah>pkrumins: naw local tech meetup
22:25:14  <pkrumins>ah
22:27:23  <mbalho_>chrisdickinson: also i ran into a need for https://github.com/chrisdickinson/beefy/issues/2 again :D
22:30:08  * yorick_quit (Remote host closed the connection)
22:38:03  <mbalho_>dominictarr: what module should i use if i want storage in a browser and a) only care about indexeddb b) want to easily sync to multilevel later
22:38:47  <substack>jesusabdullah: oh no what happened to hoarders
22:38:54  <chrisdickinson>i've been using levelidb but it seems kind of broken
22:39:01  <chrisdickinson>at least, i've had to patch it a bit to make it work ):
22:39:19  <mbalho_>ah
22:39:25  <mikeal>does tape run tests in parallel?
22:39:34  <mikeal>or does it insure ordering?
22:39:40  <mbalho_>i think it ensures ordering
22:39:47  <dominictarr>mbalho_: yeah, we have done a lot of work on levelup since levelidb
22:40:09  <mbalho_>dominictarr: so i should browserify require('levelup') ?
22:40:20  <dominictarr>wont work
22:40:23  <jesusabdullah>substack: you missed the news? http://jesusabdullah.github.io
22:40:42  <dominictarr>so, what needs to happen is indexeddb -> leveldown api
22:40:53  <dominictarr>in leveldown, all the tests are in tap
22:41:03  <dominictarr>and then that can be injected into levelup
22:41:20  <mbalho_>dominictarr: so there is no good way to store data in a browser that syncs to multilevel right now
22:41:33  <dominictarr>not yet
22:41:36  <mbalho_>k
22:42:11  <dominictarr>but, it's not a huge job, just no one has needed it yet.
22:42:17  * ins0mniaquit (Remote host closed the connection)
22:42:23  <dominictarr>until now
22:43:14  <mikeal>is there a way to set the tape timeout?
22:43:36  <substack>jesusabdullah: http://www.boilerjs.com/
22:44:20  <jesusabdullah>wait what
22:44:39  <substack>it's like hoarders but less complete
22:44:47  <jesusabdullah>fuuuuuuck
22:44:56  <mbalho_>dominictarr: ok im confused about what needs to happen: can you explain what "indexeddb -> leveldown api" means exactly?
22:45:01  <jesusabdullah>I need all 150 functions to do anything? at least _ is small-ish?
22:45:06  <jesusabdullah>vaguely well-scoped?
22:45:08  <jesusabdullah>idk dude
22:45:14  <jesusabdullah>god damn it I feel like shit
22:45:33  <mikeal>substack: something is broken in the ordering of tape
22:45:47  <dominictarr>jesusabdullah: need to get jquery, mootools, ember, angular, and combine them all into one mega-framework
22:45:55  <mikeal>if i use require('testling') instead of require('tape'), all my tests pass
22:45:56  <mbalho_>dominictarr: oh wait so we polyfill leveldown in the browser
22:46:04  <dominictarr>mbalho_: exactly
22:46:06  <jesusabdullah>jtoolsular.js
22:46:09  <substack>http://www.reddit.com/r/javascript/comments/1cw5ln/boilerjs_a_new_utility_library_competitor_to/
22:46:09  <mbalho_>dominictarr: so nobody has written a leveldown polyfill, gotcha
22:46:13  <mbalho_>dominictarr: ok i will do that
22:46:16  <dominictarr>thats it
22:46:21  <dominictarr>sweet! :)
22:46:23  <substack>mikeal: you're using 0.10 is why
22:46:27  <substack>tape is broken on 0.10
22:46:31  <mikeal>hahah
22:46:32  <substack>don't require('testling')
22:46:41  <substack>0.10 broke a lot of things
22:46:41  <mikeal>well, i have to, or else my shit breaks :)
22:46:55  <jesusabdullah>yeah I mean this is why I'm conservative in upgrading my nodes
22:47:02  <jesusabdullah>I'm glad other people aren't
22:47:08  <mbalho_>the only stuff i use that is broken in 0.10 is substacks stuff :)
22:47:24  <jesusabdullah>but I'm a little slow to get in the water so to speak
22:47:29  <mbalho_>(in case you wanted unsolicited empirical data)
22:47:45  <substack>dominictarr: megamodule
22:48:01  <substack>6MB minified and gzipped
22:48:45  <dominictarr>make the site visitors install a browser extension that provides it!
22:48:57  <dominictarr>just like the good ole days
22:49:02  <jesusabdullah>NOSTALGIA
22:49:31  <dominictarr>and chuck in a flash interpreter!
22:50:25  <CoverSlide>how about ocx controls, and / or java applets?
22:55:28  <mbalho_>dominictarr: so levelidb isnt relevant anymore?
22:56:08  <dominictarr>you could get the leveldown api by just removing stuff…
22:56:13  <dominictarr>from levelidb
22:57:04  <dominictarr>remove streams… and any clever stuff it does with buffering the open, I think
22:57:12  <dominictarr>oh, and remove events
22:57:14  <jesusabdullah>guys what do you do when you feel sick and exhausted and shitty but still need to get work done :(
22:57:25  <dominictarr>have a knap
22:57:27  <jesusabdullah>and by shitty I mean down in the dumps
22:57:30  <mbalho_>jesusabdullah: change jobs
22:57:42  <dominictarr>go live in a tree!
22:58:03  <jesusabdullah>keep in mind I have mood swings, this isn't like justifiably shitty necessarily
22:58:19  * wolfeidauquit (Read error: Connection reset by peer)
22:58:43  * wolfeidaujoined
22:58:59  <dominictarr>I know.
22:59:04  <dominictarr>get some exercise.
23:00:59  <mbalho_>dominictarr: do you know if level-encoding will still be necessary? seems like that just simulates the leveldb encoding when it gets marshalled into idb
23:01:54  <dominictarr>well, you need binary right?
23:02:08  <mikeal>what are the grey ones? https://github.com/mikeal/couchie
23:02:31  <dominictarr>hmm, I don't know if indexeddb can take a typed array… I hope so
23:02:36  <mbalho_>dominictarr: it does
23:02:52  <mikeal>mbalho_: is it coercing it to something else tho?
23:03:22  <mbalho_>nope im pretty sure ive just set/get typed arrays and it "just works"
23:03:46  <dominictarr>mbalho_: I think you might not need it.
23:04:00  <dominictarr>leveldown only takes strings or buffers
23:04:06  <mbalho_>dominictarr: ah cool
23:04:38  <dominictarr>and, levelup takes care of telling you what it's gonna give you, I think?
23:04:57  <dominictarr>rvagg could answer this question better than me
23:05:27  <mbalho_>cool
23:07:06  * blobaumquit (Ping timeout: 245 seconds)
23:08:09  * shuaibjoined
23:09:01  * nicholasfjoined
23:10:34  <mbalho_>forked levelidb... ripped out stuff... put it into the leveldown test suite:
23:10:35  <mbalho_>total ................................................ 23/155
23:10:43  <mbalho_>132 to go!
23:11:20  * nk109joined
23:11:55  * notalexgordon_quit (*.net *.split)
23:11:55  * pikpikquit (*.net *.split)
23:11:55  * Domenic_quit (*.net *.split)
23:11:55  * rook2pawnquit (*.net *.split)
23:11:55  * py1honquit (*.net *.split)
23:11:58  <jesusabdullah>what is levelidb ?
23:12:27  <mbalho_>levelup on top of idb, but i need leveldown on top of idb so we can put levelup on top of leveldown on top of idb
23:12:32  <mbalho_>so i can put multiplevel on top of that
23:12:39  * notalexgordon_joined
23:12:39  * pikpikjoined
23:12:39  * Domenic_joined
23:12:39  * rook2pawnjoined
23:12:39  * py1honjoined
23:12:40  <mikeal>substack/pkrumins: if i wanted to write a test without bring in tape, what can i do to signal to testling that the test is finished or that it has failed?
23:12:41  <mbalho_>multilevel*
23:12:52  <CoverSlide>yo dawg!
23:15:26  * defunctzombie_zzchanged nick to defunctzombie
23:16:49  <mbalho_>rvagg: any suggestions on how i can run the leveldown test suite in a browser?
23:18:24  <pkrumins>mikeal: you can just output the tap format yourself like in this example: https://github.com/substack/tape#example
23:18:42  * fotoveritequit (Ping timeout: 264 seconds)
23:18:43  <mikeal>output it how?
23:19:04  <mbalho_>pkrumins: do you know how to take a tap test and get it to run in a browser? seems like you always need to run `tap test.js` in node to get it to run
23:19:30  <mikeal>yeah, that's what i'm wondering
23:19:34  <pkrumins>mikeal: just console.log it
23:19:45  <mikeal>ok
23:19:52  <pkrumins>testling patches consolelog in the browsers
23:19:54  <mikeal>if it throws at any point, that'll get picked up right?
23:20:17  <pkrumins>i forgot what happens if it throws
23:20:25  <pkrumins>yes it will be alright for sure
23:21:16  * thl0joined
23:21:29  <pkrumins>mbalho_: without using tape?
23:21:55  * jxson_joined
23:22:16  <mbalho_>pkrumins: im trying to port this lib to the browser and it only runs in node right now but all the tests use tap https://github.com/rvagg/node-leveldown/tree/master/test
23:22:31  <mbalho_>pkrumins: im just trying to understand the easiest way to port that test suite to run in the browser with browserify
23:22:36  * fotoveritejoined
23:22:40  <mbalho_>pkrumins: also im on 0.10 and tape is broken so i cant use it
23:22:48  <pkrumins>yes broken on 0.10.
23:23:11  <pkrumins>i forgot why we wrote tape exactly but there was something wrong with isaacs's node-tap when it ran in the browser
23:23:29  <mbalho_>oh
23:24:11  <pkrumins>i think i remember
23:24:16  <pkrumins>there were issues with yamlish module
23:24:30  <pkrumins>that node-tap uses
23:24:57  <pkrumins>so substack just wrote node-tape to avoid that issue
23:25:02  <mikeal>pkrumins: TAP doesn't seem to have a standard format to say the tests are done
23:25:25  <pkrumins>mbalho_: but you can try using node-tap as a replacement of tape and see what happens
23:25:25  * jxsonquit (Ping timeout: 248 seconds)
23:25:53  <mbalho_>isaacs: do you know if its possible to run node-tap tests in a browser?
23:26:07  <isaacs>mbalho_: i think tape is that.
23:26:12  <isaacs>mbalho_: it's a browserify-friendly tap
23:26:27  <isaacs>mbalho_: with almost identical interface
23:26:41  <mbalho_>isaacs: ok, i guess i have to downgrade to 0.8 then
23:26:49  <isaacs>mbalho_: wtf?
23:26:53  <isaacs>mbalho_: tape is 0.8 only??
23:26:57  <mbalho_>isaacs: yea
23:27:24  <isaacs>weird.
23:27:25  <mbalho_>isaacs: though i guess if i just browserify it it doesnt matter
23:27:25  <isaacs>howcome?
23:27:35  <mbalho_>isaacs: something about substack hating 0.10
23:27:48  <isaacs>mbalho_: put a bobcat in his room.
23:27:53  <mbalho_>lol
23:27:57  <isaacs>mbalho_: that'll teach him
23:28:05  <mbalho_>best i can do on short notice is 5 chickens and a coonhound
23:28:24  <isaacs>hey, you want results, it takes time
23:28:56  <jesusabdullah>How is 0.10 right now with regards to third party module support?
23:28:57  <pkrumins>node-tap should also browserify (i think)
23:29:09  <jesusabdullah>because I'm sure 0.10 as a platform is fine by now
23:29:11  <mbalho_>wait tap and node-tap are different?
23:29:17  * mbalho_changed nick to mbalho
23:29:18  <pkrumins>no same
23:29:24  <pkrumins>node-tap.
23:29:27  <mbalho>oh ok
23:29:54  <isaacs>jesusabdullah: most things Just Work
23:30:04  <isaacs>jesusabdullah: the things that don't are actively being fixed, or already have been
23:30:11  <pkrumins>because i totally remember we used node-tap before we ran into those issues with yamlish, so i'm thinking maybe the issues with yamlish are fixed and it works now when browserified.
23:30:27  <pkrumins>mikeal: trying to remember how testling decides when the test ends
23:30:30  <mbalho>ill give it a shot
23:30:41  <mikeal>i think i know
23:30:47  <mikeal>there is a weird directive
23:30:51  <pkrumins>mikeal: i think it's the last 3 lines you see in the example https://github.com/substack/tape#example
23:30:51  <mbalho>isaacs: is there a JS way to run tap tests? e.g. not command line `tap test.js` but some code i can put in the test to make it run?
23:30:55  <mikeal>console.log(start+'..'+end
23:31:07  <pkrumins>mikeal: yes possibly that line too
23:31:48  * stagasquit (Read error: Connection reset by peer)
23:31:49  <pkrumins>mikeal: try outputting the last 4 lines: start..end\n # tests X \n # pass Y \n # fail Z
23:33:10  <mikeal>pkrumins: when you browserify, do you enable sourcemaps?
23:33:24  <mbalho>isaacs: oh want disregard last question
23:33:34  <mbalho>wait*
23:33:45  <isaacs>node test.js
23:33:57  <mbalho>isaacs: i just learned about require.main === module ^^
23:33:59  <isaacs>tap test.js just runs the test and then prints out summary
23:34:05  <isaacs>mbalho: fer real?
23:34:13  <isaacs>mbalho: see, no one reads docs, ever. or specs.
23:34:27  <mbalho>isaacs: :)
23:35:25  <jesusabdullah>I always forget what the exact thing is (what is equal to what) but I've used it enough times I can look it up
23:35:56  <pkrumins>mikeal: here are the available browsers http://testling.com/browsers.json
23:36:09  <pkrumins>mikeal: we don't have ff/20 and chrome/26 yet sorry!
23:36:20  <pkrumins>i'll install them this week
23:36:34  * nk109quit (Quit: Computer has gone to sleep.)
23:36:40  <pkrumins>mikeal: firefox/19 and chrome/25 are the latest
23:36:56  <mikeal>i see
23:37:47  <mikeal>pkrumins: it would be awesome if you turned on sourcemaps :)
23:37:56  <pkrumins>yes sourcemaps are off
23:38:07  <mikeal>failure on line 1272 and i'm like NOPE
23:38:17  <pkrumins>haha i know
23:38:33  <pkrumins>okay well you can run your own browserify
23:38:43  <pkrumins>i mean browserify with your own args
23:39:50  <pkrumins>so that will require using specifying testling.html
23:40:02  <pkrumins>then bundling via testling.preprocess yourself
23:41:19  <pkrumins>so add testling.html to your repo and have it have <script src="bundle.js">, then update your package.json with "testling: { "testling.html" : "testling.html", "preprocess" : "./node_modules/.bin/browserify your_args test.js > bundle.js", ... }
23:41:43  <pkrumins>let me check on the "testling.html" field actually was it "html" or "testling.html" i forgot
23:42:30  <pkrumins>mikeal: it's "html" field
23:42:32  <mikeal>pkrumins: so, locally my tests work
23:42:45  <mikeal>but they are failing with no output on testling
23:42:49  <pkrumins>on which browsers?
23:42:57  <mikeal>https://ci.testling.com/mikeal/couchie
23:43:00  <mikeal>all of em
23:43:12  <mikeal>it could be that i'm not outputting the right thing to end the test
23:43:14  <mikeal>and it's timing out
23:43:20  <pkrumins>wait there is no firefox/20.0 and and chrome/26.0
23:43:24  <mikeal>but it doesn't say that you timed i tout
23:43:38  <pkrumins>it looks like a bug when a browser isnt present
23:43:41  <pkrumins>the output is empty
23:43:49  <pkrumins>mikeal: try firefox/19.0 and chrome/25.0
23:44:05  <pkrumins>all the other browsers have the `not ok 1 Error: No such doc. on line 914` error
23:44:13  <mikeal>i did
23:44:20  <mikeal>so, you are displaying these out of order :)
23:44:26  <pkrumins>oh sorry it must be the older tests still running
23:44:31  <pkrumins>no it will be all in order when they finish
23:44:45  <mikeal>cefeb6376f5dab1beeb2e81f9b331a8a40a03cbb is latest
23:44:57  <mikeal>i can see the exception message
23:45:06  <mikeal>but… click open, and nothing :(
23:45:08  <pkrumins>yep no such doc
23:45:10  <pkrumins>open, let me check
23:45:20  <pkrumins>works here
23:45:22  <pkrumins>http://git.testling.com/work/mikeal/repos/cefeb6376f5dab1beeb2e81f9b331a8a40a03cbb.1366673845527/1366673845649.03fd4b7d.html
23:45:42  <pkrumins>this is what i get when i click open
23:46:40  <mikeal>oh, shit, this passes on my Firefox but not on an old one
23:46:41  <mikeal>weird
23:46:57  <pkrumins>passes on ff 26 but not on 25?
23:50:41  <pkrumins>could be.
23:53:32  * mikolalysenkojoined