00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:07  * ircretaryjoined
00:00:10  * isaacs_mobilequit (Remote host closed the connection)
00:13:17  * kenperkinsjoined
00:25:11  * mikolalysenkojoined
00:28:53  * thl0quit (Remote host closed the connection)
00:29:24  * evboguequit
00:29:36  * mikolalysenkoquit (Ping timeout: 245 seconds)
00:38:08  * fotoveritequit (Quit: fotoverite)
00:48:25  <ralphtheninja>rvagg: do you often use morkdown yourself?
00:48:58  <rvagg>ralphtheninja: every time I edit a README I *want* to use morkdown but can't since it's broken with the newer Node versions
00:49:16  <ralphtheninja>rvagg: you answered my next question :)
00:49:17  <ralphtheninja>thanks
00:49:20  <rvagg>I dunno what the status of the appjs project is, I need to catch up with those guys but I think they've got distracted
00:49:33  <ralphtheninja>those damn distractions! :)
00:49:55  <rvagg>yeah, perhaps also there's other competition in that space now, maybe they've given in?
00:50:09  <ralphtheninja>shrug
00:50:57  <wolfeida_>rvagg: I was just messing around with one of them called node-webkit
00:51:12  <rvagg>wolfeida_: yeah, I think it's getting a bit of attention these days
00:51:33  <wolfeida_>Yeah one of the guys at melbjs did a presentation about the options
00:51:36  <rvagg>the morkdown code isn't very complicated and could be ported, I just need to understand what the latest hotness is that's going to actually work
00:52:17  <wolfeida_>He was in favour of node-webkit based on the fact that there was no bridge between the browser js and nodejs
00:52:19  <rvagg>but I do miss it
00:52:25  <rvagg>morkdown that is
00:52:32  <rvagg>I hate pushing to github and crossing my fingers
00:53:56  <mbalho>jesusabdullah: with ecstatic can you get a callback for when it 404s
01:00:46  * jcrugzzjoined
01:02:25  * ins0mniaquit (Ping timeout: 256 seconds)
01:05:17  * mikealquit (Quit: Leaving.)
01:15:22  * nicholasfjoined
01:18:32  * timoxleyjoined
01:19:54  <rvagg>mbalho: mikeal was right, "I wrote a database" is becoming the new "I wrote a test framework"
01:20:04  <ralphtheninja>hehe
01:20:06  <rvagg>but HOW COOL IS THAT?
01:20:07  <mbalho>:)
01:20:18  <mbalho>no its super great
01:20:20  <rvagg>make databases work for us instead of the other way around
01:20:57  <mbalho>it is exactly what i wanted to happen when i started proselytizing leveldb
01:21:35  <rvagg>mbalho: indeed, sensei
01:22:54  <rvagg>mbalho: you need to talk mikeal into doing a BYOD (build your own database) stream at nodeconf and perhaps even ship me over for it
01:23:01  <rvagg>I'm bummed I can't make it
01:23:21  <mbalho>ahh nice. i actually led that session last year
01:23:35  <mbalho>but it was a single breakout group
01:23:40  <mbalho>ill ask him about it
01:35:34  * mikealjoined
01:44:30  * mikealquit (Ping timeout: 264 seconds)
01:50:21  * timoxleyquit (Quit: Textual IRC Client: www.textualapp.com)
01:51:30  * timoxleyjoined
01:55:06  * thl0joined
01:58:40  * mikealjoined
02:00:39  * mikolalysenkojoined
02:01:00  * mikealquit (Client Quit)
02:03:17  * jcrugzzquit (Ping timeout: 248 seconds)
02:09:11  <jesusabdullah>mbalho: I think what you can do is set a flag so that it calls next after setting the status code
02:09:20  <jesusabdullah>mbalho: it might not have been documented :(
02:09:43  <jesusabdullah>mbalho: I haven't had the time to square that up. If you have ideas on how to improve error handling behavior, etc., let me know
02:09:50  <jesusabdullah>mbalho: middlewares kinda suck don't they?
02:11:08  <mbalho>jesusabdullah: ah cool. i think the next cb works fine
02:12:04  <jesusabdullah>mbalho: cool, if it's not documented and you feel like taking it on.... ;) If not all good
02:12:14  <jesusabdullah>oh christ so I'm kinda pissy right now let me show you why
02:12:53  <jesusabdullah>https://github.com/bigcompany/know-your-http/issues/12
02:13:05  <jesusabdullah>mbalho I'm not crazy to be irritated over how this went down am I
02:16:13  <mikolalysenko>meh, I'd just ignore it
02:16:25  <jesusabdullah>I mean
02:17:20  <jesusabdullah>I did what I did which was to say, "I'm really irritated," close the issue and make a clean one where I don't have to scroll past this tool argue with roman about why his time is more valuable than mine
02:19:31  <mikolalysenko>the guy is a tool
02:19:43  <mikolalysenko>like how hard is it to fork and do a pull request?
02:19:58  <mikolalysenko>but on the other hand, he's probably already spent like 10x as much time arguing about it
02:20:08  <jesusabdullah>well like
02:20:15  <jesusabdullah>I really don't care what his rationale is
02:20:28  <jesusabdullah>even less than I care about his shitty issue posting
02:23:17  <mbalho>lol @ that whole thread
02:26:41  <substack>jesusabdullah: here's a patch but it's in a pdf file on a zip disk
02:26:56  <substack>obviously there is nothing wrong here
02:27:17  <substack>in fact to question my choice of technology makes your OWN motivations suspect
02:27:21  <jesusabdullah>substack: lololol
02:28:04  <jesusabdullah>substack: I mean it's like, there's a process here, if you don't use it well whatever but it's kind of a waste of my time since I'm not just going to copy-paste your shitty implementation and call it a day
02:28:20  <jesusabdullah>and then to try and justify yourself with a huge block of text?
02:28:31  <jesusabdullah>this isn't a mailing list this is an issue tracker
02:28:38  <substack>what is with this https://github.com/substack/node-browserify/issues/380#issuecomment-16707818
02:29:20  <substack>"Yet another reason for browserify to work with a structured representation of JS (preferably a standard like the spidermonkey AST format). Asking people to do string manipulation of the output is insane."
02:30:04  <jesusabdullah>yeah I was gonna say
02:30:05  <jesusabdullah>lolwut
02:30:26  <jesusabdullah>so, like, letting people put their own ast transformation against the for real deal is insane?
02:30:49  <jesusabdullah>plus tons of tools take javascript blobs as input (minifiers)
02:30:53  <jesusabdullah>what a weirdo.
02:31:13  * mikealjoined
02:32:11  <substack>and transpilers wouldn't even work if browserify handed you an AST
02:32:16  <substack>text: the universal interface
02:32:24  <substack>computer science people are dumb
02:32:55  <jesusabdullah>tell him, forcing people to use an ast is insane
02:32:59  <jesusabdullah>which is what that would be doing
02:33:57  <mikolalysenko>yeah, but that is a bit different
02:34:02  <mbalho>Terse sentence. Ending with period.
02:34:03  <substack>what is he even commenting on browserify issues for
02:34:11  <substack>he wrote his own commonjs-everywhere thing
02:34:19  <substack>he's just using my issues to grand-stand about his thing
02:34:27  <jesusabdullah>oh, yeah, that's pretty lame
02:34:27  <mikolalysenko>well, there you go
02:34:28  <substack>and it's noisy
02:34:48  <mbalho>people that work at coupon companies are not to be trusted
02:34:59  <mbalho>e.g. the ruby guy that trolled isaac this week
02:35:04  <jesusabdullah>link
02:35:05  <jesusabdullah>?
02:35:06  <substack>mbalho: empirically this seems very accurate
02:35:10  <jesusabdullah>I did not hear about that mbalho
02:35:13  <substack>the confidence interval just keeps closing in
02:35:17  <mbalho>jesusabdullah: read izs twitter
02:35:24  <substack>jesusabdullah: oh you remember, this guy http://twitter.com/bascule
02:35:24  <jesusabdullah>aight
02:35:37  <jesusabdullah>oh, sub, I finally joined the "got a recruiter email from the goog" club
02:36:13  <jesusabdullah>oh that guy
02:36:15  <jesusabdullah>is he back?
02:36:28  <mbalho>he will troll until he dies
02:36:40  <jesusabdullah>that's a lot of effort bro
02:37:21  <mikolalysenko>is there a tldr of the story?
02:37:34  <mbalho>mikolalysenko: tl;dr trolls are dumb
02:37:44  <mbalho>mikolalysenko: tl;dr ignore them
02:37:58  <substack>mikolalysenko: the tldr is that bascule and everybody working on or around celluloid are massive dicks who can only tear the work of others down
02:38:11  <mbalho>ive only heard it from the main dude
02:38:21  <mikolalysenko>ok
02:38:27  <mikolalysenko>I will just ignore this then
02:38:28  <jesusabdullah>It's one thing to say you don't like someone's project, it's another to harass them about it on a regular basis
02:39:00  <substack>he was following me but just kept badgering experiments I was working on
02:39:05  <substack>so I blocked him months ago
02:39:05  <jesusabdullah>like, I think django is weird but I don't like go to django's issue tracker and hound them on twitter
02:39:21  <jesusabdullah>really?
02:39:21  <jesusabdullah>like, how?
02:39:44  <mbalho>read his twitter
02:39:56  <mbalho>if you want to see pathetic things
02:39:57  <jesusabdullah>seriously, like, that's so much fucking effort when you can just tell your friends, "yeah I didn't really like it so I'm not using it"
02:40:08  <jesusabdullah>or, "it had some good ideas so I started writing my own that does x different"
02:41:53  <jesusabdullah>wow
02:41:56  <jesusabdullah>and then
02:42:10  <jesusabdullah>"izs is trying to destroy my reputation! read my tweets and see!"
02:42:12  <jesusabdullah>"okay dude"
02:43:28  <mikolalysenko>meh, his twitter seems pretty boring
02:44:08  <jesusabdullah>you have to scroll down mikolalysenko
02:44:22  <mikolalysenko>ok, doing so
02:44:29  <mikolalysenko>but there bettter be high quality comedy...
02:44:35  <jesusabdullah>here I'll link you the tweet I was looking at
02:44:37  <jesusabdullah>save you some time
02:45:05  <jesusabdullah>https://twitter.com/bascule/status/325057132640731138
02:45:31  <jesusabdullah>after some rant about how endpoints in bash "aren't known"
02:45:37  <jesusabdullah>I mean, I'm pretty sure they are
02:45:41  <jesusabdullah>because I can redirect them
02:46:23  <mikolalysenko>ok
02:46:28  <mikolalysenko>but what does that have to do with node?
02:46:47  <mikolalysenko>I'm not quite sure I follow what his point is, and I'm not about to read through like ~10 pages of that crap
02:46:52  <jesusabdullah>he said that node "ignores unix history" because you can introspect streams
02:46:58  <jesusabdullah>seriously
02:47:02  <mikolalysenko>wtf does he even mean?
02:47:15  <mikolalysenko>also if you buffer streams, that kind of defeats the point?
02:47:24  <mikolalysenko>I mean it is a stream, not a buffer
02:47:47  <jesusabdullah>https://twitter.com/bascule/status/325056340466728960
02:48:41  <mikolalysenko>haha, ok
02:48:52  <mikolalysenko>I don't get why @izs is so pissed
02:48:55  <mikolalysenko>this guy is a joke
02:49:02  <jesusabdullah>this isn't his first time
02:49:06  <jesusabdullah>He does this every few months
02:49:24  <jesusabdullah>last time it was about how node doesn't do concurrency right or something
02:49:34  <mikolalysenko>did he explain why?
02:49:36  <jesusabdullah>or that isaac didn't understand concurrent systems
02:49:44  <mikolalysenko>...
02:49:51  <jesusabdullah>he linked to his own stupid ruby project
02:52:08  <jesusabdullah>idk dude
02:53:07  <mikolalysenko>yeah, he doesn't really have anything interesting to say
02:53:31  <jesusabdullah>ugh why is my head so swiss cheesed this is terrible
02:53:54  <mikolalysenko>because it is april 20?
02:55:43  <jesusabdullah>no because I have had a fucking insane week
02:55:48  <jesusabdullah>and haven't been sleeping
02:55:52  <jesusabdullah>so I mean I kinda know why
02:55:58  <jesusabdullah>but I don't know why it's so BAD
03:08:01  * mikolalysenkoquit (Ping timeout: 246 seconds)
03:09:39  * jcrugzzjoined
03:14:28  * jcrugzzquit (Ping timeout: 260 seconds)
03:35:33  * defunctzombie_zzchanged nick to defunctzombie
03:39:45  * mikolalysenkojoined
03:42:13  * Benvie1joined
03:49:00  * st_lukejoined
03:49:21  * defunctzombiechanged nick to defunctzombie_zz
04:08:13  * jcrugzzjoined
04:13:45  * jcrugzzquit (Ping timeout: 276 seconds)
04:17:16  <jesusabdullah>st_luke: yo yo
04:17:27  * thl0quit (Remote host closed the connection)
04:19:42  <st_luke>yo
04:25:00  <jesusabdullah>st_luke: lulz at your twitter comment thing
04:25:07  <jesusabdullah>I mean, that guy is a total tool
04:28:58  <st_luke>programmers are assholes
04:29:15  <Domenic__>guys what is missing from js besides real integers
04:29:32  <mbalho>mikolalysenko: has opinions
04:30:18  <mikolalysenko>structs, binary data types
04:30:33  <Domenic__>those are in es6 though
04:30:37  <mikolalysenko>some way to access sse intrinsics/instruction level parallelism
04:30:45  <Domenic__>ok cool that's planned
04:30:49  <jesusabdullah>multithreading
04:30:58  <Domenic__>jesusabdullah not sure if serious
04:30:59  <jesusabdullah>like maybe that would be a disaster
04:31:09  <jesusabdullah>but afaik it's either missing or not standard
04:31:13  <mikolalysenko>yeah, some way to handle shared memory...
04:31:24  <mikolalysenko>kind of there with web workers, but not really
04:31:37  <Domenic__>the problem is think of all the existing JS code that assumes single-threading. all of that is instantly invalidated once you introduce shared-memory multithreading.
04:31:54  <mikolalysenko>well, you could have single thread by default
04:31:59  <jesusabdullah>yeah see that's the thing, I don't fully understand the consequences of multithreading
04:32:00  <mikolalysenko>and have to explicitly mark memory you share
04:32:09  <mbalho>"use threads";)
04:32:16  <jesusabdullah>lulz
04:32:18  <mbalho>winky face mandatory
04:32:20  <mikolalysenko>the main difficulty is you need to have an actual memory model for it to work
04:32:27  <mikolalysenko>and sharing js objects would be a mess
04:32:37  <mikolalysenko>since you'd never know which thread they are sitting in when you use them
04:32:58  <mikolalysenko>also, there are tons of things that would be nice in the language but aren't there...
04:33:07  <jesusabdullah>I need to write something multithreaded
04:33:09  <mikolalysenko>like I wish sort had a way to specify a custom move operation
04:33:11  <jesusabdullah> just so I can say I've done it
04:33:16  <jesusabdullah>and understand that better
04:33:30  <Domenic__>once you mark memory as shared though someone just writes a library to make normal js run inside that shared memory
04:33:34  <Domenic__>and you're screwed
04:33:45  <Domenic__>I was talking to dherman about this at the Mozilla research party in SF.
04:33:53  <mikolalysenko>yeah, shared memory in js is tough
04:34:01  <mikolalysenko>and I am not sure it is a good idea
04:34:15  <mikolalysenko>but you will never be able to match native performance until you get it
04:34:18  <jesusabdullah>maybe use python's multithreading module because I know it will be terrible
04:34:43  <mikolalysenko>but shared memory requires a lot of stuff
04:34:52  <mikolalysenko>like java had this issue in a bad way
04:35:05  <mikolalysenko>and they had to build this really complicated memory model specification
04:35:22  <mikolalysenko>and if you do that, you also need stuff like atomics, barriers, etc.
04:35:25  <Domenic__>yeah that's the motivating factor is asm.js compilation
04:35:31  <mikolalysenko>and you can't do some optimizations like reordering instructions...
04:35:44  <mikolalysenko>maybe... memory models are more trouble than that though
04:35:59  <mikolalysenko>it is a non-trivial thing to get all those details sorted out correctly
04:36:32  <mikolalysenko>so, I think shared memory in js is probably too much trouble
04:36:57  <mikolalysenko>would be nice, but not holding my breath for it. workers with transferrable objects are fine for now
04:37:14  <mikolalysenko>BUT binary data types are the single biggest thing
04:37:45  <mikolalysenko>(at least from a performance stand point)
04:38:53  * jcrugzzjoined
04:39:08  <jesusabdullah>huh
04:39:16  <jesusabdullah>python "threading" api looks shockingly sane
04:39:22  <jesusabdullah>I've heard the implementation is gnar
04:40:33  <jesusabdullah>but yeah, looks like threading and events don't mix very well I can see you shooting yourself in the foot
04:40:46  <mikolalysenko>programming in threads is really horrible. I still have some post traumatic stress from my operating systems class...
04:41:08  <mikolalysenko>I'd consider them really something to use as a last resort
04:41:24  <mikolalysenko>the main benefit in threading, for most apps is to avoid blocking the event loop
04:41:33  <mikolalysenko>and for js, you can already do this safely/sanely using workers
04:42:01  <jesusabdullah>mmhmm
04:42:06  <mikolalysenko>especially in C/C++, where you have to do manualy memory management
04:42:19  <mikolalysenko>so many bugs, where thread A creates object, but thread B/C/whatever needs to delete it
04:42:22  <jesusabdullah>so it's a multiprocessing api that doesn't have the same mental model as threads
04:42:33  <mikolalysenko>it isn't threads
04:42:36  <mikolalysenko>threads are shared state
04:42:43  <jesusabdullah>right
04:42:47  <mikolalysenko>in js, you copy things to send them to one another
04:42:57  <mikolalysenko>(or you do transferrable objects, which semantically work like copies)
04:42:58  <jesusabdullah>right
04:43:20  <jesusabdullah>I see
04:43:22  <mikolalysenko>in threads, you can all mutate the same memory space, and it is much harder to get right
04:43:41  <jesusabdullah>yeah
04:44:00  <jesusabdullah>and like, it seems to ME if you were writing threads you would try to avoid sharing state ANYWAY
04:44:16  <mikolalysenko>well, the whole point of threads is to share state
04:44:22  <jesusabdullah>ahh
04:44:32  <mikolalysenko>otherwise you'd use processes or something
04:44:44  <mikolalysenko>classic example is a big matrix/vector multiply
04:44:49  <jesusabdullah>I thought it was also because it was more lightweight? quicker to spawn?
04:44:57  <jesusabdullah>Oh, yeah, that's true, you'd want to do that shit in-place
04:45:03  <mikolalysenko>typically you cache all that stuff in memory
04:45:15  <jesusabdullah>yeah, I see it now
04:45:20  <jesusabdullah>my head's pretty swiss cheesed
04:45:20  <mikolalysenko>like at app creation, initialize a pool of subprocesses/threads
04:45:46  <mikolalysenko>if you are feeling sick, I don't think threads will make you feel better
04:45:52  <jesusabdullah>lol yeah
04:45:54  <jesusabdullah>umm
04:46:10  <jesusabdullah>thing is I never write stuff low-level enough to need threading
04:46:19  * jcrugzzquit (Ping timeout: 256 seconds)
04:46:34  <jesusabdullah>most things I use are at a level where the multiprocessing is hidden from me
04:46:35  <mikolalysenko>physics simulations are a pretty useful application for threads
04:46:49  <mikolalysenko>and the basics of them are pretty easy
04:46:58  <mikolalysenko>just loop over a bunch of vectors and add some velocities
04:47:00  <jesusabdullah>yeah, see perfect example: I've written physics simulations but with high-level tools like matlab, numpy, scipy, COMSOL
04:47:18  <jesusabdullah>They definitely crank out MP for the math but I don't write that by hand, I take it for granted
04:47:23  <mikolalysenko>yep
04:47:28  <mikolalysenko>and that is where threads are useful
04:47:42  <jesusabdullah>right, so like
04:47:46  <jesusabdullah>if I were to even dive into threads
04:47:59  <jesusabdullah>I would want to be solving something...well
04:48:05  <jesusabdullah>nothing I'd ever want to solve
04:48:15  <jesusabdullah>because lapack and friends already exist
04:48:21  <mikolalysenko>well, if you want to do real threads you got to learn about the basics first
04:48:26  * shamaquit (Ping timeout: 252 seconds)
04:48:35  <mikolalysenko>which means stuff like mutexes and syncrhonization
04:48:48  <mikolalysenko>the course I learned from was the old os course at mtu
04:48:58  <mikolalysenko>but they split out threads into a separate thing now I think
04:49:02  <mikolalysenko>here it is: http://www.csl.mtu.edu/cs3331.ck/www/Home.html
04:49:05  <jesusabdullah>right, but I mean, what kind of problem would I run into where I was like, "fuck none of these open source tools handle this and synchronously is way too slow"
04:49:14  <jesusabdullah>"time to write custom multiprocessing code"
04:49:36  <jesusabdullah>Like, linear algebra? I think good BLAS implementations are multithreaded by default
04:49:42  <mikolalysenko>yeah
04:49:50  <mikolalysenko>voxel physics?
04:49:56  <mikolalysenko>though I'd just use a gpu these days...
04:50:02  <jesusabdullah>yeah, idk
04:50:06  <mikolalysenko>you could do topology optimization
04:50:10  <jesusabdullah>just not fields I'm that interested in
04:50:21  <mikolalysenko>it is pretty sexy stuff, and actually quite simple to do
04:50:36  <jesusabdullah>yeah but to what end?
04:50:51  <jesusabdullah>I can't dive into something if I can't use it to solve a problem I have
04:50:55  <jesusabdullah>basically
04:51:03  <jesusabdullah>I mean, it's a limitation of my personality
04:51:13  <mikolalysenko>well, what do you want to do?
04:51:38  <jesusabdullah>uhhhhh I have a few things
04:52:02  <jesusabdullah>like, a small wish list
04:52:09  <jesusabdullah>well, not so small
04:52:19  <jesusabdullah>I want to finish my package manager for openscad
04:52:32  <jesusabdullah>(in node, reuses npm)
04:52:52  <jesusabdullah>write a "markdown" environment for LaTeX (shell out to pandoc for that)
04:52:59  <jesusabdullah>uhhh
04:53:08  <jesusabdullah>I want an image viewer for linux that doesn't make me want to punch babies
04:53:27  <jesusabdullah>I want to write data center tycoon
04:53:41  <mikolalysenko>none of those really need threads
04:53:45  <jesusabdullah>yeah exactly
04:53:52  <mikolalysenko>though I second the markdown/latex environment thing
04:54:01  <mikolalysenko>I tried to do it myself once, but it wasn't very good
04:54:16  <jesusabdullah>ah
04:54:21  <jesusabdullah>yeah I haven't even tried it yet
04:54:24  <mikolalysenko>https://github.com/mikolalysenko/texdown
04:54:33  <mikolalysenko>it is not good, and also it doesn't work on github...
04:54:37  <mikolalysenko>which was my main goal
04:54:41  <mikolalysenko>so I stopped working on it
04:54:57  <jesusabdullah>ahh
04:54:59  <mikolalysenko>basically I tried inlining the images as dataurls
04:55:05  <mbalho>substance.io is the closest thing i've seen
04:55:07  <mikolalysenko>but stupid github doesn't let you do that
04:55:31  <mikolalysenko>interesting
04:55:31  * shamajoined
04:55:45  <mikolalysenko>I think it would be great to have a blogging platform that uses markdown + latex for posts
04:55:48  <jesusabdullah>if it's a preprocessor, upload to imgur and use that link
04:55:54  <jesusabdullah>and yeah I've thought about that too mikolalysenko
04:56:01  <mikolalysenko>yeah
04:56:03  <jesusabdullah>hevea looks like balls
04:56:09  <jesusabdullah>unfortunately
04:56:13  <mikolalysenko>I'd also like to be able to put js demos inside the markdown too
04:56:32  <mikolalysenko>so I could use it to make interactive mathematics expositions
04:56:34  <jesusabdullah>oh yeah thlorenz was working on something like that
04:56:40  <jesusabdullah>the js demos I mean
04:56:43  * douglaslassancejoined
04:56:44  <mikolalysenko>yeah
04:56:48  <mikolalysenko>I want something like:
04:56:53  <mikolalysenko>markdown + js + latex
04:56:57  <mikolalysenko>+ a comment system
04:57:30  <mikolalysenko>but not badly enough yet to make it myself
04:57:35  <mikolalysenko>also I am terrible at graphic design
04:57:39  <jesusabdullah>yeah well
04:57:42  <jesusabdullah>you can fake graphic design
04:58:03  <jesusabdullah>biggest thing is breaking up the markdown, js and latex and reassembling them as a coherent html document
04:58:20  <mikolalysenko>hmm
04:58:29  <mikolalysenko>I think the individual parts might not be too bad
04:58:33  <mikolalysenko>the js could be sand boxed
04:58:46  <mikolalysenko>and use commonjs/browserify to prevent it from fucking up the rest of the document too badly...
04:59:04  <jesusabdullah>mikolalysenko: http://hevea.inria.fr/ ?
04:59:26  <jesusabdullah>mikolalysenko: use http://thlorenz.github.io/scriptie-talkie/ for the js
04:59:39  <mikolalysenko>might work...
05:00:00  <jesusabdullah>mikolalysenko: https://github.com/thlorenz/scriptie-talkie-embed
05:00:13  <mikolalysenko>yeah
05:00:16  <jesusabdullah>and you can do smart things like, make your preprocessor upload files
05:00:33  <jesusabdullah>though you shouldn't have to, just store them parallel to your stuff
05:01:07  <jesusabdullah>a browserified field there would be crazy cool
05:01:10  <jesusabdullah>for the js demos
05:01:12  <mikolalysenko>yeah
05:01:15  <mikolalysenko>that would be the idea
05:01:24  <mikolalysenko>like you could put the demo right in the page
05:01:29  <mikolalysenko>maybe with webgl or whatever
05:01:38  <mikolalysenko>and you could do stuff like hoist common packages out, etc.
05:01:54  <mikolalysenko>and inline the js to the bottom of the page to speed up load times/etc.
05:02:07  <jesusabdullah>oh yeah, actually hevea doesn't look too bad
05:02:28  <jesusabdullah>if you're not a ditz and don't expect output to be exactly like a latex document then you're fine
05:07:38  <jesusabdullah>it seems like md + latex would be easy, just parse as markdown --> latex first, passing latex commands through, then shove that through hevea
05:08:12  * shamaquit (Ping timeout: 256 seconds)
05:08:15  <mikolalysenko>yeah
05:08:23  <jesusabdullah>maybe postprocess it with an html parser
05:08:31  <mikolalysenko>and I think sticking browserified scripts in could be quite doable
05:08:50  <mikolalysenko>what I basically want is a way to quickly create/edit articles on my blog
05:09:21  <mikolalysenko>it would be nice to use git to edit the files, then push them to the server to generate the actual images
05:11:29  <mikolalysenko>each article could get its own repository
05:11:37  <mikolalysenko>and have js files/images and markdown
05:12:04  <mikolalysenko>so the work flow would be you make a repo, build all the stuff and create a package.json
05:12:30  <mikolalysenko>then when you are done, push it to the server where it generates a new latex'd/browserified page
05:13:25  * st_lukequit (Remote host closed the connection)
05:24:02  <jesusabdullah>mikolalysenko: https://gist.github.com/jesusabdullah/88da13999cc2931ae356 getting there
05:31:13  <mikolalysenko>jesusabduallah: nice
05:34:14  <jesusabdullah>If there was a blogging platform that was gh-pages compatible that did all that
05:34:15  <jesusabdullah>I'd go for it
05:34:33  * Domenic__quit (Ping timeout: 240 seconds)
05:34:45  <jesusabdullah>maybe make it a "jekyll site generator" lol
05:41:31  <mikolalysenko>hmm
05:42:25  <mikolalysenko>you could just push the result to gh-pages when it is done
05:42:57  <mikolalysenko>though one problem with gh-pages is that you can't add comments...
05:43:11  <mikolalysenko>but maybe you could take care of that using some client side tool
05:53:57  <jesusabdullah>yeah idk
05:54:11  <jesusabdullah>disqus maybe
05:54:30  <jesusabdullah>or integrate on commit-level comments lol
05:54:40  <jesusabdullah>if you're already doing github
05:55:09  <jesusabdullah>oh shit github.io breaks that doesn't it
05:55:14  <jesusabdullah>cors?
06:05:08  <mikolalysenko>hmm
06:05:19  * heathjsjoined
06:05:31  <mikolalysenko>I've considered just making a website that accepts push requests and builds articles
06:05:40  <mikolalysenko>I think the stuff is already there on npm
06:05:50  <mikolalysenko>but there are probably more direct ways to do this
06:05:52  * heathquit (Ping timeout: 245 seconds)
06:06:23  <mikolalysenko>my preference though would be to use github pages somehow
06:06:58  <mikolalysenko>I guess for now I will stick with wordpress, but I may try building a different platform later
06:07:05  <mikolalysenko>anyway I am tired, going to sleep
06:10:27  * heathjschanged nick to heath
06:11:40  * mikolalysenkoquit (Ping timeout: 256 seconds)
06:48:56  * mikealquit (Read error: Connection reset by peer)
06:49:21  * mikealjoined
07:06:09  * mikealquit (Read error: Connection reset by peer)
07:16:25  * mikealjoined
07:27:00  * douglaslassancequit (Quit: Linkinus - http://linkinus.com)
07:43:11  * timoxleyquit (Ping timeout: 256 seconds)
07:56:39  * blobaumjoined
08:16:43  * spionquit (Ping timeout: 246 seconds)
08:55:03  * stagas_joined
08:56:51  * stagasquit (Ping timeout: 256 seconds)
08:56:52  * stagas_changed nick to stagas
09:07:13  * dominictarrjoined
10:07:21  * Guest89727joined
10:07:21  * Guest89727changed nick to ITpro
10:08:42  <substack>new module https://github.com/substack/logdir
10:24:22  <juliangruber>defunctzombie_zz: why is browser-resolve using an old version of qs?
10:26:32  <dominictarr>substack: is that for ploy?
10:27:17  <substack>dominictarr: yes
10:28:41  <substack>it's so that I can do `ploy log` and have it dump out the last N lines of output across the combined output of all the log files
10:28:49  <substack>and then continue to stream new data
10:29:02  <substack>like `tail -f` but multiple files
10:30:47  <substack>because I want to just dump raw unstructured stdout from multiple server processes to log files
10:31:08  <substack>and then read that data back starting from the bottom to see what the state of the system is
10:31:24  <dominictarr>oh, so if you have scaled out you get everything at once?
10:31:43  <substack>if you want that yes
10:31:52  <substack>that's what `ploy log` without a branch name will give you
10:32:02  <substack>but you can just do `ploy log NAME` to see only NAME
10:33:19  <substack>and importantly, if a new log file shows up in the logdir, you'll start seeing its output in your `ploy log` stream
10:37:16  * nicholasfquit (Read error: Connection reset by peer)
10:37:39  * nicholasfjoined
10:46:17  <substack>ok fixed the bug where it propagates errors if a file gets removed
11:15:17  * yorickjoined
11:32:30  * Benvie1quit (Ping timeout: 276 seconds)
11:53:10  * dominictarrquit (Quit: dominictarr)
11:55:46  * dominictarrjoined
12:09:08  * fotoveritejoined
13:25:40  * fallsemojoined
14:03:23  * fotoveritequit (Ping timeout: 252 seconds)
14:09:30  * fotoveritejoined
14:15:58  * fallsemoquit (Quit: Leaving.)
14:19:53  * fotoveritequit (Ping timeout: 252 seconds)
14:30:14  * fotoveritejoined
14:32:52  * defunctzombie_zzchanged nick to defunctzombie
14:33:47  <defunctzombie>juliangruber: cause it was whatever browserify had when I ported it over
14:34:03  <juliangruber>mkay
14:42:08  * fallsemojoined
14:48:42  * fotoveritequit (Ping timeout: 264 seconds)
14:51:59  <juliangruber>defunctzombie: as soon as my PR gets merged I'll make a PR on browser-resolve with core['querystring'] = ...
14:59:33  * ITproquit (Ping timeout: 258 seconds)
15:01:08  * evboguejoined
15:02:38  * ITprojoined
15:03:07  * fallsemoquit (Quit: Leaving.)
15:03:10  <dominictarr>juliangruber: shall we merge my multilevel pr?
15:03:56  * evboguequit (Client Quit)
15:04:09  <juliangruber>dominictarr: :O I didn't see you continued working on it
15:04:16  <juliangruber>now this just needs documentation
15:04:36  <dominictarr>I did the auth plugin
15:04:45  <dominictarr>I mean, auth hook
15:05:06  <juliangruber>awesome, I'll look through the commits...
15:05:17  <dominictarr>it only exposes the ability to have auth, the user has to implement the specifics
15:07:41  <juliangruber>ok cool
15:07:46  * fotoveritejoined
15:07:49  <juliangruber>do the events tests pass?
15:09:51  <juliangruber>we can just merge as soon as all previously known features work
15:09:54  <juliangruber>and then write documentation
15:10:04  <juliangruber>but if some changed, like events
15:10:10  <juliangruber>we have to write documentation before merging
15:10:21  <dominictarr>right, sweet
15:10:39  <defunctzombie>juliangruber: cool
15:10:44  <defunctzombie>juliangruber: I'll wait for that then
15:11:09  <dominictarr>juliangruber: you see how the manifest bit works?
15:13:08  * thl0joined
15:13:50  <juliangruber>dominictarr: the foo.methods['inc'] = {type:'async'} stuff?
15:14:29  <dominictarr>yeah
15:15:02  <dominictarr>and how you have to write manifest.json and then require that in the client?
15:15:29  <juliangruber>I'm not sure if that's a good thing
15:15:36  <juliangruber>maybe you don't want to add plugins
15:15:51  <dominictarr>you only have to do that if you are using plugins
15:16:02  <juliangruber>ah ok
15:16:11  <juliangruber>hm
15:16:12  <dominictarr>if you don't do that, you only get a single db with the default levelup options
15:16:33  <juliangruber>if plugin A requires plugin B, do you still have to write a manifest for plugin A and B?
15:16:54  <juliangruber>or would plugins add their manifest themselfes?
15:16:58  <dominictarr>yes
15:17:10  <juliangruber>yes to the 2nd thing?
15:17:21  <dominictarr>the plugins should declare their methods if they want to work with this
15:17:27  <juliangruber>ok cool
15:17:31  <juliangruber>sounds good
15:17:43  <dominictarr>you could write it manually, but it traverses the sublevels and checks
15:17:49  <juliangruber>ok
15:17:58  <juliangruber>the events features is broken, right?
15:17:59  <dominictarr>I've already added support to several plugins I've written
15:18:06  <juliangruber>hehe :)
15:18:09  <dominictarr>yeah.
15:18:41  <dominictarr>so, we definately want it to not send anything until you've registered a listener
15:18:48  <juliangruber>yes
15:19:04  * fotoveritequit (Ping timeout: 256 seconds)
15:19:09  <dominictarr>and, I'm thinking we should also add a whitelist into the mainfest
15:19:18  <juliangruber>then I'll merge this in, update the documentation to say that events don't work right now, and release it as a new major version
15:19:31  <juliangruber>a whitelist for events?
15:19:51  <dominictarr>yeah,
15:20:02  <dominictarr>otherwise it could be a security hole
15:20:32  <juliangruber>ok
15:20:39  <juliangruber>so you're cool with the plan?
15:20:42  <dominictarr>if you could just do any post event, you could get user registrations etc
15:21:05  <dominictarr>yeah, I'll add some readme on the things I've added.
15:22:57  <dominictarr>oh, isOpen/isClosed is also broken, unless you call them syncly
15:23:04  <dominictarr>I mean, asyncly
15:27:05  <dominictarr>but, that doesn't really matter, because levelup buffers requests
15:29:55  * thl0quit (Remote host closed the connection)
15:32:52  <dominictarr>juliangruber: we also need a way to handle reconnections
15:33:19  <dominictarr>even if multilevel just throws/emits/callsbacks errors if it's disconnected.
15:34:38  <juliangruber>yeah, I haven't ever used is{Open,Closed}.
15:34:49  <juliangruber>hmmm
15:35:36  <dominictarr>cos, i'm using multilevel like this:
15:35:37  * evboguejoined
15:35:56  <juliangruber>though call
15:36:01  <juliangruber>depends on plugins too
15:36:02  <dominictarr>reconnect(function (stream) { stream.pipe(multilevel.client()).stream })...
15:36:43  <dominictarr>and it's awkward because i have check if db is null (I set it to null on disconnect)
15:36:56  <juliangruber>this syntax: multilevel.client(function () { return net.connect(5000) }) could be smarter about reconnects
15:37:40  <dominictarr>yeah, or db = multilevel(manifest)
15:38:16  <dominictarr>reconnect(function (stream) { stream.pipe(db.createClientStream()).pipe(stream) }).connect()
15:39:00  <dominictarr>then you have flexibility to control your streams.
15:39:20  <dominictarr>you could have that, and provide a sugar layer too
16:00:43  <juliangruber>yes, we need this api
16:06:13  * ITproquit (Ping timeout: 240 seconds)
16:07:11  * ITprojoined
16:20:42  * fotoveritejoined
16:21:23  * evboguequit
16:22:13  * mikealquit (Quit: Leaving.)
16:24:57  <dominictarr>hey everyone, check this out http://chromeos.hexxeh.net/
16:26:05  <dominictarr>need a build of this that comes with nodejs
16:27:31  * lesslessjoined
16:36:27  * fotoveritequit (Quit: fotoverite)
16:38:05  <dominictarr>juliangruber: https://github.com/dominictarr/multilevel/commit/c6ff5c44766ece3834ec4503d42fccdfc6caac89
16:38:42  <lessless>how do I kick off browserify - npm install -g browserify ? will it be a current release?
16:38:55  <juliangruber> lessless: yup
16:39:05  <juliangruber>lessless: maybe you need sudo npm install -g browserify
16:39:14  * mikolalysenkojoined
16:39:34  <juliangruber>dominictarr: sweeeet
16:39:39  <juliangruber>I'll merge that in and release
16:41:50  <dominictarr>cool
16:41:53  <juliangruber>dominictarr: released as 3.0.0
16:41:59  <dominictarr>sweet!
16:43:49  <lessless>okay, here it comes - time 2 have some fun
16:45:47  <juliangruber>dominictarr: are you thinking about running chromeos on your mbair?
16:47:16  <dominictarr>considering it, or maybe just getting a chromebook, they are really cheap
16:48:54  <juliangruber>dominictarr: are you not content with your macbook?
16:49:15  <dominictarr>oh, there are lots of little annoying things
16:49:29  <juliangruber>i've been thinking about going all web too
16:49:34  <dominictarr>like they keyboard shortcuts are shit
16:49:53  <juliangruber>but I'm offline a lot and there aren't many tools that work too great offline
16:49:54  <juliangruber>hm
16:49:59  <juliangruber>I've gotten used to them
16:50:00  <dominictarr>and inconsistent like ctrl-left/right
16:50:11  * hij1nxquit (Ping timeout: 260 seconds)
16:50:19  <juliangruber>the keyboards are awesome, i've never written so fast
16:50:30  <juliangruber>mhm
16:50:35  <dominictarr>it does browser forward/back AND home/end
16:50:43  <dominictarr>if you are focused in a text box
16:50:51  <dominictarr>that is just retarded
16:51:07  <juliangruber> mhm
16:51:07  <dominictarr>I don't care if i'm in a text box, when I want to go back in history
16:51:24  <dominictarr>the hardware is great, and the scrolling is great
16:51:36  <dominictarr>but the keyboard shortcuts are better in linux
16:52:08  <dominictarr>sometimes it moves my work spaces around, and I don't know why
16:52:25  <dominictarr>can't figure out what causes… even after months using it
16:52:50  <mbalho>protip don't use spaces
16:53:20  <dominictarr>I like to use full screen because It's only a small screen
16:53:29  * hij1nxjoined
16:53:59  <dominictarr>it would work great if it stayed in the place I put it.
16:54:06  <dominictarr>ctrl-tab is worse
16:54:14  <dominictarr>that is stupid on all platforms
16:54:17  <lessless>guys, I want bundle kalendae with momentjs and my application code. what should I do?
16:54:26  <lessless>where to start 8)
16:54:46  <dominictarr>when I change tasks I don't want to think… I just want a mussel movement
16:55:13  <dominictarr>ctrl-tab sucks because it's a stack, and you have to look at the icons.
16:55:29  <mbalho>i use CMD ~ and CMD tab
16:55:31  <mbalho>you dont have to look at the icons
16:55:41  <mbalho>you hit it once without thinking and it goes to the last thing you were in
16:55:53  <dominictarr>but what if I do 3 things?
16:56:02  <dominictarr>terminal, browser, irc
16:56:34  <mbalho>i dont find that scenario to be a big enough limitation of CMD tab
16:56:53  <dominictarr>too much state. I want the positions to be absolute, then, it's always the same action to go from one thing to the other
16:57:04  <dominictarr>each to their own
16:57:11  <mbalho>too little state actually
16:57:17  <mbalho>mapping things in a 2d grid is lots of state
16:57:37  <dominictarr>but the state doesn't change
16:57:41  * evboguejoined
16:57:46  <dominictarr>cmd-tab has changing state
16:58:01  <mbalho>it has no state haha
16:58:03  <dominictarr>so 1 state, vs recent history
16:58:14  <dominictarr>(many states)
16:58:14  <mbalho>ok i see what youre saying
16:58:26  <mbalho>but the thing is, the mac OS sucks at your way of doign things
16:58:48  <dominictarr>anyway, the thing I like least… is that the promise of mac was so high
16:59:35  <dominictarr>and I didn't really find it to live up to the level of quality that everyone seemed to think it had.
17:00:10  <dominictarr>not to mention, installing things… on ubuntu nearly everything is just apt-get install ...
17:00:20  <dominictarr>not that all os's don't suck
17:00:33  <dominictarr>they all suck
17:01:07  <dominictarr>also, another big problem with mac is keyboard lag
17:01:26  <dominictarr>sometimes the keyboard goes really slow…
17:01:27  <juliangruber>dunno what's up with that
17:01:36  <dominictarr>does anyone else get that?
17:01:39  <juliangruber>yes
17:01:43  <dominictarr>this is 2013.
17:01:48  <dominictarr>that should never happen
17:01:52  <juliangruber>my vim has keyboard lag
17:02:01  <juliangruber>that's where i notice it the most
17:02:02  <dominictarr>I get it in all applications
17:02:12  <dominictarr>so, it must be the os
17:02:43  <juliangruber>what would be your editor in chromeos?
17:02:47  <juliangruber>cloud9?
17:03:44  <juliangruber>vim over ssh?
17:03:46  <juliangruber>not too many choices
17:04:18  * nicholasfquit (Read error: Connection reset by peer)
17:04:32  * ITproquit (Ping timeout: 255 seconds)
17:04:44  * nicholasfjoined
17:05:07  * defunctzombiechanged nick to defunctzombie_zz
17:05:10  <juliangruber>or do you still get a shell?
17:05:18  <hij1nx>dominictarr: did you ever try to get a window manager working on top of smartos? not that smartos would be a great user-focused operating system, but maybe it would be a good developer-focused operating system
17:06:55  <dominictarr>no, there is open indiana
17:07:18  <dominictarr>I don't really have time to mess around with oses, too much level-* stuff to write!
17:07:18  <hij1nx>dominictarr: have you tried running that?
17:07:31  <dominictarr>no not yet
17:07:56  <hij1nx>dominictarr: yeah, thats why i stick to macos, it works well enough
17:08:00  * ITprojoined
17:08:10  <dominictarr>yeah, same...
17:09:07  <dominictarr>but, chromeos looks pretty inline with my opinions...
17:09:16  * evboguequit
17:09:48  <dominictarr>if there was a fully open version of that, with dev package manager and everything
17:09:58  <dominictarr>(just use npm!)
17:10:08  <hij1nx>lol, i was about to say that
17:10:13  <dominictarr>but need to be able to install git and gcc etc
17:10:21  <dominictarr>then, that would rule
17:11:21  <juliangruber>open chromeos + distributed npm
17:11:23  <juliangruber><3
17:11:30  <juliangruber>should up and take my money
17:12:23  <dominictarr>anarchy os!
17:12:28  * ITproquit (Ping timeout: 256 seconds)
17:13:01  <juliangruber>yes!
17:13:34  <juliangruber>someone not too busy working on leveldb or voxel could make a kickstarter
17:14:05  <dominictarr>I'm sure it will fall into place when the time is right.
17:18:20  * st_lukejoined
17:23:55  <isaacs>dominictarr, Raynos: do either of you remember who was talking about wanting parallel writes for Writable streams?
17:24:12  * mikealjoined
17:24:15  <dominictarr>parallel writes?
17:24:24  <isaacs>we're talking about adding an interface to support writev
17:24:26  <dominictarr>you mean, two streams writing to one stream?
17:24:29  <isaacs>nono
17:24:50  <isaacs>like, s.cork(); s.write('one'); s.write('two'); s.write('three'); s.uncork() //<-- then all the writes happen at once.
17:24:53  <isaacs>or something
17:25:02  <isaacs>there's this syscall called writev (write vector)
17:25:16  <dominictarr>are they really parallel?
17:25:17  <isaacs>instead of passing a single chunk, you pass multiple chunks, and it writes them all in one syscall
17:25:29  <isaacs>well, then we call stream._writev(chunks, encodings, callback)
17:25:35  <isaacs>and it's on you to do whatever that means for you
17:25:46  <dominictarr>that is the stream's business
17:25:50  <isaacs>right
17:26:02  <isaacs>so, you could still do them sequentially, or just not implement that function
17:26:19  <dominictarr>well, the stream decides how to do that best
17:26:23  <isaacs>right
17:26:28  <isaacs>tcp sockets kind of need this.
17:26:33  <isaacs>for http
17:26:47  <isaacs>because http has a bunch of these tiny little crlf chunks and chunked-encoding size markers.
17:26:57  <isaacs>so we're making extra TCP roundtrips for 2 byte writes
17:27:03  <isaacs>like, all the damn time.
17:27:04  <isaacs>it's insane.
17:27:26  <dominictarr>isn't there a setting on tcp to buffer a little bit before flushing?
17:27:35  <dominictarr>nagle something?
17:27:42  <isaacs>so, what we can do is something like this: https://github.com/joyent/node/pull/5257/files#L2R410
17:28:00  <isaacs>dominictarr: sure, but that also introduces more latency.
17:28:19  <dominictarr>I remember net used to have a setting for that
17:28:20  <isaacs>since we're writing all in one tick, we can just use writev
17:28:22  <isaacs>it does
17:28:28  <dominictarr>oh, right
17:28:36  <isaacs>dominictarr: http://nodejs.org/docs/latest/api/net.html#net_socket_setnodelay_nodelay
17:28:43  <dominictarr>ah
17:28:59  <dominictarr>maybe buffer calls until nexttick?
17:29:49  <isaacs>we don't want to do that
17:29:49  <dominictarr>or, at least it should be a http thing
17:29:50  <isaacs>but you could
17:29:59  <isaacs>i mean, we don't wnat to wait until nextTick
17:30:13  <hij1nx>isaacs: why does there have to be three separate calls?
17:30:24  <isaacs>just want to buffer up the 4 writes into a single syscall instead of 3 syscalls
17:30:26  <isaacs>(and a copy)
17:30:34  <isaacs>hij1nx: three separate calls?
17:30:44  <isaacs>hij1nx: you mean: cork, write, uncork?
17:30:48  <hij1nx>yea
17:30:55  <isaacs>hij1nx: another idea would be something like stream.bulk(function() { write write write })
17:31:00  <hij1nx>yes!
17:31:05  <isaacs>but cork/uncork is strictly simpler and more flexible
17:31:14  <hij1nx>larger surface
17:31:20  <isaacs>and you could easily do: stream.bulk = function(fn) { this.cork(); fn(); this.uncork() }
17:31:37  <isaacs>honestly, i don't like either of them that much
17:31:42  <isaacs>the api is klunky
17:31:53  <isaacs>adds extra things that you have to be careful to not clobber.
17:32:05  <hij1nx>cork, uncork seems awkward imho
17:34:34  <hij1nx>stream.batch
17:38:00  <juliangruber>isaacs: stream.cork().write(foo).write(bar).uncork()
17:39:16  <juliangruber>stream.batch().write(foo).write(bar).send()
17:39:30  <juliangruber>stream.batch().add(foo).add(bar).write()
17:39:34  <isaacs>juliangruber: that can't work. write() returns a boolean
17:39:44  <isaacs>juliangruber: and the write() return value is kind of importatn
17:39:46  <juliangruber>the last part of the chain returns a boolean
17:40:21  <juliangruber>or would it make sense for one of the batche's writes to return boolean?
17:41:20  <isaacs>juliangruber: also, you're adding even more stuff to the interface
17:41:35  <isaacs>juliangruber: ideally, i'd like to do this in a way that adds NOTHING to the stream interface at all
17:41:42  <juliangruber>what about stream.write(foo, bar, baz)
17:41:54  <isaacs>juliangruber: nope: stream.write(chunk, encoding, callback)
17:42:00  <isaacs>juliangruber: also, variadic functions are the devil
17:42:06  <juliangruber>hmmmmmmm
17:44:12  * defunctzombie_zzchanged nick to defunctzombie
17:44:24  * mikealquit (Quit: Leaving.)
17:44:45  <juliangruber>stream.write(chunk, chunk, chunk, encoding, callback)
17:45:09  <dominictarr>isaacs: what would write even do when it's in cork mode?
17:45:44  <dominictarr>it's gonna build a buffer or something, right?
17:46:03  <ralphtheninja>cork mode? it must be emitting 'like' all the time :P
17:46:21  <ralphtheninja>if you've been to cork, you know what I mean :)
17:46:32  <dominictarr>not yet
17:46:33  <isaacs>juliangruber: but each chunk can have separate encodings
17:46:48  <isaacs>dominictarr: yeah, the same thing it does if you write a bunch of stuff while it's already writing
17:47:08  <isaacs>dominictarr: it just doesn't even try calling _write(chunk,enc,cb) until you uncork
17:47:15  <dominictarr>which is buffer it, right?
17:47:20  <isaacs>dominictarr: and, if you have a _writev() defined, then it'll call that instead, with all the buffered chunks.
17:47:23  <isaacs>dominictarr: yes.
17:47:33  <dominictarr>so, can't the user just buffer it?
17:47:42  <dominictarr>and then do one write?
17:47:44  <isaacs>dominictarr: also, even if you don't cork()/uncork(), it'll use _writev if there's multiple buffered writes
17:47:53  <isaacs>dominictarr: well, that's the problem. now you have to copy shit around.
17:47:54  <juliangruber>what about s.pause() s.write(foo) s.write(bar) s.resume()
17:48:07  <isaacs>juliangruber: pause()/resume() is readable interface.
17:48:11  <isaacs>juliangruber: and streams can be both, so no
17:48:13  <dominictarr>what about not extending the stream api at all?
17:48:25  <isaacs>dominictarr: so.. then how do we batch up writes?
17:48:34  <isaacs>dominictarr: wihtout changing the http res.write() interface?
17:48:35  <dominictarr>buffer.concat?
17:48:38  <isaacs>or the tcp net.write() interface.
17:48:45  <isaacs>dominictarr: no, the whole point is to avoid userland copying
17:49:34  <dominictarr>hmm, but what about a way to make a string of buffers,
17:49:44  <dominictarr>that present the buffer api but don't actually move bits
17:50:35  <dominictarr>hmm, okay, I'm seeing it now.. there is a low level api that takes multilple bits of memory, and writes them at once
17:51:35  <juliangruber>res.write([foo, bar, baz]). So every stream that isn't in object mode can also take an array
17:51:52  <juliangruber>shit, different encoding
17:51:56  <juliangruber>s
17:52:06  <dominictarr>just say they have to be the same encoding
17:52:26  <dominictarr>because else, you are just making our lives difficult, and streams ugly
17:52:46  <isaacs>dominictarr: no, they do not have to be the same encoding.
17:52:50  <hij1nx>level has a `batch` for write operations...
17:52:58  <isaacs>dominictarr: you get an array of chunks, and an array of encodings, and you put them together.
17:53:06  <dominictarr>okay, sure
17:53:07  <isaacs>dominictarr: or, you can potentially get an array of {chunk,encoding}
17:53:42  <juliangruber>res.write([foo, bar], [utf8, binary]) sucks too
17:53:49  <dominictarr>who uses one stream with different encodings?
17:53:52  <hij1nx>isaacs: thats what levelup.batch is
17:54:06  <dominictarr>res.write([a, b, c], 'utf-8')
17:54:17  <dominictarr>all use the same encoding
17:54:40  <dominictarr>res.write([a, b, c], ['utf-8', 'binary', 'base64'])
17:54:43  <juliangruber>res.write([a, b, c], ['utf-8', 'binary']) would through
17:54:49  <juliangruber>throw
17:55:03  <juliangruber>that's still ugly however
17:55:04  <dominictarr>maybe c gets the last encoding
17:55:14  <juliangruber>errorprone
17:55:38  <juliangruber>that's like normalizing an array
17:55:43  <juliangruber>i mean
17:55:53  <juliangruber>putting your arguments in a table
17:56:01  <dominictarr>this is to make http fast, though, right?
17:56:21  <dominictarr>is http using write?
17:56:44  <dominictarr>… hmm, because it wraps the net socket?
17:58:02  <dominictarr>isaacs: what sort of performance improvement are we looking at?
17:58:19  <rowbit>SubStack, pkrumins: At least 5 people waiting in the queue for free servers! (Waiting: 5)
17:58:30  <pkrumins>chaddap
17:58:32  <isaacs>dominictarr: significant. like, 10% or more in some cases.
17:59:25  <dominictarr>does it have to extend the public api?
17:59:46  <dominictarr>users shouldn't be using write, in my opinion
17:59:58  <dominictarr>and how is it gonna affect pipe?
18:00:38  <dominictarr>write(arrayOfBuffers) seems least bad to me
18:00:56  <dominictarr>does http use multiple buffers at once?
18:01:41  <dominictarr>sorry, I mean multiple encodings?
18:05:36  * yorickquit (Remote host closed the connection)
18:08:08  * mikealjoined
18:12:03  * mikealquit (Client Quit)
18:12:06  * saijanai_joined
18:15:58  * mikolalysenkoquit (Read error: No route to host)
18:16:59  * dguttmanjoined
18:30:08  <isaacs>dominictarr: users use write and end all the time.
18:30:22  <isaacs>dominictarr: i'm aware of your opinion on this point, but it's not node's opinion.
18:30:31  <isaacs>dominictarr: often, it makes more sense to just write a response, rather than pipe something into it
18:30:42  <isaacs>gotta run
18:30:44  <dominictarr>sure
18:30:57  <dominictarr>it's only an opinion… not a rule
18:37:35  <dominictarr>man… ubuntu is still at node@0.6 in their registry
18:40:12  <jjjjohnn1y>isaacs: !
18:40:43  <jjjjohnn1y>isaacs: BYOfood potluck & party today in hackistan
18:42:16  * mikealjoined
18:47:19  * st_lukequit (Remote host closed the connection)
18:54:34  <jjjjohnn1y>potluck hang loose muisc and good times this afternoon in hackistan
18:54:53  <jjjjohnn1y>there will be a grill
18:55:11  <jjjjohnn1y>3276 Logan St. Oakland
18:56:10  <jjjjohnn1y>cc/ all
18:56:40  * dguttmanquit (Quit: dguttman)
18:57:03  <jjjjohnn1y>ILL BE BREWING SUN TEA
18:57:04  <LOUDBOT>OR BETTER STILL, WHAT IT IS ABOUT
18:59:02  <jjjjohnn1y>dominictarr: happy cambodian new year
18:59:12  <dominictarr>to you too!
19:00:15  <jjjjohnn1y>oaklands cambodians celebrated in our neighborhood park yesterday with food, music and pretty ladies dancing
19:00:21  <jjjjohnn1y>and tug of war of the sexes
19:01:02  <dominictarr>jjjjohnn1y: who won?
19:01:11  <jjjjohnn1y>the ladies!
19:01:15  <dominictarr>very good
19:01:48  <jjjjohnn1y>a legitimate victory by the looks of it
19:04:04  <jjjjohnn1y>dominictarr: are you a irish citizen now?
19:04:18  <dominictarr>no, just hanging out here
19:04:36  <dominictarr>officially
19:05:04  <dominictarr>speaking of irish citizens
19:05:41  <dominictarr>I have an irish citizen (cian omaiden) in town right (bay area) right now..
19:05:50  <dominictarr>he's another nearformer
19:06:22  <jjjjohnn1y>whereabouts
19:07:23  <jjjjohnn1y>point him to hackistan
19:08:29  * shamajoined
19:10:44  <dominictarr>will do!
19:11:45  <dominictarr>hmm, what time?
19:14:08  <jjjjohnn1y>afternoon, now till evening
19:14:15  * mikolalysenkojoined
19:25:45  * lesslessquit (Remote host closed the connection)
19:30:07  * mikealquit (Quit: Leaving.)
19:30:17  * cianomaidinjoined
19:35:00  * mikolalysenkoquit (Ping timeout: 264 seconds)
19:39:02  * jibayjoined
19:39:48  * cianomaidinquit (Quit: cianomaidin)
19:40:31  <pkrumins>testling-ci now has the "android-browser" version 4.2, which is the android's default browser
19:40:38  <mbalho>woot
19:40:51  <pkrumins>:)
19:40:53  <pkrumins>coming up next: "android-chrome" and "android-firefox"
19:40:58  <dominictarr>thats cool
19:41:22  <pkrumins>for now just android's version 4.2, but i figured out how to get all the other versions also
19:41:43  <pkrumins>we'll get a dedicated server from hetzner (such as this one with 16gigs of ram) www.hetzner.de/en/hosting/produkte_rootserver/ex10
19:41:59  <pkrumins>and then we'll run all of the androids, each with like 256 megs of ram
19:42:21  <pkrumins>so we got the whole range of androids covered
19:42:49  <ralphtheninja>pkrumins: that's great!
19:43:00  <pkrumins>oh actually that server is 64 gigs of ram and it costs 109 euros per month (like $150/month)
19:43:16  <pkrumins>hetzner have pretty mind blowing servers for pretty mind blowing prices
19:43:35  <ralphtheninja>pkrumins: have to check it out, thanks
19:43:49  <pkrumins>you're welcome :)
19:48:22  * ITprojoined
19:49:06  <ralphtheninja>pkrumins: loads of different OSes too, nice
19:49:26  <ralphtheninja>well perhaps not loads, but surely enough
19:49:54  <pkrumins>yep
19:50:30  <ralphtheninja>which OS do use? ubuntu?
19:51:45  <pkrumins>we use amazon linux on ec2, arch linux on rackspace
19:53:12  <dominictarr>pkrumins: you are running android in vms?
19:53:45  <pkrumins>yes, android in vms
19:53:51  <pkrumins>and they run on a mac mini server
19:54:00  <pkrumins>which we use for iphone and ipad emulators
19:54:11  <dominictarr>oh, interesting
19:55:15  <pkrumins>we bought a mac mini server and colocate it at www.macminicolo.net
19:55:51  <dominictarr>ha, very good
19:56:00  <mbalho>hah wow
19:59:35  * fotoveritejoined
20:00:46  * mikealjoined
20:03:32  * st_lukejoined
20:04:10  * dominict1rrjoined
20:06:40  * fallsemojoined
20:09:17  * dominict1rrquit (Quit: Lost terminal)
20:10:18  * mikealquit (Ping timeout: 264 seconds)
20:16:33  * isaacs_mobilejoined
20:17:39  <dominictarr>substack: do I have to check modules in to use ploy?
20:18:15  * isaacs_mobilequit (Client Quit)
20:18:43  <substack>dominictarr: nope it does `npm install .`
20:19:08  <dominictarr>okay, cool - so if I push a change, and will it reinstall, or overwrite?
20:19:26  <dominictarr>I mean, will it be like doing npm install in a dev dir
20:30:29  * spionjoined
20:34:17  * st_lukequit (Remote host closed the connection)
20:36:18  <dominictarr>substack: do i need to tell ploy what domain it's on?
20:37:02  <dominictarr>if it's something like yfgcrl@ec2-54-234-183-174.compute-1.amazonaws.com ...
20:37:06  <dominictarr>will that break stuff?
20:37:11  * mikealjoined
20:41:34  * mikealquit (Ping timeout: 256 seconds)
20:49:13  * spionquit (Ping timeout: 246 seconds)
20:51:45  * dguttmanjoined
20:55:00  * cianomaidinjoined
20:56:25  * dguttmanquit (Ping timeout: 252 seconds)
21:00:00  * st_lukejoined
21:00:32  * stagasquit (Read error: Connection reset by peer)
21:07:25  * fallsemoquit (Quit: Leaving.)
21:09:07  * mikealjoined
21:13:51  * mikealquit (Ping timeout: 260 seconds)
21:16:20  * ins0mniajoined
21:17:44  * ins0mniaquit (Remote host closed the connection)
21:31:24  * fallsemojoined
21:36:34  * st_lukequit (Remote host closed the connection)
21:41:05  * mikealjoined
21:43:13  * evboguejoined
21:43:18  * st_lukejoined
21:43:22  <st_luke>isaacs: are you around?
21:44:04  * cianomaidinquit (Quit: cianomaidin)
21:44:30  * cianomaidinjoined
21:45:29  * mikealquit (Ping timeout: 256 seconds)
21:54:14  * wolfeida_changed nick to wolfeidau
22:03:49  <niftylettuce>$1400+ of AWS credits, boom. http://i.imgur.com/7C0Wahs.png
22:04:01  <niftylettuce>1337 h4x0r
22:10:46  * evboguequit (Ping timeout: 246 seconds)
22:12:01  * mikealjoined
22:13:02  <st_luke>wow
22:17:00  * mikealquit (Ping timeout: 264 seconds)
22:17:50  * cianomaidinquit (Ping timeout: 252 seconds)
22:17:58  <niftylettuce>STAY SCRAPPY, STAY NIFTY
22:17:58  <LOUDBOT>WHAT THE FUCK. I WAS SINGING LOUDLY. ISN'T THAT CLOSE ENOUGH TO YELLING?
22:22:09  * Domenic__joined
22:23:43  * wolfeidauquit (Remote host closed the connection)
22:23:53  * fotoveritequit (Ping timeout: 252 seconds)
22:25:02  * cianomaidinjoined
22:30:44  * evboguejoined
22:31:25  * fotoveritejoined
22:33:28  * defunctzombiequit (Ping timeout: 245 seconds)
22:43:25  * mikealjoined
22:44:41  * fotoveritequit (Read error: Operation timed out)
22:48:06  * mikealquit (Ping timeout: 264 seconds)
22:49:25  * defunctzombiejoined
22:50:40  <substack>dominictarr: it does a new npm install every time
22:51:41  <dominictarr>right, I'm guessing that if a request comes in with ec2.blahblahblah.amazonaws.com then it will get confused?
22:51:53  <substack>nope
22:51:53  <dominictarr>because that subdomain isn't a branch?
22:51:58  <substack>oh maybe
22:52:08  <dominictarr>ah, it should probably just serve master
22:52:22  <substack>the master branch is the fallback for everything
22:52:24  <substack>so it'll work
22:52:29  <dominictarr>ah, great
22:53:04  * wolfeidaujoined
22:54:01  * nicholasfquit (Read error: Connection reset by peer)
22:54:03  * nicholas_joined
22:55:13  * nicholas_quit (Read error: Connection reset by peer)
22:55:37  * nicholasfjoined
22:56:22  * fotoveritejoined
23:01:02  * spionjoined
23:01:22  <st_luke>mobile carriers love fucking with websockets
23:01:25  <st_luke>amazingly terrible
23:01:49  <dominictarr>I heard if you use https there is nothing they can do
23:05:14  * mikealjoined
23:05:23  <st_luke>dominictarr: that's what we're doing, but its' still super frustrating
23:05:56  <dominictarr>how can they tell it's a websocket, then?
23:06:35  <dominictarr>or, is it just traffic analysis
23:06:49  <dominictarr>like, they are throttelling you?
23:07:03  <st_luke>dominictarr: presumably they can not tell, but then they start fucking with connections based on how long they've been open
23:07:17  <dominictarr>oh, right
23:07:20  <dominictarr>closing them?
23:07:45  <st_luke>closing them would be ideal, sort of, at least then you open a new one
23:07:57  <st_luke>but if they end up doing something like throttling it, then it gets to be a pain in the ass
23:08:06  <dominictarr>hmm, you need to gather some metrics on this
23:08:41  <dominictarr>maybe you can just figure out their stragtey and beat it
23:08:56  <st_luke>isn't this what the FCC is for
23:09:07  <st_luke>keeping network providers from doing this kind of bs with their traffic
23:09:29  <dominictarr>the system is broken
23:10:26  * mikealquit (Quit: Leaving.)
23:10:46  <dominictarr>substack: does browserify2 generate stacks correctly when running in node.js?
23:14:23  * cianomaidinquit (Quit: cianomaidin)
23:18:08  <jez0990_>dominictarr: I watched the neo4j lecture ...came to the conclusion that graph problems are just tree problems integrated over one or more dimensions (e.g. time)!
23:21:25  <dominictarr>well, graph is a super set of trees
23:21:33  * fallsemoquit (Quit: Leaving.)
23:21:45  <dominictarr>some of the examples he gives at the end,
23:22:09  <dominictarr>like the supermarket thing… is just using an ontology, basically.
23:22:39  <dominictarr>don't think you even need a graph for that.
23:23:04  <jez0990_>heh, yeah agreed
23:23:32  <dominictarr>I found the "triadic closure" idea very interesting, though.
23:23:32  <jez0990_>I guess he should have extended it to describe complex relationships between ingredients
23:24:13  <dominictarr>maybe, but it was the world war one example that was more interesting
23:24:49  * thl0joined
23:25:31  <jez0990_>agreed, it is fascinating to glimpse things like that
23:27:10  <jez0990_>I am left with the feeling that a decentralised graph db is even semantically impossible
23:29:12  <jez0990_>does that make sense?
23:34:58  * evboguequit
23:41:53  * spionquit (Quit: Leaving)
23:42:00  * spionjoined
23:43:30  <jez0990_>DAMN THIS FEEBLE HUMAN COMMUNICATION
23:43:30  <LOUDBOT>SHAVED NIPPLES SEEMS BOTH APPROPRIATE YET DEEPLY UNSETTLING.
23:44:03  <jez0990_>...and my ability to generate singularities with it (g'night)
23:46:06  * fallsemojoined
23:50:31  <st_luke>has anyone written a module to take an arbitrary js object and turn it into a stream for piping to places?
23:51:08  <dominictarr>like, pipe the values?
23:51:15  <dominictarr>like forEach?
23:51:26  <dominictarr>or json it?
23:51:44  <st_luke>dominictarr: json it, the whole thing
23:52:00  <st_luke>so the whole thing would be a data event on the stream i guess
23:52:18  <st_luke>sounds kinda dumb i gues
23:52:19  <dominictarr>is it a large object?
23:52:36  <st_luke>dominictarr: it can be a large object
23:53:46  <dominictarr>if it's array like, you could use JSONStream
23:54:20  <st_luke>yeah, looked into that
23:56:56  <st_luke>hopefully in berlin we can get a lot of smart people together thinking about distributed npm2
23:57:20  <st_luke>dominictarr: are you going to be in berlin for long?
23:57:24  <dominictarr>so, I started work on it github.com/dominictarr/npmd
23:57:35  <st_luke>I was looking at apartments, they're so cheap compared to what I'm used to
23:58:02  <dominictarr>I'll probably drop by and hang out for a month or so.
23:58:30  <st_luke>you're doing couch replication with it now?
23:59:20  <dominictarr>just pulling from couch
23:59:27  <dominictarr>one way