--- Log opened Thu Aug 02 00:00:07 2012 00:18 < Raynos> SubStack: where do you hide the uptime 00:18 < Raynos> of these things 00:23 < Raynos> SubStack: https://github.com/substack/propagit/blob/master/index.js#L398 this is the thing I want to read from in `fleet ps` 00:23 < SubStack> uptime? 00:25 < Raynos> yes 00:25 < tblobaum_> uptime could be kind of nice 00:28 < tblobaum_> but with that, maybe just make some kind of http endpoints that will stream monitor or stream process meta data as json 00:29 < Raynos> or store the spawning time for the process 00:29 < Raynos> or get the ctime of the pid file for the process 00:33 < SubStack> aha that would make sense 00:34 < SubStack> I think the start time is already recorded in the metadata too 00:34 < Raynos> where is it? 00:34 < SubStack> propagit/index.js:392 00:34 < SubStack> oh I'm mistaken, doesn't store the start time 00:35 < SubStack> but that's where I'd put it 00:35 < SubStack> I think a separate service should handle historical process uptime 00:35 < SubStack> since that would involve saving things to disk 00:36 < SubStack> but that system could just hook into the same events that `fleet monitor` does 00:36 < tblobaum_> maybe the hub could emit some changes events 00:36 < tblobaum_> with some meta data 00:36 < tblobaum_> and build on that whatever ui or history 00:36 < SubStack> it already does! 00:37 < SubStack> it's just a matter of adding a field to the process metadata 00:37 < tblobaum_> nice it makes sense it would have to, but not sure if its easily tapped in to 00:38 < SubStack> look at how fleet monitor hooks into the event stream 00:38 < tblobaum_> is the hub coupled to the fleet commands very closely? or could i conne t to it with dnode and some things would work 00:38 < tblobaum_> ill take a look, just easier to ask :) 00:38 < SubStack> the fleet project itself is just a collection of scripts 00:39 < SubStack> all the service logic is in propagit 00:39 < maxogden> the internet is just a collection of scripts 00:39 < SubStack> you can directly connect over dnode just fine 00:39 < SubStack> maxogden: fact 00:57 < SubStack> Raynos: sounds like what you wanted to do with seaport: https://twitter.com/jedschmidt/status/230823555980484608 00:58 < Raynos> SubStack: he uses buzzwords 00:58 < Raynos> all I want to do is talk to arbitarily named web hooks over seaport 00:58 < Raynos> ugh 00:58 < Raynos> I used his silly web hook word 00:59 < Raynos> a browser is simply a process. seaport makes processes talk to processes. end. 00:59 < SubStack> here's what it would look like https://twitter.com/jedschmidt/status/230825146049511424 01:00 < SubStack> something like browser-side mountie I think 01:01 < Raynos> browser side mountie 01:01 < Raynos> is needed at some point 01:01 < Raynos> to aggregate many small pieces into a public facing whole 01:03 < maxogden> web hooks a) arent silly and b) arent jeds word :) 01:04 < tblobaum_> Raynos: you dont want to expose browsers to browsers though, right? 01:04 < Raynos> maxogden whats a web hook 01:04 < Raynos> tblobaum: in theory yes 01:04 < tblobaum_> i think he just means service 01:05 < maxogden> webhooks are like http callbacks 01:05 < Raynos> a browser is simply a named service on a seaport 01:05 < Raynos> and anything can query for a named service on seaport 01:07 < tblobaum_> Raynos: oh 01:07 < tblobaum_> Raynos: I thought you just wanted to access seaport services directly from the browser 01:07 < Raynos> seaport is bidirectional 01:07 < Raynos> firstly 01:07 < Raynos> i want to access seaport services directly from the browser 01:08 < Raynos> but there is no reason why a browser cant register a service on the seaport proxy 01:08 < tblobaum_> like, building semver mostly, and the service aggregation aspect 01:08 < tblobaum_> so you can get the seaport service for queueing up emails, then fro the seaport metadata get the location of that service, make an xhr request there, and so on 01:09 < tblobaum_> s/building/building on/ 01:09 < Raynos> yeah 01:10 < Raynos> i was thinking you can ask seaport and get back a stream that talks directly to that thing 01:10 < Raynos> what I really want is airport in the browser 01:10 < Raynos> so I can just assume we all talk over upnode 01:10 < Raynos> and fire left & right 01:12 < Raynos> what does substack use for his logging purposes 01:12 < SubStack> console.log 01:12 < tblobaum_> yeah airport might be better 01:13 < Raynos> SubStack: but console.log does not show up in fleet monitor 01:13 < Raynos> and if I dont have fleet monitor up the console.log just goes nowhere 01:13 < SubStack> it should! 01:13 < SubStack> em.on('stdout', function (buf, proc) { 01:13 < SubStack> monitor listens for stdout events 01:13 < Raynos> i know it should 01:13 < SubStack> and stderr events 01:14 < Raynos> im tired ._. 01:14 < SubStack> could be a bug 01:14 < SubStack> lots of bugs still 01:14 < Raynos> i think ill just go home 01:14 < Raynos> and sleep for 14 hours 01:14 < Raynos> ._. 01:14 < Raynos> im going to oversleep 01:14 < Raynos> and feel tired again 01:14 < SubStack> DO EEET 01:14 < LOUDBOT> YOU CAN READ THE SOURCE IT WON'T BITE 01:14 < Raynos> this is a vicious cycle 01:15 < Raynos> how do you nullify tired 01:15 < SubStack> naps 01:15 < Raynos> tired | /dev/null 01:15 < SubStack> and strategic coffee consumption 01:15 < maxogden> require('coffee-beans').pipe('brewer').pipe(process.stdin) 01:16 < SubStack> exercise helps too 01:16 < Raynos> maxogden: where are you? 01:16 < Raynos> oh wait 01:16 < Raynos> your near the thing 01:16 < tblobaum_> yes some mild exercise 01:16 < maxogden> wat 01:16 < tblobaum_> and waking up quickly, rather than slowly 01:16 < maxogden> tblobaum_: whoa really 01:16 < SubStack> Raynos: go bike over to the sfjs thing to listen to max's cat presentation! 01:16 < maxogden> isaacs: i wish i could tag other peoples node modules 01:17 < maxogden> isaacs: instead of just star them 01:17 < SubStack> taghub 01:17 < Raynos> tag:shit 01:17 < Raynos> tag:win 01:17 < maxogden> haha 01:17 < Raynos> tag:solve-my-problems 01:17 < isaacs> maxogden: that's a good idea. 01:17 < Raynos> tag:WARNING-COFFEESCRIPT 01:17 < maxogden> isaacs: i was just thinking it would be fun to tag all the streaming parsers with #streaming-parser 01:17 < isaacs> maxogden: the "star" data structure is set up to enable that 01:17 < Raynos> then I can write a twitter bot 01:18 < maxogden> isaacs: you use a database that supports sparse documents?!? 01:18 < isaacs> maxogden: it's actually "users":{"maxogden":true,...} on the package doc 01:18 < Raynos> that listens on twitter hash tags and replies with github repo links 01:18 < maxogden> isaacs: haha 01:18 < Raynos> twitter: I need a #streaming-parser! 01:18 < isaacs> maxogden: with the intention that you could make tht whatever 01:18 < SubStack> a string instead of true? 01:18 < isaacs> "users":{"maxogden":["maxos","tagsos"]} 01:18 < isaacs> SubStack: or an object! 01:18 < isaacs> anything truthy! 01:18 < SubStack> right-o 01:19 < SubStack> haha I'm going to start calling mac osx maxos 01:19 < maxogden> YES 01:19 < isaacs> SubStack: the proper name for it is "Fruity Cat" 01:20 < maxogden> Mac OS X 10.9 Max Ogden 01:20 < maxogden> isaacs: i broke my own personal stream record earlier 01:20 < maxogden> isaacs: most pipes in a single program 01:21 < maxogden> in the browser no less 01:21 < maxogden> https://github.com/maxogden/dataroller/blob/master/attachments/drophandler.js#L32 01:21 < isaacs> nice :) 01:21 < maxogden> and on the server https://github.com/maxogden/dataroller/blob/master/index.js#L29 01:21 < maxogden> the first link pipes to the second 01:21 < maxogden> 8 streams in a row wooooooo 01:22 < SubStack> unixifing the browser 01:22 < SubStack> with some hot piping node point javascript ideology 01:22 < maxogden> haha 01:23 < maxogden> isaacs: so you liked that stream constructor side effect pattern? 01:23 < isaacs> maxogden: yeah, i mean, i use it a lot 01:23 < maxogden> isaacs: coolio. seemed too convenient not to use 01:23 < isaacs> ok i'm heading over to some sf js thing 01:23 < maxogden> isaacs: hahah im talking at that 01:23 < isaacs> i heard there's a cat there talking about databases with slides featuring bearded men 01:23 < maxogden> isaacs: your cat is in it like 4 times 01:24 < maxogden> isaacs: bring aristotle for bonus points 01:24 < maxogden> isaacs: and also so the presentaiton can be delivered by him 01:24 < isaacs> maxogden: hahhaah, no, he's even more of a homebody than i am 01:24 * isaacs away! 01:32 < tblobaum_> maxogden: nice 05:23 < Raynos> isaacs: When checking dependencies into git. Whats the best way to handle compiled dependencies, cc mikeal, SubStack 05:24 < SubStack> Raynos: npm rebuild 05:24 < SubStack> fleet exec --drone=* -- npm rebuild 05:24 < SubStack> after you deploy 05:25 < Raynos> i see 05:26 < Raynos> npm rebuild without package name rebuilds all the ones in package.json ? 05:26 < Raynos> is there a post git checkout hook or something that can run npm rebuild for me? 05:26 < Raynos> does fleet have any post deploy hooks ? 05:28 < Raynos> are there any traps with accidentally committing compiled binaries to git in the node_modules folder? 05:31 < SubStack> just add entries to your .gitignore for those 05:32 < SubStack> .git\n*.so\n*.node\*.swp\n*.swo 05:51 < Raynos> sweet 05:51 < Raynos> SubStack: again some post deploy hook in fleet where I can run npm rebuild would be sweet 05:54 < SubStack> maybe 05:54 < SubStack> you could also just make a deploy.sh and put those commands in it 05:55 < SubStack> fleet deploy\nfleet exec --drone=* -- npm rebuild 06:03 < Raynos> i have a make deploy target already 06:03 < Raynos> that does that 06:03 < Raynos> it feel it would be nicer if this was a git based hook thing 06:09 < SubStack> git hooks are actually pretty lame 06:09 < SubStack> I wouldn't use them for anything important 06:09 < SubStack> http://www.youtube.com/watch?v=4VHaORv6GYo 06:09 < SubStack> wups 06:09 < SubStack> https://github.com/substack/node-git-emit 06:10 < SubStack> git hooks are just shell scripts anyways 06:10 < SubStack> so just tell it what to do explicitly from the start 06:11 < SubStack> or make a deployinator module that wraps fleet deploy 06:11 < SubStack> hmm actually 06:11 < SubStack> putting a "scripts" field into fleet.json might work 06:11 < SubStack> but it should not use git hooks because those suck 06:12 < SubStack> a "scripts" field and a global ~/fleet.json are not compatible features 06:12 < Raynos> note the global fleet.json 06:13 < Raynos> is simply a default thing you inherit from 06:13 < Raynos> node-confuse style 06:13 < Raynos> mainly for the purpose of setting up the self remote that points at localhost:7000 06:13 < Raynos> so that I can locally test fleet deployment on all my modules 06:14 < SubStack> could be if it worked in the merge way 06:14 < Raynos> yes 06:14 < Raynos> thats what I intended 06:14 < Raynos> in the PR 06:14 < SubStack> ah 06:16 * SubStack is fixing browserify watch issues 06:17 < SubStack> blarg, no modules on npm for showing exactly where a syntax error occured 06:18 < SubStack> going to have browserify do a quick syntax check with Function() and generate a nice error message if that throws 06:21 < SubStack> this will also be helpful for the testling overhaul 06:21 < SubStack> so I can check the syntax with node first 06:39 < guybrush> SubStack: `var foo = './foo.js'; require(foo);` works with browserify right? 06:40 < SubStack> browserify will show a warning and skip that 06:40 < guybrush> oh i just saw it 06:49 < SubStack> pow ok have a sweet little lib using esprima and Function() now for checking and formatting syntax errors 06:51 < Raynos> substack: gh link 06:52 < SubStack> not up yet, writing docs, examples, tests, etc 06:53 < SubStack> post production 06:54 < Raynos> gist it? 06:54 < Raynos> also why write docs afterwards 06:54 < Raynos> I write docs/examples then (tests if TDD) the code 07:02 < SubStack> because I like exploring first 07:02 < SubStack> usually I don't know what I'm trying to build until I've built it already 07:02 < SubStack> designing things ahead of time seems to waterfall for me 07:17 < Raynos> i kind of agree 07:18 < Raynos> however I like writing down how the module is used 07:18 < Raynos> so I have some direction of what its supposed to do and what the API should be like 07:19 < Raynos> it also helps a lot to have a starting point for TDD 07:20 < SubStack> mostly I mess around on the repl and move the snippets over into an index.js 07:21 < SubStack> https://github.com/substack/node-syntax-error 09:11 -!- Topic for #stackvm: http://browserling.com | http://testling.com | We put a browser in your browser! 09:11 -!- Topic set by SubStack [~substack@ec2-50-17-202-46.compute-1.amazonaws.com] [Thu Oct 27 21:10:07 2011] 09:11 [Users #stackvm] 09:11 [ Altreus ] [ dhoss ] [ ircretary ] [ Nexxy ] [ Raynos ] [ SubStack ] 09:11 [ antix ] [ dools ] [ isaacs ] [ niftylettuce] [ rook2paw1 ] [ sveisvei ] 09:11 [ blakmatrix ] [ duncanbeevers] [ ITpro ] [ paul_irish ] [ rowbit ] [ tanepiper] 09:11 [ CAPSLOCKBOT ] [ egadcable ] [ jesusabdullah] [ perlbot ] [ ryanseddon] [ tblobaum_] 09:11 [ captain_morgan] [ elliottcable ] [ LOUDBOT ] [ pikpik ] [ saijanai_ ] [ timoxley ] 09:11 [ chapel ] [ farnsworth ] [ Madars ] [ pkrumins ] [ simcop2387] [ yorick ] 09:11 [ coffeecup ] [ framlin ] [ maxogden ] [ purr ] [ slurp ] [ zu ] 09:11 [ cubert ] [ guybrush ] [ mikeal ] [ py1hon ] [ sorensen ] [ zz_shykes] 09:11 [ devaholic ] [ ik ] [ munro ] [ rannmann ] [ stlsaint ] 09:11 -!- Irssi: #stackvm: Total of 53 nicks [0 ops, 0 halfops, 0 voices, 53 normal] 09:11 -!- Channel #stackvm created Thu Mar 18 00:02:18 2010 09:11 -!- Irssi: Join to #stackvm was synced in 18 secs 09:27 < SubStack> https://gist.github.com/3235797 09:28 < SubStack> watch mode fixed, nice syntax errors 17:55 < st_luke> inefficiency 18:10 < yhuang> Hey guys, seems like it's not working again. it'll be helpful if you guys have a page on the site to check status of the servers 18:22 < maxogden> +1 18:27 < chapel> yhuang: http://browserling.com/nexus/encoders.html 18:28 < yhuang> chapel: Thanks! 18:28 < chapel> just remember substack linking to it 18:28 < chapel> not sure if its useful really 18:30 < yhuang> it's actually very useful, those are the list of browsers that are currently working 18:30 < yhuang> I was trying to run via chrome and was hanging , and chrome isn't on that list 18:30 < yhuang> so I assume whatever was down isn't list 18:30 < yhuang> listed* 18:44 < Raynos> SubStack: seaport.get("foo@~0.0.2"), that will always try to return the highest number, correct? 19:02 < jesusabdullah> SubStack: http://imgur.com/adoxq DC Tycoon irl 19:24 < SubStack> Raynos: I'm unsure 19:24 < Raynos> SubStack: is it a bug if it does not do so? 19:25 < Raynos> the same with get(foo@0.0.x) 19:25 < Raynos> I want to use that syntax so I can spawn up newer versions of my code 19:25 < Raynos> and have all the other things in the seaport cluster always get the latest code 19:26 < Raynos> that is the main selling point semver in seaport 19:39 < yhuang> Hmm, seems like down again 20:15 < Raynos> SubStack: do you have some thing that notifies me if one of my fleet processes is down or if seaport can't find a service 20:15 < Raynos> basically rowbit 20:23 < Raynos> SubStack: we are sending the fleet secret over the wire in HTTP and not in HTTPS 20:23 < Raynos> whats the easiest way to punch propagit to encrypt my secret 20:47 < mikeal> hey SubStack 20:48 < mikeal> did you wanna come to SummerCamp 20:55 < maxogden> what kind of question is that 22:53 < SubStack> Raynos: I agree that the random hex string names are a bit crap 22:53 < Raynos> well `fleet drone --name=beepboop` 22:53 < Raynos> would fix this 22:53 < SubStack> that already should work 22:54 < Raynos> it should? 22:54 < SubStack> yep 22:55 < SubStack> oh hmmm 22:55 < SubStack> it did work that way at one point 22:55 < Raynos> bring it back :) 22:55 < SubStack> on it 22:56 < Raynos> this reminds me It would also be useful if I can see env data in fleet ps 22:57 < Raynos> like thats a process I spawned with evn blarg 22:57 < SubStack> with an --env flag maybe 22:57 < Raynos> yeah 22:57 < Raynos> fleet ps --env 23:04 < Raynos> SubStack: https://github.com/substack/node-marx#readme that needs a picture 23:08 < SubStack> Raynos: ok the latest propagit now lets you set an opts.name and auto-increments to avoid conflicts 23:08 < Raynos> sweet :) 23:08 < SubStack> and fleet passes argv directly to propagit 23:08 < SubStack> so just fleet drone --name=rawr 23:11 < Raynos> o/ 23:11 < Raynos> --name=cheesefactory 23:12 < Raynos> do you use fleet stop? 23:18 < SubStack> yep 23:18 < SubStack> it's pretty handy when a process is crashing in a loop or when you want to take down an old version of a service 23:18 < Raynos> what did you use instead before mikeal wrote it 23:19 < Raynos> do you have a badass secret deploy-new-version workflow? 23:19 < SubStack> nothing, it fleet was just a proof of concept 23:19 < SubStack> s/ it/ 23:19 < mikeal> SubStack: did you get my message 23:19 < SubStack> mikeal: yeah sounds fun 23:19 < mikeal> did you get the message with the link? 23:19 < SubStack> I have a tent 23:20 < mikeal> i've got a bed for you, just fill out the damn form :) 23:20 < SubStack> done! 23:20 < SubStack> awesome thanks 23:21 < mikeal> np :) 23:22 < SubStack> also fleet isn't totally broken now like it was previously 23:22 < Raynos> i should sign up for summer camp 23:23 < SubStack> probs 23:23 < mikeal> today is probably the last day you can 23:23 < Raynos> oh i see 23:23 < Raynos> then I should do that now 23:25 < Raynos> ok 23:25 < Raynos> i paid o/ 23:25 < mikeal> awesome :) 23:26 < Raynos> I never thanked you for the beer 23:26 < Raynos> so I'll buy you some at summer camp 23:33 < mikeal> i buy all the beer at my conference :) 23:38 < Raynos> mikeal: I will buy you beer at all your conferences then 23:51 < SubStack> Raynos: fleet@0.1.4 now takes the default drone names from os.hostname() 23:51 < mikeal> shit 23:51 < SubStack> and propagit does all the -$n stuff to ensure uniqueness 23:58 < SubStack> hmmm tests are failing... --- Log closed Fri Aug 03 00:00:13 2012