00:00:54  <dominictarr>entities could spend energy leveling up (growing) which increases the amount of energy they can store, and then they have enough energy, they can create a new entity.
00:01:37  <dominictarr>but it takes a lot of energy to create a new entity, so it can only start of really punny and weak.
00:02:28  <Raynos>can we reduce complexity :D
00:02:34  <Raynos>and actually have something fun first
00:02:37  <Raynos>minimally viable fun
00:03:02  <dominictarr>just having ideas
00:03:43  <dominictarr>hmm, chat needs to be a seperate message bus...
00:03:46  <substack>deploying the new code
00:03:57  <substack>dominictarr: shoe is already going over mdm
00:04:03  <substack>can just create another stream
00:04:07  <dominictarr>ah, good.
00:07:04  <substack>jitsu tries to hold your hand waaaay too much
00:07:11  <substack>looking at .gitignore is bad
00:07:57  <Raynos>Shall I do that chat?
00:08:16  <Raynos>or are you doing that dominictarr?
00:08:42  <dominictarr>Raynos, if you add the UI side, that would be awesome
00:08:55  <dominictarr>right now, I'm emitting a 'say' event on the model
00:09:07  <Raynos>?
00:09:08  <dominictarr>model.emit('say', text, id)
00:09:15  <Raynos>I see
00:09:20  <Raynos>how do we enter chat messages
00:09:28  * mikealquit (Quit: Leaving.)
00:09:35  <dominictarr>repl>say('hello')
00:09:39  <Raynos>I see
00:09:40  <dominictarr>or, maybe
00:09:44  <dominictarr>repl> hello
00:09:44  <Raynos>Repl seems good
00:09:48  <Raynos>should I make the repl?
00:09:57  <dominictarr>YES
00:10:14  <substack>I'm adding the ui chat bubbles
00:10:23  <dominictarr>cool
00:10:26  <substack>since I'm updating the entity rendering code
00:10:31  <substack>so we can have sprites for all of them
00:11:49  <substack>http://teh-wizzards-of-stre.nko3.jit.su/
00:13:09  * intabulasquit (Remote host closed the connection)
00:13:36  * intabulasjoined
00:14:05  * mikealjoined
00:14:12  * mikealquit (Client Quit)
00:16:45  <dominictarr>looks good
00:16:50  <dominictarr>people are playing already
00:17:23  <dominictarr>want to click somewhere and have the user walk there...
00:17:28  <dominictarr>hmm, how to do that?
00:18:00  <Raynos>well
00:18:10  <Raynos>you can get the relative position of the click in the canvas
00:18:14  <Raynos>then use the center object
00:18:26  <dominictarr>yeah, I think make a 'point' event
00:18:28  * AvianFluquit (Remote host closed the connection)
00:18:28  <Raynos>well not even that
00:18:35  * anoemiquit (Quit: anoemi)
00:18:39  <Raynos>just figure out distance between click and current position
00:18:44  <Raynos>and patch that delta onto the player row
00:18:56  <dominictarr>so that other players can see your point, and then you program your entity to walk there...
00:18:56  <Raynos>the annoying part is animating it
00:19:25  <dominictarr>I've got a move function
00:19:25  <substack>dominictarr: expose click events in the repl somehow
00:19:31  <substack>then users can write that function
00:19:37  <dominictarr>yeah, exactly
00:20:23  <dominictarr>maybe, show the wizzard's pointer on the screen?
00:25:01  <dominictarr>what should the transfer command be called?
00:25:09  <dominictarr>whats a magic sounding word
00:25:15  <substack>cast
00:25:37  <dominictarr>one thing is giving taking energy,
00:25:47  <dominictarr>and the other thing is uploading code
00:26:00  <substack>enchant
00:26:03  <substack>is uploading
00:26:08  <dominictarr>agree
00:26:22  <dominictarr>bless /curse
00:26:30  <dominictarr>bless is give energy
00:26:34  <dominictarr>curse is take energy
00:26:40  <substack>I like that
00:27:18  <dominictarr>so you curse something to kill it, and bless it to ressurect it.
00:27:57  <rowbit>Hourly usage stats: [developer: 0, free: 19]
00:28:14  * fotoveritequit (Ping timeout: 255 seconds)
00:31:37  <substack>maybe you can only enchant dead entities
00:31:43  <substack>that would be easy to code
00:32:09  <substack>so you curse it, enchant it, and bless it to bring it back to live running new code
00:32:26  <substack>this way we don't need to write code to handle ownership
00:33:19  <substack>that way people could write vulnerable eval bots
00:33:25  <substack>that eval what you tell them in chat
00:33:36  <substack>and other folks could try to hack them
00:38:48  * st_lukejoined
00:40:03  * shuaibquit (Quit: Textual IRC Client: http://www.textualapp.com/)
00:40:48  <st_luke>http://i.imgur.com/ObJN1.gif
00:42:25  <substack>that is the slaughterhouse 5 of pizza gifs
00:44:29  * mikealjoined
00:47:00  * AvianFlujoined
00:50:39  * anoemijoined
00:54:25  <Raynos>dominictarr: pushed repl
00:55:10  <Raynos>try self.say("some text") ENTER
00:56:15  * intabulasquit (Remote host closed the connection)
00:56:22  * intabulasjoined
00:57:11  <dominictarr>sweet
00:57:30  <Raynos>the next question
00:57:34  <Raynos>is actual gameplay mechanics
00:58:02  <Raynos>do we have any yet?
00:58:19  <dominictarr>I'm working on bless/curse
00:59:42  <Raynos>I see
00:59:47  <Raynos>what else do we need to set up
01:00:47  <dominictarr>okay I'm limiting say to 140 chars.
01:01:06  <substack>haha
01:01:36  * mikealquit (Ping timeout: 240 seconds)
01:03:28  <dominictarr>Raynos, only the player can say things.
01:03:38  <Raynos>?
01:03:39  <dominictarr>any entity can emit a 'say' event
01:03:56  <Raynos>the repl is bound tot he player row
01:04:17  <dominictarr>right, but the words that appear above the player
01:04:28  <dominictarr>they need to appear about whatever talks.
01:04:35  <Raynos>agreed
01:04:39  <Raynos>havnt done that rendering yet
01:04:44  <Raynos>waiting for substacks refactor
01:04:46  <Raynos>to avoid merge hell
01:06:28  <Raynos>i think ill write the editor part
01:06:37  <Raynos>the allows you to edit things
01:06:44  <dominictarr>okay, I'm gonna change the handleRun thing
01:06:53  <Raynos>thats cool
01:08:49  <Raynos>we should make a todo list
01:08:54  <Raynos>of things that we still need to do
01:13:46  <dominictarr>Raynos, okay, I just pushed the change.
01:14:41  * defunctzombiejoined
01:15:42  <Raynos>ok
01:16:13  <dominictarr>okay, so here is how attacks is gonna work:
01:16:17  <st_luke>not sure whether it's a good or bad thing that the older I get the more my views on software are aligned with those of RMS
01:16:24  <dominictarr>player1.curse(other)
01:16:46  <dominictarr>then that calls other.cursed() to see how they will respond
01:17:18  <dominictarr>then, if they cursed back, it will randomly make one of them win.
01:18:03  <Raynos>pushed
01:18:07  <Raynos>other things have say rendered
01:18:34  * jibayquit (Remote host closed the connection)
01:18:51  <substack>dominictarr: Math.random() * attacker.attack > Math.random() * defender.defense
01:19:36  <substack>or just use `attack` for both values
01:19:51  <dominictarr>yeah, something like that.
01:19:55  <substack>except it's nice to have things that don't attack but have high defense like rocks
01:20:19  <Raynos>im going to work on the text editor on the right
01:20:19  <substack>maybe you can just move any object too
01:20:24  <Raynos>to allow you to inject code into objects
01:20:36  <substack>it's just that some things like monsters will try to attack you
01:20:43  <substack>and moving could use up a little energy
01:20:57  <substack>so I think one of the important next things to have after attacks is energy generation
01:24:33  * ryan_stevensjoined
01:27:56  <rowbit>Hourly usage stats: [developer: 0, free: 17]
01:31:12  <Raynos>so when we run code
01:31:14  <Raynos>and something "dies"
01:31:17  <Raynos>how do we stop the code?
01:31:21  <Raynos>how do we run new code?
01:33:35  <Raynos>pushed
01:35:17  <dominictarr>you enchant it to upload new code
01:35:32  <dominictarr>then you bless it to bring it back to life.
01:35:45  <Raynos>ok
01:36:02  <Raynos>how does the code auto stop running if the thing is dead
01:36:04  <dominictarr>basically, just kill the think interval, and remove the listeners
01:36:34  <Raynos>I see
01:37:13  <Raynos>do we have state for health yet?
01:41:16  <Raynos>I think we need a nearby function
01:41:20  <Raynos>so that things can move around
01:41:25  <Raynos>and call nearby()
01:41:29  <Raynos>to find ids near them
01:42:17  <dominictarr>what about a near(function)
01:42:23  <Raynos>that works as well
01:42:30  <dominictarr>that calls fun whenever something comes near
01:42:41  <Raynos>also self should be a prototype
01:42:41  <substack>and a way to see if something is in attack range
01:42:50  <dominictarr>there is also whatDist(thing)
01:42:53  <Raynos>so you can do self.__proto__.myHelper = function () { }
01:43:09  <Raynos>oh well
01:43:12  <Raynos>that already works too
01:43:36  <dominictarr>we don't want to update one entity and change others.
01:43:44  <dominictarr>you have to change each thing it sely
01:43:46  <dominictarr>self
01:43:48  <Raynos>well I kinda want a way to define moveTo
01:43:51  <Raynos>and use it everywhere
01:43:53  <Raynos>and shit like that
01:43:56  <Raynos>but it already works
01:44:01  <Raynos>just do global stuff
01:44:08  <dominictarr>move(whatDist(thing))
01:44:44  <Raynos>yeah
01:45:27  <Raynos>im leaving substacks
01:45:33  <Raynos>ill be back within an hour or so
01:47:31  <dominictarr>yeah, I might head to my place soon too.
01:56:30  <substack>still debugging the sprite code
01:57:11  * defunctzombiequit (Remote host closed the connection)
01:57:29  * mikealjoined
02:00:03  <dominictarr>need a way to see what energy/health an entity has.
02:00:30  <dominictarr>like mouse over and see a green bar over it.
02:01:22  <substack>sounds good
02:01:29  <substack>adding that alongside the chat bubbles
02:01:41  * mikealquit (Ping timeout: 245 seconds)
02:03:52  <substack>GOT IT
02:04:13  <substack>other player sprites now work
02:04:19  <substack>fixing 1 bug then pushing
02:04:42  <dominictarr>SWEET
02:04:49  <dominictarr>okay, I'll be back online shortly.
02:06:05  <substack>the bug is that when I move the arrow keys the other players are animated
02:08:35  * anoemipart
02:09:43  * dominictarrquit (Ping timeout: 246 seconds)
02:22:52  <substack>solved 1 of the bugs
02:27:56  <rowbit>Hourly usage stats: [developer: 0, free: 15]
02:29:59  * shuaibjoined
02:39:16  <AvianFlu>substack: there's an NKO team named "the ryan dahlics"
02:39:19  <AvianFlu>which makes me think
02:39:25  <AvianFlu>you need to draw "the ryan dahlek"
02:39:42  <AvianFlu>you know, when it's not NKO anymore
02:44:07  <st_luke>the ruby tentd is incredibly complicated in its implementation
02:50:07  * captain_morganquit (Remote host closed the connection)
02:51:31  * captain_morganjoined
02:51:32  <substack>the coordinates are still screwy on sprites
02:57:49  * mikealjoined
03:02:19  * mikealquit (Ping timeout: 260 seconds)
03:05:43  * fotoveritejoined
03:10:03  <fotoverite>Excited to see the entry
03:11:05  * tomshredsjoined
03:15:55  * intabulasquit (Remote host closed the connection)
03:16:21  * intabulasjoined
03:22:01  <substack>oh hahaha
03:22:24  <substack>so I was thinking the data was all skew and out of sync
03:22:50  <substack>but it looks like the player sprite is just centered and the other players aren't
03:22:53  <substack>>_<
03:24:57  <substack>confirmed!
03:25:04  <substack>centered sprites look entirely correct
03:27:56  <rowbit>Hourly usage stats: [developer: 0, free: 16]
03:41:44  * AvianFluquit (Remote host closed the connection)
03:42:04  <substack>ok fixed
03:43:29  * dominictarrjoined
03:43:42  * mikealjoined
03:44:28  <substack>dominictarr: all fixed
03:45:24  <substack>pull from me
03:45:54  <substack>now using the sprite creator for the player code
03:46:11  <substack>then I'll implement chat bubbles in the sprite creator and we'll get them for all sprites
03:47:31  <substack>http://teh-wizzards-of-stre.nko3.jit.su/
03:53:25  <Raynos>cool!
03:53:34  * mikealquit (Quit: Leaving.)
03:53:55  <substack>ported and pushed your diagonal fix from player.js into sprite.js
03:54:08  <Raynos>cool
03:54:51  <Raynos>idea"
03:54:57  <Raynos>You can't move or do anything
03:54:59  <Raynos>in the game
03:55:03  <Raynos>all you can do is click on yourself
03:55:06  <Raynos>and edit your own code
03:55:18  <Raynos>maybe have special helper tokens
03:55:43  <Raynos>like `env.keys.on("change", self.move)`
04:12:43  <substack>ok now both wizard and player are using sprite.js
04:18:38  * intabulasquit (Remote host closed the connection)
04:18:45  * intabulasjoined
04:22:03  <substack>ok chat bubbles and health stats time
04:22:49  <substack>then I'll make more art assets
04:27:56  <rowbit>Hourly usage stats: [developer: 0, free: 3]
04:42:20  * AvianFlujoined
04:42:45  * anoemijoined
04:43:35  <guybrush>pretty awesome guys!
04:48:37  * mikealjoined
05:00:20  <substack>I have basic rendering, plumbing everything together now
05:01:48  * mikealquit (Ping timeout: 276 seconds)
05:08:07  <Raynos>substack: Probably going to sleep and head to joyents office early tomorrow to do a final sprint
05:09:24  <substack>ok
05:11:31  <dominictarr>okay, I got bless/curse code in place.
05:11:36  <substack>sweet!
05:11:44  <substack>message rendering almost works
05:11:55  <dominictarr>a curse is just a negative bless.
05:12:24  <substack>you could just call them all curses then
05:12:31  <substack>necromancy is a kind of curse
05:12:48  <substack>especially when you reprogram dead things to do your bidding
05:13:13  <dominictarr>oh, but you are gonna tell it to do awesome things!
05:13:43  <dominictarr>you should be proud to be a zombie is substack's army!
05:13:46  <substack>haha
05:13:56  <substack>ok got text working
05:14:11  <substack>just had to .attr('text', msg) to update an existing text node
05:16:08  <dominictarr>Raynos, so how do you update the code on a given entity?
05:16:19  <Raynos>right now you can't
05:16:26  <Raynos>to be implemented
05:16:34  <Raynos>I'm thinking source should just be an editable property
05:16:37  <Raynos>of you own the entity
05:16:45  <Raynos>alternatively we can have upload thing or a spell you cast
05:17:04  <substack>if a thing is dead you can rewrite its source
05:17:12  <substack>that way we don't need to compute ownership
05:17:24  <substack>we don't even need an a secure auth model
05:17:27  <dominictarr>so, you self.enchant(other, source)
05:17:30  <substack>that can just be part of the challenge
05:17:36  <dominictarr>and then self.bless(other)
05:18:04  <dominictarr>dead = auth party
05:18:59  <substack>yep
05:19:25  <substack>and you can always implement eval() through the chat bus if you want to do hot reloads without killing your drones
05:20:20  <dominictarr>substack, totally
05:20:33  * substacksitting next to a roaring fire
05:20:46  <dominictarr>and if you want auth, you can invent some wacky encryption
05:20:49  <substack>glorious
05:20:54  <substack>yep!
05:20:56  <substack>wacky!
05:20:58  <substack>I like it.
05:21:07  * substack<-- has invented wacky encryption schemes
05:21:11  <substack>like, recently
05:22:05  <st_luke>you know you're doing encryption right when it pisses off a ruby jerk
05:22:31  <substack>haha
05:22:50  <substack>hey now being condescending is all they have left!
05:22:51  <dominictarr>Caesar Cyphers is just about the right level of encryption for this game
05:23:29  <st_luke>substack: that, and piles of money unfortunately.
05:23:41  <st_luke>nothing makes someone feel validated like getting paid
05:24:27  <dominictarr>next: collision detection
05:26:35  * intabulasquit (Remote host closed the connection)
05:27:00  <Raynos>Ok im off to sleep, see you in the morning
05:27:01  * intabulasjoined
05:27:56  <rowbit>Daily usage stats: [developer: 16, free: 467]
05:27:57  <rowbit>Hourly usage stats: [developer: 3, free: 7]
05:28:40  <dominictarr>Raynos, night
05:39:35  * AvianFluquit (Remote host closed the connection)
05:40:01  <substack>dominictarr: anyways to set messages just update the message key on characters
05:40:17  <substack>message : { text : 'YOU ARE A WIZARD', stroke : 'yellow', fill : 'green' }
05:40:31  <substack>landing soon, getting fill to work properly
05:40:58  <dominictarr>okay
05:49:02  <substack>I have blinking test messages on 2 characters
05:49:09  <substack>just the coords are a bit off
05:57:14  * mikealjoined
05:59:05  <substack>ok it works
05:59:36  <substack>dominictarr: pull from me
06:00:09  <substack>oh one sec, fixing conflicts
06:02:00  * mikealquit (Ping timeout: 255 seconds)
06:03:04  <dominictarr>substack, where on the wizard is the center?
06:03:23  <substack>for what purpose?
06:06:06  <substack>dominictarr: ok pull now, should cleanly merge
06:06:18  <dominictarr>okay, cool.
06:06:52  <substack>the center is a bit tricky
06:06:58  <substack>the origin is in the top left
06:07:03  * intabulasquit (Remote host closed the connection)
06:07:09  * intabulasjoined
06:07:15  <substack>and the wizard sprites are around 86x133
06:08:00  <dominictarr>ah, we want to offset that... should be near his feet.
06:08:48  <substack>right for collisions
06:09:21  <dominictarr>okay, nearly got collisions working.
06:11:01  <substack>nice
06:11:47  <dominictarr>I'm gonna add bounding circles for a bit while getting collisions working
06:12:30  * ikjoined
06:12:34  <ik>substack
06:12:38  <ik>link to wizard
06:12:51  <dominictarr>substack, okay, it merged clean, pushed the basic collision stuff...
06:13:01  <substack>pulling
06:13:16  <substack>ik: http://teh-wizzards-of-stre.nko3.jit.su/ https://github.com/substack/wizard-game
06:13:42  <substack>hmm the public version is really slow
06:14:21  <ik>woah it changed a whole bunch
06:14:28  <ik>i approve
06:14:33  <ik>KEEP CALM AND CARRY ON
06:14:33  <LOUDBOT>TANKS?!?! EVERYBODY GET DOWN!! WE ARE GOING TO WAR!
06:14:38  <dominictarr>it's probably way too much logging
06:15:01  <substack>I'll deploy the new version
06:15:37  <dominictarr>profiler says 20% JSON.parse !
06:15:39  * ikpart
06:16:58  <dominictarr>maybe, update the position less often
06:17:04  <substack>is the text box at the bottom supposed to be a repl?
06:17:25  <substack>why is it an ace window
06:19:02  <dominictarr>yes
06:19:13  <dominictarr>ask Raynos
06:22:23  <dominictarr>substack, I know what the problem is,
06:22:49  <dominictarr>the code is executing on all the clients, so it's updating every thing N times.
06:23:50  <substack>the code to run the items?
06:24:44  <substack>fixing the bug where the wizard isn't visible until you start to move it around
06:25:13  * LOUDBOTquit (Remote host closed the connection)
06:25:20  * LOUDBOTjoined
06:26:28  * LOUDBOTquit (Remote host closed the connection)
06:26:34  * LOUDBOTjoined
06:27:23  * LOUDBOTquit (Remote host closed the connection)
06:27:25  <dominictarr>okay, I just patched it so that it only runs on the server...
06:27:29  * LOUDBOTjoined
06:27:56  <rowbit>Hourly usage stats: [developer: 0, free: 15]
06:28:00  <dominictarr>we can spin out into another process, or make parts of it run in certain browsers.
06:29:28  <dominictarr>okay pull from me, this should work faster...
06:29:35  <st_luke>going to head over to an electronic music thing in Brooklyn, I think ryah might be there
06:29:39  * defunctzombiejoined
06:29:49  <dominictarr>next: show bounding boxes.
06:30:19  * LOUDBOTquit (Remote host closed the connection)
06:30:26  * LOUDBOTjoined
06:31:23  <substack>making some more sprites
06:31:28  <dominictarr>substack, I like the blinking. you really know you are a wizzard
06:31:41  <dominictarr>rocks and trees plz!
06:32:04  <substack>something about yellow text on blue makes me nostalgic for vhs
06:32:45  <dominictarr>the flashing also
06:35:40  * LOUDBOTquit (Remote host closed the connection)
06:35:46  * LOUDBOTjoined
06:36:35  * defunctzombiequit (Remote host closed the connection)
06:41:14  * ryan_stevensquit (Quit: Leaving.)
06:42:42  * ryan_stevensjoined
06:43:31  * LOUDBOTquit (Remote host closed the connection)
06:43:38  * LOUDBOTjoined
06:45:55  <dominictarr>substack, where is each frame drawn? what is the part that moves a sprite?
06:47:59  <substack>browser/entities/sprite.js
06:48:08  <substack>check browser/entities/wizard.js for how that gets set up
06:48:27  <substack>I've been having the ui stuff just listen for row changes
06:51:04  <substack>tree: drawn
06:51:27  <substack>http://substack.net/images/tree.svg
06:54:38  <dominictarr>nice
06:55:29  <dominictarr>my bounding boxes are stuck in the top left corner... can't figure out Raynos 's code
06:56:33  <substack>dominictarr: you've got to remember to hide and unhide the nodes
06:56:53  <dominictarr>yeah, I'm doing that
06:57:37  * mikealjoined
06:57:47  <substack>pushed with tress
06:57:50  <substack>*trees
07:02:12  * mikealquit (Ping timeout: 248 seconds)
07:07:13  <substack>rock 0 done
07:11:22  <dominictarr>okay.... weird. circles don't want to work for me.
07:18:40  <dominictarr>Raynos, you code is weird
07:20:13  <substack>rocks complete
07:21:32  <dominictarr>Raynos, too much higher order functions, I can't understand your code.
07:27:56  <rowbit>Hourly usage stats: [developer: 0, free: 17]
07:29:01  * anoemiquit (Quit: anoemi)
07:31:14  * st_luke_joined
07:34:40  <st_luke_>w00t, joe mccans brother just gave me a free shirt
07:37:48  <dominictarr>substack, it's going really slow for me now
07:39:12  <dominictarr>we need Z indexes
07:39:27  <dominictarr>you walk under trees.
07:39:40  <dominictarr>which isn't right
07:47:09  * defunctzombiejoined
07:49:51  <substack>yes
07:49:55  <substack>stacking is tricky
07:51:39  * defunctzombiequit (Ping timeout: 260 seconds)
07:52:18  * captain_morganquit (Remote host closed the connection)
07:53:05  <substack>http://substack.net/images/monster_0.svg
07:53:35  * captain_morganjoined
07:53:42  <substack>pushed with monsters
07:53:46  <substack>deploying
07:55:14  * st_luke_quit (Ping timeout: 240 seconds)
07:55:41  <substack>ok I'm getting some sleep
07:56:48  * intabulasquit (Remote host closed the connection)
07:57:14  * intabulasjoined
07:58:07  * mikealjoined
08:01:05  <rowbit>/!\ ATTENTION: (default-local) adam@... successfully signed up for developer browserling plan ($20). Cash money! /!\
08:01:05  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
08:02:19  * ryan_stevensquit (Quit: Leaving.)
08:13:50  * _sorensenjoined
08:15:16  * _sorensenquit (Client Quit)
08:19:52  * devaholicquit (Read error: Connection reset by peer)
08:20:33  * devaholicjoined
08:24:38  * ryan_stevensjoined
08:27:56  <rowbit>Hourly usage stats: [developer: 0, free: 6]
08:47:50  * tomshredsquit (Quit: Leaving...)
09:27:56  <rowbit>Hourly usage stats: [developer: 0, free: 11]
10:19:08  <mbalho>substack: i request a wizard with a red beard
10:19:48  <mbalho>also wtf @this game hahahaha
10:23:32  * shykeschanged nick to zz_shykes
10:27:56  <rowbit>Hourly usage stats: [developer: 0, free: 67]
10:29:00  <mbalho>dominictarr: idea
10:29:11  <mbalho>a series of distributed modules named after tween lingo
10:29:22  <mbalho>otherwise known as a suite of GOSSIP PROTOCOLS
11:27:56  <rowbit>Hourly usage stats: [developer: 5, free: 24]
11:33:23  * shuaibquit (Ping timeout: 252 seconds)
11:33:25  * zz_shykeschanged nick to shykes
11:36:04  * shuaibjoined
11:38:10  * shykeschanged nick to zz_shykes
12:27:57  <rowbit>Hourly usage stats: [developer: 0, free: 15]
13:27:56  <rowbit>Hourly usage stats: [developer: 1, free: 16]
13:28:04  * yorickjoined
13:28:04  * yorickquit (Changing host)
13:28:04  * yorickjoined
13:36:28  * AvianFlujoined
13:51:50  * shuaibquit (Quit: Textual IRC Client: http://www.textualapp.com/)
14:06:02  * AvianFluquit (Remote host closed the connection)
14:27:56  <rowbit>Hourly usage stats: [developer: 0, free: 14]
14:37:49  <dominictarr>mbalho, I don't know any tween lingo, please recommend some names.
14:54:28  * anoemijoined
15:00:24  * intabulasquit (Remote host closed the connection)
15:00:31  * intabulasjoined
15:02:24  * AvianFlujoined
15:18:07  * devaholicquit (Ping timeout: 246 seconds)
15:18:33  <mbalho>dominictarr: npm install bieber
15:18:37  <mbalho>dominictarr: npm install omgee
15:18:46  <mbalho>dominictarr: npm install likewhatever
15:18:50  <mbalho>dominictarr: npm install coolawesome
15:18:58  <mbalho>dominictarr: npm install boysboysboys
15:19:08  <dominictarr>what is a bieber?
15:19:23  <mbalho>google it :D
15:19:51  <dominictarr>nah, I think I might google boysboysboys instead.
15:27:56  <rowbit>Hourly usage stats: [developer: 1, free: 29]
15:35:41  * intabulasquit (Remote host closed the connection)
15:36:07  * intabulasjoined
15:43:22  * defunctzombiejoined
15:48:27  * defunctzombiequit (Remote host closed the connection)
15:51:09  <substack>dominictarr: we can fix the slowness by having separate worlds
15:56:11  <substack>speeding up the arrow key motion
15:56:44  <substack>then I'll see if pngs are faster
15:56:48  <substack>they should be much faster
16:05:33  <dominictarr>I'm gonna add code editing
16:05:47  <substack>sweet!
16:06:07  <substack>oh entity.js is deprecated
16:06:12  <substack>I saw you made some edits to it
16:06:16  <substack>use sprite.js
16:07:22  <substack>and just set message.text on the row, don't worry about a setSay()
16:07:33  <substack>sprite.js handles updates
16:10:31  <substack>now rasterizing the sprites
16:10:42  <substack>should be crazy fast after that
16:12:41  * anoemipart
16:19:43  <dominictarr>yeah, i figured that out
16:20:15  <substack>can wizards cast curses yet?
16:20:35  <substack>we need stats still
16:23:37  <dominictarr>there is code there...
16:23:49  <dominictarr>but need way for users to change code
16:24:49  <dominictarr>ace is being weird
16:25:28  <substack>rip it out and use a textarea
16:25:35  <substack>we don't need fancy things
16:26:08  <substack>rasterization 40% complete
16:26:34  <AvianFlu>rasta-ization!
16:26:50  <substack>I'll push the rasterized version then fix z-ordering then I'll put magic levels on the top bar
16:26:50  <AvianFlu>YOU HEAR THAT LOUDBOT THERE ARE RASTAS WITH PASTA!
16:26:50  <LOUDBOT>WOW THERES A BUTTON ON THE KEYBOARD THAT MAKE TYPING IN HERE SO MUCH EASIER
16:27:02  <substack>LOUDBOT: is it caps lock?
16:27:02  <LOUDBOT>substack: IS THERE REALLY A CRAYON CALLED AWESOME?
16:27:09  <substack>wisdom.
16:27:57  <rowbit>Hourly usage stats: [developer: 1, free: 19]
16:28:24  * devaholicjoined
16:30:50  <substack>8 more to go
16:35:33  <substack>all done
16:35:41  <substack>pull from me to get rasterized images
16:36:37  <substack>dominictarr: the repl bar could be an <input type="text"> and a div to show the result
16:37:17  <dominictarr>I got it going
16:37:30  <substack>var result = Function(argNames, src).apply(null, argValues); resultDiv.textContent = JSON.stringify(result)
16:37:56  * blakmatrixjoined
16:38:04  <substack>updated http://teh-wizzards-of-stre.nko3.jit.su/
16:38:38  <dominictarr>that runs way smoother!
16:38:41  <substack>yep
16:38:43  <substack>just rasterizing
16:38:54  <substack>the nice thing about doing everything the easiest, if slowest, possible way
16:39:03  <substack>is that if you actually observe a perf problem
16:39:09  <substack>it's so easy to make it faster
16:39:09  <dominictarr>haha
16:40:33  <substack>if I have time at the end I'll go in and animate the monster sprites
16:40:38  <substack>right now catching a train to joyent
16:40:52  <substack>I'll try to fix z-indexes
16:41:04  <substack>and I'll put energy levels on the top bar
16:41:19  <substack>haha as a json blob would be sweet
16:41:26  <substack>json colors
16:41:58  <substack>oh goodness I have such an awesome idea for how the top bar should look
16:42:09  <substack>ok I'll do that first but then I'll fix z-index too
16:43:04  <substack>dominictarr: can wizards teleport?
16:43:10  <dominictarr>no
16:43:13  <substack>ok
16:43:30  * defunctzombiejoined
16:47:01  <defunctzombie>st_luke: get off my lawn
16:47:04  <substack>idea: rocks start off already dead
16:47:28  <substack>that way players won't need to defeat something to start reprogramming it
16:57:59  <juliangruber>watch out for window.onresize
17:06:27  <dominictarr>oh! the movement keys need to be ignored when you are focused in the textarea.
17:17:17  <fotoverite>I'm a wizard!
17:27:56  <rowbit>Hourly usage stats: [developer: 4, free: 35]
17:28:54  * tomshredsjoined
17:37:02  <dominictarr>okay! I moved a monster with a magical spell
17:38:33  <dominictarr>okay... driving around rocks with magic.
17:39:20  <dominictarr>substack, okay, so now you can edit code...
17:39:44  <dominictarr>you don't have to kill anything yet though.
17:40:16  <dominictarr>you can just edit anything... also it just updates.. probably we want a [enchant] button.
17:40:56  <dominictarr>substack, pull my changes
17:51:17  * captain__joined
17:52:08  * captain_morganquit (Read error: Connection reset by peer)
17:54:37  <isaacs>how goes the knocking out?
18:04:14  <dominictarr>see for your self teh-wizzards-of-stre.nko3.jit.su
18:04:28  <dominictarr>http://teh-wizzards-of-stre.nko3.jit.su/
18:04:44  <substack>fuck offline
18:04:59  <substack>never do this: <script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js"></script>
18:05:02  <substack>>_<
18:05:22  <substack>Raynos: ^^^^
18:05:42  <fotoverite>\_?
18:05:46  <fotoverite>WTF is that shit
18:06:01  <substack>I know right?
18:06:02  <substack>ace
18:06:19  <substack>Raynos: ace sucks just saying
18:10:09  <substack>dominictarr: ok sweet pulling!
18:10:37  <dominictarr>you click on something... and then you can edit it's code...
18:10:58  <substack>yes!
18:11:39  <substack>also console.log()s slow everything the fuck down
18:11:41  <substack>>_<
18:11:47  * mikealquit (Quit: Leaving.)
18:12:28  <dominictarr>sorry, I am removing my console.logs...
18:12:59  <substack>it's just when they're in hot code paths
18:13:12  <substack>it was about 2x faster when I disabled them locally
18:14:44  <substack>I'm going to rip out ace
18:14:47  <substack>it's too much bullshit
18:15:24  <substack><textarea> and <input> work great
18:18:28  * yorickquit (Remote host closed the connection)
18:19:25  <dominictarr>substack, working on that right now
18:20:11  <substack>ripping ace out?
18:20:25  <substack>ok great
18:20:39  <substack>I'm working on health stats on the top bar
18:21:47  <isaacs>so, is the idea that wizards can edit the source of other things
18:21:48  <isaacs>?
18:22:10  * shuaibjoined
18:27:42  <substack>isaacs: yep
18:27:43  <dominictarr>isaacs, that isn't "source" that is "magic"
18:27:44  <substack>enchant
18:27:49  <substack>spells
18:27:56  <rowbit>Hourly usage stats: [developer: 6, free: 27]
18:28:10  <isaacs>dominictarr: yes.
18:28:27  <isaacs>i cannot wait for this to work.
18:28:42  <isaacs>i am going to be an arch-wizard of chaos in this world.
18:32:34  <isaacs>how do you actually save the changes to the magic of a monster?
18:32:43  <isaacs>i wanna make trees move around and talk
18:32:57  <dominictarr>click on a thing then just start editing it
18:33:08  <isaacs>yeah, i did that
18:33:12  <isaacs>how do you save the changes?
18:33:16  <isaacs>they're not taking effect
18:34:07  <dominictarr>oh, that change might not be running yet.
18:35:17  * intabulasquit (Remote host closed the connection)
18:35:23  * intabulasjoined
18:35:57  <dominictarr>substack, pull from me.
18:36:02  <substack>pulling
18:36:02  <dominictarr>ace completely removed
18:36:06  <substack>hooray
18:36:28  <substack>ace is a cautionary tale about how not to write software
18:36:33  <substack>especially libraries
18:37:35  <dominictarr>substack, what are you working on?
18:38:29  <substack>magic stats
18:38:33  <substack>player stats on the top bar
18:38:41  <substack>and then character stats when you mouseover
18:38:56  <substack>then I'll work on z-index
18:40:01  <dominictarr>substack, put the entity id in the stats bar too.
18:40:12  <substack>ok!
18:41:57  * mikealjoined
18:43:13  * zz_shykeschanged nick to shykes
18:48:51  * tommybergeronjoined
18:49:40  <substack>don't check in static/bundle.js >_<
18:49:54  <substack>and don't add it to .gitignore either since jitsu won't deploy it
18:50:19  <dominictarr>okay
18:50:48  <substack>static bundles make merge conflicts really difficult
18:51:50  <substack>dominictarr: ok we should have 2 tabs for code
18:52:04  <substack>1 for the code and 1 for the json
18:52:13  <substack>spell and tome
18:52:18  * mikealquit (Ping timeout: 264 seconds)
18:52:35  <dominictarr>changed the other thing to a log, basically
18:52:47  <dominictarr>you want to edit the json properties?
18:52:49  * tomshredsquit (Ping timeout: 246 seconds)
18:52:53  <substack>sure
18:53:03  <substack>let's just make everything world-writable
18:53:06  <substack>that will be more fun
18:53:12  <dominictarr>should do that via the api,
18:53:25  <substack>I mean you can click anything and change its code and data
18:53:33  <substack>including your own stats
18:53:48  <dominictarr>you should have to spend energy to do that,
18:53:54  <dominictarr>if we get there in time...
18:54:28  <substack>well letting everybody edit everything first seems like a good way
18:54:35  <substack>that sounds the most fun
18:54:46  <substack>levels and energy and such are boring
18:55:03  <substack>we can add those after the contest since they will take a long time to get right
18:56:13  <substack>dominictarr: also the log should have executable code in it
18:56:35  <substack>examine('rock:89b51050-9182-4e0b-abe5-df7b6c139d3d')
18:56:39  <dominictarr>substack, good point
18:56:43  <substack>so that people will see how to perform actions
18:56:46  <substack>by discovery
18:56:55  <dominictarr>hey, good idea.
18:57:35  <substack>oh and if you click a log item could it show you the output in the code box?
18:57:39  <substack>in the log
18:57:50  <substack>perhaps not, could be ok
18:59:29  <substack>dominictarr: ok pull from me
19:00:06  <substack>if you click yourself you should see your own stats
19:00:40  <substack>making the css pretty now
19:01:45  <dominictarr>cool merged
19:02:51  <substack>ok how about there is just energy
19:03:02  <substack>and your energy goes up by +1 every 10 seconds
19:03:25  <substack>and energy in trees goes up by +1 every 5 seconds
19:03:37  <substack>so you can reprogram them to give you energy
19:03:37  <dominictarr>yeah, that is good.
19:03:50  <substack>putting energy in the top bar
19:03:50  <dominictarr>also, movement should take energy
19:03:53  <substack>ok
19:04:01  <substack>energy can just be floating point
19:04:08  <substack>that way moving takes a small amount
19:18:14  * mikealjoined
19:18:40  <substack>pull from me
19:18:52  <substack>I finally figured out why wizards appeared initially hidden until they moved
19:20:11  <substack>dominictarr: is attack logic figured out yet?
19:20:25  <substack>oh another idea!
19:20:30  <dominictarr>the logic is, but not the ui
19:20:33  <substack>ok
19:20:39  <substack>let's just use the repl for it
19:20:44  <substack>the bottom text box should be a repl
19:20:49  <substack>right now it just updates the message
19:20:53  <dominictarr>yeah,
19:20:57  <substack>but it should default to say('hello!')
19:21:01  <substack>so that people know how to chat
19:21:12  <substack>or rather
19:21:15  <dominictarr>yeah, if it doesn't parse, make it a message
19:21:16  <substack>say('I AM A WIZARD')
19:21:40  <substack>say('I AM A WIZARD', { fill : 'red', color : 'white' })
19:21:42  <dominictarr>or, maybe... make it always appear, so you can learn by watching
19:21:46  <substack>nah just always make it be a repl
19:21:55  <substack>hand-holding is lame
19:22:01  <dominictarr>okay, agree
19:22:14  <substack>and a box below the repl with the result
19:22:19  <dominictarr>... but make it say the error message
19:22:22  <substack>yes
19:22:27  <substack>the box below would show errors
19:22:27  <dominictarr>so that other users can help
19:22:37  <substack>oh hah
19:22:37  <dominictarr>the log
19:22:41  <substack>that would be excellent
19:22:54  <substack>ok results can go in the log
19:23:04  <dominictarr>okay... weird thing... I'm trying to shorten the IDs
19:23:06  <substack>log should be a tab
19:23:23  <dominictarr>but the code just isn't running
19:24:03  <substack>Math.floor(Math.pow(16,8) * Math.random()).toString(16) should do the trick
19:25:47  <dominictarr>yeah, want to make it easy to type.
19:26:11  <dominictarr>heh, make it just match the prefix
19:26:20  <dominictarr>so you can do wizard:3a
19:26:27  <substack>is there sandboxing on think code?
19:27:06  * mikealquit (Ping timeout: 245 seconds)
19:27:56  <rowbit>Hourly usage stats: [developer: 1, free: 29]
19:30:05  <dominictarr>substack, it's wrapped in a try-catch
19:30:16  <dominictarr>I've got some patches on that.
19:30:32  <substack>I mean to limit the context
19:30:34  <substack>require('fs')
19:30:38  <substack>looks like you can currently do that
19:31:03  <substack>spawn() a new process that reads stdin and uses vm.runInNewContext to eval the source
19:31:26  <substack>hmmm except for how to make that interact with the magic api
19:31:31  <substack>dnode?
19:31:59  <dominictarr>oh, right.
19:32:04  <dominictarr>see wrap.js
19:32:26  <substack>Function() isn't as good as vm.runInNewContext
19:32:33  <dominictarr>okay, sure
19:32:39  <substack>also no for(;;) protection
19:32:45  <substack>should be a separate proc
19:32:53  <dominictarr>yes agree
19:33:18  <dominictarr>also, we need a separate event bus for messages, not just crdt props.
19:33:35  <substack>what kind of messages?
19:33:44  <substack>thought bubbles work for chat
19:33:59  <dominictarr>the though bubbles should disappear after a bit
19:34:12  <dominictarr>you should be able to say the same thing twice.
19:34:14  <substack>that can be an implicit param to say()
19:34:23  <dominictarr>timestamp?
19:34:24  <substack>say(msg, opts)
19:34:28  <substack>not necessary
19:34:29  <substack>opts.deplay
19:34:38  <substack>opts.fill and opts.stroke too
19:34:56  <substack>just set the message.text, message.fill, message.stroke properties accordingly
19:35:49  <substack>and if (opts.delay || opts.delay === undefined) setTimeout(function () { row.set({ message : { text : '' } }) }, opts.delay || 3000)
19:35:54  <substack>all that can be done from say()
19:39:17  * intabulasquit (Remote host closed the connection)
19:39:49  * intabulasjoined
19:41:32  <dominictarr>oh, the thing we need messaging for it to pass commands back to run on the server.
19:42:03  <dominictarr>we could make it set wizard.set('cast', spell)
19:42:06  <dominictarr>though...
19:42:17  <dominictarr>maybe faster to do that right now...
19:42:18  <substack>can you just hook up the process runner to the crdt docs?
19:42:28  <dominictarr>yup, easy
19:42:36  <substack>could just be slow?
19:42:51  <dominictarr>what do you mean?
19:43:10  <dominictarr>you mean, start a new process for each spell?
19:43:22  <dominictarr>that will break nodejitsu
19:43:32  <dominictarr>the instances are only tiny
19:43:45  <dominictarr>256 mb
19:43:50  <AvianFlu>256MB of ram, one virtual core
19:43:57  <AvianFlu>you can spawn all the processes you want, though, until you break stuff
19:44:30  <dominictarr>AvianFlu, how many processes would that be, approximately?
19:44:45  <AvianFlu>well, you figure 9-10MB for a node process
19:44:46  <substack>or we just run code on people's browsers
19:45:03  <AvianFlu>probably get about 10 before you started impacting your main app... but it depends
19:45:14  <AvianFlu>if you can out-source anything to the client, I'd usually say do it
19:45:15  <dominictarr>substack, pushed
19:45:58  <dominictarr>substack, we could just have one second process, and run all the spells in that.
19:46:07  <dominictarr>and reset it periodically
19:47:08  <dominictarr>we could also just ban for / while loops
19:47:37  <dominictarr>use recursion, like a real wizard!
19:47:59  <dominictarr>also, make all the methods throw if you are out of energy
19:49:53  <substack>yes just a worker that is in sync and just gets restarted if it hangs
19:54:22  <dominictarr>hmm, looks like we are broken in FF
19:55:30  <dominictarr>is there a crdt row created for the player?
19:57:54  <substack>yes
19:58:01  <substack>it's accessible in the player code too
19:58:05  <substack>the rendering part I mean
19:58:10  <substack>that's how I hook into changes and update the ui
20:00:08  <dominictarr>where is it, I can't find where the player CRDT row is
20:00:42  <substack>browser/ui/world.js:52
20:00:48  <substack>is where it gets threaded through
20:00:59  <dominictarr>thanks
20:01:02  * tommybergeronchanged nick to tomshreds
20:01:21  <substack>then browser/ui/renderPlayer.js and browser/entities/* have the row object
20:02:04  <dominictarr>but where is it created?
20:02:45  <substack>browser/ui/world.js:30
20:02:56  <substack>var row = model.add(...) for items
20:03:17  <substack>generated items
20:03:33  <dominictarr>that is just game items
20:03:41  <dominictarr>I removed that, because it was wrong place
20:03:49  <substack>unsure where
20:04:06  <substack>aha
20:04:22  <substack>ui/index.js:29
20:04:22  <Raynos>morning
20:04:23  <substack>is where
20:04:43  <Raynos>any fires?
20:05:27  <substack>what's a wizardy word for json?
20:06:12  <substack>it's like the vital impetus
20:07:11  <Raynos>if there's nothing that needs fixing right away i'll head to joyent.
20:08:07  <substack>going with codex/tome
20:08:11  <substack>Raynos: yep we're good
20:08:14  <substack>come on down!
20:08:17  <substack>I'm already at joyent
20:08:23  <substack>only 4 hours to go
20:10:17  <dominictarr>oh, the wizard it being created, but it doesn't have an X,Y value
20:10:51  <dominictarr>Raynos, yeah. we put out a fire named ACE
20:11:04  <Raynos>what's wrong with ace?
20:11:19  <substack>it was getting in the way in all kinds of ways
20:11:22  <Raynos>I mean sure it's not the best but neither is codemirror
20:11:31  <substack><textarea> is plenty sufficient
20:11:36  <Raynos>._.
20:11:37  <dominictarr>yeah, so we just picked the worse option
20:11:43  <dominictarr>worse is better
20:11:46  <substack>worse is better indeed
20:11:56  <Raynos>ill try fixing it with codemirror or something
20:12:01  <substack>don't
20:12:06  <dominictarr>plus, then when you improve it, you get to see a real improvement
20:12:07  <substack>dont dont dont dont do that
20:12:22  <Raynos>why you no like pretty text editor
20:12:24  <substack><textarea> wins
20:12:31  <dominictarr>we only have 4 hours
20:12:40  <dominictarr>lets do something useful
20:12:56  <dominictarr>like running the spells in a second process
20:12:59  <substack>yes
20:13:02  <substack>game mechanics
20:13:03  <Raynos>that makes sense.
20:13:09  <substack>I have the json/code tabs working
20:13:13  <substack>adding an update button
20:13:17  <substack>calling it 'cast'
20:13:33  * shykeschanged nick to zz_shykes
20:15:30  <substack>dominictarr: if you update the 'magic' prop on players their magic level will update in the ui already
20:15:42  <dominictarr>sweet
20:16:02  <substack>so just update the crdt row and don't worry about the rest of it
20:19:44  <dominictarr>Raynos, I need to know the player's absolute position
20:19:59  <Raynos>it should be x and y on the crdt row of the player
20:20:55  <dominictarr>there isn't
20:21:07  <dominictarr>it just moves around in the UI
20:21:24  <Raynos>oh weird
20:22:06  <Raynos>dominictarr: https://github.com/dominictarr/wizard-game/blob/master/browser/ui/renderPlayer.js#L13
20:22:14  <Raynos>absolute.x and absolute.y
20:22:17  <Raynos>should be its position
20:22:43  <dominictarr>that has gotta go onto the row
20:22:54  <dominictarr>that screen thing is way confusing
20:22:57  * ryan_stevenspart
20:23:05  <Raynos>yeah it is
20:23:09  <dominictarr>games need to be more procedural
20:23:15  <dominictarr>FP is not good for games
20:23:19  * mikealjoined
20:23:50  <Raynos>domincitarr: https://github.com/dominictarr/wizard-game/blob/master/browser/ui/renderPlayer.js#L36
20:24:04  <substack>yes this code is suffering from too much indirection
20:24:35  <substack>pull from me
20:24:37  <Raynos>shit is all over the place
20:24:40  <Raynos>agreed.
20:24:49  <substack>click a monster then click tome/codex
20:24:55  <dominictarr>Raynos, that never gets evaled
20:25:12  <dominictarr>I'm not seeing any x, y on the player on the repl
20:25:18  <substack>whoa sweet short names
20:25:37  <substack>ok I'm just going to let people edit whichever docs they please
20:25:49  <Raynos>https://github.com/dominictarr/wizard-game/blob/master/browser/entities/player.js#L62
20:25:53  <substack>with a basic syntax check is all
20:26:25  <dominictarr>Raynos, yeah I found that.
20:27:32  * mikealquit (Ping timeout: 248 seconds)
20:27:56  <rowbit>Hourly usage stats: [developer: 10, free: 21]
20:30:57  * jden|awayjoined
20:31:04  <substack>running code onchange is bad, doing it explicitly with a button
20:31:26  * defunctzjoined
20:31:42  <dominictarr>substack, ++
20:31:45  * defunctzquit (Remote host closed the connection)
20:32:01  * defunctzjoined
20:32:10  * defunctzquit (Remote host closed the connection)
20:32:27  * defunctzjoined
20:33:19  * defunctzquit (Remote host closed the connection)
20:33:38  * defunctzjoined
20:34:33  <dominictarr>substack, Raynos okay, I'm gonna make the repl work
20:34:38  * defunctzquit (Remote host closed the connection)
20:34:42  <Raynos>good luck!
20:34:55  * defunctzjoined
20:36:13  * defunctzquit (Remote host closed the connection)
20:36:30  * defunctzjoined
20:36:34  * defunctzquit (Remote host closed the connection)
20:36:50  * defunctzjoined
20:41:16  * defunctzquit (Ping timeout: 268 seconds)
20:45:17  <isaacs>guys, push!
20:45:20  <isaacs>i want to play with this thing more
20:45:22  <isaacs>:)
20:45:34  <dominictarr>okay! the repl works
20:47:49  <substack>hooray
20:48:40  <substack>LIVE EDITS WORK!
20:48:40  <LOUDBOT>YEAH LETS SKIP RIGHT TO THE PROFIT PART
20:49:13  <dominictarr>next: running the codes in a parallel dimension.
20:49:54  <isaacs>you guys, get rid of the "start":"server.js" bit
20:49:58  <isaacs>that's unnecessary and broken
20:50:06  <isaacs>`npm start` will run `node server.js` by default if it's there
20:50:19  <isaacs>but server.js isn't chmodded properly to be run itself
20:50:34  <substack>that's too magical
20:50:37  <substack>be explicit
20:50:55  * fotoveritequit (Quit: fotoverite)
20:51:00  <substack>when shit goes wrong you need to keep all this implicit behavior in your head
20:52:10  <isaacs>substack: ok, then make it "start":"node server.js"
20:52:30  <isaacs>substack: so that it works
20:52:35  <substack>roger
20:52:50  <isaacs>"it works" > anything else
20:52:52  <isaacs>imos
20:53:05  <isaacs>THATS RIGHT, IN ALL OF MY OPINIONS
20:53:05  <LOUDBOT>OBAMA GOT A PEACE PRIZE FOR BEING AWESOME
20:55:15  <AvianFlu>OPINE ON ALL THE THINGS!
20:55:15  <LOUDBOT>I COULD DO LAPTOP UNPACKING VIDEO
20:56:10  <substack>ok json updates nearly work
20:58:51  <captain__>substack: is browserling under load? I cannot get connected but easily could be that i'm tethered to my phone
20:58:52  <dominictarr>substack, isaacs unless they changed it, nodejitsu actually handles that different to npm
20:59:12  <substack>captain__: your phone could be dropping websocket connections
20:59:29  <substack>oh wait!
20:59:37  <substack>no actually it works ok from here
20:59:59  <substack>pkrumins: is queue server ok?
21:00:21  <pkrumins>yes it's 100% ok
21:00:23  <captain__>I usually don't have problems with websockets on the phone
21:00:46  <substack>captain__: you could try tunnelling through an ssh socks5 proxy
21:01:00  <substack>ssh -ND 5000 someserver
21:01:09  <substack>then point your browser at localhost:5000 as socks5
21:01:30  * substackused that trick to great effect in china
21:03:50  <substack>dominictarr: pull from me
21:03:52  <pkrumins>except if he's on a phone?
21:04:06  <substack>phones do all kinds of filtering and proxying
21:04:16  <substack>I'm deploying this
21:04:21  <pkrumins>how does he run `ssh` i mean?
21:04:34  <substack>pkrumins: tethering
21:04:43  <substack>pkrumins: he's tethered to a phone already
21:04:46  * ITprojoined
21:04:47  <pkrumins>ah
21:04:56  <substack>deploying...
21:05:24  <substack>ok now anybody can edit the source and properties of any object
21:08:28  <substack>dominictarr: it only seems to work when I edit code for monsters
21:09:10  <substack>anyways I edited the propery of a rock
21:09:12  <substack>http://teh-wizzards-of-stre.nko3.jit.su/
21:11:36  <substack>click on an object and set its message property to {"text":"DOOM!"}
21:13:18  <substack>blarg we have crufty state that got replicated because peoples browsers are still open
21:13:21  <dominictarr>pull from me
21:13:27  <substack>that's kind of an awesome problem to have though
21:13:32  <dominictarr>magic now evals in separate process.
21:13:35  <substack>hooray!
21:13:40  <substack>dominictarr: for all objects?
21:13:42  <substack>or just monsters?
21:13:44  <dominictarr>yup
21:13:48  <substack>hooray
21:13:49  <dominictarr>the repl
21:14:02  <dominictarr>I'll put it into a new context next.
21:14:06  * intabulasquit (Remote host closed the connection)
21:14:10  <substack>have you played with the codex/tome/cast ui yet?
21:14:13  * intabulasjoined
21:14:16  <dominictarr>not yet
21:14:29  <substack>you can just edit any object
21:14:35  <substack>that's more fun for now
21:14:58  <dominictarr>oh, one problem: if you cast "while(true);"
21:15:22  <dominictarr>that will just crash the spell process over and over
21:15:28  <substack>true
21:15:38  <substack>can you flag the row?
21:16:09  <substack>set a 'run' => false on it
21:16:16  <dominictarr>I think simplest would be to code.split(/while|for/).join('syntaxError')
21:16:20  <substack>so it won't run until somebody manually resets that
21:16:22  <substack>dominictarr: disagree
21:16:28  <substack>it's always possible to write an infinite loop
21:16:49  <dominictarr>but a stackover flow will throw, so it's okay
21:16:54  <substack>people will find out how and break the game for everyone
21:17:16  <substack>people will figure out how to make it infinite loop anyways
21:17:18  <substack>just expect that
21:17:26  <dominictarr>the problem is I can't tell which spell was the one with the infinite loop
21:17:27  * substackran an eval bot for 3 years
21:17:29  <substack>on irc
21:17:43  <substack>dominictarr: so find a way to pass in enough information to tell
21:18:00  <substack>maybe set a timestamp when a spell starts executing and when it finishes?
21:18:10  <substack>that way you will know when a spell didn't finish
21:18:38  <substack>oh and in the ui I'll unset the start propery when new source gets uploaded
21:18:45  <dominictarr>what about inject a call that counts whether it's a hot loop
21:18:54  <substack>bad idea
21:19:03  <substack>will majorly slow everything down, super brittle
21:19:13  <substack>which code does the eval?
21:19:20  <dominictarr>init.js
21:19:25  <dominictarr>near the top
21:20:14  <substack>is it a separate process?
21:20:22  <substack>doesn't seem to be
21:20:24  <substack>first mistake
21:20:25  <dominictarr>yes, but all users share the process
21:20:34  <substack>share?
21:20:38  <dominictarr>it is a separate process
21:20:42  <substack>where is this code being run?
21:20:50  <substack>put browser code in browser/ >_<
21:20:56  <substack>otherwise it gets really confusing
21:21:02  <dominictarr>it's started from server
21:21:06  <substack>put shared code in lib/
21:21:08  <dominictarr>did you pull my stuff?
21:21:09  <substack>or share/
21:21:10  <substack>yes
21:21:13  <substack>oh wait
21:21:31  <substack>fatal: Couldn't find remote ref dominictarr
21:21:34  <substack>started doing this
21:21:45  <substack>oh wait there it goes
21:21:47  <substack>I was doing it wrong
21:22:11  <substack>aha so there is already a heartbeat
21:22:17  <Raynos>omw to joyent
21:22:21  <substack>dominictarr: ok so
21:22:42  <substack>console.log(JSON.stringify([ 'start', row.id ]))
21:22:49  <substack>console.log(JSON.stringify([ 'end', row.id ]))
21:22:59  <substack>and we'll parse that in server.js
21:23:08  <dominictarr>okay, that makes sense
21:23:08  <substack>then we'll know which proc didn't exit
21:23:12  <substack>and flag it
21:23:21  <dominictarr>is console.log() sync?
21:23:28  <substack>yes
21:23:35  <substack>that's why it slows down servers so much
21:23:39  <dominictarr>got it.
21:24:31  <substack>we need a special backdoor to clear all the system state
21:24:49  <substack>I'll hack that in with crypto
21:24:54  <substack>aha using secure-peer
21:24:55  <substack>YESSSS
21:25:04  <substack>that way we can keep the keyring in git
21:25:09  <substack>all out in the open
21:25:11  <substack>bwahaha
21:26:25  <substack>over a plain old streaming http route
21:26:30  <substack>ssh over http basically
21:27:56  <rowbit>Hourly usage stats: [developer: 1, free: 13]
21:28:38  <substack>wrap.js isn't used from the browser code anymore so I'll use vm.runInNewContext
21:28:48  <substack>even though that also works in browser code
21:29:52  <dominictarr>substack, we should make the entity die if it writes an infinite loop or throws.
21:30:03  <substack>ok
21:32:40  <substack>tweaking the init.js now
21:36:14  <substack>dominictarr: we need inline docs too
21:36:17  <substack>documenting the spell api
21:36:27  <substack>codex/tome/spellbook
21:37:26  <st_luke>defunctzombie: what lawn
21:37:44  <defunctzombie>st_luke: I was responding to your RMS comment
21:39:36  * chadskidmorequit (Ping timeout: 240 seconds)
21:40:34  <st_luke>rms would let anyone use his lawn as long as they let people use theirs
21:41:53  * chadskidmorejoined
21:42:10  <AvianFlu>lololol
21:48:00  * zz_shykeschanged nick to shykes
21:50:24  <defunctzombie>haha
21:50:27  <dominictarr>st_luke, rms would let anyone use their lawn, except if they had ever let anyone use their lawn that did not also let anyone use their lawn.
21:50:51  <defunctzombie>that statement hurts my head
21:51:33  <st_luke>dominictarr: what if they had made their lawn LGPL
21:52:13  <substack>oh shit 2 hours to go
21:52:22  <dominictarr>well, then they are allowed on the path, but may not stand on the grass.
21:53:20  <dominictarr>lest they tack in non GPL grass seeds.
21:57:24  <substack>how should I mark these nodes as "don't run"?
21:57:28  <substack>how about run: false
22:02:07  <substack>dominictarr: it seems that monsters are only run when the code changes!
22:02:11  <substack>and yet they dance around
22:02:18  * chadskidmorequit (Ping timeout: 276 seconds)
22:02:26  <substack>oh wait no there it goes
22:02:31  <substack>what!
22:02:32  <dominictarr>they have initial code
22:03:19  <substack>how does it keep running?
22:03:30  <substack>there's only one vm.runInNewCode and it only runs on 'change' events
22:03:37  <substack>and yet the monsters are still dancing around
22:03:42  <substack>do the monsters run in people's browsers?
22:03:53  * chadskidmorejoined
22:04:10  <dominictarr>substack, the spell process is restarted if it crashes
22:04:45  <substack>oh I see
22:06:51  <substack>ok I found a place to put it in
22:07:00  <dominictarr>what are you working on s
22:07:02  <dominictarr>what are you working on substack
22:07:12  <substack>fixing the sandboxing
22:07:19  <substack>nearly there
22:08:10  <Raynos>in joyent headquarters
22:08:13  <Raynos>substack: where you at?
22:09:23  <substack>Raynos: corner conf room
22:09:27  <substack>room down from yesterday
22:09:36  <substack>KILL 9259
22:09:36  <substack>marking monster_9 as not runnable
22:09:36  <substack>END 9259
22:09:37  <LOUDBOT>I WENT TO CAMDEN AND ALL I GOT WAS MUGGED, SHOT AT, AND ASSAULTED
22:09:37  <LOUDBOT>HATI SHOULD HAVE BEEN TOPLED WHEN BILLY BOB CLINTON LET THE ISLAMIC FACIST GO OF THE SEPT 11, 2001 KIND!!
22:09:38  <substack>:D
22:11:04  <substack>ok sandboxing works
22:11:09  <substack>the ui just stops updating for 1 second
22:11:12  <substack>and then everything is fine
22:11:52  <substack>dominictarr: pull from me
22:12:00  <substack>and put while(true) and shit in your code
22:12:02  <substack>shit works
22:14:28  <dominictarr>substack, that just spins, because it starts running the code again.
22:14:44  <dominictarr>I was working on that too, I've got it ready just need to commit
22:15:08  <dominictarr>prob is that dead = true gets emitted after source=spell
22:15:21  <dominictarr>so, it just goes into loop and crashes second time
22:15:24  <substack>oh dead = true
22:15:27  <substack>I'm using run
22:15:49  <dominictarr>it's a simple fix
22:15:55  <dominictarr>I'll just add it to your stuff
22:16:30  * mikealjoined
22:16:52  <substack>also update browser/ui/editor.js:73
22:16:57  <substack>KILL 9259
22:16:57  <substack>marking monster_9 as not runnable
22:16:57  <substack>END 9259
22:16:58  <LOUDBOT>IF IT WERENT FOR AIM I WOULDNT BE HERE
22:16:58  <LOUDBOT>I PUT ON MY ROBE AND WIZARD HAR
22:17:10  <substack>blah
22:17:17  * tomshredsquit (Ping timeout: 255 seconds)
22:17:26  <dominictarr>substack, only seeing start messages
22:17:34  <dominictarr>but not end
22:17:47  <substack>oh yeah
22:17:55  <substack>oh I see why
22:18:04  <substack>logic.js:69
22:18:10  <substack>it returns before the end
22:18:34  <substack>fixed
22:18:38  <st_luke>in new england they buy bread in a can
22:19:11  <substack>dominictarr: pull from me
22:19:15  <substack>fixed that start/end thing
22:19:40  <substack>and then once we deploy we should probs turn off a lot of this logging to make it moar fasters
22:19:51  <dominictarr>substack, can't just keep last id
22:19:59  <dominictarr>because one thing could cause another,
22:20:05  <substack>hmmm
22:20:09  <dominictarr>start1 start2, end2, end1
22:20:11  <dominictarr>is possible
22:20:26  <substack>keep an array of last ids around?
22:20:29  <Raynos>dominictarr: agreement on code being fucked up.
22:20:31  <dominictarr>a hash
22:20:35  <substack>aha yeah
22:20:41  <substack>and then see what was running when it fucked up
22:20:47  <dominictarr>and discard it wen you start a new process.
22:20:48  * mikealquit (Ping timeout: 252 seconds)
22:20:53  <dominictarr>exactyl
22:20:58  <substack>can you hack that in?
22:21:01  <substack>should be an easy fix
22:21:04  <dominictarr>yup
22:21:05  <substack>I'm going to fix ui bugs
22:21:07  <substack>ok great
22:23:12  * fotoveritejoined
22:24:26  <fotoverite>What's the status of TehWizzards?
22:26:57  <substack>dominictarr: also document the spells api in /help.json
22:27:05  <dominictarr>wesweet
22:27:22  <substack>if you click spellbook it shows the help
22:27:49  <substack>logs aren't so useful, making that part smaller
22:27:56  <rowbit>Hourly usage stats: [developer: 1, free: 22]
22:28:34  <Raynos>Going to bring back code that generates new monsters as you move around
22:28:53  <Raynos>dominictarr: is that good or bad?
22:33:37  <Raynos>dominictarr: are you writing the help text
22:33:52  <dominictarr>Raynos, no, I'm working on preventing infinite loops
22:33:57  <Raynos>ok
22:37:51  <Raynos>pushed out generator stuff
22:37:55  <Raynos>I'm going to write help docs
22:37:59  <Raynos>and play the game at the same time
22:39:10  * intabulasquit (Remote host closed the connection)
22:39:39  * _ritchjoined
22:54:42  <dominictarr>YAY IT WORKS
22:54:43  <LOUDBOT>DUCKSTAB SEA BASS IS NICE BECAUSE IT'S PRETTY FATTY AS FAR AS FISH GOES
22:55:35  <dominictarr>substack, pull my fork
22:55:49  <dominictarr>and confirm please
22:55:55  <dominictarr>should type while(true);
22:55:57  <substack>one sec fixing a thing
22:56:09  <dominictarr>& see monsters stop for a second, then start dancing again.
22:56:47  <dominictarr>todo: reset run: true next time you run a spell
22:57:50  <dominictarr>done
22:58:27  <Raynos>are you guys working on non master branches?
23:01:17  <dominictarr>yes
23:01:19  <dominictarr>no
23:01:40  <dominictarr>oops, I was
23:01:46  <dominictarr>just pushed master
23:03:40  <dominictarr>ONE HOUR LEFT
23:03:41  <LOUDBOT>GET DOWN, THIS IS A ROBBERY! DONT ANYONE MOVE OR I BLOW THEIR HEADS OFF!
23:08:31  <dominictarr>okay, so what is next?
23:08:50  <substack>FIXED the keydown bug
23:08:56  <dominictarr>cool
23:09:00  <substack>where you edit a textbox and it moves the character
23:09:13  <dominictarr>pull my infinite loop fix
23:09:56  <substack>confirmed, works
23:10:04  <substack>pull from me
23:10:15  <substack>now fixing z-index
23:10:34  <dominictarr>DEPLOY DEPLOY DEPLOY
23:10:35  <LOUDBOT>A SELF-IMPOSED QUOTA AND NOW THE THING THAT I DIDN'T DO MYSELF CAN'T BE DONE
23:10:39  <substack>ok
23:14:21  * purrquit (Remote host closed the connection)
23:14:29  * purrjoined
23:14:31  * purrquit (Remote host closed the connection)
23:15:18  * purrjoined
23:16:58  * mikealjoined
23:17:34  <dominictarr>just gonna make it restart the spell runner every 10 seconds, just incase.
23:19:25  <substack>dominictarr: pull from me
23:19:31  <substack>added self.get(), self.set()
23:19:39  <substack>because you can already do that so you should be able to in the api
23:19:42  <substack>get and set keys
23:19:50  <substack>also say opts like fill and stroke
23:20:05  <substack>dominictarr: how can we make the repl values go someplace?
23:20:08  <substack>like if I do 1+2
23:20:30  <dominictarr>model.emit('log', STRING)
23:20:37  <substack>hmmm
23:21:10  <Raynos>dominictarr: did you fix the players dont have an x y position thing?
23:21:12  <dominictarr>no, world.emit('log',...)
23:21:15  <dominictarr>yes
23:21:20  <dominictarr>Raynos, yes
23:21:26  * mikealquit (Ping timeout: 260 seconds)
23:21:27  <Raynos>can you put it somewhere
23:21:29  <Raynos>so I can pull it
23:22:27  <dominictarr>okay, I pushed
23:22:51  <substack>dominictarr: make the repl print things
23:22:53  <substack>I don't understand how
23:23:03  <substack>repl is pretty useless without the p
23:23:12  <substack>fixing z-index here
23:23:48  <Raynos>i pulled from master
23:23:53  <Raynos>dominictarr: there is nothing on master
23:24:06  <Raynos> git://github.com/dominictarr/wizard-game.git
23:24:11  <Raynos>nothing new there
23:24:18  <dominictarr>well then you have it
23:24:41  <Raynos>oh
23:24:48  <Raynos>i do have it
23:24:50  <Raynos>weird as hell
23:24:51  <Raynos>ok
23:24:52  <Raynos>cool
23:27:56  <rowbit>Hourly usage stats: [developer: 2, free: 8]
23:28:28  <Raynos>whatDist seems to be broken :/
23:30:50  * fotoveritequit (Quit: fotoverite)
23:40:18  <dominictarr>yes
23:40:32  <dominictarr>I'll fix it
23:42:16  <substack>giving up on z-index
23:42:23  <substack>too tricky and fixing it would have a huge perf hit
23:43:09  <Raynos>wait
23:43:11  <Raynos>I fixed whatDist
23:43:13  <dominictarr>z index should = x
23:43:23  <Raynos>Pull from me
23:43:26  <Raynos>things work I think
23:43:34  <substack>dominictarr: wait, x?
23:43:35  <substack>not y?
23:43:47  <dominictarr>oh, no, Y
23:43:59  <dominictarr>Y * -1 ?
23:44:28  <substack>didn't work
23:44:38  <substack>anyways my test fix made it really slow and didn't work
23:44:44  <substack>seems ok to not fix, it's still fun
23:45:17  <dominictarr>Raynos, don't check in the bundle
23:45:25  <Raynos>my bad :(
23:45:46  <substack>so how can I make the repl put return values somewhere
23:45:53  <substack>the repl code gets executed server-side
23:45:59  <Raynos>removed the static/bundle from my fork
23:46:01  <Raynos>pull it down again
23:46:26  <dominictarr>Raynos, now there are no monsters!
23:46:28  <substack>fuck it I'll just put a .result on wizards
23:46:33  <Raynos>Oh yeah my bad
23:46:36  <Raynos>I uncommented the monsters
23:46:37  <Raynos>blarg
23:46:38  <substack>dominictarr: I see monsters in mine still
23:46:44  <substack>oh shit
23:46:49  <dominictarr>it's was the pull from raynos
23:46:50  <substack>restarted server.js, they all vanished
23:46:58  <Raynos>fixed.
23:47:16  <Raynos>pull down again
23:47:30  <dominictarr>okay, that is better.
23:47:32  <substack>if I go 1+3 in the repl
23:47:37  <substack>how can I log that?
23:47:46  <substack>to the user's log
23:47:53  <substack>how about I just write it to row.result
23:48:29  <dominictarr>substack, do it
23:48:58  <dominictarr>might have to add something to the context wrapper...
23:49:10  <Raynos>self.touch murders the server
23:49:15  <dominictarr>we have 10 minutes
23:50:11  <Raynos>agreed
23:50:14  <Raynos>someone should deploy something
23:50:15  <Raynos>that works
23:50:18  <substack>one sec
23:50:32  <Raynos>I finished the docs for now
23:50:37  <Raynos>pull down from me for latest docs
23:53:04  <dominictarr>Raynos, it doesn't seem to work anyway
23:53:14  <Raynos>yeah
23:53:17  <Raynos>self.hear also breaks
23:53:20  <Raynos>if you say in the callback
23:53:22  <Raynos>ill fix that quickly
23:54:01  <substack>results are running
23:55:54  <Raynos>Ok last push from me
23:55:56  <Raynos>gonna try and deploy
23:56:14  <Raynos>deploying now
23:57:33  * captain__quit (Read error: No route to host)
23:57:53  <substack>fixed here
23:57:57  <substack>pull from me
23:58:00  <substack>results in the repl
23:59:34  <substack>all sync'd up
23:59:38  <substack>deploying
23:59:38  <sorensen>you guys are going down!!!
23:59:43  <sorensen>:D
23:59:55  <sorensen><3