00:00:00  <jesusabdullah>also you are so grouchy
00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:02  <isaacs>substack: and i'm thankful that you feel the same.
00:00:05  <isaacs>er, the opposite
00:00:07  * ircretaryjoined
00:00:15  <py1hon>i'm with jesusabdullah on this one
00:00:15  <isaacs>because then i can shake that attachment by sending you pull reqs
00:00:21  <jesusabdullah>substack: here have a twix
00:00:26  <isaacs>substack: yeah, you need some chocolate or something, dude ;)
00:00:49  <py1hon>substack: come check out my new place, there's cappuccinos and beer
00:00:51  <py1hon>and maybe pizza
00:01:02  <substack>cool
00:02:41  <substack>isaacs: I hate it when things change for no compelling reason
00:02:53  <substack>I'm still upset about sys -> util
00:03:01  <isaacs>substack: we all are.
00:03:09  <jesusabdullah>haha
00:03:13  <py1hon>that's why i'm using mutt and not gmail
00:03:14  <jesusabdullah>I don't care about sys -> util at all
00:03:16  <isaacs>py1hon: you're an oaklander?
00:03:31  <py1hon>no, i'm in sf now
00:04:00  <py1hon>just finally got out of the south bay
00:04:08  <substack>congrats on that
00:04:25  <py1hon>thanks
00:04:34  <py1hon>i hate moving though
00:06:01  <py1hon>substack: what's new?
00:06:28  <substack>just writing lots of open source as usual
00:06:37  <substack>latest thing: http://github.com/substack/ploy
00:09:03  * dominictarrquit (Quit: dominictarr)
00:09:32  <substack>tiny command to set up a git server that you can push at to do continuous deployment
00:09:43  <py1hon>yeah, neat
00:09:48  <substack>including setting up all the http host routing automatically based on branches
00:10:12  <py1hon>that part sounds a little odd
00:10:27  <substack>it's so you can git push ploy master:staging
00:10:39  <substack>and then go to http://staging.yourdomain.com
00:10:45  <py1hon>ohhh, vhosts for branches
00:10:47  <py1hon>ok
00:11:01  <substack>yep to verify your new version before you push it to everybody
00:11:13  * jcrugzzquit (Ping timeout: 256 seconds)
00:11:18  <substack>and you can just do `ploy mv staging master` to do a live swap
00:11:22  <py1hon>yeah
00:11:43  * tilgoviquit (Ping timeout: 246 seconds)
00:12:33  <py1hon>hm, might be pizza time
00:13:20  <substack>where's your new place?
00:13:26  <py1hon>diamond heights
00:13:34  <py1hon>not far from glenn park bart station
00:13:40  <py1hon>just straight uphill
00:13:54  <substack>haha
00:14:19  <py1hon>i'm going to have to get in shape :(
00:14:32  <py1hon>man, part of the hill is just too steep for my lowest gear
00:15:02  <substack>the worst part is when bike starts to do a wheely on account of the steepness
00:15:20  <py1hon>yeah it's about that steep, or would be if i had a gear that low
00:15:23  * jcrugzzjoined
00:18:00  * AvianFluquit (Remote host closed the connection)
00:18:07  <py1hon>you still coming into the city to hack?
00:20:25  <substack>sure!
00:20:49  <py1hon>cool!
00:21:42  <rowbit>Hourly usage stats: [developer: 3, free: 23]
00:36:25  * jxsonquit (Remote host closed the connection)
00:37:27  * tmcwquit (Remote host closed the connection)
00:43:55  * CoverSlidequit (Ping timeout: 246 seconds)
00:44:47  <niftylettuce>found a super awesome taco/mexican place here in Raleigh
00:44:51  <niftylettuce>called Salsa Fresh, its da bomb.
00:51:16  * CoverSlidejoined
00:57:42  * Domenic__quit (Ping timeout: 264 seconds)
01:01:08  * Domenic__joined
01:07:52  * fallsemojoined
01:10:15  * Benviequit (Quit: Benvie)
01:10:31  * Benviejoined
01:14:06  * devaholicjoined
01:15:06  * Benviequit (Ping timeout: 264 seconds)
01:21:22  * jxsonjoined
01:21:42  <rowbit>Hourly usage stats: [developer: 1, free: 15]
01:25:33  * Benviejoined
01:32:06  * jxson_joined
01:34:36  * jxsonquit (Ping timeout: 245 seconds)
01:49:05  * thl0joined
02:21:42  <rowbit>Daily usage stats: [developer: 25, free: 520]
02:21:43  <rowbit>Hourly usage stats: [developer: 1, free: 27]
02:30:28  <Raynos> https://gist.github.com/Raynos/b8bf27d5d05811858bfc#file-continuable-js
02:30:33  <Raynos>I did a better thing
02:31:22  * jxsonjoined
02:32:06  * jxson_quit (Ping timeout: 245 seconds)
02:33:53  * jxsonquit (Read error: Connection reset by peer)
02:36:51  * shuaibquit (Ping timeout: 256 seconds)
02:40:04  * AvianFlujoined
02:48:34  <rvagg>too much magic still
02:49:11  <rvagg>shun magic
03:05:38  <CoverSlide>hmph. muggles
03:06:37  * shuaibjoined
03:09:17  * jxsonjoined
03:13:00  * st_lukequit (Remote host closed the connection)
03:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 15]
03:27:55  * thl0quit (Remote host closed the connection)
03:29:53  * jxsonquit (Remote host closed the connection)
03:39:25  * AvianFluquit (Remote host closed the connection)
03:54:06  * defunctzombie_zzchanged nick to defunctzombie
03:56:08  * tmcwjoined
04:10:44  * shuaibquit (Ping timeout: 252 seconds)
04:14:20  <niftylettuce>isaacs: https://github.com/mikeal/request/issues/418
04:14:39  <niftylettuce>haven't delved in too much, have you seen this b4?
04:15:19  <niftylettuce>related https://github.com/joyent/node/issues/5045
04:19:18  * jcrugzzquit (Ping timeout: 264 seconds)
04:19:21  * dguttmanquit (Quit: dguttman)
04:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 4]
04:23:49  <Raynos>Rvagg: does it really have too much magic?
04:31:53  <rvagg>Raynos: magic is my main objection to Promises, although I don't feel as strongly as you seem to about the whole issue
04:32:21  <Raynos>My idea is not a promise
04:32:35  <Raynos> Its an order of magnitude simpler
04:32:38  <rvagg>Raynos: @cjno argues that they take a bit longer to learn but are better in the long run, but the fact that they take longer to learn is a drawback, if you can't look at is as Node programmer and see what's going on without digging too deeply then you may be in trouble
04:33:04  <rvagg>yeah, but yours suffers a similar problem, I have to squint at the code and try and *imagine* what it might be doing
04:33:33  <rvagg>perhaps I'm not turning my head in the right direction when I look at it
04:34:17  <Raynos>Rvagg: that's because its lazy
04:34:32  <Raynos>Lazy things are a mindfuck.
04:34:33  <rvagg>yeah, but you can't do lazy without doing magic
04:35:05  <rvagg>not that all magic is bad, it's a degree thing, too much magic = rails = bad
04:35:12  <Raynos>Not really. There's no magic
04:35:34  <Raynos>Its just higher order functions.
04:37:47  <Raynos>I see your main point though
04:38:09  <Raynos>Its not idiomatic js or idiomatic node
04:40:19  * jxsonjoined
04:40:58  * fallsemoquit (Quit: Leaving.)
04:45:38  * jxsonquit (Ping timeout: 255 seconds)
05:04:39  * tmcwquit (Remote host closed the connection)
05:08:25  * shuaibjoined
05:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 5]
05:32:07  * Ikeymanjoined
05:37:55  * Ikeymanquit (Quit: Ikeyman)
05:38:06  * jcrugzzjoined
05:52:52  <guybrush>isaacs: if you have a minute i would like to discuss git-submodules in git-dependencies -- https://github.com/isaacs/npm/issues/1876
05:53:27  <guybrush>basically i think `git-archive` just doesnt work w/o some ugly hack
05:54:21  <guybrush>so what do you think about replacing `git-archive` with `git clone tmp && git checkout co && git submodule update --init --recursive && addLocalDirectory()`
05:56:49  <guybrush>git-submodules just suck
05:57:17  <niftylettuce>those jpegtran-bin and optipng-bin packages are super useful! just implemented in 0.1.0 of express-cdn /cc paul_irish ryanseddon
06:05:41  * shuaibquit (Ping timeout: 252 seconds)
06:08:28  * shuaibjoined
06:08:34  * defunctzombiechanged nick to defunctzombie_zz
06:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 23]
06:34:41  <jesusabdullah>rvagg: Would love some suggestions on how to make tmgh more follower-friendly
06:35:01  <jesusabdullah>rvagg: I don't want to kill it obviously (I like it honestly) but I do recognize that it's noisy
06:36:16  <rvagg>jesusabdullah: I don't know, depends on what you see the point of it being
06:36:36  <rvagg>I'm just a bit sensitive to noise level on my various feeds and prune now and again to make it manageable
06:36:36  <jesusabdullah>hmm
06:36:42  <jesusabdullah>Yeah I understand that
06:36:48  <jesusabdullah>but you're not the only one that has said something
06:36:55  <rvagg>github has a follow function if I wanted to see the detail of what you were doing there
06:37:11  <jesusabdullah>I do wish you could block by hashtag in the web client
06:37:29  <rvagg>yeah, that's annoying
06:37:49  <jesusabdullah>rvagg: I think the most annoying part is the tweet-on-push
06:38:00  <jesusabdullah>rvagg: like, suppose I straight turned that off. Do you think it would be more tolerable?
06:38:17  <jesusabdullah>rvagg: what I'm thinking more is, collect push events and tweet a digest near end-of-day
06:39:16  <rvagg>jesusabdullah: https://twitter.com/search/realtime?q=%23tweetmygh&src=typd
06:39:22  <rvagg>pushes don't seem to be the most frequent
06:39:48  <jesusabdullah>rvagg: I've been deleting push tweets the last few days
06:40:23  <rvagg>I dunno, sometimes I feel abnormal when I see people following many hundreds of people on twitter and it's even worse on github where it's so difficult to keep track of what's going on when following more than a few poeple
06:40:39  <rvagg>I HAVE THRESHOLDS DAMNIT!
06:40:40  <LOUDBOT>DID YOUD REAM YOU WERE ON A BOAT
06:40:51  <jesusabdullah>yeah, I mean
06:41:12  <jesusabdullah>on github I don't really pay attention to the follow-people feed, I don't find it useful
06:41:20  <jesusabdullah>I star projects and follow people so I can find them later
06:41:29  <jesusabdullah>and just do "real follow" on projects I care deeply about
06:42:08  <jesusabdullah>I think I'll add configuration to tmgh so you can turn on/off tweeting by event type first
06:42:27  <jesusabdullah>and then experiment with adding push digests
06:44:30  <rvagg>mm
07:08:39  <jesusabdullah>muaha
07:08:55  <jesusabdullah>I already have the configs in the couch doc just not exposed via the ux
07:08:59  <jesusabdullah>so I turned off push tweets
07:09:02  <jesusabdullah>on my account
07:09:03  <jesusabdullah>>:3
07:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 13]
07:22:18  * FireFlyquit (Ping timeout: 276 seconds)
07:23:49  * FireFlyjoined
07:29:06  * cianomaidinjoined
07:40:10  * cianomaidinquit (Quit: cianomaidin)
08:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 45]
08:34:16  * dominictarrjoined
08:41:39  * cianomaidinjoined
08:41:44  * cianomaidinquit (Client Quit)
08:50:18  * spionjoined
09:09:40  * spionquit (Ping timeout: 246 seconds)
09:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 40]
09:29:13  * Domenic__quit (Ping timeout: 240 seconds)
09:30:58  * Domenic__joined
09:31:03  * nicholas_quit (Read error: Connection reset by peer)
09:31:34  * nicholas_joined
09:41:17  * jcrugzzquit (Ping timeout: 256 seconds)
10:00:05  * dominictarrquit (Quit: dominictarr)
10:20:05  * shuaibquit (Quit: Computer has gone to sleep.)
10:21:42  <rowbit>Hourly usage stats: [developer: 1, free: 23]
10:27:56  * dominictarrjoined
10:32:35  <dominictarr>juliangruber: ping?
10:40:34  * cianomaidinjoined
10:44:55  * cianomaidinquit (Client Quit)
10:47:19  * fotoveritejoined
10:56:52  * fotoveritequit (Quit: fotoverite)
11:03:27  * shuaibjoined
11:04:03  <jez0990>dominictarr: https://github.com/jez0990/crdt-monotonic-dag
11:04:43  <jez0990>npm install and check out the test.js, feedback would be appreciated
11:06:03  <dominictarr>what are the tags?
11:06:16  <dominictarr>are they edges to other nodes?
11:06:44  <jez0990>yeah, like indexes through time
11:07:23  <jez0990>the building blocks for a revisioning system, and also higher-level structures
11:07:51  <dominictarr>it's better to link to documentation than to copy it, because then it won't get out of date.
11:10:08  <dominictarr>jez0990: what is index for in addChild ?
11:10:35  <dominictarr>does parent() return the parent's key, or the parent object?
11:11:36  <jez0990>the index is just a splice index, because the children property is an array
11:12:09  <jez0990>and parent() returns the parent object
11:12:37  <jez0990>I don't know really whether it's even worth having
11:12:52  <dominictarr>parent() is useful
11:12:59  <jez0990>it's probably best to make the abstraction cleaner at this level
11:13:05  <jez0990>parent gets out of date easily
11:13:16  <dominictarr>you should probably leave out index, because that won't be commutative
11:14:33  <jez0990>so it's interesting, because tagged isn't a strict index.... it does't really matter if the source clocks are crazily out of sync
11:14:47  <jez0990>it's just handy that they're in vaguely the right order
11:15:33  <jez0990>sorry, by 'strict index' I mean an ordered array
11:16:11  <dominictarr>hmm, so how do I get the children of a row?
11:16:25  <jez0990>aha
11:16:49  <jez0990>I should probably have created a function for that, but you can interrogate the Row.state.children
11:17:26  <dominictarr>hmmm, .state.children is an array?
11:17:43  <jez0990>yes
11:17:54  <dominictarr>if two nodes update that at the same time, one will overwrite the other - right?
11:18:19  <jez0990>two updates of the same node?
11:18:41  <dominictarr>yes, but from different machines
11:18:50  <dominictarr>node = row in this case
11:19:01  <jez0990>no, what will happen is the node is duplicated twice
11:19:08  <jez0990>it becomes a revision tree
11:19:16  <dominictarr>oh, okay - that is fine
11:19:20  <jez0990>...if you like the couchdb terminology
11:19:54  <dominictarr>so, how do you query the revisions?
11:20:08  <jez0990>navigating that tree is I think out of scope for this module, as per the readme, but it's definitely a useful thing
11:20:38  <jez0990>then again, if this isn't useful without out that, maybe I should just throw it in
11:20:44  <dominictarr>does the duplicate have a pointer to the previous revision?
11:20:52  <jez0990>and change the name to something more generic?
11:21:01  <dominictarr>the name of the module?
11:21:34  <jez0990>yes, only through its tag property, which is an array
11:21:49  <rowbit>Hourly usage stats: [developer: 0, free: 45]
11:22:04  <jez0990>the pointer to the old revisions would always be the first item in the tag array
11:22:09  <jez0990>*revision
11:22:16  <dominictarr>that is the other thing I'm confused about
11:22:23  <dominictarr>what tags are for exactly
11:22:53  <jez0990>and yeah I meant the name of the module
11:23:16  <dominictarr>because they seem like another way to implement a graph, as well as addChild
11:23:24  <jez0990>yes, tags allow you to link structures together through time
11:23:33  <dominictarr>through time?
11:23:37  <jez0990>yup
11:25:20  <jez0990>I like to think of it as: the core DAG is the crystal of information, it's what needs to be transmitted & tags are a local projection of that information
11:26:11  <jez0990>*almost* as if the DAG is some kind of compressed state, and the tags decompress it
11:26:56  <dominictarr>when I run the test the only output I get is 'beep boop'
11:27:11  <jez0990>:D
11:27:15  <jez0990>yeah it's not a proper test
11:27:26  <jez0990>I'll have to write something
11:27:33  <jez0990>but beep boop is the correct answer
11:27:39  <dominictarr>yes. you need some runnable examples
11:28:01  <dominictarr>I was just expecting a bit more - like it printed out a tree representing the DAG
11:28:09  <jez0990>it's just showing how to print a character trie/DAG thing
11:28:26  <jez0990>a visual?
11:28:41  <dominictarr>oh, I think I see
11:29:08  <dominictarr>ascii is fine - but something showing the structure of the dag
11:29:12  <dominictarr>like npm ls
11:29:14  <jez0990>b - e - e - p
11:29:57  <dominictarr>the point here is to be obvious
11:29:58  <jez0990>\ o - o /
11:30:02  <jez0990>aha
11:30:04  <dominictarr>so use a json structure
11:30:08  <dominictarr>or something
11:30:13  * AvianFlujoined
11:30:21  <dominictarr>like crdt.toJSON()
11:30:35  <dominictarr>should give you a tree object that is the current snapshot
11:31:03  <jez0990>interesting
11:31:24  <dominictarr>you need some examples where the user feels like they are observing a tree
11:31:24  <jez0990>yes i really like that actually
11:31:41  <dominictarr>I have toJSON on all the scuttlebutts
11:32:11  <jez0990>so what did you think about spinning out other modules vs make this one atomically useful?
11:32:20  <dominictarr>or, make something that walked the fs, and then replicated that
11:32:47  <jez0990>that would be a good example
11:32:56  <dominictarr>well, thing is, I'm still too confused about what this module does
11:33:20  <dominictarr>and I've been looking at it and talking to it's author for half an hour
11:33:29  <jez0990>what it does, or what it's purpose is?
11:33:41  <dominictarr>what it does
11:33:47  <dominictarr>and how it does it
11:33:53  <dominictarr>I understand it's purpose
11:36:15  * cianomaidinjoined
11:37:02  <jez0990>every node is its own index over the rest of the structure
11:37:40  <jez0990>so I overrided the add method to create a timeSeq index at the point of adding the node
11:39:40  <jez0990>the node/row terminology has definitely been hurting my brain... from all my couchdb efforts I have it engrained that row==node and db==doc
11:40:06  <jez0990>have you seen SwiftFS? it's the openstack answer to this problem http://www.bretagne-networking.org/wp-content/uploads/2012/11/WOS2_shapiro.pdf
11:41:32  <dominictarr>row was just dominictarr/crdt thing
11:42:00  <dominictarr>if we are discussing a graph it should definately be node
11:42:55  <dominictarr>but call it a forrest instead of a doc… it's not really a db - because a scuttlebutt is the same as a whole doc in couch or mongo.
11:43:03  <dominictarr>or a graph
11:43:41  <dominictarr>oh, a graph doesn't have to be connected does it?
11:44:43  <jez0990>don't think so
11:45:27  <jez0990>I think graph might give the wrong impression though
11:45:52  <dominictarr>well, DAG = Doc
11:45:54  <dominictarr>then?
11:46:05  <jez0990>this is very much "anti-cyclic" (in its non-formal sense)
11:46:08  <jez0990>yeah, pretty much
11:46:30  <jez0990>though multiple DAGs is basically a poset
11:46:36  <jez0990>minus transitivity
11:48:07  * cianomaidinquit (Quit: cianomaidin)
11:48:15  <dominictarr>visualization for this stuff would aid the understanding immensly
11:48:28  <jez0990>for sure :)
11:48:40  <dominictarr>actually, my friend nrkn has done lots of graph visualization stuff
11:48:55  * cianomaidinjoined
11:48:55  * cianomaidinquit (Client Quit)
11:49:56  <jez0990>I plan to build in transitivity by storing a snapshot of a DAG, at the time the DAG is inserted, in the DAG's root (will need to create a function more clever that addChild for this!)
11:52:03  * shuaibquit (Quit: Computer has gone to sleep.)
11:53:59  * yorickjoined
11:55:27  <jez0990>dominictarr: "a scuttlebutt is the same as a whole doc in couch or mongo." -- are you sure you mean that?
11:56:02  <jez0990>the only way that makes sense to me, is if individual Docs are stored in the _attachments :P
11:56:17  <dominictarr>I mean, the same amount of data, with respect to your application
11:56:27  <dominictarr>like, say, you order a pizza
11:56:47  <dominictarr>first you fill out what toppings, what base etc
11:56:54  <dominictarr>then your address
11:57:06  <dominictarr>then save that into mongo as an order
11:57:24  <dominictarr>one order == one doc
11:57:37  <dominictarr>if this was with scuttlebutt, one order == one scuttlebutt
11:57:44  <jez0990>one crdt == one scuttlebutt?
11:57:49  <dominictarr>yes
11:58:24  <dominictarr>if you would write it one one piece of paper
11:58:30  <dominictarr>then it's a one document
11:58:30  <jez0990>couch docs are atomic though
11:58:45  <jez0990>scuttlebutts aren't
11:58:49  <dominictarr>yes. they are not the same in that respect
11:58:53  <jez0990>riiiight
11:59:28  <jez0990>so with that in mind, my argument stands I think
11:59:38  <jez0990>but who needs metaphors anyway?
11:59:47  <dominictarr>everyone needs metaphores
12:00:24  <dominictarr>so, yes - if you look at it from the persective of moving parts - then a row is more like a couch doc
12:00:33  <dominictarr>and a scuttlebutt is a whole db
12:03:51  * spionjoined
12:08:07  <jez0990>I think what I ultimately want is a thin server wrapper around a peer with different urls endpoints for each scuttlebutt and also distinct authorisations for each (just like couch)
12:08:57  <dominictarr>yes, but you need duplex connections to each scuttlebutt
12:09:13  <dominictarr>could do that with websockets...
12:09:22  <jez0990>and muxdemux
12:09:23  <jez0990>sorted
12:09:44  <dominictarr>but, fallbacks and the ugly way fallback libs work-
12:10:07  <dominictarr>jez0990: it's really important to decouple abstractions from networking
12:10:25  <dominictarr>how http *must* be over tcp is really really bad
12:11:00  <substack>completely
12:11:21  <substack>learned that lesson from rpc-stream
12:11:36  <substack>and from the horribleness of dnode when it was coupled to tcp/socket.io
12:11:43  <dominictarr>what if you wanted to use http over bluetooth?
12:11:58  <dominictarr>or infrared?
12:12:11  <dominictarr>or serial?
12:12:18  <dominictarr>or stdio?
12:12:40  <dominictarr>or telepathy?
12:14:59  <jez0990>carrier pidgeon!
12:15:54  <jez0990>would depending on urls that depend on DNS count as decoupled enough?
12:16:34  <jez0990>I should find out how telehash is coming along
12:17:30  <dominictarr>well, a url is a part of http
12:17:52  <dominictarr>you need a url like concept
12:17:55  <yorick>there are plenty non-http urls (or are they called urns then?)
12:18:05  <dominictarr>you can build that with mux-demux too
12:18:06  <yorick>mailto: is a good example
12:18:24  <dominictarr>yorick what does the n stand for
12:18:32  <dominictarr>name?
12:18:34  <yorick>yes
12:19:03  <yorick>oh, they are actually called URI's
12:19:08  * AvianFluquit (Remote host closed the connection)
12:19:19  <yorick>URNs are a subset of URIs
12:20:27  <dominictarr>right Identifier
12:20:36  <dominictarr>right: "identifier"
12:21:06  <yorick>I don't think anybody really knows the difference between URLs and URIs
12:21:36  <yorick>http://damnhandy.com/2011/01/18/url-vs-uri-vs-urn-the-confusion-continues/
12:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 43]
12:21:49  <dominictarr>this is an acceptable idea, I think. the idea of a canonical way of referring to some object it pretty platonic.
12:22:03  <pkrumins>http doesnt really have to to be over tcp necessarily, it's just that tcp is the most popular reliable transport protocol
12:22:59  <yorick>it seems that URI's just point to things and URLs can convey different information
12:25:12  <dominictarr>pkrumins: yes, but the implementations never expose it that way, sadly
12:25:26  <dominictarr>maybe soon: https://github.com/nathanaschbacher/parsnip/issues/1
12:27:14  <pkrumins>oic what you mean. yes. http is always coupled with tcp in all implementations. people take it for granted.
12:29:52  <dominictarr>and that is the way it is with MOST protocols
12:30:15  <dominictarr>and most applications
12:30:32  <dominictarr>it's a place where unix isn't being unix enough.
12:36:57  <jez0990>would it be unthinkable for one of the browser vendors to offer HTTP over websocket someday?
12:37:29  <jez0990>also the only way to have uris that abstract the network is to use DNS, and (something like) telehash is the only way to do distributed DNS - is this true?
12:37:40  * fotoveritejoined
12:42:14  * fotoveritequit (Ping timeout: 252 seconds)
12:42:25  <dominictarr>jez0990: not sure - I think you could do URIs a different way
12:42:43  <dominictarr>DNS isn't the only way to address a network
12:43:05  <dominictarr>the only important thing is that it is canonical
12:43:28  <substack>ploy 0.7 - now with `ploy log`
12:43:35  <dominictarr>jez0990: http over websockets would be absurd, considering that websockets is a part of http
12:43:46  <dominictarr>but you should be ABLE to do that
12:44:47  <dominictarr>juliangruber: where did you put your multilevel benchmarks?
12:45:01  <dominictarr>the ones that compared to mongo, redis, etc?
12:46:09  <juliangruber>dominictarr: https://github.com/juliangruber/multilevel-bench
12:46:17  <juliangruber>those suck btw
12:46:27  <juliangruber>because the test framework sucks
12:47:17  <pkrumins>yo all you other deployment systems
12:47:19  <pkrumins>your cool and all, but
12:47:22  <pkrumins>ploy is the best deployment system ever
12:48:05  <pkrumins>ever.
12:48:33  <dominictarr>juliangruber: what computer are you running those tests on?
12:48:43  <dominictarr>oh, I see it
12:51:17  <jez0990>pkrumins: any plans for a browserling offering yet?
12:51:54  <pkrumins>what do you mean?
12:52:07  <jez0990>hosted ploy
12:52:17  <jez0990>or some such
12:52:46  <pkrumins>yes eventually
12:53:27  <substack>meh people can run it themselves
12:53:30  <substack>it's crazy easy to do
12:53:56  <pkrumins>or that
12:54:13  <substack>but we can sell them test hosting
12:54:18  <pkrumins>well unless they want to pay us money
12:57:27  <jez0990>I don't doubt that it's easy! I suppose it would fit more naturally with nodejitsu's portfolio though
13:01:55  <dominictarr>juliangruber: what did you do to get the flamegraph last time?
13:10:10  * fotoveritejoined
13:11:41  * AvianFlujoined
13:13:33  * defunctzombie_zzchanged nick to defunctzombie
13:15:23  * thl0joined
13:17:15  * thl0quit (Remote host closed the connection)
13:17:52  * thl0joined
13:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 40]
13:21:50  <juliangruber>dominictarr: shit, I had instructions somewhere, but I can't find them
13:22:04  * thl0quit (Ping timeout: 245 seconds)
13:22:09  <juliangruber>https://github.com/juliangruber/multilevel/blob/master/bench.js
13:22:14  <dominictarr>did you do it on your laptop? or on a smartos vm?
13:22:24  <juliangruber>and http://blog.nodejs.org/2012/04/25/profiling-node-js/
13:22:25  <juliangruber>smrtos vm
13:25:13  * fotoveritequit (Quit: fotoverite)
13:26:54  <dominictarr>juliangruber: hmm, tried signing up to joyent, but they kept on telling me to update my payment method...
13:31:58  * mikolalysenkojoined
13:44:00  <juliangruber>dominictarr: you can use mine
13:45:08  <dominictarr>ah, cool!
13:49:09  * thl0joined
13:52:38  * mikolalysenkoquit (Ping timeout: 245 seconds)
13:54:45  * fallsemojoined
13:57:41  * AvianFluquit (Remote host closed the connection)
13:59:59  <jez0990>oh wow, I didn't realise how insane OpenStack is - what a waste of human energy :/
14:06:02  <jez0990>it's like jquery for enterprise infrastructure
14:06:19  <dominictarr>a huge bundle, you mean?
14:11:12  <jez0990>yeah pretty much, which is a disappointing realisation, but I'm not sure I why I ever expected anything different
14:13:29  <dominictarr>jez0990: that is why we need ANARCHY OS
14:13:42  <jez0990>I was just about to mention :D
14:13:58  <jez0990>one of the things I've been thinking about a lot is how all code structure is a DAG
14:14:19  <jez0990>I want to put functions in the crdt rows
14:14:56  <dominictarr>yes, that is because programming lang grammar is defined by a push down automaton.
14:15:12  <jez0990>it would be a realtime DVCS
14:15:46  <dominictarr>jez0990: have you seen http://github.com/substack/scoper
14:17:21  <jez0990>no, but that's perfect
14:18:38  <jez0990>dominictarr: I suspect the only other thing needed is a signal abstraction and you have a sort of unlimited-nesting virtual machine
14:19:09  <dominictarr>signal, like in FRP?
14:19:15  <jez0990>yeah
14:20:05  <jez0990>I know it sounds pretty mental, but in my head I can totally see it working :P
14:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 36]
14:24:14  * tmcwjoined
14:36:32  <dominictarr>http://37.153.99.230:8080/flame.svg
14:36:43  <dominictarr>^multilevel flamegraph
14:37:08  <dominictarr>looks like the biggest part is buffer.shift() is duplex
14:37:17  <dominictarr>in duplex
14:38:18  <dominictarr>maybe, can make a special case, where if the buffer is empty, it just goes directly to emit('data')
14:39:19  <dominictarr>hmm, it does that already
14:39:37  <juliangruber>where? oO
14:40:23  <dominictarr>in duplex
14:41:00  <dominictarr>juliangruber: so one thing here that is unrealistic about the benchmark is that you are doing puts in a loop
14:41:12  <juliangruber>yeah, right
14:41:29  <dominictarr>which is gonna build up a massive buffer, and then drain it all when it can
14:41:41  <juliangruber>which is still one use case
14:41:50  <juliangruber>but there are others that might be more prominent
14:42:15  <dominictarr>true, it's not gonna be that common, I think though
14:42:29  <juliangruber>then you'd use a writeStream I guess
14:42:51  <juliangruber>so let's look at a blog for example
14:43:04  <juliangruber>you have lots of range queries
14:43:11  <juliangruber>and single gets
14:43:18  <juliangruber>and some puts
14:43:20  <dominictarr>yes
14:43:53  <juliangruber>the reason I just did many puts in a loop is, that's easy to do on all databases
14:44:08  <juliangruber>so we could make a benchmark that's specific to leveldb
14:44:10  <dominictarr>also, you probably have only relatively few writes per connection, but many connections
14:44:13  <dominictarr>juliangruber: true
14:44:23  <juliangruber>^ true
14:44:31  <juliangruber>:D
14:45:01  <dominictarr>the client that does many writes per connection, will probably be doing something like logging, or replication
14:45:14  <dominictarr>and will use back pressure
14:45:28  <juliangruber>yes
14:46:39  <juliangruber>I think, we'll get way more performance as soon as events are propageted more intelligently
14:46:50  <juliangruber>as the network is a big bottleneck
14:47:00  <dominictarr>this is testing my fork, which has that disabled
14:47:20  <juliangruber>oh, ok
14:48:13  <dominictarr>so, what if, to be nicer to multilevel, we hooked into pause and drain when doing the loop?
14:48:52  <dominictarr>that isn't something we can translate into other databases, unfortunately
14:49:02  * fotoveritejoined
14:49:05  * tmcwquit (Remote host closed the connection)
14:49:06  <juliangruber>hmmm, I don't get that
14:49:56  <dominictarr>call client.put until client emits pause
14:50:07  <dominictarr>then wait for client to emit drain
14:50:43  <dominictarr>or, run this benchmark with a stream instead.
14:51:41  <fotoverite>dominictarr: How's the weather down in waterford?
14:52:50  <dominictarr>gray
14:53:36  <dominictarr>juliangruber: also, a surprising amount of time seems to be spent on this https://github.com/dominictarr/rpc-stream/blob/master/index.js#L49
14:54:02  <juliangruber>oh, yeah
14:54:17  <fotoverite>gray / grand here also
14:54:55  <juliangruber>dominictarr: we can overwrite unused handlers instead of deleting -> possibly delayed GC but less hash memory management work
14:57:36  * fotoveritequit (Quit: fotoverite)
14:57:53  <dominictarr>it would create more keys
14:58:04  <dominictarr>I'm gonna try it and see how it looks
14:58:39  <dominictarr>oh no, I see what you mean.
14:58:55  <dominictarr>we could use a circular buffer in an array
14:59:40  <juliangruber>but still need to periodically delete the oldest callbacks
14:59:53  <dominictarr>that might work for the shift too
15:00:09  <dominictarr>and, there will be problems if the cbs are out of order
15:00:33  <juliangruber>yes
15:00:35  <juliangruber>hmmmm
15:00:42  <juliangruber>maybe go to go?
15:00:42  <juliangruber>:)
15:01:21  <juliangruber>do you thing a circular buffer will really improve this?
15:01:33  <juliangruber>I don't see a good way around
15:01:50  <juliangruber>that issue
15:02:19  <juliangruber>except a really good datatype
15:02:19  <juliangruber>datastructure
15:03:01  <juliangruber>what about callbacks[x] = null?
15:03:17  <dominictarr>here is what that looks like http://37.153.99.230:8080/ml2/flame.svg
15:03:57  <juliangruber>that's way better, right?
15:04:09  * kenperkinsquit (Remote host closed the connection)
15:04:58  * kenperkinsjoined
15:05:06  <juliangruber>it's only stream.drain now
15:05:07  <juliangruber>cool
15:12:39  <dominictarr>hmm… the flame graph looks like it's better, but if I set =null the benchmark slows down quite a bit
15:12:46  * tmcwjoined
15:14:06  <dominictarr>https://gist.github.com/dominictarr/5378781
15:16:51  <dominictarr>when it gets to 100000 net performance degrades
15:17:24  <dominictarr>on the other two tests it's ~10000 opts/second
15:17:55  <dominictarr>actually, it's very close to direct
15:18:37  <dominictarr>I'm just gonna disable the run(1e5)
15:19:06  <juliangruber>(btw, I'm on my company's devweekend right now and yesterday gave a talk about writing a distributed chat, and they totally liked it)
15:19:19  <juliangruber>1e5 is too much
15:21:23  <dominictarr>http://37.153.99.230:8080/ml2/flame.svg
15:21:25  <dominictarr>weird
15:21:37  <dominictarr>where have all the function names gone?
15:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 31]
15:23:11  <juliangruber>the big blog is still stream.drain?
15:23:37  <juliangruber>*block
15:27:36  <dominictarr>don't know
15:28:09  <dominictarr>to be honest, I expect JSON to be a fairly large part
15:28:31  <dominictarr>and something about turning strings into buffers maybe
15:35:51  <dominictarr>juliangruber: aha, got it fixed http://37.153.99.230:8080/ml2/flame.svg
15:41:46  <juliangruber>cool
15:41:58  <juliangruber>dominictarr: I'm off to wellnesss, cyaaa
15:42:08  <dominictarr>catch you later
15:46:35  * tmcwquit (Remote host closed the connection)
16:16:32  * jcrugzzjoined
16:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 13]
16:35:22  * tmcwjoined
16:39:54  <dominictarr>Raynos: you there?
17:10:49  * thl0quit (Remote host closed the connection)
17:19:57  <juliangruber>substack: seems like you didn't push ploy 0.7 to github yet
17:20:32  * tmcwquit (Remote host closed the connection)
17:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 33]
17:25:10  <jez0990>dominictarr: looking now I realise that I never actually implemented the Seq sorting by row._timestamp, oops
17:25:33  <jez0990>also I'm going to tidy it up so it's way easier to read
17:33:22  <substack>juliangruber: pushed
17:35:44  <pkrumins>dominictarr, Raynos, we deployed the retry code update a few days ago and it looks like red browsers don't happen anymore
17:36:54  <dominictarr>pkrumins: you mean tests always pass?
17:54:39  <hij1nx>dominictarr: it seems like es.parse() is parsing, but the 'data' event is emitting a string type
17:55:03  <dominictarr>hij1nx: in the flamegraph?
17:56:02  <hij1nx>dominictarr: no, i just have a simple socket.pipe(es.split()).pipe(es.parse()).on('data', function(d) { console.log(typeof d === string); // true })
17:56:02  <dominictarr>hij1nx: es.parse uses string.split('\n') and then JSON.parse
17:56:51  <dominictarr>will gladly merge a pr that handles buffers!
17:57:24  <pkrumins>dominictarr: yes, earlier we had issues when tests didnt quite run and you got lots of red browsers in the badge
17:57:39  <hij1nx>dominictarr: cool, ok.
17:57:56  <dominictarr>oh… pkrumins but they still fail when the test does fail, though, right?
18:01:55  <dominictarr>substack: https://www.youtube.com/watch?v=NnvynOyZI-Q
18:16:29  <pkrumins>dominictarr: yes of course
18:16:49  <dominictarr>ah, I just parsed your first statement incorrectly
18:20:07  * jcrugzzquit (Ping timeout: 260 seconds)
18:21:42  <rowbit>Hourly usage stats: [developer: 1, free: 18]
18:26:21  * shamajoined
18:27:27  * jcrugzzjoined
18:29:41  * thl0joined
18:34:43  * jcrugzzquit (Ping timeout: 245 seconds)
18:40:48  * paul_irishchanged nick to paul_irish_
18:47:01  <substack>thl0, Domenic__: where do you put your private node modules for frontend code?
18:47:35  <substack>I'm realizing I could pretty easily write a private node module server with pushover
18:47:51  <chrisdickinson>+1
18:47:54  <chrisdickinson>i would want to use this
18:48:11  <thl0>substack: I personally don't have private node_modules, but Domenic_ was trying to get something setup at work
18:48:18  <chrisdickinson>it's actually one of the number one things keeping us from fully embracing browserify/npm at work
18:48:37  <substack>I suspected as much.
18:48:45  <substack>hearing this from a lot of folks
18:49:04  <chrisdickinson>browserify/npm style dev is great for opensource work, but hard to manage in a closed source environment
18:49:08  <substack>or at least, people are confused about where they should put their node modules when they start using browserify
18:49:27  <chrisdickinson>"where do i put modules that i've written that can't go on npm?"
18:50:12  <chrisdickinson>plus, you get into a sort of chimera situation where you want to "bless" some modules from npm itself in the form of private copies on a private registry
18:50:35  <chrisdickinson>(which could be implemented as a separate command line module alongside pushover)
18:50:51  <substack>also this fits really well into what we have with testling-ci
18:50:53  <chrisdickinson>"bless through@2.2.7 http://registry-url/"
18:51:24  <thl0>substack: have you seen https://github.com/jden/npm-delegate ?
18:51:50  <chrisdickinson>the other hard part is taking existing frontend code and restructuring it into separate tiny packages
18:51:54  * shuaibjoined
18:52:14  <substack>thl0: that's pretty neat
18:52:22  <chrisdickinson>olde-style monolithic frameworks have this assumption that all of the js lives inside of them and that they control every aspect of the static media
18:52:26  <chrisdickinson>(django, rails)
18:52:45  <thl0>substack: I thought so too when I saw it, haven't had a chance to try it though
18:53:08  <chrisdickinson>it'd be neat if there could be some sort of adaptor where the framework could specify a package.json and then controllers/views could specify their entry point into those deps
18:53:59  <thl0>substack: chrisdickinson: what we did before was add a NODE_PATH to be able to require modules from anywhere as if they were installed
18:54:06  <chrisdickinson>(getting integration into those frameworks working seamlessly would do a lot for browserify adoption, i think)
18:54:13  <thl0>I didn't think that worked out very well though
18:57:08  <thl0>chrisdickinson: substack: we used browserify-shim to just pull our client side dependencies from a vendor folder
18:57:23  <thl0>you don't get versioning that way though :(
18:57:40  <chrisdickinson>the other hard part is that "to do it right" you end up needing tons of tiny private git projects
18:58:10  <chrisdickinson>which, if you're using github, might raise some ire from other teams since you're starving them of private repos
18:58:28  <thl0>chrisdickinson: isn't that a good thing?
18:58:39  <chrisdickinson>thl0: tons of tiny private git projects?
18:58:45  <thl0>chrisdickinson: allows different teams work on small parts in isolation -- yes
18:59:17  <chrisdickinson>in theory it's good, but when you've already got like 300 private repos...
18:59:18  <thl0>i.e. you treat all you tiny modules the same as an npm library
18:59:49  <thl0>chrisdickinson: well, you could stand up your own github at work (or the lesser version by atlassian)
19:00:02  <chrisdickinson>yeah, true
19:00:25  <thl0>also if you properly namespace them (i.e. by main project or functionality) it should be ok
19:00:26  <chrisdickinson>but it makes it hard to get started
19:00:35  <chrisdickinson>if that makes sense
19:00:53  <thl0>true, but that is true for node in general according to some people
19:01:03  <chrisdickinson>yeah
19:01:06  <thl0>i.e. you have to know what libs to install to get going
19:01:23  <thl0>but the gain further down the road is well worth that
19:01:25  <dominictarr>chrisdickinson: thl0 http://github.com/dominictarr/shadow-npm
19:01:38  <dominictarr>^ it's a proxy in front of npm
19:01:55  <thl0>dominictarr: solves same problem as https://github.com/jden/npm-delegate ?
19:01:57  <dominictarr>but to really make it work right, npm needs a pull request or two
19:02:05  <thl0>or not?
19:02:15  * chrisdickinsonbrbs for lunch
19:02:58  <dominictarr>yes, same approach
19:03:09  <thl0>dominictarr: cool - competition is good :)
19:03:17  <dominictarr>I think it handled publishing too, thought
19:03:29  <dominictarr>thl0: except I'm not working on that anymore
19:03:44  <thl0>dominictarr: hm well then even better we got lejden's
19:03:56  <dominictarr>adding a feature to npm that handles a list of repos would be better
19:04:24  <dominictarr>because you want to send different auth when you publish to the private repo
19:04:43  <dominictarr>and reads from the private repo should be authorized as well
19:04:51  <thl0>dominictarr: that's true, should be fairly straight forward and would just have current repo in the list by default
19:05:12  <dominictarr>yes, but someone needs to make this pull request to npm
19:05:15  <jez0990>dominictarr: can scuttlebutt NOT be duplex and just recieve updates one way? ...pubsub?
19:05:42  <thl0>dominictarr: you could specify the repo config simply in your package.json and point to sha files for auth?
19:06:00  <dominictarr>jez0990: it still needs a duplex connection, because it has to say what updates is currently has
19:06:15  <dominictarr>thl0: yeah
19:06:39  <dominictarr>thl0: this would be most awesome auth https://npmjs.org/package/http-signature
19:06:48  <jez0990>okay so duplex connection... but mute one end of the phone?
19:07:00  <dominictarr>after saying "hello"
19:07:17  <jez0990>great!
19:07:29  <dominictarr>you could add a slave mode feature to scuttlebutt
19:07:44  <dominictarr>that refused to accept/send any local updates
19:07:55  <dominictarr>and a master mode that refused to accept any
19:08:00  <substack>optimist@0.4.0 now supports -n5
19:08:03  <substack>didn't before
19:08:35  <thl0>substack: on another note, do you agree difflet should use deep-is?
19:08:52  <substack>that song from the breakfast club is playing in this cafe which already seems very 80s esque but now it just stepped it up to another level
19:09:00  <substack>thl0: sounds good
19:09:17  <thl0>substack: have a pending PR for this and another one to fix a bug that crashed apps before
19:11:28  * jxsonjoined
19:13:29  * ralphtheninjajoined
19:13:52  * jxson_joined
19:13:53  <niftylettuce>my new sexy docs page https://getprove.com/docs
19:14:00  <niftylettuce>auto-generated from Github
19:14:32  * jxsonquit (Read error: Connection reset by peer)
19:15:20  <thl0>niftylettuce: what did you make it with?
19:15:39  <niftylettuce>thl0: 60 lines of JS with cheerio and request
19:16:23  <thl0>niftylettuce: so you sayin' those 60 lines were not published to npm --- could only be an oversight right? ;)
19:17:16  <niftylettuce>OKAY OKAY DON'T SPANK ME
19:17:16  <LOUDBOT>WELL THAT AND THE BIG STICK OF MAN MEAT
19:17:22  <niftylettuce>ILL DO IT, ILL DO IT RIGHT FUCKING NOW
19:17:22  <LOUDBOT>THAT'S NO PIRATE IT'S A BATTLESTATION
19:17:25  <niftylettuce>thl0: ^^
19:18:07  <thl0>niftylettuce: you better, otherwise I'll send the npm (Node Police for Modules)
19:18:35  <niftylettuce>OH GOODNESS
19:18:35  <LOUDBOT>I DON'T WANT YOUR MONEY I JUST WANT YOUR BABY
19:21:42  <rowbit>Hourly usage stats: [developer: 1, free: 23]
19:27:42  * jcrugzzjoined
19:29:54  * timoxleyjoined
19:38:03  * jcrugzzquit (Ping timeout: 245 seconds)
19:38:55  * jcrugzzjoined
19:39:55  * tmcwjoined
19:49:05  * timoxleyquit (Quit: Computer has gone to sleep.)
19:50:15  * Domenic__quit (Read error: Connection reset by peer)
19:50:38  <substack>whoa fuck yes
19:50:42  <substack>there's wifi in dolores park
20:02:41  * timoxleyjoined
20:09:02  <substack>somebody handed me a flyer for a lawrence lessig conference
20:09:15  <dominictarr>juliangruber: this now works: https://github.com/dominictarr/multilevel/blob/master/test/plugin.js#L8-L30
20:09:42  <dominictarr>^ extend levelup with sublevels, and extra methods and expose them over multilevel!
20:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 24]
20:30:15  * jxson_quit (Remote host closed the connection)
20:32:00  * tmcwquit (Remote host closed the connection)
20:33:49  * timoxleyquit (Quit: Computer has gone to sleep.)
20:36:22  * ITprojoined
20:38:30  <thl0>jesusabdullah: ping
20:38:36  <jesusabdullah>thl0: sup
20:38:51  <jesusabdullah>thl0: I'm kinda sorta at a meeting so I might afk on you
20:39:25  <thl0>jesusabdullah: np, what I'd suggest, limit it to what you starred, otherwise it kinda floods the twitter feed
20:39:38  <jesusabdullah>thl0: current tmgh plans are to add config per-event-type, and then look into daily digests so you don't get 10 tweets per repo
20:39:57  <thl0>jesusabdullah: if I wanna know everything you do on twitter, I'd follow you there ;)
20:40:01  <thl0>that would work too
20:40:09  <jesusabdullah>thl0: I turned off push notifications on mine, the values are already in the db they just need to be exposed in the ui
20:40:11  <thl0>s/twitter/github
20:40:19  <jesusabdullah>yeah that's what people keep saying XD
20:40:29  <thl0>ok
20:40:31  <jesusabdullah>Me, I find the github follow stream next to useless
20:40:35  <jesusabdullah>lol
20:40:41  <jesusabdullah><3
20:40:48  <jesusabdullah>cool, thanks for the feedback
20:41:17  <thl0>np, btw, my github stream is still useful, however I don't follow too many people ;)
20:41:43  <jesusabdullah>yeah
20:41:45  <jesusabdullah>I feel that
20:41:46  <thl0>but I see you don't either, so well ...
20:42:00  <jesusabdullah>Yeah I cleaned up at some point
20:42:28  <thl0>well actually you follow about 4x as many as I, so I can see how that can get a bit busy
20:43:14  <jesusabdullah>yeah
20:43:19  <jesusabdullah>digests will be good imo
20:44:07  <jesusabdullah>alright cool back to meeting
20:47:35  * tmcwjoined
20:52:27  * tmcwquit (Remote host closed the connection)
21:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 50]
21:29:47  * thl0quit (Remote host closed the connection)
21:31:05  * nicholas_quit (Read error: Connection reset by peer)
21:31:38  * nicholas_joined
21:32:13  * jxsonjoined
21:33:24  * jxsonquit (Read error: Connection reset by peer)
21:33:28  * jxson_joined
21:37:33  * mikolalysenkojoined
21:39:11  * jcrugzzquit (Ping timeout: 245 seconds)
21:39:38  * rannmannquit (Remote host closed the connection)
21:42:51  * jcrugzzjoined
21:50:07  <substack>isaacs: ok curl pqURL.patch | git am is really nice
21:53:26  * rannmannjoined
22:00:01  * ITproquit (Ping timeout: 246 seconds)
22:03:10  <niftylettuce>FINISHED
22:03:10  <niftylettuce>https://github.com/getprove/node-bootstrap-readme-docs
22:03:15  <niftylettuce>WHERE DID THL GO
22:03:15  <LOUDBOT>IT WOULD BE IMPOSSIBLE TO DISCUSS THE MATTER
22:09:32  <substack>some people on the other side of this tiny greasy spoon cafe are talking about frontend javascript
22:10:16  <substack>proprieters are on a first name basis with pretty much everybody who walks in
22:20:48  * jxson_changed nick to jxson
22:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 19]
22:26:33  * tilgovijoined
22:26:34  * tilgoviquit (Read error: Connection reset by peer)
22:35:41  * mikolalysenkoquit (Ping timeout: 252 seconds)
22:43:20  * dominictarrquit (Quit: dominictarr)
22:59:45  * dominictarrjoined
22:59:57  * tmcwjoined
23:00:05  * mikolalysenkojoined
23:12:50  * thl0joined
23:21:42  <rowbit>Hourly usage stats: [developer: 0, free: 23]
23:31:43  * spionquit (Ping timeout: 246 seconds)
23:31:57  * tmcwquit (Remote host closed the connection)
23:40:20  * thl0quit (Remote host closed the connection)
23:41:48  * jibayquit (Read error: Connection reset by peer)
23:45:01  * mikolalysenkoquit (Ping timeout: 246 seconds)
23:45:09  * ITprojoined
23:49:14  * defunctzombiechanged nick to defunctzombie_zz
23:52:09  * thl0joined
23:54:58  * thl0quit (Remote host closed the connection)