←2011-08-20 2011-08-21 2011-08-22→ ↑2011 ↑all
00:00:13 <elliott> Gregor: I mean, it's not really that grotty, because it's a nice SW/SE/NW/NE
00:00:21 <Gregor> elliott: I'm not sure if that works at an angle ... hold on, I need to do a little pseudomath here.
00:00:22 <elliott> You can just draw a ray outwards then contract it
00:00:45 <elliott> Gregor: I'm half-sceptical of your claim that rotating a WireWorld board that way keeps it working, but I hope it's true because it's an elegant property
00:00:51 <elliott> And if it is true, there's no excuse not to do views :P
00:01:02 <elliott> I mean, in-front-of views
00:01:06 <Gregor> I never claimed that rotating a wireworld board that way keeps it working.
00:01:14 <elliott> <elliott> Gregor: Wireworld is symmetrical, right?
00:01:15 <elliott> <Gregor> Yes
00:01:15 <elliott> <elliott> Is it symmetrical diagonally?
00:01:15 <elliott> <Gregor> Yes.
00:01:22 <elliott> Gregor: Are you unaware of what I mean by a symmetrical CA?
00:01:29 <Phantom_Hoover> Clearly.
00:02:02 <Gregor> All of its rules are perfectly symmetrical.
00:02:07 <Phantom_Hoover> You mean that the lattice is the same if you distinguish diagonal and orthogonal connections?
00:02:20 <elliott> Gregor: Then it has to work.
00:02:35 <elliott> Gregor: Something can't break just by rotating it if the rules are symmetrical :P
00:03:12 <elliott> I'll wait for Gregor to explain :P
00:03:43 <Gregor> The problem is that you CAN'T rotate a bunch of squares by 45° and still have squares :P
00:03:50 <Phantom_Hoover> Gregor, indeed.
00:04:07 <elliott> Gregor: Yes, but you can draw a ray outwards expanding at one second per second and then contract
00:04:13 <Phantom_Hoover> For one thing, the diagonal connections cross, which means they're completely different to the orthogonal ones.
00:04:23 <Gregor> elliott: Sadly, the square root of 2 is not 1.
00:04:37 <Gregor> elliott: So your cells will be in some crazy quantum superposition of states.
00:04:49 <elliott> Hmm, I've become retarded... I'm not seeing it.
00:04:59 <elliott> I mean, yes, the borders aren't proper.
00:05:05 <elliott> But isn't that just the borders
00:05:20 <elliott> Gregor: OK fine, how about don't rotate the view :P
00:05:23 <elliott> Wait
00:05:27 <elliott> Gregor: I'm an idiot
00:05:35 <elliott> Gregor: Of course your view isn't a square if you're looking diagonally
00:05:43 <elliott> It's a triangle :P
00:05:52 <elliott> (I mean, no it isn't, but from an "easier-in-CA" point of view...)
00:05:59 <elliott> Wow I can't think right now.
00:06:13 <Gregor> What I'm concluding here is actually that cardinal directions are actually the way to go :P
00:06:39 <Gregor> Maybe with both "forward" and "shimmy" :P
00:06:44 <Phantom_Hoover> What I'm concluding here is that elliott thinking about CAs inevitably leads to confusion for all involved.
00:06:50 <elliott> Gregor: But then building diagonal wire is a pain :?
00:06:57 <Gregor> Hence shimmy :P
00:07:03 <Gregor> (Shimmy is forward and left/right)
00:07:08 -!- FireFly has quit (Quit: FireFly).
00:07:28 <elliott> Gregor: That's so gross :P
00:07:38 <elliott> Gregor: Especially since it lets you U-turn faster if you go weird
00:07:47 <Gregor> No?
00:07:53 <Gregor> Shimmy doesn't turn you
00:08:08 <elliott> Gregor: Shimmy, turn, shimmy, turn
00:08:15 <elliott> Compare turn, turn, forwards... hmm ok :P
00:08:28 <Gregor> Yah :P
00:08:32 <elliott> Gregor: I STILL THINK SHIMMY IS UGLY BUT OK :P
00:08:54 <Gregor> Well, I really like having your "canonical" direction be unknown, and rotating the map so you just see in your own direction.
00:08:58 <Gregor> You ain't got no compass!
00:09:07 <elliott> Gregor: Yes, me too
00:09:21 <elliott> Gregor: Are you sure you can't hack that by presenting your diagonal viewing range as a partly-filled square? >_>
00:09:32 <Gregor> You could, but it would have incorrect behavior :P
00:10:09 <elliott> Gregor: It would?
00:10:19 <elliott> I guess the point is that if you do it that way, you can SEE LESS by looking diagonally :P
00:10:22 <elliott> Which is awesome.
00:10:27 <Gregor> Oh, I see
00:10:29 <elliott> "Fuck, I'm looking diagonally, and therefore mostly blind."
00:10:30 <Gregor> I misunderstood.
00:10:41 <Gregor> But that means you lose some of the generality of look-direction ...
00:11:08 <elliott> Yeah
00:11:25 <Gregor> Which is even more gross than shimmy :P
00:11:29 <Gregor> Esp. if I don't call it "shimmy"
00:11:43 <elliott> shimmy is a good name for it.
00:11:46 <elliott> Gregor: So how big is the viewing distance?
00:12:02 <Gregor> Well now that we've done all this shit, I have no bloody idea :P
00:12:05 <Gregor> 8?
00:12:24 <Gregor> Wait, it needs to be odd.
00:12:33 <elliott> Hmm.... Actually, I don't see why you can't do diagonals.
00:12:38 <Gregor> *sobs*
00:12:46 <elliott> No but look
00:12:46 <elliott> .......
00:12:46 <elliott> .\ | /.
00:12:47 <elliott> . \|/ .
00:12:47 <elliott> .--+--.
00:12:49 <elliott> . /|\ .
00:12:51 <elliott> ./ | \.
00:12:53 <elliott> .......
00:13:05 <elliott> Gregor: When looking in a direction, take all cells with a marked ray, and then include N cells in a square around them
00:13:14 <Gregor> elliott: SQUARE around them!
00:13:19 <Gregor> THERE AIN'T NO SQUARE AROUND THEM :P
00:13:21 <elliott> Gregor: When looking in a direction, take all cells with a marked ray, and then include N cells in a square-rotated-appropriately around them
00:13:26 <elliott> Now it's not resulting in a square >_>
00:13:28 <Gregor> elliott: Draw an array of cells A1 A2 A3...\nB1 B2 B3...\n, then draw the subset that corresponds to any diagonal view within them, as a square.
00:13:29 <elliott> Gregor: Umm, yes there is
00:13:31 <Gregor> Then send me that.
00:13:34 <elliott> <Gregor> THERE AIN'T NO SQUARE AROUND THEM :P
00:13:35 <elliott> They are cells
00:13:39 <elliott> So of course there's a square around them :P
00:13:42 <elliott> Just not from that orientation >_>
00:14:27 <Gregor> http://sprunge.us/TAcC <-- see
00:14:42 <Gregor> (The second set is a diagonal view NE from D2)
00:15:21 <elliott> Gregor: I'm not sure what your point is there
00:15:28 <elliott> Why couldn't you just send that second square down the wire
00:15:41 <Gregor> Where's C2? Where's D3?
00:16:01 <Gregor> It cannot be both a correct representation of the CA as viewed from that orientation, and a square.
00:16:04 <elliott> Oh, right :P
00:16:08 <elliott> Yeah, OK, I'm an idiot.
00:16:34 <Gregor> Anywho, cardinal directions are sexy.
00:16:50 <Gregor> You just move like a chess piece (OK, it happens that this particular chess piece doesn't exist...)
00:17:05 <Phantom_Hoover> I should totally write that physics paper by Lifeforms.
00:17:20 <elliott> Gregor: Although, is it wrong that that it's not a correct representation? Of course you can't expect to see the whole world.
00:17:24 <Patashu> there's a chess piece that moves only WASD, it's called a Wazir
00:17:26 <Patashu> look it up
00:17:33 <elliott> You should be merging it into a world representation after rotating
00:17:35 <elliott> And it'll be accurate then
00:17:44 <elliott> I mean, you can't simulate the squares ANYWAY
00:17:51 <elliott> Because they lack, y'know, everything outside the edges :P
00:17:56 <Gregor> No, but you should be able to make some guesses.
00:18:01 <Gregor> You can't even do that.
00:18:04 <elliott> Gregor: Which you can, as long as you look around more.
00:18:13 * Phantom_Hoover → sleep
00:18:14 -!- Phantom_Hoover has quit (Quit: Leaving).
00:18:15 <Gregor> Not if you happened to start oriented like that.
00:18:21 <Gregor> You'd just see that nothing makes any goddamn sense :P
00:18:25 <Gregor> My electron vanished!
00:19:01 <elliott> Gregor: Hmm, what if you start out like that, and then rotate three-sixty?
00:19:18 -!- zzo38 has left.
00:19:32 <Gregor> I think (though I don't want to work it out, bleh) that there would have to be nearby activity to determine your orientation, but either way it's an effload of work.
00:19:39 <elliott> Fair enough
00:19:43 <elliott> Cardinal it is
00:19:46 <Gregor> Yesh
00:19:54 <elliott> Gregor: I'm so writing warriors in Haskell, BTW :P
00:20:07 <Gregor> Good!
00:20:50 <elliott> Gregor: I do think you should have a switch to turn off all time limits, though
00:20:56 <elliott> The game is much purer that way :P
00:21:06 <elliott> And no warrior should break, because they'll wait for the server to tell them when a new turn is
00:21:19 <elliott> Gregor: (The server should wait for an ACK of the new turn from both warriors before starting the counter, I guess...)
00:21:25 <elliott> And kick everything that doesn't ACK quickly enough, of course :P
00:21:43 <elliott> Well, I guess reading from a FIFO or whatever won't be that slow :P
00:21:46 <elliott> But reading from a socket could be.
00:21:50 <elliott> But I guess network play would be slow in general
00:21:52 <elliott> And also completely pointless
00:21:55 <elliott> Because you can just repeat it locally
00:22:16 <Patashu> the problem with 'take as long as you like' is that the optimal strategy is to take as long as possible
00:22:18 <elliott> And network play allows for undetectable human intervention anyway :P
00:22:24 <Patashu> so no game will ever finish with perfect play
00:22:25 <elliott> "In five moves turn right 'cuz I said so."
00:22:31 <Gregor> elliott: I was going to have the move you want an action to be performed in specified in that action (or some special token for "any turn"), so you don't need to ack as a client.
00:22:33 <elliott> Patashu: Yes, I didn't mean to actually run things with the --no-limits flag.
00:22:40 <Gregor> elliott: (And the server would ack moves)
00:22:42 <elliott> I just meant it's purer, and might also be useful for testing?
00:22:46 <Patashu> ah ok
00:23:34 <elliott> <Gregor> elliott: I was going to have the move you want an action to be performed in specified in that action (or some special token for "any turn"), so you don't need to ack as a client.
00:23:36 <elliott> Eh?
00:24:04 <elliott> If the client wants to do nothing it should send nothing.
00:24:13 <Gregor> If the client wants to do nothing, it sends nothing.
00:24:21 <Gregor> But if the client sends something too late, it also doesn't do it.
00:25:06 <elliott> If the client sends something too late, it's the next turn.
00:25:11 <elliott> And that's the correct behaviour :P
00:25:29 <elliott> Clients just need to listen to the input stream, send whenever their move queue gets full, and then wait until the next turn
00:25:31 <Gregor> Idonno if I agree, but my point was that if you wanted that behavior, you could specify "any turn"
00:25:47 <elliott> Having clients note which turn it is is kind of gross
00:25:52 <elliott> I mean, <elliott> Clients just need to listen to the input stream, send whenever their move queue gets full, and then wait until the next turn
00:25:56 <elliott> It should be OK for moves to happen late
00:26:09 <elliott> You just need one thread to plan, react to input, and decide on moves, and then to push them :P
00:27:12 <elliott> Gregor: Plus you can make moves one byte :)
00:27:17 <Gregor> elliott: But what if something appears in your area in that next frame, and you go into reaction mode?
00:27:33 <Gregor> elliott: You won't want your slightly-mistimed previous move to take precedence.
00:27:56 <elliott> Gregor: Well, if you want hard-realtime like that, then have your fucking IO thread notify you of a new turn.
00:27:59 <Gregor> Of course, you also wouldn't want to make a slightly-mistimed previous move ...
00:28:02 <elliott> And have this notification lock the queue.
00:28:11 <elliott> If you want that, fine, but it shouldn't be part of the protocol :P
00:28:37 <Gregor> If it's NOT part of the protocol, then it's not actually hard real-time by the way :P
00:29:10 <Gregor> (Because there is undefined behavior on timeouts)
00:29:15 <elliott> Gregor: No??
00:29:20 <elliott> Gregor: Timeout = next move starts, it's taken as "do nothing"
00:29:29 <elliott> If you want to do nothing, don't send anything.
00:29:32 <Gregor> elliott: Here is the sequence of actions that causes the problem:
00:29:59 <Gregor> elliott: Server sends turn, client does computation, client sends move, server sends next turn, server receives move, server acts on move which was computed on stale data.
00:30:39 <elliott> Gregor: Servers always try to read before starting a new move.
00:30:49 <elliott> Problem solved?
00:30:54 <Gregor> elliott: You're acting as if IPC is magic.
00:30:56 <elliott> I'm assuming you're not doing this over a network because that won't work anyway.
00:30:58 <Gregor> elliott: Also, atomic.
00:31:07 <elliott> Gregor: I was assuming something file-esque like a FIFO.
00:31:10 <elliott> Aren't FIFOs ordered?
00:31:17 <Gregor> A single FIFO is ordered.
00:31:21 <Gregor> Bidirectional communication is two FIFOs.
00:31:33 <elliott> Hmm
00:31:39 <elliott> Well that's stupid, what's an ordered IPC mechanism
00:31:40 <elliott> Unix socket?
00:31:45 <elliott> Wait, that is a Unix socket.
00:31:46 <elliott> I think.
00:31:50 <elliott> No it isn't.
00:31:52 <Gregor> There's no such thing as bidirectional ordering guarantees.
00:31:55 <Gregor> That doesn't even make sense.
00:31:59 -!- yourstruly has joined.
00:32:22 <elliott> Gregor: Does for stdio :)
00:32:24 <Gregor> You'd have to have some crazy shared locking mechanism that both processes are aware of, but that means the client could lock out the server, gross.
00:32:27 <elliott> As in, console I/O
00:32:28 <Gregor> elliott: No, doesn't for stdio.
00:32:29 <elliott> As in, console I/O
00:32:48 <Gregor> Console I/O does not have bidirectional ordering.
00:32:53 <elliott> Hmmmm
00:32:56 <elliott> Fuck this shit :P
00:33:23 <elliott> Gregor: OK, fine, moves contain one byte of identifier and are just dropped if they refer to an identifier other than the current turn's :P
00:33:29 <elliott> Just cycle 'em
00:33:43 <Gregor> That's exactly my proposal >_<
00:33:47 <elliott> Gregor: Yep
00:34:05 <Gregor> OH KAY, now that we've got that out of the way :P
00:34:48 <elliott> Gregor: BTW, if you don't make the move instructions <>^v I'll cut you.
00:34:57 <elliott> Erm
00:35:02 <elliott> Gregor: BTW, if you don't make the turn instructions <> I'll cut you.
00:35:06 <elliott> And the move instruction ^ :P
00:35:12 <elliott> Hmm
00:35:16 <elliott> Turn instructions should be \/ actually >_>
00:35:19 <Gregor> Why ya gotta ASCII? :P
00:35:25 <Gregor> What direction is each of those?
00:35:25 <elliott> Funge does [] which is totally unsatisfying
00:35:31 <elliott> Gregor: \ is left, / is right, obviously
00:35:37 <elliott> Those are the only turns, also obviously
00:35:38 <Gregor> Maybe ( and )?
00:35:54 <elliott> That looks even less like looking left or right than \ and / do
00:36:05 <Gregor> Oh, I see what your metaphor is.
00:36:06 <elliott> <Gregor> Why ya gotta ASCII? :P
00:36:08 <elliott> Cuteness
00:36:17 <Gregor> OK, fine.
00:36:48 <Gregor> Command format is: {turn byte} {command}
00:36:49 <Gregor> One-byte commands: <^>\/
00:37:03 <elliott> You forgot build and destroy :P
00:37:12 <Gregor> Those aren't one-byte commands (?)
00:37:12 <elliott> Hit should be X or ! for the damage metaphor
00:37:18 <elliott> Gregor: What?
00:37:21 <elliott> Why not?
00:37:29 <Gregor> We haven't decided build directionality.
00:37:34 <elliott> Oh
00:37:40 <elliott> Well the WHOLE POINT of the turtle thing is that it's faster to create a line
00:37:46 <elliott> So I guess you build behind you and destroy in front of you
00:37:51 <elliott> You poop wire, in other words
00:38:00 <Gregor> Then build is more of a modifier of move.
00:38:09 <elliott> Not... really?
00:38:15 <elliott> You could build and then turn around and move away instead.
00:38:28 <elliott> You're facing forwards, you build, now there's a wire behind you, you turn to your right, and run away.
00:38:34 <Gregor> Oh, I thought build-and-move-in-some-direction was a single move.
00:38:39 <elliott> That could work.
00:38:45 <elliott> I GUESS
00:38:46 <elliott> But anyway
00:38:51 <Gregor> Whoah whoah wait, you're proposing that you build BEHIND you?
00:38:52 <elliott> So to destroy something and build over it you destroy it, U-turn, and then build X-D
00:39:02 <elliott> Gregor: Yes, bear with me: because if you build in FRONT of you:
00:39:08 <elliott> Gregor: Then to build a wire you have to CONSTANTLY TURN THREE-SIXTY
00:39:15 <Gregor> I was thinking that you build on TOP of you.
00:39:15 <elliott> Build, threesixty, forwards, repeat
00:39:23 <Gregor> Or build-and-move.
00:39:35 <Gregor> (Since building in your own spot yields a bizarre situation ...)
00:39:41 <elliott> Gregor: Like TEN HOURS AGO I said that I'm thinking of it as the agents being a cell so that updates make more sense and that you can't move in front of wires.
00:39:47 <elliott> Ergo nothing is ever on top of you ever :P
00:39:51 -!- pikhq has joined.
00:39:54 -!- pikhq_ has quit (Ping timeout: 240 seconds).
00:39:54 <elliott> (From my POV)
00:39:56 <Gregor> Yes, that's the bizarre situation.
00:40:07 <elliott> Gregor: I dunno, I kind of like the poop metaphor X-D
00:40:12 <Gregor> But building behind you is terrible since you can't see there any more.
00:40:14 <elliott> To build over something: Hit it until it dies, turn around, poop.
00:40:45 <elliott> Gregor: I was kind of imagining it as a little bug eating wire (destroying) and leaving a trail of wirepoop :P
00:40:52 <Gregor> I'm likin' the move-and-build paradigm more and more >_>
00:41:06 <elliott> Gregor: Do you want to be able to build a wire in n ticks?
00:41:07 <Gregor> (That is, build and move are an atomic action)
00:41:08 <elliott> For n=length
00:41:13 <Gregor> That's my problem with it.
00:41:38 <elliott> Gregor: Don't propose that each cell has a "builtness" counter because I will cut you :P
00:41:43 <elliott> (To make it take multiple ticks)
00:41:44 <Gregor> Good lawd no.
00:41:45 <elliott> Hmm
00:41:48 <elliott> I guess building has to take one tick, then
00:41:53 <elliott> Because that applies to building behind you, too
00:42:08 <elliott> <elliott> Gregor: Don't propose that each cell has a "builtness" counter because I will cut you :P
00:42:10 <elliott> The "erection" value :P
00:42:11 <elliott> OK CHEAP JOKE OVER
00:42:25 <Gregor> The thing with building behind you is that if you shimmy, your "behind you" location is somewhat ambiguous.
00:42:37 <Gregor> (i.e. building diagonal wires is still weird)
00:42:50 <elliott> Well, yeah, I was pretending shimmying didn't exist because... because I don't like that.
00:43:09 <Gregor> It's better than any alternative I can think of *shrugs*
00:43:22 <elliott> Just make diagonal wire-building take longer and fuck you deal with it? :P
00:43:48 <elliott> Gregor: BTW, howya gonna show the direction agents are facing on the board? With a zoom it's easy, just pack an arrow into one block a la mcmap
00:43:50 <Gregor> If I could make it take √2, that'd be ideal :P
00:44:02 <elliott> Gregor: Things CA space is not:
00:44:03 <elliott> - EUCLIDEAN
00:44:04 <elliott> - EUCLIDEAN
00:44:04 <elliott> - EUCLIDEAN
00:44:10 <elliott> - NOT MANHATTAN IF YOU'RE NOT AN ELECTRON
00:44:21 <Gregor> HELLO I AM WITH MAKING OF THE JOKESES!
00:44:22 <elliott> Taxicab, whatever :P
00:44:25 <elliott> Gregor: OH
00:44:26 <elliott> OK
00:44:28 <elliott> <elliott> Gregor: BTW, howya gonna show the direction agents are facing on the board? With a zoom it's easy, just pack an arrow into one block a la mcmap
00:44:44 <elliott> ...without a zoom, I suggest just alpha-blending two blocks diagonal from it with [agent colour] to be the tail X-D
00:44:48 <elliott> MOST IMPORTANT PROBLEM DEFINITELY
00:45:07 <Gregor> Honestly I don't think it's enormously important to show the direction in the actual visible window, since their movement should make that sufficiently clear *shrugs*
00:45:32 -!- Libster has quit (Read error: Connection reset by peer).
00:45:53 <elliott> Gregor: Unless the WARRIOR (so much cooler than agent) just sits there spinning around and entertaining its retarded self by becoming dizzy.
00:46:03 <elliott> I used to do that a lot.
00:46:07 <Gregor> elliott: And if it does, why do we care about its direction? :P
00:46:14 <elliott> Gregor: Because it'll look funny.
00:46:32 <elliott> BTW, agents just have to be pink because I can't stop thinking of them as pink... I guess because of mcmap
00:47:09 <Gregor> I was going to make a color per.
00:47:31 <elliott> SO LAME???
00:47:34 <elliott> Give them little nametags. The best idea.
00:48:25 <Gregor> There are flags too, remember
00:49:00 <elliott> Gregor: Yeah, every flag should just be interchangable... everyone defending every flag while trying to get to any flag.
00:49:03 <elliott> No arguments.
00:50:31 <Gregor> That's a complete 360° from the current design of the CTF game :P
00:50:43 <elliott> Gregor: I'm being VERY SERIOUS
00:50:46 <Gregor> (A design which, naturally, you don't know)
00:50:50 <elliott> I'm actually joking but wondering if it might be good :P
00:51:05 <elliott> Gregor: Lemme guess... every agent has a flag, starts next to it, has to stop the other agent from destroying it
00:51:05 <Gregor> That's closer to my very original idea, which was to have a sort of resource gathering game.
00:51:15 <Gregor> elliott: Not exactly.
00:51:24 <elliott> What then :
00:51:24 <elliott> :P
00:52:24 <Gregor> elliott: I'll explain it in terms of the CA (roughly): There's a 'base' cell type, which never changes under any circumstances, and has an owner. There's a 'flag' cell type which also has an owner, and turns into a conductor if there are any electrons next to it. If an electron is next to a base or flag, it becomes a flag of the same owner.
00:52:35 <Gregor> If a flag is next to a base of a different owner, then the owner of the flag loses.
00:52:46 <Gregor> So you have to actually ferry the flag from the enemy to you.
00:52:56 <Gregor> And it doesn't move at lightspeed, so they have a chance to defend.
00:52:58 <elliott> So simplified, you want to connect the flag to a base with wire?
00:53:08 <elliott> "it doesn't move at lightspeed" <-- So more cell states then?
00:53:16 <Gregor> elliott: No.
00:53:23 <Gregor> elliott: It just only moves when an /electron/ touches it.
00:53:29 <elliott> Fairnuff
00:53:33 <Gregor> elliott: Making an absolute max of ½ lightspeed.
00:53:54 <elliott> Surely you have enough of an idea to implement it now :P
00:54:04 <Gregor> Yes, but it's now quite a bit different than it was a few hours ago X-D
00:54:15 <elliott> Has it changed in the last half hour? :P
00:54:21 <elliott> Apart from that shimmying shit
00:54:28 <elliott> Which you should totally hold back on because EWW
00:54:31 -!- GreaseMonkey has joined.
00:54:34 <elliott> I agree with the "build and move" model, FWIW
00:54:35 <elliott> Or at least
00:54:37 <elliott> I think I do
00:55:15 <Gregor> elliott: A bit which I thing I had given up on, but might be worthwhile with the build-and-move model, is that there was a "conductor potentia" cell type, which turned into a conductor when an electron touched it, but didn't conduct that particular electron.
00:55:44 <elliott> Why
00:55:54 <Gregor> Just slows building down a bit *shrugs*
00:56:12 <Gregor> It was just a trick to make building slower if it turned out to be too fast relative to destruction.
00:56:13 <elliott> Oh right, we didn't resolve that
00:56:47 <elliott> Gregor: I think destroying should take... hmm.
00:56:54 <elliott> Gregor: Four hits
00:57:03 <elliott> Gregor: That way damage is a two bit value :-)
00:57:40 <Gregor> Gee, and here I figured I'd be drawing an ASCII-art motif for the area in front of you, so who cares how many bits I waste on damage values.
00:57:56 <elliott> Gregor: I'm speaking in terms of elegance, not in terms of protocol.
00:58:02 <Gregor> Ah :P
00:58:16 <Patashu> damage time vs build time is something you'll tweak in testing anyway
00:58:21 <Gregor> Yeah
00:58:26 <Gregor> OK, I can implement something.
00:58:27 <Gregor> AND SHALL
00:58:28 <elliott> Gregor: Not that 49 is many bytes
00:58:32 <elliott> Gregor: Or 121
00:58:39 <Gregor> OR A BAZILLION
00:58:42 <elliott> Gregor: No
00:58:49 <elliott> Gregor: If you want an even number, you want a power of two
00:58:52 <elliott> If you want an odd number, you want a prime
00:58:58 <elliott> That's the Rule
00:59:10 <Gregor> elliott: Viewbox is 7x7, damage is 4 :P
00:59:28 <elliott> Twenty-three squared is 529 bytes, and half a kilo is a bit much to send, receive and process every zero point zero six
00:59:32 <elliott> Five is too small
00:59:40 <elliott> So seven, eleven, seventeen or nineteen it is
01:00:01 <Gregor> elliott: Enjoy writing agents in Haskell with no 0-8 btw.
01:00:24 <elliott> Gregor: Dude, I've been coding continuously since the Accident :P
01:00:45 <Gregor> I like how it's capitalized now.
01:00:51 -!- zzo38 has joined.
01:00:51 <Gregor> But my point was really just to mock you 8-D
01:00:53 <elliott> Gregor: Please don't make fun of my disability.
01:00:57 <Gregor> X-D
01:01:59 -!- hagb4rd has joined.
01:02:26 <elliott> Gregor: BTW what ASCII chars are you using for the world
01:02:39 <elliott> It's totally irrelevant but :P
01:02:47 <Gregor> elliott: \x00, \x01, \x02, ... :P
01:02:56 <elliott> Gregor: No dude no. No. Dude. You make me sad. Dude. No.
01:03:39 <elliott> Gregor: I suggest empty: or ., wire: =, head: *, tail: ~
01:03:44 <Gregor> Probably ' ' for nothing, . for wire, @ for actor, + for head, - for tail
01:03:45 <elliott> ===~*====
01:03:49 <elliott> It looks like a little worm SO CUTE???
01:04:02 <elliott> You can't deny the worminess.
01:04:06 <Gregor> It looks like a botched enema.
01:04:07 <elliott> . might be better than =
01:04:17 <elliott> Gregor: OK no dude ~* is absolutely perfect.
01:04:20 <elliott> Absolutely perfect.
01:04:21 <elliott> I will have no arguments.
01:04:25 <elliott> It is the perfect electron worm.
01:04:31 <elliott> Gregor: @ for actor is good though.
01:04:32 <elliott> Or, hmm
01:04:39 <Gregor> DUDE, you can't go antirogue.
01:04:44 <elliott> Gregor: What about 0-9A-Z for actors? It'd avoid sending more.
01:04:50 <Gregor> Oh, that's good.
01:04:53 <elliott> Gregor: AHEM
01:04:58 <Gregor> Except flags have owners too :)
01:05:03 <elliott> Gregor: @ does not mean "another player-species"
01:05:12 <elliott> Gregor: @ means "you, or something with the symbol @ (usually humanoids)"
01:05:24 <elliott> Consider playing a gnome in NetHack.
01:05:28 <Gregor> Are you claiming that actors aren't humans? That happen to be written in C?
01:05:30 <elliott> </pedanticism>
01:05:33 <elliott> Gregor: X-D
01:05:57 <elliott> Gregor: OK, hmm... 0-9 for actors, A-J for flags?
01:06:07 <Gregor> A-J for base, a-j for flags.
01:06:16 <elliott> Hmm
01:06:19 <elliott> I see flags as more important than bases
01:06:22 <elliott> So you want them to be more shouty :-)
01:06:27 <Gregor> OK, then a-j for bases, A-J for flags *shrugs*
01:06:28 <elliott> 0-9 for actors, a-j for base, A-J for flags?
01:06:35 <elliott> FINALLY WE WILL HAVE A PERFECTLY CRAFTED ASCII DISPLAY THAT NOBODY WILL EVER SEE
01:06:52 <Gregor> Now, do I separate every row with a \n, WASTING BYTES???
01:06:55 <elliott> Gregor: No.
01:07:04 <Gregor> Making the ASCII display beyond useless :P
01:07:09 <elliott> Yep :D
01:07:30 <elliott> Gregor: Suggested format: [move identifier (not guaranteed to be sequential)][grid][damages as raw bytes]
01:07:43 <elliott> Gregor: Hmm, you should be able to see which way an actor is turning...
01:07:52 <elliott> As an agent
01:07:54 <elliott> /actor
01:07:55 <elliott> /whatever
01:07:58 <Gregor> I was thinking I would only send damages for those which have damages.
01:08:13 <elliott> Gregor: That means that the update is not constant-sized.
01:08:17 <Gregor> So?
01:08:35 <elliott> Gregor: Well, it makes things slower for the programs...
01:08:42 <Gregor> Hm, fair 'nuff.
01:08:45 <elliott> Rather than just read(..., 243)
01:08:51 <Gregor> We definitely don't want programs to have to think...
01:08:51 <elliott> Where truncated input basically never happens
01:08:55 <elliott> X-D
01:09:01 <Gregor> Seriously though, we don't *shrugs*
01:09:02 <elliott> I get what you mean, about the protocol
01:09:15 <elliott> I was going to say damage as ASCII just 'cuz, but then I realised it's nice to be able to just memcpy it
01:09:19 <elliott> For comparisons, obviously
01:10:14 <elliott> Gregor: Commands: turn left: \, turn right: /, advance: ^, hit: X or !, poop: dunno?
01:10:22 <elliott> (Whereby poop I mean build and move forwards)
01:10:54 <Gregor> elliott: I refuse to deshimmy :P
01:11:00 <monqy> these commands are all over the place
01:11:08 <elliott> Gregor: I was thinking you should add shimmy later...
01:11:27 <Gregor> monqy: Having them compacted into e.g. 0x00-0x10 doesn't actually help anything.
01:11:28 <elliott> Gregor: I mean, it's gross to be able to build diagonally but not destroy diagonally, and adding another command to do THAT is insanity.
01:11:37 <elliott> So you should just stick with the orthogonality and accept that we're in Taxicab geometry :P
01:11:49 <Gregor> elliott: That's why my thought was that destroy and build are more-or-less modifiers.
01:12:08 <Gregor> But I may be willing to accept cardinal-only :P
01:12:16 <elliott> Gregor: Sure, but that only makes sense if you come from the viewpoint that shimmy makes sense :P
01:12:23 <elliott> The ONLY reason it makes sense is that we were talking about looking diagonally.
01:12:28 <monqy> oh I was thinking keyboard-wise but maybe that doesn't matter?? I'm not exactly sure what you're even doing
01:12:37 <elliott> WireWorld's rules may be "diagonally symmetrical" but that doesn't actually make sense because it's a field made out of squares :P
01:12:48 <elliott> monqy: you don't type these, it's a programming game
01:12:57 <elliott> Well, you could play as a human, but it'd be really hardcore
01:13:02 <Gregor> elliott: Being diagonally symmetrical is independent of being orthogonally symmetrical ...
01:13:06 <monqy> what do you type help
01:13:23 <elliott> Gregor: Uhh, yes?
01:13:33 <elliott> Gregor: My point is that the only reason shimmying is even on the cards is that electrons travel diagonally
01:13:37 <Gregor> Right
01:13:47 <elliott> But that DOESN'T mean that diagonal movement is reasonable in a logo-graphics model :P
01:13:58 <Gregor> monqy: Keyboard is irrelevant unless you can react to things within 1/15th of a second :P
01:14:06 <elliott> Gregor: BTW, I take it that things like invalid builds and the like will just be ignored?
01:14:07 <elliott> No error codes
01:14:09 <hagb4rd> hexagons
01:14:13 <elliott> You shouldn't be making such moves anyway
01:14:24 <elliott> And things like bumping into things when walking, well... you can see the bloody wall right in front of you.
01:14:30 <Gregor> elliott: I was intending to ack commands, so you would know if they actually happened within the turn.
01:14:39 <Gregor> That ack could be "OK" vs "too late" vs "invalid"
01:14:52 <elliott> Gregor: wait, there are no invalid digs now
01:14:55 <elliott> Erm
01:14:57 <elliott> Gregor: wait, there are no invalid builds now
01:15:04 <Gregor> True
01:15:04 <elliott> Because you have to stand on the square your wire appears on
01:15:17 <Gregor> elliott: Errr, what if another agent moves there :)
01:15:19 <elliott> Gregor: wrt too late, agents can check that themselves by comparing the world-state I think
01:15:21 <Gregor> YAY ATOMICITY
01:15:25 <elliott> There might be edge-cases where someone cancels out what you do identically
01:15:33 <elliott> Gregor: Agents can't walk into agents
01:15:35 <elliott> Just like they can't walk into wires
01:15:36 <elliott> Or electroncs
01:15:37 <elliott> electrons
01:15:39 <elliott> Or anything but space
01:15:47 <Gregor> Right.
01:15:57 <elliott> So yeah, that build fails.
01:15:57 <Gregor> Anyway, there are still invalid hits.
01:16:13 <elliott> Gregor: Yeah, but if they try and hit that, they're either like, genetic based... or broken >_>
01:16:23 <elliott> If "genetic", then "nothing happened" is the right thing to learn, if broken, well fuck 'em
01:16:54 <elliott> Gregor: But yeah, I think that a properly-written agent doesn't really have to worry about its turn going through...
01:17:01 <Gregor> So yeah, whether you like it or not, I'm acking everything. Neener neener neener.
01:17:14 <Gregor> (Err, acking all client commands, that is)
01:17:14 <elliott> Gregor: The time it takes to react to the ack makes it worthless
01:17:19 <Gregor> So don't *shrugs*
01:17:19 <elliott> You don't want to cancel your current decision-making process
01:17:25 <elliott> Gregor: Then there's no reason to ack :P
01:17:33 <Gregor> elliott: Maybe not for YOU.
01:17:48 <Gregor> elliott: Maybe if I'm getting a bunch of ack-too-lates, I'd like to switch to a faster strategy.
01:18:05 <elliott> Gregor: Fair enough... but you don't want a dynamic-length response.
01:18:09 <elliott> So you can only ack one per tick :P
01:18:15 <Gregor> And I don't want to determine that by "I moved forward in a totally-empty field and nothing appears to have happened"
01:18:22 <elliott> And invalid moves should ack as "received"
01:18:24 <Gregor> Or "I build-and-moved in a totally empty field and nothing appeared to happen"
01:18:26 <elliott> And just do nothing
01:18:44 <Gregor> Only one move per tick is valid anyway, of course I can only ack one.
01:18:52 <elliott> [zero or one][the identifier it was sent with][new identifier][grid][damages]
01:18:56 <elliott> Gregor: Yes, but it could receive two because of lag...
01:19:19 <Gregor> OH, I see what you're saying.
01:19:28 <Gregor> You want literally every message from the server to be of a fixed length.
01:19:29 <elliott> But w/e, just ack one, if you're that lagged you're fucked anyway
01:19:33 <Gregor> So, only one message per tick.
01:19:40 <elliott> Gregor: The only messages are updates and acks, so... yes?
01:19:54 <elliott> There's no compelling reason not to unify those since acks are of questionable usability anyway
01:20:02 <Gregor> Only to you.
01:20:08 <elliott> OK, let me put it this way:
01:20:15 <elliott> Multiple acks per tick is of VERY questionable usability.
01:20:26 <elliott> And breaks the simple "just read with constant size" client end.
01:20:34 <elliott> You have to do some kind of buffering.
01:20:48 <elliott> Gregor: BTW, I'd suggest eleven or seventeen viewfield, seven is a bit small...
01:20:50 <Gregor> OK, wait, since you can only validly send one move per turn ANYWAY, there's no need for multiple acks per tick ever.
01:21:23 <elliott> Gregor: Did you just un-realise?
01:21:26 <elliott> <elliott> Gregor: Yes, but it could receive two because of lag...
01:21:26 <elliott> <Gregor> OH, I see what you're saying.
01:21:28 <elliott> Oh, wait
01:21:32 <elliott> You saw what I was saying about a different thing
01:21:33 <elliott> <elliott> Gregor: Yes, but it could receive two because of lag...
01:21:35 <elliott> I repeat that then
01:21:37 <Gregor> If one is lagged, it's already been acked negative.
01:21:56 <Gregor> Since you specify the turn the move is intended for in the move.
01:22:01 <elliott> Client receives two server updates in quick succession because of lag, hastily responds to both.
01:22:09 <elliott> Server reads. Server gets two commands.
01:22:16 <elliott> Server can only say "hey, too late" to one.
01:22:18 <elliott> (Both of them were late.>)
01:22:32 <Gregor> elliott: The server's ALREADY said "hey, too late" to both.
01:22:40 <Gregor> It was part of its updates.
01:22:44 <Gregor> Every update includes an ack.
01:22:48 <elliott> Oh
01:22:49 <elliott> Fair enough
01:22:56 <Gregor> It's not really an ack anymore if you're acking nothingness, but :P
01:23:05 <elliott> If you enforce sequentiality of identifiers, then you can ack with one byte
01:23:12 <Gregor> Yup
01:23:16 <elliott> Good
01:23:30 -!- oklopol has quit (Ping timeout: 240 seconds).
01:23:40 <Gregor> OK, back to building ...
01:23:40 <hagb4rd> hey..i asked myself y not all the time
01:23:48 <elliott> Gregor: Link me to the hg repo btw?
01:24:34 <Gregor> https://codu.org/projects/rezzo/hg/
01:25:24 <elliott> Gregor: I blinked when a bitbucket page failed to materialised :P
01:26:29 <Gregor> Some stuff is out of date there though w.r.t. things I realized shouldn't have been there, and new changes.
01:28:06 <elliott> Gregor: So what IPC mechanism you using
01:28:12 <elliott> Please make it be something that looks like stdio to the program :P
01:28:26 <elliott> Also, is the playfield a torus or infinite?
01:28:35 <Gregor> Torus.
01:28:38 <Gregor> Infinite = infinite pain.
01:28:51 <Gregor> I was going to use pipes, so stdio to the program, yes.
01:29:24 <elliott> Gregor: = infinite pain?
01:29:31 <elliott> Are you speaking from a C implementation POV, please just say no.
01:29:56 <Gregor> elliott: I'm speaking from a computation complexity point of view.
01:30:06 <Gregor> Whoops, my plain extended, I now have more work
01:30:27 <Gregor> If you wanted to fuck up the server, you could just move infinitely in one direction pooping stable circuits.
01:30:54 <elliott> I am so glad that pooping is now our official terminology :P
01:30:58 <elliott> SO GLAD.
01:31:08 <elliott> plane not plain btw :P
01:31:14 <elliott> Gregor: So is the field just as big as what you linked me?
01:31:18 <elliott> That seems pretty tiny
01:31:24 <elliott> It's not like BF Joust where smaller = better strategy, I don't think
01:31:26 <elliott> Or maybe it is
01:31:37 <Gregor> elliott: That was just an arbitrarily chosen size.
01:31:45 <elliott> Gregor: Fairy nuff.
01:31:49 <elliott> (nuff is like cocaine but better.)
01:31:52 <elliott> (Only fairies have it.)
01:32:00 <elliott> (Therefore it means "good".)
01:32:08 <Gregor> I was just testing out substrate generation *shrugs*
01:32:23 <hagb4rd> lol
01:32:41 <elliott> Gregor: Hmm, that sets off happy bells in my head that say "WORLD GENERATION!!!!"
01:32:46 <elliott> What if you made a maze?????
01:32:56 <elliott> With dead-end electron rings instead of exits
01:33:26 <Gregor> I'm quite happy with my substrate as-is :P
01:33:38 <elliott> Gregor: It's called EXPERIMENTATION :P
01:33:47 <elliott> Different warriors for different substrate algorithms
01:33:56 <elliott> Gregor: BTW, what ASCII value is pooping?
01:34:29 <Gregor> elliott: None? Doesn't need one ...
01:34:50 <elliott> Gregor: It's... a command...
01:34:53 <elliott> So yes it does............
01:35:01 <monqy> &? *? ~?
01:35:15 <monqy> +?
01:35:20 <Gregor> OHOHOH
01:35:21 <elliott> ~ is pretty good because your tail is ~ (BECAUSE I SAY SO)
01:35:22 <Gregor> The command :P
01:35:28 <Gregor> Sorry, I'm writing the CA right now :P
01:35:29 <elliott> Oh wait
01:35:33 <elliott> Electron tails are ~
01:35:48 <elliott> Gregor: Having fun with agents being a part of the field? :-)
01:35:49 <Gregor> How 'bout ... b :P
01:35:51 <Gregor> As in "build"
01:35:55 <elliott> It's not that hard since you don't literally encode a state transition
01:35:58 <elliott> Well, usually you don't
01:36:00 <monqy> d as in defecate
01:36:03 <elliott> (Instead using ifs and the like)
01:36:05 <elliott> (You know this)
01:36:14 <monqy> do people have tails too
01:36:14 <elliott> Gregor: NO IT MUST LOOK LIKE A LITTLE PICTURE
01:36:31 <Gregor> monqy: 'd' is already damage/destroy.
01:36:33 <elliott> Gregor: How about @, it looks like one of those fake plastic dog poops you can buy
01:36:35 <elliott> Gregor: X_X
01:36:38 <Gregor> Basically I'm trying to piss of elliott here.
01:36:40 <Gregor> *off
01:36:43 <Gregor> I can't type today
01:36:50 <elliott> Gregor: I do not like you :|
01:37:39 <elliott> Gregor: Will you accept patches that make the commands and CA characters totally awesome if I get them in before any warriors are written that weren't written for the purpose of ensuring I can't write that patch :P
01:37:47 <hagb4rd> y do u care now? just do not spread all these magic values all around your code, so you can change it later
01:37:59 <elliott> hagb4rd: It's part of the protocol... magic values are the name of the game.
01:38:03 <hagb4rd> ok
01:38:17 <Gregor> elliott: I won't accept any patches before I get the damned thing to work at all :P
01:40:12 <elliott> Gregor: Hmm... maybe destroying SHOULD take only one tick.
01:40:33 <elliott> Gregor: After all, if someone is right behind you, chasing you, in one direction, shouldn't they be able to destroy your wire at the same speed yer poopin'?
01:40:34 <elliott> In fact
01:40:35 <elliott> Hmm
01:40:42 <elliott> Gregor: Destroying should move you into where the wire was
01:40:44 <elliott> So that it's dual to pooping
01:40:56 <elliott> Wait no
01:40:59 <elliott> That's stupid if it takes more than one tick
01:41:02 <elliott> Gregor: DISREGARD ALL THE ABOVE
01:41:09 <Gregor> elliott: Yeah, also if two people are both destroying the same cell.
01:41:35 <elliott> Gregor: They should merge. Each tick, it should swap whether one or the other's turn takes effect.
01:41:48 <elliott> This is the best idea and if you disagree with it, you are wrong, both in this matter, and as a person.
01:42:00 <Gregor> ...
01:42:16 <elliott> LITERAL BEST IDEA. BEST CHIMERAS.
01:43:15 <elliott> Gregor: Hmm, the timing code will be quite subtle in a bot
01:43:17 <zzo38> What are you making??????????????????????????????????
01:43:30 <elliott> I mean, obviously you can't just arbitrarily break the machine code :P
01:43:32 <elliott> So it has to be at some barrier
01:43:37 <elliott> e.g. reading or writing state
01:43:47 <elliott> I guess you basically just need yield()s
01:43:51 <zzo38> What are you making????????????????????????????????????????????????????????????????????????????????????????????????
01:44:01 <elliott> #define YIELD if (volatile_thing) return
01:44:09 <elliott> zzo38: A game, stop using tons of question marks that's my thing
01:44:14 <elliott> A programming game
01:47:03 <zzo38> Another game to make is one that you have to pick up all of the balls but you cannot carry all of them because the different color balls have different mass so it makes it difficult to win
01:47:47 <monqy> game where you flip a coin but it's really really big
01:47:47 <elliott> Gregor: You should replace the whole game with that.
01:48:29 <zzo38> monqy: Make that game too.
01:48:47 <zzo38> monqy: But I think your idea is a bit simple
01:52:23 <elliott> `addquote <monqy> game where you flip a coin but it's really really big
01:52:27 <HackEgo> 610) <monqy> game where you flip a coin but it's really really big
01:53:04 -!- evincar has joined.
01:53:33 <hagb4rd> a lil bit out of context isnt it? ..where can i read the quotes?
01:54:48 <zzo38> A lot of them are out of context, they like to do it like that
01:55:31 <hagb4rd> operation mindfuck still undone
01:56:08 <hagb4rd> work in progress
01:56:12 <elliott> hagb4rd:
01:56:14 <elliott> `pastequotes
01:56:16 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.30030
01:56:21 <hagb4rd> nice
01:56:35 <hagb4rd> elliott: thx
01:57:54 <Gregor> elliott: I have successfully made something hideously broken.
01:58:22 <Gregor> elliott: Also, it only doesn't crash if I set a hardware watchpoint on the variable that causes the crash.
01:59:37 <elliott> Gregor: What.
01:59:42 <elliott> Gregor: How about not using C\
02:00:03 <Gregor> C: THE BEST LANGUAGE THERE IS FOR ALL PORPOISES EVER
02:01:53 <zzo38> C is not bad. But I don't think it is the best language there is for all porpoises ever, or the best language for all purposes ever. There are a lot of programming languages. But use C if that is what you want to use in this case.
02:02:42 <elliott> Gregor: What did you use before you used C for everything
02:03:39 <Gregor> elliott: C.
02:03:51 <Gregor> :P
02:03:58 <elliott> Gregor: Before that
02:03:58 <Gregor> D, before that Java, before that VB.
02:04:04 <elliott> Oh yeah, D
02:04:07 * Gregor sobs to admit that last one.
02:04:07 <elliott> You have really shitty taste in languages
02:04:15 <elliott> Gregor: But you don't sob to admit Java?
02:04:23 <Gregor> That was forced :P
02:05:17 <hagb4rd> so it doesn't crash while debugging?
02:05:38 <zzo38> I have used a lot of programming languages. Sometimes I still do.
02:05:47 -!- copumpkin has joined.
02:06:05 <elliott> Gregor: Are you using pthreads
02:06:10 <Gregor> hagb4rd: It doesn't crash while debugging, but ONLY if I set a watchpoint.
02:06:12 <Gregor> elliott: Heww no.
02:06:53 <elliott> Gregor: What ARE you using
02:06:59 <elliott> I can helpfully tell you not to use it
02:07:12 <Gregor> Nothing interesting, that's the thing.
02:07:21 <Gregor> There's no smell to chase.
02:07:36 <elliott> Are you using... for loops?
02:07:37 <elliott> Avoid those.
02:07:41 <elliott> Gregor: Is it in SDL-related code mayhaps?
02:07:50 <Gregor> elliott: SDL hasn't even started yet.
02:07:56 <elliott> Gregor: For loops?
02:08:27 <Gregor> elliott: I've got plenty, but the only active one is for (d = 0; d < tod; d++)
02:08:46 -!- copumpkin has quit (Client Quit).
02:08:46 <elliott> Gregor: I suggest avoiding for loops, they might crash your program. Hope this helps.
02:08:47 <zzo38> Why to avoid those?
02:09:04 <elliott> It is ENTIRELY possible for a program in a for loop to crash. Think about it.
02:09:18 <zzo38> Anything can crash your program if you program it incorrectly. That is why you have to be careful.
02:09:23 <Gregor> (gdb) p world->w
02:09:23 <Gregor> $5 = 97
02:09:23 <Gregor> (gdb) p world->h
02:09:23 <Gregor> $6 = 1627390102
02:09:24 <Gregor> Haha NO
02:09:32 <elliott> Gregor: Good constants
02:09:36 <elliott> World should be square btw
02:09:49 <Gregor> Rather than a 97x1627390102 wtfagon.
02:09:51 <hagb4rd> use foreach instead?
02:10:08 <hagb4rd> if possible
02:10:10 <zzo38> There is no foreach in C, you have to make up a macro to do foreach in C.
02:10:28 <zzo38> Although it can be done and is useful in some programs to do so.
02:11:39 <Gregor> ARRRRGH
02:11:45 <Gregor> DAMN - YOU - C - MODULO - OPERATION
02:11:46 <elliott> Gregor: wat
02:11:52 <elliott> Correction
02:11:55 <elliott> Damn you C
02:12:21 <Gregor> OK, works now :P
02:13:30 <Gregor> !c printf("%d\n", (-1) % 5
02:13:32 <Gregor> Err
02:13:33 <Gregor> !c printf("%d\n", (-1) % 5);
02:13:34 <EgoBot> Does not compile.
02:13:51 <elliott> EgoBot is faste
02:13:57 <Gregor> :'(
02:14:02 <elliott> !c printf("%d\n", (-1) % 5);
02:14:05 <EgoBot> ​-1
02:14:06 <elliott> lol
02:14:08 <elliott> Gregor: now it worke
02:14:26 <Gregor> Anyway, that is the WRONG ANSWER >_<
02:15:04 <elliott> Gregor: C does what it wants mofo
02:15:06 <elliott> Haskell offers both ;D
02:15:11 <hagb4rd> what?
02:15:13 <elliott> (div and mod and quot and rem)
02:15:16 <elliott> (or divMod and quotRem)
02:15:44 <Gregor> hagb4rd: I can say with 100% certainty that anyone who has ever said that (-1) % 5 is any value other than 4 is a terrible person.
02:16:05 <hagb4rd> gregor: ack#
02:16:06 <elliott> > -1 `div` 5
02:16:06 <lambdabot> 0
02:16:09 <elliott> > -1 `quot` 5
02:16:09 <lambdabot> 0
02:16:12 <elliott> Oh
02:16:12 <elliott> duh
02:16:15 <elliott> > -1 `mod` 5
02:16:16 <lambdabot> -1
02:16:17 <elliott> > -1 `rem` 5
02:16:18 <lambdabot> -1
02:16:21 <elliott> Gregor: Oops :P
02:16:31 <elliott> > divMod (-1) 5
02:16:32 <lambdabot> (-1,4)
02:16:33 <elliott> > quotRem (-1) 5
02:16:34 <Gregor> elliott: wtf :P
02:16:34 <lambdabot> (0,-1)
02:16:42 <elliott> Gregor: Operator precedence I think >_>
02:16:42 <Gregor> lol, mod and divMod don't agree
02:16:44 <Gregor> Oh
02:16:48 <elliott> > (-1) `div` 5
02:16:49 <Gregor> -(1 mod 5)?
02:16:49 <lambdabot> -1
02:16:50 <elliott> > (-1) `quot` 5
02:16:51 <lambdabot> 0
02:16:55 <elliott> erm
02:16:56 <elliott> > (-1) `rem` 5
02:16:57 <lambdabot> -1
02:17:01 <elliott> What >_>
02:17:02 <elliott> Oh
02:17:06 <elliott> > (-1) `mod` 5
02:17:06 <lambdabot> 4
02:17:08 <elliott> Gregor: FINALLY :P
02:17:15 <elliott> - really needs to be part of the number literal syntax.
02:17:31 <elliott> That's one of Haskell's major warts, "lol - is the only unary operator and also this means that you have to parenthesise negative literals always"
02:17:46 <elliott> And it means that you can't do (- 9) to partially apply (-) with a section
02:17:48 <elliott> You need (subtract 9)
02:17:49 <elliott> Gross
02:19:29 <evincar> Eew, really?
02:19:47 <elliott> No that was a total lie.
02:19:54 <evincar> Good.
02:20:55 <monqy> hi
02:21:10 <monqy> yeah I hate - it's awful
02:22:45 -!- sllide has quit (Read error: Connection reset by peer).
02:23:39 <Gregor> ANOTHER thunderstorm?
02:23:41 <Gregor> Come on, Indiana.
02:23:43 <Gregor> Seriously.
02:33:12 -!- Vorpal has quit (Ping timeout: 264 seconds).
02:33:26 <elliott> Indiana: Literally Texas.
02:39:51 <Gregor> Oh man, there is like a 0% chance that this viewport code is correct :P
02:44:47 <zzo38> I agree that (-1) % 5 == -1 is no good, I agree that it should be 4
02:45:08 <Gregor> elliott: See! Proof positive.
02:45:24 <Patashu> Why are there two kinds of modulus anyway, it's annoying
02:47:05 <zzo38> Maybe the negative kind is useful in some cases, but in general the positive kind (that is, without negative results) is better
02:49:37 <hagb4rd> > (-1) `mod` -5
02:49:38 <lambdabot> Precedence parsing error
02:49:38 <lambdabot> cannot mix `GHC.Real.mod' [infixl 7] and pref...
02:49:55 <hagb4rd> > (-1) `mod` (-5)
02:49:55 <lambdabot> -1
02:52:56 <hagb4rd> > (1) `mod` (-5)
02:52:56 <lambdabot> -4
02:59:18 <elliott> Gregor: Does it work yet
02:59:24 <elliott> <Patashu> Why are there two kinds of modulus anyway, it's annoying
02:59:25 <elliott> Because mathematics
02:59:37 <Gregor> elliott: I'm adding agents.
02:59:51 <Gregor> elliott: Also, I'm seeing that SDL doesn't seem to be able to select over FDs >_<
03:00:12 <elliott> Gregor: select() does that.
03:00:20 <elliott> Gregor: Why'd you need SDL to
03:00:20 <Gregor> elliott: select() doesn't select over SDL actions.
03:00:27 <elliott> Gregor: SDL... actions?
03:00:29 <elliott> Do you mean events?
03:00:42 <Gregor> Such as "lol your window went away", "I need a repaint", or "somebody just closed the window"
03:00:45 <Gregor> Yes yes yes
03:00:53 <elliott> It only tells you to repaint when it's restored or whatever
03:00:59 <elliott> You probably want your own event loop
03:01:21 <Gregor> But under that I need /something/
03:01:26 <Gregor> And it seems that I have no something.
03:01:30 <evincar> Wat.
03:01:31 <Gregor> I can't use select() or SDL >_<
03:01:49 <elliott> One thread handles all events, then does a bunch of SDL_GetTicks and SDL_Delay so that you're on time for drawing the next frame, then you draw a frame, save the current time (so you know when the next frame is), and repeat
03:01:53 <elliott> Another thread can select() and handle the rest.
03:01:57 <elliott> It's basically impossible to avoid threads using SDL.
03:01:57 <evincar> while (running) { while (SDL_PollEvent(&event)) { switch (event.type) { ... } } }
03:02:04 <elliott> evincar: <Gregor> elliott: Also, I'm seeing that SDL doesn't seem to be able to select over FDs >_<
03:02:11 <elliott> evincar: Also, lolniceandslow
03:02:14 <elliott> You want WaitEvent if you're doing that
03:02:20 <elliott> But you don't want to do that, you want to use PollEvent and sleep yourself :P
03:02:44 -!- copumpkin has joined.
03:02:53 <evincar> Meh, didn't mean to write a busy loop there, but don't care.
03:03:01 <Gregor> evincar: It still doesn't help.
03:03:05 <evincar> Point is, variable frame rate.
03:03:08 <elliott> Gregor: I just told you how to do it :P
03:03:08 <Gregor> evincar: I know how to write a simple SDL event loop, that doesn't help me.
03:03:11 <evincar> It wasn't, but it is now.
03:03:16 <Gregor> elliott: I REFUSE TO THREADS >_<
03:03:17 <elliott> Gregor: I'm getting pretty good at non-simple SDL event loops :P
03:03:21 <hagb4rd> you need the gametime to be passed
03:03:21 <elliott> Gregor: You have literally no choice.
03:03:25 <Gregor> elliott: NOOOOOOOOOOOOOOOOO
03:03:57 <elliott> Gregor: You need that anyway, because you need to sleep()
03:04:01 <elliott> To let the turn time pass
03:04:15 <Gregor> elliott: SDL has that.
03:04:18 <Gregor> It has timers.
03:04:36 <elliott> Gregor: You... don't want to rely on SDL for that >_.
03:04:37 <elliott> >_>
03:04:54 <elliott> 90s library + your critical loop = woooooooooooooooooooooooooooo
03:05:03 <Gregor> You're being stupid.
03:05:13 <Gregor> This problem doesn't exist.
03:05:25 <elliott> Gregor: Sounds like you have a problem from all your whining :P
03:05:29 <Gregor> The times involved are not astronomical or astronomically or small.
03:05:35 <Gregor> elliott: The timing problem, not the FDs problem.
03:05:36 <evincar> SDL_AddTimer is good enough for many purposes. I just prefer to avoid it.
03:05:43 <elliott> I wouldn't put SDL_PollEvent into my main event loop.
03:05:45 <elliott> But w/e.
03:06:05 <Gregor> wtf
03:06:09 <Gregor> HELLO SDL_WAITEVENT
03:06:09 <elliott> Gregor: You do realise that you are going to have to give in and use threads, right?
03:06:20 <Gregor> elliott: I already am, but the timing is totally unrelated to that.
03:06:25 <elliott> Sure.
03:06:25 <Gregor> I already have the timing infrastructure.
03:06:42 <hagb4rd> what's the problem?
03:06:44 <elliott> Gregor: Have I mentioned that you're going to have to use SDL_PollEvent, not WaitEvent :P
03:06:51 <elliott> Hmm
03:06:54 <Gregor> elliott: No, I won't.
03:06:56 <elliott> I suppose your world thread could create a user event
03:07:00 <elliott> That's so grosse though
03:07:11 <Gregor> The SDL and CA parts are /DONE/.
03:07:15 <elliott> Gregor: I take it that's what you're doing
03:07:16 <evincar> Yeah, I've had more problems with that than it solved.
03:07:24 <evincar> Using user events.
03:07:37 <Gregor> Oy vey
03:07:39 <evincar> From the timer thread, that is.
03:07:43 <elliott> Gregor: I'm asking a simple question, disregard evincar :P
03:08:03 <Gregor> elliott: Yes, that's what I'm doing. All I need is a big lock to make sure the CA and agents don't step on each other.
03:08:18 <elliott> Gregor: The CA evolves independently of the agents???
03:08:24 <Gregor> elliott: No, that's my point.
03:08:36 <elliott> Gregor: Why can't you just do ca_tick() after you get all the moves in and apply them
03:08:43 <elliott> That's a purely sequential thing
03:08:49 <elliott> All SDL has to do is turn the CA state into pixels
03:08:50 <Gregor> elliott: I have to display that shit :P
03:08:57 <elliott> So do that in the SDL thread
03:09:10 <hagb4rd> oh.. i thought we're talking bout the draw() not the update()
03:09:15 <elliott> for loop + p->pixels = done?
03:09:17 <elliott> I don't see how you need a lock at all
03:09:18 <Gregor> I'mma keep right on doing this how I'm doing it, because your advice is unhelpful :P
03:09:27 <elliott> Gregor: I just want to know why you need a lock
03:09:34 -!- pikhq has quit (Ping timeout: 252 seconds).
03:09:41 -!- pikhq has joined.
03:09:46 <Gregor> elliott: I suppose I don't need to guarantee I draw one consistent state to the screen, but I'd like to.
03:10:09 <evincar> I vote for buffering.
03:10:11 <hagb4rd> so you check collisions in the draw() part?
03:10:15 <hagb4rd> i don't get it
03:10:19 <elliott> Gregor: If the CA updates, I'd like it to update as quickly as possible :P
03:10:29 <elliott> hagb4rd: evincar: I take it you have no actual idea what we're doing at all.
03:10:34 <Gregor> elliott: And what the hell does that have to do with anything?
03:10:43 <elliott> Gregor: It was a joke re <Gregor> elliott: I suppose I don't need to guarantee I draw one consistent state to the screen, but I'd like to.
03:10:45 <elliott> Gregor: But hey, hashlife does it
03:10:52 <Gregor> Ah :P
03:11:01 <elliott> Don't you want to be as FAST AS HASHLIFE???
03:11:05 <elliott> ABANDON YOUR LOCKS
03:11:24 <elliott> Gregor: Wait. Waitasecond. Waitasecondamo. You use a user event to tell the SDL thread to draw, so the lock doesn't have to exist from SDL's perspective.
03:11:29 <elliott> You can lock before sending off the event.
03:11:31 <elliott> Oh, SDL has to unlock it,
03:11:32 <elliott> .
03:11:38 <elliott> But you definitely want to lock before sending the event :P
03:11:44 <elliott> Hmm, or do you
03:11:46 <Gregor> Here is my design:
03:12:05 <elliott> Gregor: With a big enough world, locking could cause the time guarantees to be fail to met.
03:12:11 <elliott> But I guess the time guarantees only matter while waiting for a turn.
03:12:11 <Gregor> one thread { while (select()) { BIG LOCK { everything } } } another thread { while (SDL_Bullshot()) { BIG LOCK { everything } } }
03:12:25 <elliott> Gregor: Beep, by "another thread" you mean "the main thread".
03:12:30 <elliott> You cannot call SDL threads from outside the main thread.
03:12:31 <Gregor> Well, yeah :P
03:12:34 <elliott> s/threads/calls/
03:12:59 <elliott> Gregor: Anyway, I'd just draw without any lock because of aforementioned speed paranoia...
03:13:07 <elliott> And the fact that it really doesn't matter if it updates half way :P
03:13:26 <elliott> Since it'll draw again in like 0.06 seconds
03:13:31 <elliott> I guess you could have repeated bad luck, so w/e
03:13:55 <hagb4rd> elliott: i take it.. you have no idea bout game programming patterns
03:14:16 <elliott> hagb4rd: Wow, you're a jerk. Especially because Gregor isn't developing an interactive game
03:14:35 <elliott> And there are no collisions to detect outside of the totally separate agent handling.
03:16:25 <hagb4rd> All I need is a big lock to make sure the CA and agents don't step on each other. <-- collisions?
03:16:36 <hagb4rd> sry...
03:16:39 <hagb4rd> wrong
03:16:50 <elliott> hagb4rd: Step on in the programming sense.
03:17:33 <Gregor> I'mma let you two duke this out since I find the whole conversation 115% uninteresting.
03:17:44 <monqy> what's even happening
03:17:51 <elliott> Gregor: Is repeatedly correcting someone even "duking"
03:18:07 <Gregor> monqy: Everybody hates each other, and this umbrella works wonders for murdering.
03:19:20 <monqy> so is anything not stupid happening
03:19:51 <elliott> monqy: Gregor is writing a game that is good apart from not using my ca
03:20:21 <monqy> is it using a bad ca
03:22:28 <elliott> monqy: wireworld so it could be worse????
03:22:31 <monqy> is your ca even usable yet
03:22:50 <elliott> monqy: I don't know maybe soon???
03:24:55 <evincar> I feel like we've had this conversation before, and recently.
03:25:05 <elliott> no
03:25:36 <evincar> YOU CAN'T TELL ME WHAT I FEEL
03:25:40 <monqy> evincar: and how's your language
03:25:51 <elliott> bad hth
03:26:09 <evincar> monqy: Been thinking about how best to implement the non-bootstrapped version in a way that doesn't bite me later.
03:27:22 <monqy> does that mean you've finished designing the language itself, or at least enough to consider implementation, or is this this problem not specific to or dependent upon the design of your language?
03:27:24 <evincar> Also what target language to use, which I suppose could be C++, if only as an alternative to C.
03:27:39 <monqy> c++?
03:27:44 <monqy> why c++
03:27:56 <elliott> lol
03:28:04 <monqy> elliott: hi
03:28:20 <elliott> hi monqy hi
03:28:22 <evincar> Compiles natively, is C with some other stuff I don't want to automate.
03:28:35 <monqy> like what
03:28:38 <elliott> im literally going to suffocate myself on a pillow bye
03:28:45 <monqy> elliott: sorry i was bored
03:28:52 <elliott> ok back
03:29:00 <evincar> elliott: If you'd like to recommend a different target language, be my guest.
03:29:17 <elliott> anything but C++??
03:29:20 <elliott> like say C??
03:29:21 <evincar> Your opinion is assuredly worth something.
03:30:08 <monqy> what about c++ is attractive
03:30:11 <monqy> over, say, c
03:30:24 <evincar> Okay, so my language targets C. And now I have to write scads more code, and I can't rely on automatic destruction or smart pointers or existing collections.
03:30:36 <evincar> I want it to *work* first.
03:30:42 <evincar> I can add other targets later.
03:31:19 <monqy> this is less about c being good and more about c++ being bad
03:31:36 <monqy> target haskell $$$$$$$
03:32:11 <elliott> <evincar> Okay, so my language targets C. And now I have to write scads more code, and I can't rely on automatic destruction or smart pointers or existing collections.
03:32:13 <elliott> have you ever used C?
03:32:24 <elliott> also do you know what the boehm gc is
03:32:28 <evincar> Yes, loads.
03:32:37 <evincar> Alright, now I have an outside dependency.
03:33:14 <Gregor> (Is the source a GC'd language?)
03:33:48 <monqy> Gregor: presumably, else hahahahahahahahahahahahahahahah
03:33:59 <elliott> evincar: outside epdenency
03:34:06 <elliott> here's a list of language implementations that depend on boehm gc
03:34:07 <elliott> - everything
03:34:13 <elliott> heres a list of other things that depend on boehm
03:34:14 <elliott> - everything
03:34:18 <evincar> Gregor: I'm not entirely sure it needs to be, being that it's stack-based.
03:34:26 <elliott> even gcc uses boehm for chrisssakes
03:34:35 <elliott> yes, using a stack absolves you of all memory management
03:34:45 <hagb4rd> someone has to take the ring back to mordor
03:36:11 <evincar> No, using a stack just makes memory management absurdly straightforward.
03:36:23 <elliott> lol
03:36:24 <elliott> wow
03:36:25 <elliott> are you serious
03:36:38 <evincar> So I'll target C, whatever.
03:36:40 <elliott> thats true if and only if you cant push nontrivial structures to the stack
03:38:26 <evincar> It's all references anyway. So don't I just have to deal with counting?
03:38:37 <evincar> And can't I throw that responsibility to the garbage collector if I'm feeling lazy?
03:38:58 <elliott> you have no cyclic structures? sweet
03:39:00 * evincar is still not convinced of the merits of GC over deterministic destruction.
03:39:15 <elliott> except that gc works in the general case and "deterministic" methods don't
03:39:22 <elliott> (gc can be perfectly deterministic)
03:39:55 <elliott> You could also use GGGGC if you want precise GC.
03:41:50 <monqy> evincar: good luck designing a good language (thumbs up)
03:42:14 <elliott> Gregor: How's it go :P
03:42:33 <evincar> monqy: Oh, I'll use a collector, and I'll end up the happier for it.
03:44:52 <Gregor> elliott: It continues to go :P
03:46:42 * hagb4rd poops away
03:46:44 <hagb4rd> bye
03:46:57 -!- hagb4rd has quit (Quit: Page closed).
03:50:54 <elliott> wat
03:54:45 <Gregor> elliott: ... what commands are left for actors other than move, build, destroy?
03:54:48 <zzo38> You could also have the programming language that targets LLVM, it has some things related to garbage collection too
03:54:53 <Gregor> Err, and turn of course :P
03:55:33 -!- MDude has changed nick to MSleep.
03:55:34 <Gregor> IIRC, LLVM's GC is lolterrible.
03:55:58 <zzo38> Then fix it
03:56:45 <Gregor> Also, apparently I can't decide if they're agents or actors.
03:57:22 <elliott> Gregor: Poop
03:57:27 <elliott> Not build, poop
03:57:42 <elliott> Gregor: Advance, poop, hit, turn left, turn right, these are the One True Names.
03:58:46 <elliott> Gregor: But yeah, those are all :P
04:01:17 -!- augur has quit (Remote host closed the connection).
04:06:46 <evincar> zzo38: I was going to mention LLVM, but I assumed I'd get laughed at.
04:07:01 <zzo38> evincar: I think LLVM is good in general.
04:07:02 <evincar> Also, MASSIVE DELAY.
04:07:23 <evincar> It certainly seems to be, but I honestly don't know enough about it to feel comfortable targeting it.
04:07:33 <evincar> Especially when I want to get something done quickly that I can later refine.
04:09:12 <zzo38> I am writing the program for using Glk with Haskell.
04:12:17 <Sgeo_> I am now witnessing what atrocious Python code looks like
04:12:33 <Sgeo_> I don't thnk this person's written in Python or any other computer language before
04:12:45 <zzo38> What program is it?
04:12:53 <Sgeo_> Something to do with YouTube stuff
04:13:38 <Sgeo_> I posted links in the minecraft channel
04:15:27 <zzo38> Do you know how, I can, in Haskell, to reference something in another module which I cannot import because it does not exist? But I do know the types of the other things I am accessing.
04:17:01 <Gregor> elliott: Now it all works except that it doesn't actually do anything.
04:17:30 <zzo38> Specifically glkInit :: String; glkMain :: Glk ();
04:18:15 <elliott> Gregor: Sweet.
04:18:28 <elliott> zzo38: Uhh, that doesn't make much sense. Do you want to use the FFI?
04:18:45 <elliott> zzo38: If the Glk is the Glk I know, though, I don't see why it needs its own monad; all the functions should just return in IO.
04:18:53 <elliott> /* glk_main() is the top-level function which you define. The Glk library
04:18:53 <elliott> calls it. */
04:18:53 <elliott> extern void glk_main(void);
04:18:59 <elliott> Oh, that's problematic.
04:19:12 <zzo38> Yes that is the reason.
04:19:33 <elliott> You have to write a C file defining glk_main() that uses the FFI to call a Haskell function named glkMain.
04:19:36 <elliott> Then everyone has to link with that.
04:19:43 <elliott> I... hmm.
04:19:50 <elliott> You might have to mark it as exported to the FFI in the source file anyway.
04:21:27 <zzo38> No, glkInit and glkMain are values used by the library program I am making, and they need to use that in the functions which C calls. It also does various other things such as ensure it is safe codes unlike C codes, such as the C code keeping opaque objects registry and dispatching Glk calls, and the Haskell code converting the types between C types and Haskell types.
04:21:40 -!- augur has joined.
04:21:53 <zzo38> Which means I need to import things that do not exist.
04:22:05 <Gregor> elliott: OMG so slow D-8
04:22:23 <zzo38> The user program will also import this program too, although in that case everything is exist already.
04:23:01 <elliott> Gregor: What part is slow?
04:23:12 <elliott> zzo38: You just "import" them by referencing them from C.
04:23:42 <zzo38> elliott: OK. How do I reference them from C, then? They are not C types!
04:24:43 <Gregor> elliott: Donno yet.
04:27:39 <elliott> zzo38: you can export things with the FFI
04:27:52 <elliott> eforeign export ccall foo :: Int -> IO Int
04:27:52 <elliott> foo :: Int -> IO Int
04:27:52 <elliott> foo n = return (length (f n))
04:27:54 <elliott> Then Foo_stub.h will contain something like this:
04:27:54 <elliott> #include "HsFFI.h"
04:27:54 <elliott> extern HsInt foo(HsInt a0);
04:27:55 <elliott> and Foo_stub.c contains the compiler-generated definition of foo(). To invoke foo() from C, just #include "Foo_stub.h" and call foo().
04:28:03 <elliott> see http://www.haskell.org/ghc/docs/7.0.2/html/users_guide/ffi-ghc.html
04:28:10 <elliott> zzo38: you also want to look at 8.2.1.1. Using your own main()
04:28:11 <elliott> from the same page
04:29:59 <zzo38> I have looked at 8.2.1.1 already
04:30:08 <zzo38> I will look again
04:32:48 <zzo38> I suppose one idea, which can make it add the necessary exports if needed, as well as other things if needed, is to use Template Haskell.
04:33:52 <zzo38> Why does "foreign export" require the type even if it is already specified in the program?
04:37:01 <Gregor> elliott: So it's POSSIBLE ... just POSSIBLE that even with the simplest possible client you can't keep up :P
04:38:32 -!- evincar has quit (Quit: leaving).
04:38:52 <Gregor> elliott: No, never mind, seems to be a different bug >_>
04:39:08 <zzo38> Now ghci won't load the program if it has foreign export
04:39:51 <Gregor> elliott: Heh, I was always expecting the wrong timestamp X-P
04:41:22 <Gregor> Yup, works 8-D
04:42:02 <Gregor> elliott: Pull for AGENTS
04:44:52 <elliott> Gregor: I never downloaded
04:44:53 <elliott> Relink
04:46:10 <Gregor> https://codu.org/projects/rezzo/hg/
04:46:48 <elliott> Gregor: So will you accept a patch that fixes your letters :P
04:47:04 <Gregor> MY CHARACTERS ARE PERFECTION
04:48:41 <elliott> Gregor: http://sprunge.us/HNjb
04:49:07 <zzo38> Maybe it is {-# SOURCE #-} which will do allowing importing non-existing modules
04:49:13 <elliott> Gregor: I will accept keeping the name build rather than poop :P
04:49:15 <elliott> zzo38: No.
04:49:27 <elliott> zzo38: You _cannot reference glkMain in that way from Haskell code_.
04:49:30 <elliott> But with the FFI you can refer to it.
04:50:47 <elliott> Gregor: But I will be happy to test it once those completely-vital breaking changes are through :P
04:51:06 <elliott> Also, lol at your argument parsing "library"
04:51:57 <zzo38> Are you sure? It says you can use that to compile mutually recursive modules. But I don't know how you can refer to it with FFI since glkInit and glkMain are not C types.
04:52:32 <elliott> zzo38: By exporting them with "foreign export" from the Haskell file.
04:52:46 <elliott> You must simply do extern void glkMain(...); from your C file.
04:52:54 <elliott> And compile that to an object file which must be linked with the program using GHC.
04:53:11 <elliott> 222 if ((buf = SDL_SetVideoMode(w*z, h*z, 32, SDL_HWSURFACE|SDL_DOUBLEBUF)) == NULL) SDLERR;
04:53:20 <elliott> Gregor: You probably don't want HWSURFACE.
04:53:29 <zzo38> elliott: But it says "foreign export" still needs to be C types. I have two things neither of whcih are C types
04:53:44 <elliott> zzo38: IO () is exported just as IO ()
04:53:55 <elliott> Gregor: For one, your code will probably break with an HWSURFACE, since you don't lock/unlock it
04:54:03 <elliott> Gregor: For two, poking at pixels with an hwsurface is almost definitely going to be slow
04:54:48 -!- pikhq has quit (Ping timeout: 252 seconds).
04:54:50 -!- pikhq_ has joined.
04:55:09 <elliott> Suspect Gregor isn't actually here :P
04:55:35 <Gregor> Just ignoring you.
04:56:11 <elliott> Gregor: My advice about HWSURFACEs is hardly irrelevant... especially since the only time you're going to get one is fullscreened anyway.
04:56:51 <Gregor> I never claimed that anything you said was irrelevant, just that I'm ignoring you :P
04:56:55 <Gregor> I already did HW -> SW :P
04:57:39 -!- CakeProphet has joined.
04:57:39 -!- CakeProphet has quit (Changing host).
04:57:39 -!- CakeProphet has joined.
04:57:49 <elliott> Gregor is just hiding his shame that he didn't think of ! for destroy and ~ for tail.
04:57:59 <elliott> Hoping nobody will ever know.
04:58:14 <elliott> Well, it runs.
04:58:57 <Gregor> elliott: Do gcc wander.c -o wander, then ./rezzo ./wander
04:58:57 <elliott> --help?! What's this nonsense!
04:58:58 <elliott> Gregor: Nice docs
04:59:02 <Gregor> elliott: Thx :)
04:59:17 <elliott> if (sm.ack == ACK_INVALID_MESSAGE) {
04:59:23 <elliott> I... would not call walking into a wall an "invalid message".
04:59:28 <elliott> Nothing HAPPENED, but it was perfectly possible to try.
04:59:39 <elliott> And that wall could have been created on the same turn.
04:59:45 <Gregor> Brrrrrf.
04:59:48 <elliott> (How do you handle such cases, when the ordering of agents is revealed?)
04:59:56 <elliott> (That's a lot of special cases.
04:59:58 <elliott> )
05:00:14 <elliott> Welp, I did ./rezzo ./wander and can't fucking find the bastard at all.
05:00:27 <elliott> You should flash the general area with inverted colours at the start :P
05:00:51 <Gregor> No.
05:01:08 <elliott> Well, what would you be open to? It's literally impossible to find.
05:01:29 <elliott> Even with four of them I can only find two.
05:01:56 <elliott> You don't appear to generate any blocks on the most right hand side of the field... an off-by-one?
05:03:24 <elliott> More ignoring?
05:03:32 -!- zzo38 has quit (Remote host closed the connection).
05:04:24 <Gregor> elliott: Actually trying to fix exactly that problem.
05:04:31 <Gregor> I assume there's an off-by-one, but I'm yet to find it.
05:04:45 <elliott> Gregor: The "I can't see where any contestant is" problem seems more important...
05:04:51 <elliott> Or at least it is for me :P
05:05:04 <Gregor> It'll be easier when they're doing something :P
05:05:31 <elliott> Not... really? I have a high-DPI screen.
05:05:38 <elliott> They're smaller than the specks of dust on here.
05:06:05 <elliott> In fact, when they're adjacent to lines, I literally can't tell it from what subpixel rendering artifacts look like on other screens.
05:06:37 <Gregor> -z zooms :P
05:06:46 <Gregor> <-- so helpful
05:06:59 <Gregor> Honestly I consider the issue that's not just some display nonsense to be considerably more important.
05:07:09 <elliott> Any zoom level doesn't fit on my screen.
05:07:24 <Gregor> -w and -h change the field size
05:07:29 <elliott> That changes the gameplay.
05:07:56 <elliott> Gregor: OK, here's a MODEST PROPOSAL: What about a simple tail behind the agents? Just pink to background colour in like five pixels.
05:08:00 <elliott> That would make it incredibly to see them on any zoom level.
05:08:14 <Gregor> It actually /removes/ the blocks from the right and bottom >_O
05:08:42 <Gregor> elliott: I have not yet committed to making no changes for visibility. What I have committed to is fixing bugs before UI issues.
05:08:49 <elliott> OK fine :P
05:09:13 <Gregor> for (y = 0, yoff = 0; y < h-1; y++, yoff += w) {
05:09:13 <Gregor> for (x = 0, i = yoff; x < w-1; x++, i++) {
05:09:15 <Gregor> ^^^ spot the stupid
05:09:37 <elliott> lol :P
05:09:55 <elliott> Gregor: ./rezzo ./rezzo
05:09:56 <elliott> AW YE
05:10:00 <Gregor> The worst part is I honestly couldn't tell you why I thought it should be h-1 and w-1.
05:10:31 <elliott> pix[si+w*z*zy+zx] = typeColors[world->c[wi]];
05:10:38 <elliott> wrt so slow, you could just increment pix :P
05:11:09 <elliott> At least that works here, dunno if that might have side-effects
05:11:41 <elliott> Actually I'm unclear how you actually do zooming...
05:18:16 <Gregor> Arghwtf, I just "fixed" something and instead it broke everything.
05:18:31 <elliott> Gregor: Patch (in suitable format for "hg import"): http://sprunge.us/BVGR
05:19:37 <Gregor> I didn't realize you could - an include line ...
05:20:10 <elliott> Gregor: Yep.
05:20:17 <elliott> I'm pretty sure that's the one and only reason to do it ever :P
05:20:19 <Gregor> For some reason my board is turning dead instantly right now >_<
05:20:36 <elliott> C, best language.
05:20:56 <elliott> Gregor: What is sizeof(ServerMessage)?
05:21:05 <Gregor> elliott: Look at its definition :P
05:21:19 <elliott> What is VIEWPORT_SQ
05:21:25 <Gregor> elliott: Look at its definition :P
05:21:35 <elliott> What is VIEWPORT :P
05:21:43 <Gregor> elliott: Look at its definition :P
05:21:46 <elliott> Okay so it's thirteen squared times two plus two.
05:22:04 <elliott> 340
05:22:08 <elliott> HARDCODED WOO
05:23:43 <Gregor> Wow, apparently I don't know how to swap buffers properly (at 1AM) >_<
05:23:54 <Gregor> tmp = world->c2;
05:23:54 <Gregor> world->c = world->c2;
05:23:54 <Gregor> world->c2 = tmp;
05:23:56 <Gregor> Spot the bug!
05:25:35 <itidus20> n = sqrt(a^2 + b^2)
05:26:28 <elliott> itidus20: Almost as helpful as hagb4rd or whatever his name is :P
05:26:48 <elliott> Gregor: The amount of infrastructure required for a simple bot is astonishing :P
05:26:56 <elliott> I mean, slightly less simple than wander, by which I mean, recording anything at all.
05:27:07 <Gregor> Heh :P
05:27:15 <Gregor> Wander is clearly the best bot.
05:27:25 <elliott> Mostly the problem is that I have to translate it all to decent structures on read...
05:27:32 <elliott> Which I SUSPECT may take longer than 0 seconds.
05:27:40 <elliott> And operating on it in raw ASCII form is gross.
05:28:14 <Gregor> SHOULDA USED C LOL
05:29:56 <itidus20> ahh C ... could it be, that C is the language with the most different compilers ever written
05:30:23 <Patashu> Yep
05:30:38 <Gregor> elliott: By making wander use BUILD instead of ADVANCE, I made a circuit!
05:31:11 <elliott> Gregor: Woooo :P
05:31:20 <elliott> Gregor: Now if only we could say it was POOPING and have the names on our side.......................
05:31:20 <itidus20> thats what people need to be told when listing the virtues of C
05:31:49 <Gregor> But ... that IS one of the virtues of C ...
05:32:13 <Gregor> That list probably goes C, C++, JavaScript, by the way :)
05:32:37 <Gregor> (OK, OK, some of the olde languages may be up there too >_> )
05:32:39 <elliott> JavaScript? Really? :P
05:32:42 <elliott> Such a fanboy.
05:32:54 <Gregor> elliott: Every browser has an implementation!
05:33:39 <Gregor> Anyway, I've pushed my last changes for tonight, I'm going to sleep.
05:33:41 <Patashu> How about languages like fortran/fourth/cobol
05:33:52 <Gregor> <Gregor> (OK, OK, some of the olde languages may be up there too >_> )
05:34:19 <Patashu> magical google adventure time!
05:34:19 <Gregor> I don't think COBOL actually had that many implementations though?
05:34:32 <Gregor> Anyway, zleepitime.
05:34:54 <Patashu> why is fortran faster than C anyway?
05:35:17 <Patashu> 'Significantly, the increasing popularity of FORTRAN spurred competing computer manufacturers to provide FORTRAN compilers for their machines, so that by 1963 over 40 FORTRAN compilers existed.' fortran wins I think
05:35:25 <elliott> Over FORTY??????????????????????????????????????
05:35:26 <elliott> WOOOOOOOOOOW
05:35:30 <itidus20> hmm
05:35:37 <Patashu> by 1963!
05:38:34 <Gregor> Remember, there were barely forty COMPUTERS in 1963 (zzzzzz)
05:38:58 <Patashu> Lex Luthor stole forty fortran compilers
05:39:09 <Gregor> Patashu: And that's awful.
05:39:34 <Gregor> (Or was it "terrible"?)
05:39:47 <Gregor> Durn, it was terrible.
05:39:50 <Patashu> No! You can't quote a meme wrong!
05:39:53 <Patashu> You can't do that man
05:46:31 <elliott> Gregor: Ha ha I might be able to do it without ANY PARSING AT ALL
05:46:33 <elliott> FEEL THE HASKELL
05:46:36 -!- CakeProphet has quit (Ping timeout: 240 seconds).
05:48:19 -!- oerjan has joined.
05:49:33 <oerjan> 14:35:53 <elliott> 06:36:47: <oerjan> quintopia: well assuming you are using Linux, last i used that for a desktop focusing and moving to the top were independent actions
05:49:36 <oerjan> 14:35:59 <elliott> That's not really a common choice nowadays :P
05:49:46 <oerjan> PEOPLE POISONED BY WINDOWS CONVENTIONS, I SAY
05:50:41 <Patashu> there's a program, xmouse, that lets you focus on a window without bringing it to the top in windows
05:51:14 <elliott> That's also called any sloppy-focus WM ever.
05:51:31 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
05:53:12 <oerjan> well admittedly the wm's i used had a tendency to focus into the window the mouse was pointing to, which did have its own dangers. an actual way to _select_ a window for focus without bringing it to the top might be better. (and it probably exists.)
05:53:56 <elliott> oerjan: That's focus-follows-mouse. Sloppy focus is: Keyboard focus is behind mouse; clicking raises to surface.
05:54:23 <Patashu> wait, is there a difference between the two?
05:54:25 <oerjan> um what's the difference between those two.
05:55:39 <oerjan> and i mean selecting by some action other than simply moving the mouse, which as i said had its own dangers.
05:58:49 <elliott> oerjan: I described the exact difference.
05:59:03 <elliott> Focus-follows-mouse: Keyboard focus is behind mouse; mousing into a window raises to surface.
05:59:07 <elliott> Sloppy focus: Keyboard focus is behind mouse; clicking raises to surface.
05:59:20 <Patashu> ooh
05:59:36 <oerjan> ah. so it has no difference for focus.
05:59:49 <monqy> the way it works for me is clicking brings focus and clicking while holding down the super key floats the window if tiled and raises to the surface (and if you drag while holding the super key you move it around)
06:00:01 <monqy> I think the xmonad default is that focus follows mouse but I dislike that
06:00:36 <monqy> I usually use the keyboard controls to change focus if it's something textual, and click if it's something graphical
06:01:11 <oerjan> sounds good
06:02:46 -!- copumpkin has joined.
06:03:11 <oerjan> <Patashu> why is fortran faster than C anyway?
06:03:30 <oerjan> i've read something about better aliasing rules that are easier to optimize
06:08:56 <Patashu> aaah
06:15:07 <Patashu> http://www.ibiblio.org/pub/languages/fortran/ch1-2.html in particular b)
06:15:10 <Patashu> so you're right
06:17:05 <oerjan> a timeless document. and by that i mean it has no date.
06:17:37 <Patashu> http://www.ibiblio.org/pub/languages/fortran/ch1-2.html 1996-1998
06:17:53 <oerjan> ah
06:21:31 <elliott> Gregor: Guess who has a perfect clone of wonder that also presents the whole update structure as a rich structure with ALMOST NO PARSING OVERHEAD
06:21:33 <elliott> THIS DUUUUUUUUUUUUDE
06:22:03 <elliott> Well... it does store cells in memory as their ASCII character, so OK, it has the parsing overhead of "a really simple case statement on the character" each grid read, but c'mon :P
06:22:09 <oerjan> elliott should write advertisements
06:22:27 <elliott> oerjan: It's exactly 99 lines longer than the C version X-D
06:22:49 <elliott> But the C version uses the headers of the C implementation and DOESN'T do any of that fancy stuff, so it's about ten times lamer.
06:23:05 <oerjan> wait, are we talking about a haskell program _longer_ than a corresponding C program?
06:23:26 <elliott> I could write the equivalent of the C program in as many lines, although it cheats by having a dependency on an implementation header file that I don't
06:23:30 <oerjan> there may have to be some withdrawing of badges here
06:23:39 <elliott> I wrote mine with an eye to generalising to bots that ACTUALLY DO ANY DECISION-MAKING AT ALL:P
06:23:42 <elliott> [asterisk]AT ALL :P
06:23:49 <elliott> Apart from "Did I just bump into a wall? Turn left. Otherwise go forwards."
06:24:03 <oerjan> ah good old Karel the Robot
06:24:15 -!- CakeProphet has joined.
06:24:15 -!- CakeProphet has quit (Changing host).
06:24:15 -!- CakeProphet has joined.
06:24:32 <oerjan> another instance of me reading programming books without access to a computer
06:25:01 <elliott> wonder.hs:25:20:
06:25:01 <elliott> Warning: Defaulting the following constraint(s) to type `Integer'
06:25:01 <elliott> (Integral b0) arising from a use of `^' at wonder.hs:25:20
06:25:01 <elliott> (Num b0) arising from the literal `2' at wonder.hs:25:21
06:25:01 <elliott> In the expression: viewport ^ 2
06:25:02 <elliott> In an equation for `viewSize': viewSize = viewport ^ 2
06:25:07 <elliott> I LITERALLY HAVE "VIEWSIZE :: INT" THE PREVIOUS LINE
06:25:10 <elliott> HOW STUPID CAN YOU BE
06:25:15 <elliott> Oh, it's defaulting the TWO to Integer :P
06:25:42 <NihilistDandy> JERKS
06:25:51 <elliott> NihilistDandy: wat
06:26:00 <NihilistDandy> That
06:26:00 <oerjan> elliott: you must have some humongous warning level :P
06:26:05 <elliott> oerjan: -Wall
06:26:21 <elliott> oerjan: Warning about defaulting is reasonable since Integer is slow :P
06:26:27 <elliott> As is polymorphism
06:26:31 <elliott> viewSize_rZ1 =
06:26:31 <elliott> case $wf1 13 lvl27_r2Tk of ww_s2Kb { __DEFAULT ->
06:26:31 <elliott> I# ww_s2Kb
06:26:31 <elliott> }
06:26:33 <oerjan> istr someone complaining about ^ giving too many warnings before
06:26:34 <elliott> HOW DID YOU NOT CONSTANT FOLD THAT
06:26:36 <NihilistDandy> oerjan: elliott actually set up GHC to give inapplicable warnings. Just to keep him on his toes.
06:26:53 <elliott> viewSize :: Int
06:26:53 <elliott> viewSize = viewport * viewport
06:26:56 <elliott> LET'S SEE IF YOU CAN CONSTANT FOLD THIS
06:27:27 <elliott> There, now viewSize doesn't even exist :P
06:27:34 <elliott> (In Core)
06:28:20 <elliott> oerjan: You'll be pleased to know that I use no less than _two_ unsafe functions in this program.
06:28:33 <elliott> Well, ignoring castPtr/poke/peek I needed to implement Storable for Cell.
06:28:42 <elliott> Wait, make that three.
06:28:44 <elliott> getViewBytes :: Get (Vector Word8)
06:28:44 <elliott> getViewBytes = do
06:28:44 <elliott> bytes <- getBytes viewSize
06:28:44 <elliott> let (ptr, offs, len) = BI.toForeignPtr bytes
06:28:44 <elliott> return $ V.unsafeFromForeignPtr ptr offs len
06:28:45 <elliott> getView :: Get (Vector Cell)
06:28:47 <elliott> getView = V.unsafeCast <$> getViewBytes
06:28:53 <elliott> BI is, of course, Data.ByteString.Internal, an unstable API.
06:29:02 <elliott> Though I somewhat doubt toForeignPtr's interface will change much.
06:29:16 <oerjan> i also recall someone complaining that ghc did not optimize ^2
06:29:22 <elliott> (The cast is safe.)
06:29:24 <oerjan> both of these were years ago
06:29:29 <elliott> oerjan: It might have even been m- oh :P
06:29:34 <elliott> I WASN'T BORN YEARS AGO
06:29:49 <oerjan> not _that_ many years. after i joined this channel, certainly
06:29:59 <Gregor> elliott: Winning condition is unachievable :P
06:30:05 <elliott> Gregor: Good sleeping, eh?
06:30:07 <oerjan> which you did only slightly later.
06:30:10 <elliott> Gregor: Wanna see my Haskell? :P
06:30:16 <Gregor> elliott: Right up until I realized the winning condition was unachievable it was 8-D
06:30:23 <Gregor> elliott: Noooooo!
06:30:25 <elliott> Gregor: Do you even place flags?
06:30:26 <NihilistDandy> elliott: It still pisses me off that I'm older than you. MY LIFE WAS WASTED
06:30:36 <Gregor> elliott: No, but that's not the reason.
06:30:36 <elliott> NihilistDandy: You're probably more accomplished than me.
06:30:39 <elliott> Gregor: X-D
06:30:46 <elliott> Gregor: http://sprunge.us/ZYPI BEHOLD MY WANDER CLONE
06:30:47 <NihilistDandy> elliott: FSOV accomplished :D
06:30:49 <oerjan> also i have a vague idea it was probably on haskell-cafe
06:30:53 <Gregor> elliott: (The implementation is incomplete, but I mean by /spec/ it's unachievable)
06:31:09 <elliott> I'm actually proud of that code, it doesn't really have a single grotty line, even when it's doing something totally unsafe :)
06:31:19 <elliott> Which it only actually does in really one place in the code, but anyway
06:31:45 <elliott> {-# LANGUAGE MultiParamTypeClasses #-}
06:31:45 <elliott> Oh cool, this is actually unneeded
06:32:02 <elliott> Gregor: So why is that?
06:32:05 <monqy> so what does this thing do
06:32:10 -!- zzo38 has joined.
06:32:26 <elliott> monqy: It's a bot for Gregor's neat-o WireWorld-based programming game :P
06:32:31 <elliott> It is a very stupid bot.
06:32:38 <elliott> It is exactly as stupid as the example bot Gregor wrote.
06:32:43 <monqy> ahh
06:32:53 <NihilistDandy> ITT Wireworld :D
06:32:59 <NihilistDandy> *W
06:33:07 <Sgeo_> Ooh, where's this game?
06:33:08 * Sgeo_ wants
06:33:13 <elliott> monqy: Here's his: http://codu.org/projects/rezzo/hg/index.cgi/file/c4149bcda0c3/wander.c
06:33:26 <oerjan> i wonder if anyone has made a game based on the day and night CA
06:33:28 <elliott> Mine is just a port of that thing's logic to a much more generic, efficient, nice, pretty Haskell framework for this :P
06:33:52 <elliott> monqy: Optimised because you have exactly 0.06 seconds to decide what to do each tick.
06:33:59 <elliott> (Well, FSVO exactly :P)
06:34:05 <oerjan> one color per player, each turn it evolves normally and each player gets to manually change the color of one pixel
06:34:05 <NihilistDandy> elliott: You could have just said "Haskell framework" :D
06:34:16 <oerjan> goal is to wipe the other player's color off the board
06:34:16 <elliott> NihilistDandy: Now now, I'm not THAT much of a fanboy :P
06:34:20 <NihilistDandy> lol
06:34:54 <NihilistDandy> I'm midproposal for the UVM CS department, and the year hasn't even started
06:34:59 <elliott> What I do need to add is an additional thread... I basically need to run a "decide what to do thread" that decides what to do each turn and gets killed if it takes too long.
06:35:10 <elliott> That, in turn, has to draw from a longer-term "plan based on world state as merged in from updates"...
06:35:17 <elliott> But wander doesn't need any of that :P
06:35:22 <elliott> <elliott> Gregor: So why is that?
06:35:29 <Gregor> <elliott> Gregor: So why is that? // electrons spread flags, and bases act like permanent flags. To win you have to get an enemy flag next to your base. But that means you have to put an electron between the two, which, having two incompatible options, will simply dissipate.
06:35:38 <elliott> Quick typing
06:35:42 <elliott> (More likely very slow typing)
06:35:46 <oerjan> ooh D&N has a wp page
06:35:56 <NihilistDandy> oerjan: link?
06:36:00 <elliott> oerjan: Darnes & Noble? My first thought.
06:36:05 <elliott> (Yeah, yeah, day and night :P)
06:36:17 <NihilistDandy> elliott: Darnes and Noble is how I feel everytime I leave one of those stores
06:36:21 <elliott> wat
06:36:38 <NihilistDandy> Depressing bookstores
06:36:51 <elliott> I'm going to sit here assuming Gregor thinks my Haskell is amazing.
06:36:54 <NihilistDandy> Also, found the link, oerjan, so don't bother, if you were going to
06:37:23 <elliott> Do it for me oerjan
06:37:26 <oerjan> haskell is always amazing
06:37:35 <oerjan> http://en.wikipedia.org/wiki/Day_%26_Night
06:37:54 <elliott> oerjan: I can't spot a pun... IS THIS A FANBOY STATEMENT FROM OERJAN???
06:37:56 <NihilistDandy> I want to invent an anti-gun
06:38:07 <oerjan> yep, i love day and night
06:38:21 <NihilistDandy> It's pretty awesome
06:38:22 <elliott> I meant re haskell
06:38:25 <elliott> Day & Night is prettier than GoL, hough
06:38:25 <elliott> though
06:38:31 <elliott> I wonder if it is TC?
06:38:34 <oerjan> oh that. well i suppose.
06:39:07 <oerjan> it's certainly complicated enough to be TC
06:39:11 <elliott> indeed
06:39:15 <elliott> but so are a lot of things :)
06:39:23 <elliott> i guess those things are usually tc though :/
06:39:34 <NihilistDandy> ARE HUMANS TURING COMPLETE. DISCUSS
06:39:39 <elliott> http://upload.wikimedia.org/wikipedia/en/8/8f/Ladder_burst.gif this is pretty
06:39:43 <NihilistDandy> DISPLAY YOUR FLESHY BRAINS
06:39:49 <elliott> really pretty
06:39:56 <oerjan> finite memory, says some people
06:41:04 <oerjan> elliott: what CA is that
06:41:06 <elliott> oerjan: life without death
06:41:10 <oerjan> aha
06:42:07 <elliott> oerjan: did you admire my beautiful haskell :{
06:42:12 <oerjan> er no
06:43:22 <elliott> SUCH A TERBL PERSON
06:43:36 <elliott> or do you mean it was not beautiful
06:44:27 <monqy> some of the optimization sads me a bit
06:44:28 <NihilistDandy> elliott: TOO MANY POINTS
06:44:35 <oerjan> iz ok. btw you don't need to repeat an identical pattern for a new guard.
06:44:36 <NihilistDandy> MOAR @PL
06:45:03 <Patashu> if you want to play with unusual cellular automata you can use MCell
06:45:07 <elliott> Gregor: So is there an obvious fix to the spec, or?
06:45:11 <elliott> oerjan: eh?
06:45:11 <oerjan> i suppose it doesn't matter when it's a single character
06:45:13 <monqy> oerjan: did nested guards finally happen
06:45:21 <elliott> oerjan: oh hm, like I can just start it with |?
06:45:27 <oerjan> yeah
06:45:43 <monqy> oh
06:45:46 <oerjan> monqy: no, has always been that way
06:45:50 <elliott> oerjan: that feels really weird... local bindings propagating to an AST node not included within that binding structure
06:45:53 <monqy> I was thinking of something else
06:46:01 <elliott> I think I'll keep the "c" because that makes me feel happier than that thing which is disturbing?
06:46:01 <elliott> hmm
06:46:07 <CakeProphet> This is the busiest IRC channel I frequent.
06:46:07 <elliott> well I guess it kind of is one pattern with a lot of guards
06:46:09 <elliott> but
06:46:09 <elliott> yeah
06:46:13 <elliott> CakeProphet: not without me >:D
06:46:20 <NihilistDandy> CakeProphet: Get all up in #haskell
06:46:23 <monqy> I was thinking pattern in the sense of not haskell paterns but more like patterns occurring throughout the code
06:46:28 <NihilistDandy> But avoid #haskell-in-depth
06:46:30 <NihilistDandy> No one talks
06:46:36 <monqy> and then I think I misread something
06:47:00 <CakeProphet> #haskell is okay
06:47:06 <CakeProphet> but, no real reason to stay there.
06:47:09 <pikhq_> "The solution, obviously, was to hurry up and become God." This line makes me far too happy.
06:47:10 <oerjan> elliott: but the guards _are_ in the scope of the same pattern
06:47:51 <elliott> oerjan: yeah i know
06:47:52 <elliott> i just
06:47:55 <elliott> i mean
06:47:59 <elliott> the indentation would push it that far anyway :D
06:48:08 <elliott> <NihilistDandy> CakeProphet: Get all up in #haskell
06:48:13 <oerjan> yeah
06:48:16 <elliott> NihilistDandy: it's much less homely/useful now that it's so busy :(
06:48:30 <NihilistDandy> elliott: Well, sure. But I still have fun
06:48:34 <CakeProphet> yes #haskell wasn't very busy when I was there.
06:48:41 <NihilistDandy> edwardk is enough to make me happy nearly daily
06:49:14 <NihilistDandy> I wouldn't even know about Haskell were it not for Lisp
06:49:21 <NihilistDandy> Specifically, Land of LIsp
06:49:22 <NihilistDandy> *Lisp
06:49:49 <oerjan> monqy: i do recall there was some kind of proposal for nesting guards and/or patterns
06:49:51 <CakeProphet> I like how I'm getting paid to move bytes around.
06:50:04 <CakeProphet> strategically.
06:50:07 <elliott> CakeProphet: everyone is just paid to move atoms around.
06:50:08 <monqy> I'd also like multiple-clause lambda
06:50:09 <elliott> strategically.
06:50:11 <oerjan> the idea was that you should be able to nest without committing to the branch you nested into
06:50:30 <elliott> NihilistDandy: edwardk is nice... you only knew haskell since land of lisp?
06:50:30 <CakeProphet> elliott: good point
06:50:41 <elliott> i really didn't like that guy's short thing about lisp and haskell
06:50:48 <elliott> i mean you can say it's in jest but it still betrays your biases
06:50:54 <NihilistDandy> elliott: That was the first place I heard of it. Then I dropped Lisp and Scheme like syphilitic whores
06:51:04 <Sgeo_> http://www.fanfiction.net/s/5782108/11/Harry_Potter_and_the_Methods_of_Rationality
06:51:08 <Sgeo_> Omakes
06:51:08 <elliott> Rude, I like Scheme.
06:51:12 <NihilistDandy> lol
06:51:22 <NihilistDandy> So do I (mostly Racket)
06:51:29 <NihilistDandy> But I'm still almost all Haskell, now
06:51:31 <elliott> Sgeo_ has finally got to the point where it's impossible to tell if he's confused or just stupid.
06:51:40 <Sgeo_> elliott, what?
06:51:46 <elliott> <Sgeo_> http://www.fanfiction.net/s/5782108/11/Harry_Potter_and_the_Methods_of_Rationality
06:51:46 <elliott> <Sgeo_> Omakes
06:51:53 <CakeProphet> I find it prudent to keep track of less beautiful languages for the purposes of making money.
06:51:56 <CakeProphet> it's not as bad as it sounds.
06:52:03 <monqy> http://www.fanfiction.net/u/1730364/Hans_von_Hozel best fanfic author imo
06:52:11 <NihilistDandy> elliott: Scheme was my first exposure to FP, and I do love it. But Haskell's just nicer on a personal level
06:52:18 <elliott> CakeProphet: Knowing the more beautiful languages is a much scarcer skill.
06:52:22 <monqy> hans von hozel's fanfics are truly amazing
06:52:38 <elliott> CakeProphet: And not one generally called upon to do tedious busywork like you're enjoying.
06:52:39 <elliott> Just sayin'.
06:52:40 <Sgeo_> elliott, ....what?
06:52:48 <elliott> Sgeo_: you continue to push the boundaries.
06:53:10 <Sgeo_> I'm confused as to what, exactly, is wrong with what I said.
06:53:24 <NihilistDandy> CakeProphet: I know C, a little C++, and some x86. I can't even touch Java
06:53:27 <NihilistDandy> It hurts me
06:53:32 <itidus20> J Rowling's How to Build an Empire Writing a Few Magic Novels
06:54:02 <CakeProphet> NihilistDandy: I've been working in C# for the past fews days, but now I'm suddenly in Python.
06:54:04 <NihilistDandy> Also Perl, but I don't really consider that a programming language so much as a really heavy implementatino of awk
06:54:06 <elliott> monqy: how amazing are these fan fictions i must know
06:54:07 <CakeProphet> a more familiar setting.
06:54:13 <CakeProphet> NihilistDandy: ....lol
06:54:17 <NihilistDandy> *implementation
06:54:21 <elliott> `addquote <NihilistDandy> Also Perl, but I don't really consider that a programming language so much as a really heavy implementatino of awk
06:54:23 <HackEgo> 611) <NihilistDandy> Also Perl, but I don't really consider that a programming language so much as a really heavy implementatino of awk
06:54:26 <elliott> 56. We are the Pirates reviews
06:54:26 <elliott> Pirates make their sail in to LazyTown!
06:54:26 <elliott> Lazytown - Rated: K - English - Crime/Suspense - Chapters: 1 - Words: 199 - Reviews: 8 - Published: 5-17-09 - Stephanie & Sportacus - Complete
06:54:26 <elliott> 57. Eurovision Song Contest 2009 » reviews
06:54:26 <elliott> And of course, that the ending can only make its finish when the contest actually happens.
06:54:28 <monqy> elliott: if i recall correctly, so amazing
06:54:28 <elliott> TV X-overs - Rated: K - English - Drama/Suspense - Chapters: 11 - Words: 1,673 - Reviews: 9 - Updated: 5-17-09 - Published: 5-8-09
06:54:28 <NihilistDandy> Aww, shit
06:54:31 <elliott> monqy: i cant decide which to read
06:54:31 -!- Patashu has quit (Ping timeout: 246 seconds).
06:54:36 <NihilistDandy> elliott: Can you please fix my spelling? :D
06:54:45 <CakeProphet> NihilistDandy: elliott has this thing about Perl, you see...
06:54:46 <elliott> NihilistDandy: Sorry, but I cannot misrepresent lines.
06:54:55 <elliott> There are plenty of typos in the database; you will just have to suffer in unison.
06:54:56 <NihilistDandy> I asterisked it :P
06:55:06 <elliott> NihilistDandy: I AM THE ARCHIVIST. YOU SHALL NOT DISTORT THE RECORD.
06:55:11 <elliott> That R in Record is capitalised.
06:55:19 <NihilistDandy> WE HAVE ALWAYS BEEN AT WAR WITH EURASIA
06:55:33 <elliott> http://www.fanfiction.net/s/5067667/1/We_are_the_Pirates
06:55:34 <elliott> wow
06:55:34 <NihilistDandy> THE rECORD
06:55:38 <elliott> "Maybe we should have not made our stealings their detection!" shout Captain Pirate, as the nuke to collide LazyTown and a boom.
06:55:46 <NihilistDandy> lol
06:55:59 <pikhq_> VVE HAVE ALVVAYS BEEN AT VVAR VVITH EVRASIA.
06:56:02 <elliott> The people were all stuck on boats because the Snails owned the world now. --http://www.fanfiction.net/s/5048176/1/Maple_Story
06:56:09 <elliott> monqy: this is the bes tfixtion
06:56:11 <elliott> fiction
06:56:16 <elliott> 80. Danube to the Stars reviews
06:56:16 <elliott> The Englands are tired at being confuse with America!
06:56:16 <elliott> Allo Allo! - Rated: K - English - Sci-Fi - Chapters: 1 - Words: 284 - Reviews: 7 - Published: 5-7-09 - Complete
06:56:19 <NihilistDandy> CakeProphet: What is elliott's thing about Perl, anyway/
06:56:20 <NihilistDandy> *?
06:56:23 <elliott> allo allo fanfiction
06:56:45 <pikhq_> elliott: http://www.fanfiction.net/s/5782108/1/Harry_Potter_and_the_Methods_of_Rationality I've actually been finding this utterly amusing.
06:56:54 <pikhq_> Perhaps a bit... Too much.
06:57:09 <NihilistDandy> pikhq_: Was this the channel where I first saw that mentioned, or was it #jesus?
06:57:14 <pikhq_> Probably here.
06:57:26 <pikhq_> I find it a bit too easy to excuse an 11 year old genius polymath.
06:57:30 <pikhq_> As a protagonist.
06:57:34 <elliott> The Methods of Rationality has potential in concept but it's really terrible.
06:57:53 <pikhq_> Well, yes, there's many obvious flaws in the writing.
06:57:58 <CakeProphet> NihilistDandy: his enjoyment of Perl bashing, I suppose.
06:57:59 <pikhq_> The concept is just amusing the hell out of me.
06:58:06 <NihilistDandy> My Immortal is the only fanfiction that matters, ever
06:58:13 <NihilistDandy> Beyblade Yaoi be damned!
06:58:14 <monqy> my immortal is good yes
06:58:26 <elliott> If anyone would like a summary: Harry Potter is a brat, but Eliezer Yudkowsky -- sorry, I mean Eliezer Potter -- is always right. This is because he uses Logic while everyone uses Stupid. Except when he's wrong!!! But even then, he's right.
06:58:43 <monqy> elliott: that sounds awful
06:58:45 <pikhq_> In case you hadn't noticed, I am willing to excuse a hell of a lot when the ideas entertain me.
06:58:47 <elliott> pikhq_: But if you have a thing for self-insert wish fulfilment fantasy fan fiction...
06:58:50 <elliott> Be my guest.
06:59:01 <NihilistDandy> [02:59:58] <elliott> pikhq_: But if you have a thing for self-insert wish fulfilment fantasy fan fiction...
06:59:14 <NihilistDandy> That's about five words too long
06:59:17 <pikhq_> NihilistDandy: Like I said, many obvious flaws.
06:59:20 <CakeProphet> NihilistDandy: hey our timezones match imagine that.
06:59:27 <pikhq_> elliott, rather.
06:59:33 <monqy> im going back to hans von hozel ok
06:59:38 <NihilistDandy> CakeProphet: Yeah, the whole GMT -5:00. Nobody lives there. :P
06:59:48 <CakeProphet> nope.
06:59:55 <NihilistDandy> I'm actually a ghost.
07:00:06 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
07:00:09 <elliott> pikhq_: The problem is that the purpose of the story is basically to recruit people into the Great Rationalist Yudkowsky Worshipping Circlejerk, and Harry is the vector for this.
07:00:15 <elliott> pikhq_: But this means that Harry can never actually fail, ever.
07:00:16 <CakeProphet> I am an elaborate timepiece.
07:00:28 <pikhq_> elliott: Well, yeah. Yudkowsky does enjoy his circlejerking.
07:00:30 <NihilistDandy> TockProphet
07:00:32 <elliott> He's the embodiment of rationality, and so it is LITERALLY IMPOSSIBLE for him to ever fail, because that would not match the worldview the thing is trying to portray.
07:00:44 <pikhq_> elliott: That doesn't mean I can't be entertained by his thoughts from time to time.
07:00:45 <elliott> So there can never actually be any real conflict, so it's pretty much DOA as fiction.
07:01:01 <monqy> i'd be too dead to enjoy any of it
07:01:01 <NihilistDandy> Logic Sue
07:01:22 <pikhq_> elliott: You needn't worry, I'm not about to go out joining the Yudkowsky circlejerk.
07:01:43 <NihilistDandy> But, but
07:01:46 <NihilistDandy> my erection
07:01:51 <elliott> Sure. I gave up on MOR basically when it became clear that Eliezer wasn't going to stop pushing his terrible view of social interaction.
07:01:53 <NihilistDandy> It's so…
07:01:54 <NihilistDandy> rational
07:01:55 <pikhq_> elliott: For a rationalist, he seems exceptionally egotistic.
07:02:18 <elliott> ("The only thing anyone cares about ever is status; therefore everyone should master portraying status and you will WIN. This applies UNIVERSALLY.")
07:02:34 <pikhq_> In fact, I'd say his ego is the largest I can think of.
07:02:36 <elliott> I'm pretty sure this is also the mentality that created the hilarious "pickup artist" bullshit...
07:02:42 <CakeProphet> dude check out my cool stuff.
07:02:51 <CakeProphet> I am totally not a douchebag.
07:02:58 <pikhq_> Which, TBH, is a pretty major flaw in someone who claims to engage in rational thought often. :P
07:03:43 <pikhq_> But, anyways, I'm enjoying his wank-in-text-form, perhaps a bit too much.
07:03:56 <NihilistDandy> elliott: I knew kids like that in school
07:03:59 <NihilistDandy> It was painful
07:04:03 <CakeProphet> I can't say that many of my thoughts correspond to ratios very much.
07:04:13 <pikhq_> CakeProphet: Smartass.
07:04:29 <NihilistDandy> π/1
07:04:39 <NihilistDandy> Bam, π is a rational number
07:04:40 <pikhq_> NihilistDandy: Smartass².
07:04:40 <elliott> NihilistDandy: It's pretty much the view most commonly picked up by being an cynical nerd who's bad at social interaction.
07:04:41 <NihilistDandy> FUCK YOU MATH
07:04:58 <NihilistDandy> elliott: Exactly. To a fucking t
07:05:00 <NihilistDandy> *tee
07:05:00 <elliott> Cynicism is pretty much the source of everything unbearable except the things it isn't the source of.
07:05:05 <elliott> Helpful statements from elliott.
07:05:21 <pikhq_> elliott: Hmm. I'm a cynical nerd who's bad at social interaction, and I just figure that there's something I'm missing here.
07:05:27 <NihilistDandy> elliott: Smart nerds just pick up drinking
07:05:38 <NihilistDandy> Also, pikhq_
07:05:47 <elliott> pikhq_: Try not being a cynic.
07:05:57 <pikhq_> I do, but it ain't easy.
07:06:05 <pikhq_> Many people seem to try hard to justify cynicism.
07:06:24 <elliott> "Young people who pretend to be wise to the ways of the world are mostly just cynics. Cynicism masquerades as wisdom, but it is the farthest thing from it. Because cynics don’t learn anything. Because cynicism is a self-imposed blindness, a rejection of the world because we are afraid it will hurt us or disappoint us." --STEPHEN COLBERT BEYOTCHES
07:06:32 <Gregor> elliott: I can't think of how to fix my flags :P
07:06:32 <elliott> (I think this is how you win arguments on the Internet; quoting Stephen Colbert.)
07:06:41 <elliott> Gregor: What's the problem again? I forgot completely :P
07:06:51 <Gregor> <Gregor> <elliott> Gregor: So why is that? // electrons spread flags, and bases act like permanent flags. To win you have to get an enemy flag next to your base. But that means you have to put an electron between the two, which, having two incompatible options, will simply dissipate.
07:07:03 <CakeProphet> elliott: yes I've read from arguments on the internet that this is a good approach
07:07:13 <elliott> Define "electrons spread flags"? If an electron has a flag behind it, it copies a flag as it move?
07:07:14 <elliott> moves?
07:07:27 <Gregor> elliott: I explained these rules :P
07:07:33 <pikhq_> Well. Actually, not sure that "cynicism" is quite the right term for what's a much more simple "fuck most everything, everything is wrong and could be better".
07:07:36 <Gregor> elliott: A flag moves if there's an electron next to it.
07:07:41 <elliott> Gregor: OK, rather than making it dissipate into space, just have it dissipate INTO A FLAG :P
07:07:52 <pikhq_> In certain contexts that could even be interpreted as optimisim, even.
07:07:54 <elliott> pikhq_: The problem is when you apply it to people.
07:07:54 <Gregor> elliott: So, to get a flag from point A to point B, you have to continuously send a sequence of electrons from B to A.
07:08:02 <pikhq_> And that was one two many "even"s.
07:08:11 <elliott> Like, sure, everything sucks, but "people suck" doesn't explain that and it isn't helpful in any way.
07:08:11 <NihilistDandy> CakeProphet: s/arguments on the internet/any reddit thread ever/
07:08:15 <Gregor> elliott: That doesn't make any sense, since the rules for the base and flag conflict.
07:08:15 <pikhq_> elliott: Hrm. I... Generally don't, actually.
07:08:39 <NihilistDandy> We should all be nihilists
07:08:42 <elliott> Gregor: Hmm...
07:08:44 <NihilistDandy> Because I'm great
07:08:51 <elliott> Gregor: Are you sure? :P
07:08:54 <Gregor> NihilistDandy: Also dandies?
07:08:56 <NihilistDandy> Assuming I exist, which is a big if
07:08:58 <pikhq_> Very few people actually intend to do things that are wrong, evil, stupid, etc. Quite a few people act on misinformation, though.
07:09:03 <NihilistDandy> Gregor: Especially dandies
07:09:07 <Gregor> elliott: Bases turn into flags ... that's how you get flags in the first place.
07:09:18 <elliott> Oh it is? Okay :P
07:09:22 <NihilistDandy> pikhq_: Being actively evil is kinda fun, though
07:09:23 <elliott> I was just thinking of bases as FLAG-KILLERS.
07:09:23 <Gregor> elliott: That is, they behave like a flag, except they don't disappear when there's an electron next to them.
07:09:30 <pikhq_> NihilistDandy: Meh.
07:09:41 <elliott> Gregor: Hmm... flags are basically spreading currents, aren't they?
07:09:45 <pikhq_> NihilistDandy: Fundamentally uninteresting, IME.
07:09:48 <elliott> You could just make them literally that and drop the electrons.
07:09:54 <Gregor> ... no.
07:09:55 <elliott> So you could just wire up opponent's base to your base.
07:09:57 <elliott> OK :P
07:10:13 <Gregor> A) Wiring an opponents base to your base = flags spreading in both directions, lol
07:10:14 <pikhq_> I mean, really, it'd be so easy and *boring* to be evil.
07:10:20 <NihilistDandy> pikhq_: You just don't know any really evil people. Cynical douche != villain
07:10:21 <Gregor> B) Remember the whole conversation about flags moving under lightspeed?
07:10:38 <elliott> Yeah >_>
07:10:50 <elliott> I'm not sure what to do, but the basic model seems like it should be right...
07:11:13 <CakeProphet> the flag would just be a special, slow-moving electron
07:11:21 <CakeProphet> I think.
07:11:32 <CakeProphet> that is generated from...uh, the flag.
07:11:33 <pikhq_> NihilistDandy: Start assassinating a single, random individual with a sniper rifle, move on after each such instance. Start leaving notes in conspicuous places detailing this, threatening to not stop unless my goals are met. Simple, easy, evil, and fucking *boring as all hell*.
07:11:41 <Gregor> The rules as stands: Flag with no electrons -> flag. Electron next to flag -> flag. Electron next to base -> flag. Electron otherwise or next to conflicting flags/bases -> tail. Flag next to opponent's base -> conductor + lose.
07:11:59 <NihilistDandy> pikhq_: Murder is boring evil. Terrorism is a dreadful bore.
07:12:10 <NihilistDandy> Real evil is much more subtle.
07:12:19 <NihilistDandy> TV evil is boring.
07:12:32 <pikhq_> Real evil is also a problem space I find even less interesting.
07:12:32 <Gregor> ANOTHER THUNDERSTORM, INDIANA?
07:12:33 <Gregor> WTF
07:12:39 <elliott> Gregor: Hmm...
07:12:40 <Gregor> That's three today.
07:12:52 <elliott> Gregor: It FEELS like it should be a really simple fix :P
07:12:57 <elliott> HELPFUL
07:13:03 <CakeProphet> Gregor: I think it would make more sense if flag simply generated a special flag electron when connected to a condcutor.
07:13:17 <CakeProphet> ....please fix my horrible typos.
07:13:20 <CakeProphet> kthx
07:13:22 <Gregor> CakeProphet: But that means that when you connect your base to the opponent's, you now have flags moving in both directions.
07:13:25 <Gregor> Which is much worse.
07:13:33 <elliott> Gregor: Then it goes onto the FLAG FIGHT STATE
07:13:34 <elliott> STAGE
07:13:39 <elliott> [GAME MUSIC]
07:13:39 <pikhq_> Clearly, I am not cut out for this "evil mastermind" business, since I can't even consider it interesting enough to think about how one would *hypothetically* go about it for more than a few seconds. :P
07:14:04 <CakeProphet> Gregor: not if you wait to connect to your base.
07:14:07 <CakeProphet> then you win.
07:14:26 <Gregor> CakeProphet: No, then your base poops a flag.
07:14:36 <CakeProphet> oh well you already won by then
07:15:00 <Gregor> a_.B -> a.B -> aAB
07:15:04 <Gregor> No, you haven't won.
07:15:11 <elliott> What's the _
07:15:14 <Gregor> Space
07:15:14 <elliott> Space?
07:15:41 <CakeProphet> yeah that notation doesn't mean anything to me.
07:15:47 <elliott> Wait, flags can... change space into wire?
07:15:49 <elliott> Gregor?
07:15:57 <Gregor> CakeProphet: a is a base, A and B are flags, . is a conductor, _ is space.
07:16:12 <Gregor> elliott: That was being done by an agent. I'm just showing what's wrong with CakeProphet's model.
07:16:21 <oerjan> `addquote <Gregor> ANOTHER THUNDERSTORM, INDIANA? <Gregor> That's three today. <elliott> Gregor: It FEELS like it should be a really simple fix :P
07:16:25 <HackEgo> 612) <Gregor> ANOTHER THUNDERSTORM, INDIANA? <Gregor> That's three today. <elliott> Gregor: It FEELS like it should be a really simple fix :P
07:17:19 <CakeProphet> Gregor: so your saying that your flag electron prevents their flag electron from ever reaching your base?
07:17:39 <CakeProphet> couldn't you just like, make the rules work so that it doesn't do that? :P
07:18:06 <Gregor> CakeProphet: Even if you did, it would take such ridiculous precision timing to do it right that I find it grotty at best.
07:18:17 <Gregor> (Which is the same answer to the same fix for the current system)
07:19:52 <elliott> Gregor: Is this going to require a major rework of some sort?
07:20:30 <elliott> Gregor: Here's a random idea: Destroying a base creates a flag-destroying virus that spreads. You have to destroy all flag cells of your opponent to win.
07:20:38 <elliott> So you have to take out the base and then get any on disconnected wires.
07:20:39 <elliott> I dunno.
07:21:46 <elliott> Gregor is now ignoring me and coming up with something better :P
07:22:25 <CakeProphet> Gregor: I think it would just make sense if opposite flag electrons didn't interfere with one another, and then it just becomes a matter of who got their base connected last.
07:29:13 <Gregor> elliott: It probably won't require a major rework. It's probably too easy to just glut the substrate with flags and then block off your own base in that system ... maybe.
07:29:21 <Gregor> CakeProphet: This is a CA. That is not how CAs work :P
07:29:46 <CakeProphet> I don't see why not...
07:30:06 <Gregor> ...A.B... <-- lol what do you do here
07:30:29 <monqy> ....C.... presumably
07:30:33 <elliott> Gregor: Oh yeah, I'd rather you just quickly patch up the current system, I was just giving an option if that's not possible :P
07:31:16 <Gregor> I'm thinking maybe "base" and "flag geyser" need to be distinct.
07:31:47 <elliott> Bases spit out geysers :P
07:32:03 <Gregor> Bases spit out nothing, they're just for swallowing opponent flags :P
07:33:21 <CakeProphet> Gregor: wouldn't it be easy if they just existed in the same place for a frame and then continued on?
07:33:34 <CakeProphet> I'm sure you could make it sound more formal.
07:34:00 <elliott> CAs don't work like that.
07:34:14 <CakeProphet> you couldn't make one that works like that?
07:34:20 <CakeProphet> I think you could.
07:34:22 <elliott> Not without additional junk states.
07:34:27 <CakeProphet> so be it.
07:34:39 <elliott> How about that's terrible.
07:34:48 <elliott> And would cause a HUGE explosion of junk states for clients to deal with.
07:35:03 <Gregor> CakeProphet: Also note that electrons are worthless in that system.
07:35:04 <CakeProphet> I can think of two junk states.
07:35:25 <CakeProphet> Gregor: ah, good point.
07:35:28 <elliott> For each A/B
07:35:34 <Gregor> CakeProphet: Every cell has 2^players states to accommodate every possible flag combination.
07:35:36 <elliott> There's nine warriors
07:35:50 <elliott> Gregor: Not EVERY cell :P
07:36:07 <elliott> Gregor: BTW, you're kind of fucked wrt more players... well, I guess you could use the few characters after 9
07:36:18 <elliott> Oh well, breaking protocol changes rock
07:36:21 <Gregor> elliott: I don't care about supporting more than *10.
07:36:30 <CakeProphet> make up some new formalism. throw some operators in, everything will be fine. >_>
07:36:38 <elliott> Gregor: I can imagine a really packed grid being fun...
07:36:48 <Gregor> COME ON PEOPLE
07:36:55 <Gregor> SOLVE OUR WIN-CONDITION PROBLEM
07:37:10 <elliott> Gregor: Base and flag geyser
07:37:12 <elliott> Money plox
07:37:19 <Gregor> elliott: That was my solution :P
07:37:59 <Gregor> Also I just noticed that you can protect your base by glutting it with your own flags X-D
07:38:00 <CakeProphet> which one does the agent start at?
07:38:09 <elliott> Gregor: Flags can be destroyed
07:38:16 <elliott> Gregor: What if your flags... were the bases.
07:38:18 <Gregor> CakeProphet: The agent in any situation starts in otherwise-empty space around them, not on either.
07:38:41 <CakeProphet> do they get to know where they are?
07:38:41 <elliott> Gregor: Note that you're going to have at least one ambiguous case because DRAWS ARE THINGS THAT EXIST
07:38:41 <Gregor> elliott: What if you destroy every flag?
07:38:47 <elliott> Gregor: Then you get more from the flag geyser
07:39:04 <Gregor> CakeProphet: Of course you get to know where your own base and flaggey are...
07:39:22 <Gregor> elliott: OHHHHHH, I see what you're saying.
07:39:23 <CakeProphet> lolflaggey
07:39:33 <Gregor> elliott: But now you're saying that touching two flags = win ... but win for who?
07:39:38 <elliott> Gregor: <elliott> Gregor: Note that you're going to have at least one ambiguous case because DRAWS ARE THINGS THAT EXIST
07:39:41 <elliott> Hmm
07:39:43 <elliott> I see what you mean :P
07:39:49 <Gregor> Draws are the only circumstance here :P
07:39:56 <elliott> Gregor: OK, electron hitting a flag turns it into a DEATH FLAG.
07:40:01 <elliott> DEATH FLAG and flag = win for flag.
07:40:02 <elliott> Q.E.D.
07:40:31 <CakeProphet> that could make for some interesting strategies.
07:40:51 <elliott> Gregor: ...so anyway, unrelated thing but something I keep messing up mentally: You remembered to include the row/column the agent is on when sending the view, right?
07:41:23 <elliott> Otherwise you... can't see things next to you. Which I guess is realistic in a sense, but at the same time, it's elegant to start next to your base and flag or whatever, rather than directly in front of them so you can see them :P
07:41:42 <CakeProphet> I like the flag/death-flag rules.
07:41:47 <Gregor> elliott: Yes, it's the bottommost row.
07:42:22 <CakeProphet> as it would mean that the strategic placement of electrons is important
07:42:32 <CakeProphet> whereas before they were irrelevant.
07:42:44 <elliott> Gregor: Oh dear, CakeProphet likes my joke... is it any good? :P
07:42:51 <Gregor> elliott: No :P
07:43:12 <elliott> Gregor: :(
07:43:21 <CakeProphet> why not?
07:43:24 <Gregor> It's just another "glut everything to win"
07:43:34 <CakeProphet> I have no idea what the word glut means.
07:43:37 <Gregor> Protect your flag and barf electrons everywhere.
07:43:44 <Gregor> `define glut
07:43:46 <HackEgo> ​/hackenv/bin/define: line 10: lynx: command not found
07:43:51 <Gregor> HackEgo: You're not helpful :P
07:44:07 <Gregor> Verb: Supply or fill to excess: "the factories for recycling paper are glutted".
07:44:07 <elliott> Gregor: Nonono, because you have to touch the special death flag.
07:44:10 <elliott> With your flag.
07:44:18 <elliott> And death flags turn into flags as soon as they move.
07:44:26 <CakeProphet> yeah so the idea is that you have to avoid electrons.
07:44:31 <Gregor> elliott: Now that part you didn't mention.
07:44:33 -!- zzo38 has quit (Remote host closed the connection).
07:44:38 <CakeProphet> while making sure your oponents flag gets electrified.
07:44:42 <Gregor> So how do flags move?
07:44:48 <Gregor> (In this setting)
07:45:32 <CakeProphet> same as before I think?
07:45:38 <elliott> Gregor: Same way as usual.
07:45:46 <Gregor> Usual is that electrons move them.
07:45:52 <Gregor> So that means they're all ooooh deathflags.
07:45:54 <elliott> Oh, right
07:45:59 <elliott> Gregor: They just spread along wire naturally, I guess :)
07:46:04 <CakeProphet> not if they just move like electrons but aren't electrons.
07:46:08 <CakeProphet> right.
07:46:21 <elliott> Gregor: OR, electrons move them, but if an electron would push it OFF A WIRE, it becomes a deathflag.
07:46:26 <Gregor> elliott: Then you could never catch them with an electron AND get your flag to them, lightspeed restriction.
07:46:35 <Gregor> elliott: Electrons pull, they don't push.
07:46:54 <elliott> Yeah, but they could pull them onto non-wire :P
07:47:11 <Gregor> How could they do that? They're electrons, they're on a wire by definition.
07:47:51 <CakeProphet> I like the idea that the flag is a death flag permanently (well, until it dies...)
07:47:52 <elliott> True >_>
07:48:01 <elliott> Gregor: Well, OK, to despecify slightly:
07:48:19 <elliott> Gregor: Flags get turned into deathflags [somehow]. Deathflags turn into flags when they move. Flags move as before, by electrons. Flag touching deathflag = win for flag.
07:48:27 <elliott> All we need now is somehow :P
07:48:27 <itidus20> have you guys played super bomberman games?
07:49:07 <CakeProphet> what's wrong with a flag becoming a death flag permanently when it touches an electron?
07:49:24 <Gregor> elliott: Errr ... observation ... that doesn't solve the VERY FIRST PROBLEM, it just makes both sides motive.
07:49:48 <elliott> Gregor: Eh?
07:50:14 <Gregor> elliott: .F*D. <-- lol that * should turn into both flags
07:50:28 <Gregor> CakeProphet: How do those flags move?
07:50:35 <CakeProphet> same as always.
07:50:44 <CakeProphet> er, I mean to say
07:50:44 <Gregor> FLAGS - MOVE - BY - ELECTRONS >_<
07:50:45 <elliott> Gregor: So they fizzle like electrons do when giving up
07:50:55 <CakeProphet> flags are just electron-like here.
07:51:07 <Gregor> elliott: Then you can't win.
07:51:30 <elliott> Gregor: Nope, because there's an electron below that asterisk
07:51:45 <CakeProphet> maybe death flag + your flag = your WIN flag
07:51:50 <Gregor> elliott: That asterisk is an electron ...
07:51:51 <CakeProphet> which you must then bring back to your base.
07:52:19 <Gregor> CakeProphet: Frankly I'm not a fan of any system where flags move like electrons ...
07:52:34 <Gregor> They're too fast, you can't meaningfully react to their presence if they're lightspeed.
07:52:35 <CakeProphet> -shrug- okay.
07:52:47 <CakeProphet> they could always be slower.
07:52:53 <CakeProphet> YOU get to make the rules, you know.
07:53:01 <Gregor> I also don't like state hell :P
07:53:06 <elliott> <Gregor> elliott: That asterisk is an electron ...
07:53:13 <elliott> Hmmm
07:53:27 <elliott> Gregor: OK, death flags turn into slightly-less-death-flags after a tick, and then turn into normal flags after that :D
07:53:34 <Gregor> X_X
07:53:40 <elliott> I feel an infinite regress.
07:53:47 <elliott> Gregor: OK, so first we have infinite states...
07:54:08 <Gregor> I'm likin' my base-and-geyser system a hell of a lot more than any of these nutty things :P
07:54:17 <elliott> Gregor: I thought there was something wrong with that
07:54:26 <elliott> Didn't you used to have geysers, I hg-nosied
07:54:39 <Gregor> elliott: I just used that terminology instead of "base" before.
07:54:44 <elliott> http://hpaste.org/50489 jesus christ
07:54:45 * CakeProphet likes the win-flag system that he is imagining, though he's not sure that everyone else is imagining the same thing.
07:55:11 <Gregor> elliott: I stopped reading after pokIntElement
07:55:40 <elliott> Gregor: DID YOU READ MY AWESOME HASKELL WARRIOR THOUGH
07:55:47 <Gregor> elliott: Nope 8-D
07:55:51 <elliott> AWESOMÉ
07:55:55 <elliott> Gregor: Not even glance?? :'(
07:55:59 <elliott> WILL YOU IF I LINK IT
07:56:00 <Gregor> I glanced :P
07:56:11 <CakeProphet> Gregor: and there's not state-hell if you just make it so that states can be superimposed
07:56:20 <elliott> CAS
07:56:20 <elliott> DO
07:56:21 <elliott> NOT
07:56:21 <elliott> WORK
07:56:22 <elliott> THAT
07:56:22 <elliott> WAY
07:56:22 <Gregor> CakeProphet: Superimposing states IS state hell >_<
07:56:33 <monqy> elliott: that hpaste what
07:57:18 <monqy> who would write that
07:57:52 <monqy> and these annotations
07:58:05 <CakeProphet> whatever.
07:58:40 <monqy> i'm guessing that one's core, but what's that one supposed to be? I've never seen llvm so I guess it oculd be that
07:58:54 <elliott> Cmm
07:58:58 <elliott> GHC's dialect of C--
07:58:59 <monqy> oh Cmm
07:59:09 <elliott> i gotta hand it to them, they're dedicated :)
07:59:21 <elliott> makes me think I could truly write that malloc without consing
07:59:23 <elliott> in haskell
07:59:26 <monqy> is Cmm the only flavour of C-- still alive?
07:59:38 <Gregor> Quite probably :P
07:59:55 <elliott> Yes.
07:59:59 <pikhq_> elliott: ... What.
08:00:03 <elliott> It's also probably the only flavour that was ever alive, ever.
08:00:05 -!- myndzi has quit (Read error: Connection reset by peer).
08:00:10 <pikhq_> elliott: You officially frighten me.
08:00:13 <elliott> pikhq_: That's not me.
08:00:18 <pikhq_> elliott: Oh, dur.
08:00:26 <pikhq_> elliott: sannysanoff officially frightens me.
08:00:47 <Gregor> Well, now that that storm's passed, back to trying to sleep.
08:00:54 <elliott> pikhq_: Hey, dude, I wanted to avoid all assembly beyond bootup in a Haskell OS by writing a memory allocator that didn't cons at all.
08:00:55 <elliott> Gregor: Pah :P
08:01:10 <Gregor> CakeProphet, elliott: Continue thinking about win conditions and barking at each other kthx :P
08:01:18 <pikhq_> elliott: ... Is that even doable?
08:01:22 <pikhq_> If it is, ♥
08:01:43 <CakeProphet> Gregor: space, conductor, electron head, electron tail, flag head, flag tail, death flag head, death flag tail, win flag head, win flag tail, base, flag geyser, electron geyser
08:02:00 <CakeProphet> no superimposing.
08:02:14 * itidus20 . o O ( win conditions: 1) ring out 2) knock out 3) tap out )
08:02:14 <elliott> pikhq_: I... think it might be.
08:02:17 <elliott> Gregor: I still think yours is best.
08:02:30 <elliott> Gregor: I dunno how thought-out it is though :P
08:02:50 <itidus20> 4) time out?
08:02:59 <elliott> pikhq_: I mean, you can make an Addr# pointing to anywhere you want.
08:03:28 <elliott> pikhq_: So it's just a matter of using a lot of octothorpes to read and write to that, and using Int#s for EVERYTHING.
08:03:39 <elliott> Even instead of Bools... although Bools might be OK since it's two static pointers, but I dunno how the RTS does it.
08:03:52 <CakeProphet> electron + flag = death flag death flag + flag = win flag (or maybe you just win at that point, I don't know if the win flag is actually a good idea)
08:04:06 <elliott> pikhq_: The real question is, can the RTS start without a memory allocator? Or rather, with a memory allocator written in Haskell that thus requires the RTS? :P (Even though it probably doesn't REALLY require the RTS because it doesn't cons or anything.)
08:04:08 <CakeProphet> flag + flag = cancelled out
08:04:40 <CakeProphet> once a death flaw always a death flag. any problems with this ruleset yet?
08:05:10 -!- myndzi has joined.
08:05:48 <elliott> CakeProphet: Let's ping Gregor and find out
08:06:25 <CakeProphet> oh, and flag electrons are slow (defined however you like)
08:07:32 <elliott> That doesn't work :P
08:07:38 <elliott> If you mean flags are a kind of electron
08:07:58 <CakeProphet> there's still a few questionable areas. death flag + electron = ?? (you could either change it back to a normal flag, have it continue being a death flag, or fizzle out) death flag + death flag = space I'm assuming.
08:08:13 <CakeProphet> er, conductor I mean
08:08:14 <CakeProphet> not space.
08:08:40 <CakeProphet> yes the flags are just slow-moving electrons that do not interact with electrons in the same way as normal electrons.
08:10:25 <CakeProphet> elliott: can you give me a better idea of why it won't work?
08:10:48 <elliott> Dunno, not paying attention :P
08:11:06 <CakeProphet> ASSHOLE
08:11:41 <CakeProphet> that means you're paying even LESS attention than I am.
08:11:47 <CakeProphet> Truly that is an incredible feat.
08:13:01 <CakeProphet> I think the rules are consistent but it may make the win conditions more or less circumstance.
08:13:45 <CakeProphet> (assuming you take out the win flag. including a win flag adds new complications but makes the win conditions a little less sporadic)
08:14:34 -!- pikhq has joined.
08:14:37 -!- pikhq_ has quit (Ping timeout: 264 seconds).
08:28:29 -!- Vorpal has joined.
08:33:50 <elliott> NihilistDandy: /msg
08:53:22 <pikhq> elliott: Obvious problem with my reading this further: my estimation of the size of Yudkowsky's ego grows with each passing sentence.
08:53:35 <elliott> quit while you're ahead
08:53:37 <pikhq> I swear, the man's hit the ego singularity.
08:53:45 <elliott> you mean HARRY has
08:53:47 <pikhq> Now I'm just curious how far it goes.
08:54:01 <pikhq> No, it's quite clearly self-insertion, that was obvious from the first chapter.
08:54:22 <pikhq> How many autodidactic polymaths are there, exactly?
08:54:57 <elliott> very few; there are thousands who think they're one
08:55:30 <pikhq> One sees my point.
08:55:42 <pikhq> s/One sees/You see/
08:56:55 <pikhq> Honestly, at this point I'm just curious to see how far the ego goes.
08:57:36 <pikhq> We're already at the point of "Stallman seems humble>
08:58:11 <CakeProphet> Kanye West?
08:58:44 <pikhq> Kanye West does not think himself the Rational Human.
08:59:46 <CakeProphet> who's to say he doesn't?
08:59:52 <CakeProphet> other than Kanye West?
09:00:05 <CakeProphet> perhaps you have a sampling of his lyrical work that would suggest he does not view himself as a rational?
09:00:08 <CakeProphet> :P
09:00:11 <pikhq> Observation indicates Kanye does not, at least, act upon this belief.
09:00:18 <elliott> Thus spake @kanyewest, "Stay positive."
09:00:28 <elliott> Also: "Don't ever try to sell me on anything. Give me ALL the information and I'll make my own decisions."
09:00:30 <oerjan> hypothesis: _everything_ becomes absurd if taken to its logical conclusion.
09:00:33 <elliott> That sounds like some sort of support of rational belief.
09:00:41 <oerjan> including reason.
09:00:42 <elliott> oerjan: well taking that to its logical conclusion, _everything_ is absurd
09:00:47 <pikhq> Whereas Eliezer runs an amazing, yet interesting, circlejerk.
09:01:08 <oerjan> elliott: no, not everything, just that sentence.
09:01:11 <elliott> "Mick Jagger is crazy fresh" -- Kanye has discovered new meanings of the word "fresh" I was previously unaware of
09:01:12 <pikhq> The worst bit is, he obviously is actually quite intelligent.
09:01:29 <elliott> "I didn't know Johnny Depp played guitar". The voice of a generation.
09:01:31 <oerjan> some things don't care about logical conclusions, and so may avoid absurdity.
09:01:40 <monqy> that harry potter fanfic's title alone gave me the death
09:01:45 <elliott> "Be nice" thanks kanye
09:01:50 <elliott> i'm stopping now
09:01:51 <pikhq> And at least some of his egotism is the result of, well, probably being smarter than 99% of the people he's met.
09:03:36 <oerjan> Eliezer Yudkowsky and the Methods of Megalomania
09:03:58 <pikhq> oerjan: Not so much "megalomania".
09:04:02 <oerjan> (title hereby released to the public domain)
09:04:19 <CakeProphet> ...my client says that two of the previous devs had to learn C# for this project....
09:04:25 <elliott> http://twitter.com/FakeEliezer
09:04:31 <CakeProphet> I'm kind of surprised it took them any appreciable amount of time.
09:04:46 <oerjan> pikhq: he has an excessive belief in rationality and his own ability to produce it?
09:05:06 <oerjan> isn't that pretty much straight in the definition of megalomania...
09:05:35 <CakeProphet> it's not excessive because it's PERFECTLY RATIONAL OKAY?
09:05:42 <oerjan> XD
09:06:28 <oerjan> actually even assuming rationality _is_ objectively correct, i hypothesize he has an excessive belief in his own ability to discern it.
09:06:35 <pikhq> oerjan: Okay, maybe it actually is megalomania.
09:06:50 <pikhq> Actually, quite probably.
09:07:09 -!- NihilistDandy has set topic: This umbrella works wonders for murdering! | software problems | Functor? I hardly knew 'er! | choking on a puzzle piece is like the consuming methanol of the alcohol abuse world | http://codu.org/logs/_esoteric/.
09:07:31 <monqy> is tunes still shunned
09:07:44 <oerjan> ask elliott, it's him doing the shunning
09:07:56 <pikhq> ... Yes, it's megalomania.
09:08:05 <elliott> monqy: Yes.
09:08:11 <monqy> poor tunes
09:08:16 <elliott> rip tunes
09:08:33 <pikhq> I've read 38 fucking chapters of self-insert fanfiction. It's fucking megalomania, and his head is larger than the solar system.
09:08:46 <elliott> thirty-eight???
09:08:49 <elliott> you need a saline drip, stat
09:08:57 <elliott> something really non-pretentious
09:09:02 <monqy> how many chapters are there
09:09:12 <monqy> in total
09:09:12 <pikhq> 72.
09:09:16 <monqy> yikes
09:09:19 <CakeProphet> ...this guy apparently thinks I am somewhat good at this.
09:09:27 <CakeProphet> even though I've just been kind of bullshitting the whole time.
09:09:38 <NihilistDandy> CakeProphet: Who?
09:10:03 <CakeProphet> guy who hired me to port his browser automator scripting engine thing over to linux.
09:10:25 <CakeProphet> which eventually turned into "rewrite this entire C# app in Python over the course of 3-4 months"
09:12:14 <Vorpal> CakeProphet, browser automator?
09:12:15 <Vorpal> what
09:12:22 <pikhq> elliott: How can someone be this unhumble.
09:12:40 <CakeProphet> Vorpal: it interprets scripts that automatically control a browser to do things.
09:12:42 <pikhq> And be a "rationalist".
09:13:02 <Vorpal> h<pikhq> I've read 38 fucking chapters of self-insert fanfiction. It's fucking megalomania, and his head is larger than the solar system. <-- why did you read that
09:13:12 <Vorpal> I mean, are you trying to go mad?
09:13:14 <pikhq> Vorpal: It was at least interesting.
09:13:31 <Vorpal> CakeProphet, what for
09:13:34 <pikhq> Few people write self-insert like actually intelligent people.
09:13:38 <CakeProphet> "this guy is full of himself, and I am totally captivated"
09:13:45 <pikhq> ... With ego inflation up the wazoo.
09:13:52 <CakeProphet> Vorpal: can't say. :P
09:13:56 <pikhq> CakeProphet: After about chapter 2.
09:13:57 <oerjan> <elliott> http://twitter.com/FakeEliezer <-- doesn't look very updated.
09:13:58 <Vorpal> pikhq, how many Wolfram :P
09:14:05 <pikhq> Vorpal: G
09:14:11 <Vorpal> pikhq, G?
09:14:15 <pikhq> Graham's number.
09:14:16 <CakeProphet> G WOLFRAM???? MY GOD
09:14:18 <Vorpal> ah
09:14:22 <Vorpal> CakeProphet, indeed
09:14:27 <Vorpal> quite absurd
09:14:28 <monqy> my god too
09:14:37 <Vorpal> pikhq, I thought 1 Wolfram was max
09:14:44 <pikhq> He broke the scale.
09:14:49 <Vorpal> ouch
09:15:18 <pikhq> I remind you, he is a "rationalist", and thinks anything notable of himself at all.
09:15:29 <CakeProphet> pikhq: what about A(G,G) Wolframs?
09:15:35 <oerjan> <pikhq> And be a "rationalist". <-- hypothesis, because everyone eventually confuses rationality with their own prejudices. i'm sure yudkowsky must have written something about it.
09:15:43 <Vorpal> what is a "rationalist"?
09:15:46 <CakeProphet> where A is the Ackermann-Peter function.
09:15:47 <pikhq> oerjan: Almost certainly.
09:16:04 <Vorpal> CakeProphet, never heard "Peter" in the name of that function before
09:16:10 <pikhq> Vorpal: One who believes in rational thought above all else, basically.
09:16:18 <CakeProphet> The original ackermann function took three arguments
09:16:27 <CakeProphet> the revised one is called ackermann-peter
09:16:32 <CakeProphet> fun fact.
09:16:47 <Vorpal> pikhq, I guess in theory that is commendable. Can't see it happening in practise if the world still has humans in it
09:17:06 <pikhq> He's also a singularitarian and a transhumanist.
09:17:08 -!- elliott has quit (Remote host closed the connection).
09:17:14 <Vorpal> ah
09:17:19 <pikhq> He's at least not suffering the *obvious* fault. :P
09:17:21 <Vorpal> that explains a bit
09:17:35 -!- elliott has joined.
09:17:48 -!- elliott has set topic: choking on a puzzle piece is like the consuming methanol of the alcohol abuse world | http://codu.org/logs/_esoteric/.
09:17:52 <elliott> NihilistDandy did it improperly. >:|
09:17:56 <elliott> ok so
09:17:56 <CakeProphet> transhumanist = "yeah, I think having genetically and cybernetically engineered super powers would be pretty cool"
09:17:57 <elliott> guys
09:18:02 -!- Lymia has joined.
09:18:03 <elliott> should i write my memory allocator in consless haskell
09:18:06 <elliott> SHOUDL I DARE...
09:18:13 <pikhq> CakeProphet: He intends to make it happen.
09:18:19 <NihilistDandy> elliott: YOU NEED TO BE MORE SPECIFIC
09:18:19 <Vorpal> pikhq, of course, one could aruge that anything sentient precludes absolute rationality. Maybe.
09:18:21 <monqy> shodule you darre
09:18:22 <elliott> can we stop giving yudkowsky attention now
09:18:22 <elliott> thanks
09:18:26 <monqy> shoudle
09:18:27 <monqy> shoulde
09:18:35 <pikhq> He just seems to fail to apply the whole "humans are utterly irrational beings that are basically forcing their brainmeat to act sane at times" bit to himself.
09:18:38 <elliott> ok
09:18:42 -!- Lymia has changed nick to Lymee.
09:18:43 <pikhq> And we're done.
09:19:17 <CakeProphet> I force my brainmeat into a comfortable state of vanilla wafer composition.
09:19:19 <monqy> I don't know enough about this guy to understand but he sounds a bit obnoxious
09:19:22 <Vorpal> elliott, got something against yudkowsky?
09:19:48 <Vorpal> pikhq, btw, fan-fic of what work originally?
09:19:50 <elliott> Vorpal: yep, and I don't see anyone in here who hasn't
09:19:54 <elliott> harry potter
09:20:48 <CakeProphet> how do I force my brainmeat to do things, you ask?
09:20:50 <CakeProphet> with brainmeat.
09:20:58 <NihilistDandy> He looks like a dick
09:21:09 <NihilistDandy> I'd punch him in the mouth
09:21:38 <monqy> i don't punch people becuase i
09:21:45 <pikhq> Self-insert works a bit better with Harry Potter. It's already self-insert fiction. :P
09:21:49 <elliott> punching people is not nice
09:21:51 <elliott> :(
09:22:31 <monqy> i;d never be able to punch people i don't think i'd be able to bring myself to do it under most circumstances
09:23:13 <elliott> once i punched a puppy NOT TRUE FICTION NO COPYRIGHT INTENDED
09:23:14 <CakeProphet> you may conjecture that I do not force my brain to anything but instead it merely transitions naturally between states as governed by physics.
09:23:26 <elliott> (CONTROVERSIAL YOUNG NOVEL)
09:23:45 <CakeProphet> elliott: write your own fan fiction.
09:23:45 <monqy> i my brain meats into a fist into your face
09:23:49 <CakeProphet> elliott: homestuck
09:23:53 <CakeProphet> homestuck fan fiction.
09:23:56 <CakeProphet> do it.
09:23:57 <elliott> there's
09:23:58 <elliott> enough of that
09:23:59 <elliott> in the world already
09:24:11 <CakeProphet> elliott: but none of it has an elliott self-insert.
09:24:19 * pikhq should sleep. 'Tis 03:25.
09:24:23 <elliott> yes. isn't that reassuring.
09:24:25 -!- oerjan has quit (Quit: NO PUN IN TEN DID).
09:24:26 <CakeProphet> elliott: or are you suggesting that you've ALREADY WRITTEN SOME!!!???!?!?
09:24:29 <monqy> hhehehehehehe homestuck
09:24:39 <elliott> "hhehehehehehe homestuck" --monqy, intellectual and philosopher
09:24:39 <NihilistDandy> pikhq: It's 5:25
09:24:42 <NihilistDandy> Here
09:24:55 <NihilistDandy> I win the "should be aslympics"
09:25:04 <CakeProphet> same here bro.
09:25:04 <monqy> last night i had a discussion about how wonderful it would be if homestuck didn't exist but the fandom still did
09:25:18 <elliott> monqy's adventures in things that are like the opposite of truth
09:25:21 <CakeProphet> NihilistDandy: we are superimposed as one being the spectrum of timezone competitive sports.
09:25:36 <CakeProphet> s/being the/being in the/
09:25:58 <NihilistDandy> CakeProphet: The United Superposition of States
09:26:41 <CakeProphet> ah, but then... I retire to slumber
09:26:45 <NihilistDandy> I hope the next version of the USSR is the USSSR
09:27:13 <NihilistDandy> Also, sleep
09:29:02 <monqy> i am sorry but homestuck just makes me think of wonderfully horrible things now
09:30:07 <elliott> i too equate things with their fandoms. you _don't_ want to know what my conception of Harry Potter's plot is, let me tell you.
09:30:23 <monqy> http://www.youtube.com/watch?v=vWo2CU3KH_0 homestuck
09:30:45 <elliott> im not even going to click that
09:30:52 <monqy> you're missing out
09:35:17 -!- myndzi has quit (Ping timeout: 276 seconds).
09:35:43 <monqy> by the way what is your conception of harry potter's plot
09:35:46 <monqy> now i'm curious
09:36:54 <elliott> i was using something called sarcasm to make something called a point
09:37:20 <monqy> whats that help
09:37:32 <elliott> dunno
09:38:10 <NihilistDandy> http://wondermark.com/749/
09:38:35 <monqy> hat
09:46:20 <elliott> pikhq: NihilistDandy: http://sprunge.us/CJNI
09:47:40 -!- Phantom_Hoover has joined.
09:48:12 <monqy> (() -> Addr#)? what sort of trick is this
09:48:47 <elliott> monqy: cant have top-level unlifted binding lol
09:50:03 -!- elliott has quit (Remote host closed the connection).
09:50:27 -!- elliott has joined.
09:54:11 -!- FireFly has joined.
10:10:24 -!- Patashu has joined.
10:25:15 -!- SimonRC has quit (Ping timeout: 260 seconds).
10:31:54 -!- SimonRC has joined.
10:48:49 <quintopia> elliott: halp
10:48:53 <elliott> quintopia: wat
10:49:19 <quintopia> i am trying to rotate an image by half pi by moving the pixels
10:49:26 <quintopia> image is a 1D array
10:49:31 <quintopia> i want it in one line
10:50:05 <quintopia> current line is ...
10:50:23 <elliott> rotate :: Double -> Picture a -> Picture a
10:50:23 <elliott> rotate r p = \(x :@ y) -> p (x*c - y*s :@ x*s + y*c)
10:50:24 <elliott> where !c = cos r
10:50:24 <elliott> !s = sin r
10:50:26 <elliott> this is all i know dont hurt my family
10:50:33 <quintopia> newbuff2[i]=newbuff[i%h*w+w-1-i/h];
10:50:57 <quintopia> it SEEMS like it should work
10:51:10 <quintopia> except hmm
10:53:25 -!- monqy has quit (Quit: hello).
10:54:40 <quintopia> it does work, when i remember to swap the width and height afterwards, ha
10:54:55 <quintopia> also, fixing that made me realize another bug
10:55:04 <quintopia> :(
10:56:09 <elliott> <benmachine> elliott: I can't help but feel if you're good enough to do this there are actually useful things you could be doing :P
10:56:10 <elliott> channel motto
11:02:16 <Vorpal> elliott, in here?!
11:03:17 <elliott> ?
11:03:21 <elliott> No, in hash-haskell
11:03:24 <Vorpal> ah
11:03:30 <Vorpal> elliott, still haven't fixed your keyboard
11:03:31 <elliott> #0 0x0000000000457ba0 in allocate ()
11:03:31 <Vorpal> wtf
11:03:32 <elliott> #1 0x0000000000448dde in rts_mkInt ()
11:03:32 <elliott> #2 0x0000000000402f71 in main ()
11:03:32 <elliott> Damn
11:03:42 <elliott> Vorpal: Maybe I'll upgrade to Lion on MY BIRTHDAY
11:03:57 <Vorpal> elliott, congrats on that backtrace if it crashed there
11:04:09 <Vorpal> elliott, hm?
11:04:12 <Vorpal> why upgrade
11:04:21 <Vorpal> isn't that a separate issue from the keyboard
11:04:27 <elliott> Gotta send it to Apple
11:04:29 <elliott> So gotta wipe it
11:04:31 <elliott> If gotta wipe it
11:04:34 <elliott> Want to upgrade for clean slate
11:04:38 <elliott> So that I get something useful out of it
11:04:41 <elliott> (It = wiping it)
11:04:52 <Vorpal> hm okay
11:05:59 <elliott> <Vorpal> elliott, congrats on that backtrace if it crashed there
11:06:02 <elliott> Not hard with what I'm doing
11:06:27 <elliott> Actually what I want is a segfault, but not the segfault I'm getting
11:07:17 <elliott> Vorpal: Guess who gets to read Cmm code! It's me!
11:09:23 <elliott> HaskellObj
11:09:23 <elliott> rts_apply (Capability *cap, HaskellObj f, HaskellObj arg)
11:09:23 <elliott> {
11:09:23 <elliott> StgThunk *ap;
11:09:23 <elliott> ap = (StgThunk *)allocate(cap,sizeofW(StgThunk) + 2);
11:09:24 <elliott> SET_HDR(ap, (StgInfoTable *)&stg_ap_2_upd_info, CCS_SYSTEM);
11:09:26 <elliott> ap->payload[0] = f;
11:09:28 <elliott> ap->payload[1] = arg;
11:09:30 <elliott> return (StgClosure *)ap;
11:09:32 <elliott> }
11:09:34 <elliott> SIGH
11:11:57 <elliott> #0 0x0000000000457bb0 in allocate ()
11:11:58 <elliott> #1 0x00000000004503d8 in createThread ()
11:11:58 <elliott> #2 0x0000000000448af9 in createGenThread ()
11:11:58 <elliott> #3 0x0000000000448b82 in rts_eval ()
11:11:58 <elliott> #4 0x0000000000402f94 in main ()
11:11:58 <elliott> GOD
11:12:17 <elliott> Vorpal: All these fuckin' allocations!
11:12:45 <Vorpal> <elliott> Actually what I want is a segfault, but not the segfault I'm getting <-- why
11:13:09 <Vorpal> elliott, anyway, why shouldn't creating a thread allocate stuff?
11:13:16 <Vorpal> elliott, also what made you resort to gdb
11:13:20 <elliott> Vorpal: Because I need 0 allocations.
11:13:26 <Vorpal> I'm curious. You are a known GDB hater
11:13:28 <elliott> And it's always gonna be gdb, I'm fucking around with the RTS.
11:13:35 <Vorpal> hm
11:13:38 <elliott> It's the only way to distinguish the _|_s that are segfaults from one another :P
11:13:40 <Vorpal> elliott, why do you need 0 allocations
11:13:46 <elliott> Vorpal: http://hpaste.org/50517
11:13:50 <elliott> Hope this answers your question
11:14:14 <Vorpal> elliott, I don't know enough of the internals of haskell to understand that
11:14:27 <elliott> You can read C code, so you can read that
11:14:30 <elliott> Just ignore the octothorpes
11:14:38 <Vorpal> elliott, the what?
11:14:44 <elliott> #
11:14:46 <Vorpal> ah
11:15:03 <elliott> topAddrAddr# is just NULL + 424242 with a dummy function around it
11:15:09 <elliott> topAddr and writeTopAddr just read and write it
11:15:15 <Vorpal> elliott, what is an Addr# ?
11:15:18 <elliott> primAllocBytes# should not be hard to understand, just ignore the threading of rw
11:15:19 <Vorpal> raw pointer?
11:15:22 <elliott> Vorpal: Yes.
11:15:29 <Vorpal> elliott, WHY DOES HASKELL EVEN ALLOW THIS!?
11:15:34 <elliott> It doesn't, GHC does
11:15:43 <Vorpal> okay why does GHC even allow it
11:15:44 <elliott> This code is so ludicrously nonportable in every way
11:15:48 <elliott> Vorpal: Internal use
11:16:01 <Vorpal> ah
11:16:19 <Vorpal> elliott, why 424242
11:16:25 <elliott> Recognisable in Core
11:16:37 <elliott> http://hackage.haskell.org/trac/ghc/browser/compiler/utils/Encoding.hs Take a look at utf8DecodeChar#
11:16:43 <elliott> SO BEAUTIFUL
11:16:58 <elliott> It's done like that for performance reasons :P
11:17:06 <Vorpal> ew yeah
11:17:14 <Patashu> so many #s
11:17:16 <Patashu> going to kill myself
11:17:37 <Vorpal> Patashu, why `plusAddr#`, why not make Addr# implement Num?
11:17:39 <Vorpal> err
11:17:41 <Vorpal> elliott, ^
11:17:57 <elliott> Vorpal: Firstly, because Num wants an *
11:18:00 <elliott> Addr# is a #
11:18:03 <elliott> (Kinds)
11:18:05 <Vorpal> ah
11:18:07 <elliott> Secondly, because look at the signature
11:18:13 <elliott> You add an Int# to an Addr#
11:18:21 <Vorpal> oh right
11:18:24 <Vorpal> :t plusAddr#
11:18:25 <lambdabot> Not in scope: `plusAddr#'
11:18:28 <Vorpal> meh
11:18:56 <elliott> Vorpal: http://www.haskell.org/ghc/docs/7.0.3/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html
11:19:14 <Vorpal> elliott, so you are basically trying to do sbrk() in haskell?
11:19:17 <Vorpal> am I right?
11:19:21 <elliott> "Misc
11:19:21 <elliott> These aren't nearly as wired in as Etc..."
11:19:27 <elliott> Vorpal: It's malloc, it's just a really shitty malloc.
11:19:31 <elliott> But yeah, sbrk is basically how it works.
11:19:37 <elliott> The idea is to run that on the bare metal.
11:19:50 <elliott> Obviously the pesky RTS trying to allocate in the process of calling it is not a helpful situation.
11:19:57 <Vorpal> elliott, well, then don't be surprised if it fails spectacularly when hosted
11:20:13 <elliott> FFS, it's meant to segfault when it writes to the bullshit constant address
11:20:31 <elliott> Crashing when the RTS tries to allocate because I passed a null pointer for the RTS capability structure will not go any differently on the bare metal
11:20:58 <Vorpal> elliott, the misc/etc thing. I would say that etc is more common. It has god damn seq after all
11:21:24 <Vorpal> of course, seq is pretty magic...
11:21:33 <elliott> Those are wrapped later on
11:21:37 <elliott> http://www.haskell.org/ghc/docs/7.0.3/html/libraries/ghc-prim-0.2.0.0/src/GHC-Prim.html#seq
11:21:39 <Vorpal> elliott, what does traceCcs# do?
11:21:43 <elliott> Notice dummy implementation for haddock docs
11:21:48 <elliott> That's not the actual seq you use that's in GHC.Prim
11:21:51 <elliott> Vorpal: Fucked if I know
11:21:55 <elliott> Probably some debugging thing
11:22:21 <Vorpal> elliott, according to that file. traceCcs# and seq are the same. Is this file a dummy file?
11:22:32 <Vorpal> yeah must be
11:22:38 <elliott> <elliott> Notice dummy implementation for haddock docs
11:22:44 <elliott> It's generated
11:22:46 <Vorpal> right
11:22:50 <Vorpal> missed that line
11:23:06 <Vorpal> elliott, why let and now where?
11:23:08 <elliott> Capability *
11:23:10 <elliott> rts_eval (Capability *cap, HaskellObj p, /*out*/HaskellObj *ret)
11:23:10 <elliott> {
11:23:10 <elliott> StgTSO *tso;
11:23:10 <elliott>
11:23:10 <elliott> tso = createGenThread(cap, RtsFlags.GcFlags.initialStkSize, p);
11:23:11 <elliott> return scheduleWaitThread(tso,ret,cap);
11:23:15 <elliott> }
11:23:17 <elliott> Urrrrgh
11:23:19 <elliott> Vorpal: What?
11:23:25 <Vorpal> let x = x in x
11:23:31 <elliott> It's a dummy implementation
11:23:37 <Vorpal> yeah
11:23:42 <elliott> It's just put there by the script, the only time the file is ever used is to generate the Haddock docks
11:23:43 <elliott> docs
11:24:27 <Vorpal> elliott, anyway the RTS will have to allocate a bit for creating thread and so on. The memory must come from *somewhere*
11:24:31 <Vorpal> brb
11:24:56 <elliott> Vorpal: So don't do it by a thread
11:25:04 <elliott> Vorpal: I want as close to jumping in directly to the closure as possible
11:25:51 <Vorpal> back
11:26:10 <Vorpal> elliott, you will need to patch ghc for that
11:26:14 <Vorpal> probably
11:26:53 <Vorpal> elliott, ever played oblivion btw?
11:27:59 <elliott> No. Should I?
11:28:21 <Vorpal> nah. I was wondering about opinions
11:28:23 <Vorpal> it is okay
11:29:08 <Vorpal> elliott, open world rpg, great scenery, a bit dated graphics by now, it is showing it's age. But my main issue with it is the bad voice acting. There is no flavour to it.
11:29:27 <Vorpal> but huge open world, have to give it credits for that
11:29:29 <elliott> I know at least some of the NPCs and plot thanks to Prequel :P
11:29:34 <Vorpal> ah
11:30:10 <Vorpal> elliott, well, the voice acting is terribly flat. No emotion in it. No flavour. I'd say no voice acting would be an improvement
11:30:31 <elliott> voices suck, also humans suck, have I mentioned Elliottcraft contains 0 humans?
11:30:34 <elliott> no fucking humans. or voies.
11:30:36 <Vorpal> NWN1 had good, if incomplete, voice acting. Witcher 2 has really really good voice acting.
11:30:42 <Vorpal> elliott, different type of game :P
11:30:51 <elliott> superior type of game
11:31:01 <elliott> "incomplete"?
11:31:03 <elliott> were some lines just silent
11:31:03 <Vorpal> elliott, besides what about elves, dwarves, orcs and so on
11:31:11 <Vorpal> elliott, some NPCs were not voiced
11:31:25 <Vorpal> elliott, only like the main NPCs were
11:31:57 <elliott> elves are humans, dwarves are humans, orcs are stupid humans
11:32:09 <Vorpal> elliott, lizardmen?
11:32:13 <elliott> "men"
11:32:21 <Vorpal> right
11:32:25 <Vorpal> elliott, talking dragons?
11:33:01 <Vorpal> given the copious amount of dialogue in NWN1 the lack of voice acting was probably required to make the game fit on a CD or whatever it came on, I don't remember.
11:33:16 <Vorpal> I think it came on 2 CDs or such
11:33:28 <elliott> yes, I would accept a game where every character is a talking dragon.
11:33:40 <Vorpal> elliott, XD
11:33:48 <elliott> i'm not even kidding i would play the fuck out of that
11:33:51 <Patashu> elliott, play Spyro The Dragon for the PSX
11:33:52 <elliott> especially if it's never brought up ever
11:33:56 <Vorpal> elliott, witcher 2 has supreme voice acting. If you like RPGs then it is a must.
11:33:59 <elliott> Patashu: touche
11:34:11 <elliott> Vorpal: i don't like rpgs... except maybe pokemon, but i doubt witcher is that grindy
11:34:12 <Vorpal> for lots of other reasons than voice acting of course
11:34:21 <Vorpal> elliott, indeed it is plot driven.
11:34:31 <Vorpal> indeed,*
11:34:51 <elliott> http://bulk2.destructoid.com/ul/149036-thewitcher.jpg uglier than elliottcraft
11:35:01 <Vorpal> elliott, btw "Prequel" you mentioned above, what/who is that?
11:35:01 <elliott> i should just make all the elliottcraft bloocks shit rainbows
11:35:04 <elliott> everything is every colour
11:35:25 <Vorpal> elliott, that is not max settings in that screenshot. Besides it is low res.
11:35:28 <elliott> Vorpal: It's a comic in roughly the same format as MSPA set in Oblivion
11:35:30 <elliott> http://prequeladventure.com/2011/03/prequel-begin/
11:35:41 <Vorpal> heh
11:36:28 <elliott> Or, well, set as a prequel, I guess
11:36:32 <elliott> Does it count as in if it's before?
11:36:38 <elliott> Deep ontological questions
11:36:38 <Vorpal> elliott, oh another thing in oblivion: character face look on NPCs is terribly plain. Too even.
11:36:57 <elliott> i saw a screenshot of the catpeople, they're scary
11:37:10 <Vorpal> elliott, yeah. But I meant human and elf faces. Too flat.
11:37:22 <elliott> oh quill-weave is more terrifying though
11:37:30 <Vorpal> not familiar with that
11:37:35 <elliott> http://images3.wikia.nocookie.net/__cb20110621230405/elderscrolls/images/4/45/Quill-Weave_1.jpg
11:38:02 <elliott> (compare http://prequeladventure.com/this/story278.gif)
11:38:17 <Vorpal> elliott, the witcher screenshot was terribly jpeg compressed too
11:38:26 <elliott> im unfair to witcher :(
11:39:06 <Vorpal> elliott, btw witcher 2 graphics, it works better when playing it or in a video than in a screenshot. You won't see effects like motion blur or swaying grass in a still image. Yogscast did partial play-through of the game some time ago. Check out the graphics from there IMO.
11:39:32 <Vorpal> elliott, hm nocookie.net?
11:39:39 <elliott> Don't ask me
11:40:03 <elliott> But anyway, I don't see how any game could have better graphics than Elliottcraft :)
11:40:05 <Vorpal> elliott, the game screenshot one is scarier
11:40:13 <elliott> That's what I meant
11:40:15 <elliott> Popping the stack,
11:40:17 <Vorpal> elliott, how is that. Will your have smooth terrain
11:40:29 <elliott> Or do YOU know another game with dirt that looks different depending on the precise value of its moisture????
11:40:40 <elliott> Different in a way other than being tinted slightly :P
11:40:55 <Vorpal> elliott, that is not quite the same as having awesome dynamic light and shadows :P
11:41:06 <elliott> Vorpal: I considered joining corners up at one point, but I think the block model is nicer... I'm still open to arbitrary subdivision of blocks or smaller-than-minecraft blocks
11:42:00 <Vorpal> elliott, depends on your goals
11:42:08 <elliott> Best game
11:42:17 <Vorpal> in which genre
11:42:29 <elliott> The only relevant genre, Elliottcraft
11:42:40 <Vorpal> well duh
11:42:45 <elliott> It's based around utter hostility to all people that aren't me
11:42:53 <elliott> You might die your first three hundred days
11:43:30 <Vorpal> elliott, I'll turn on peaceful
11:44:13 <Vorpal> I think that minecraft is fun, but not for fighting in. It is fun to build in. If I want to fight I start an RPG and get a MUCH better fighting experience
11:44:31 <elliott> Who said anything about fighting?
11:45:13 <elliott> Anyway, feel free to build, but you'd better make sure it's structurally sound -- don't want that thing to topple over and all your blocks turned into worthless rubble that you have to melt-down and re-cast, mm?
11:45:31 <elliott> You might even have to steal a furnace.
11:48:54 <Patashu> Elliotcraft will have DF style structural integrity testing?
11:49:15 <elliott> It's not so much structural integrity testing, it's just... things won't stay up if you build them like an idiot.
11:49:24 <elliott> And unlike DF a one by one tower won't be enough to keep them up.
11:49:35 <Patashu> so what do you call it if not structural integrity testing?
11:49:48 <elliott> I dunno, that makes it sound like it's a separate step to me.
11:49:56 <elliott> It's like calling gravity "floating violation testing".
11:50:08 <Patashu> would you prefer 'block physics'
11:50:10 -!- GreaseMonkey has quit (Quit: The Other Game).
11:50:42 <elliott> Well obviously I have _that_ :-)
11:53:34 <elliott> Vorpal: "We're talking about Oblivion here; where faces and melted candles are indistinguishable from one another."
11:54:14 <Patashu> What will elliotcraft's circuitry be like
11:55:13 <elliott> (Two "t"s.) I'm not sure. Possibly hideously complex.
11:55:25 <elliott> Maybe bluestone :-P (Phantom_Hoover)
11:55:38 <Patashu> More complex than redstone?
11:55:47 <elliott> Redstone is dirt simple
11:55:52 <Vorpal> <elliott> Vorpal: "We're talking about Oblivion here; where faces and melted candles are indistinguishable from one another." <-- yep
11:55:53 <Patashu> It has lots of edgecases
11:55:55 <Patashu> And it's tricky to use
11:55:56 <Phantom_Hoover> Patashu, more interesting, certainly.
11:55:56 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
11:55:59 <elliott> It's tricky to use because it's simple
11:56:00 <Vorpal> elliott, where is the quote from
11:56:00 <Phantom_Hoover> And nicer to use.
11:56:14 <elliott> Vorpal: Prequel SA thread
11:56:34 <Vorpal> elliott, btw it allows you to customize a lot about your look. Even the size, position, and colour of your eyebrows.
11:56:52 <Vorpal> elliott, my guess is that all face textures are procedural in oblivion, and that is why they are flat.
11:58:09 <Patashu> There are some nice addons to the restone system in MC that you could steal
11:58:13 <Patashu> Like insulated wiring
11:59:06 <fizzie> The land of Oblivion, where the paint brushes float.
12:05:54 -!- sllide has joined.
12:08:38 -!- elliott has quit (Read error: Connection reset by peer).
12:12:30 -!- elliott has joined.
12:14:52 -!- Lymia_ has joined.
12:15:02 -!- Lymia_ has quit (Changing host).
12:15:02 -!- Lymia_ has joined.
12:15:38 -!- Lymia_ has changed nick to Lymia.
12:17:37 <itidus20> ok i just had another of my ideas
12:17:56 <itidus20> i call it the 125 number system
12:18:22 -!- Lymee has quit (Ping timeout: 258 seconds).
12:32:30 <Vorpal> <fizzie> The land of Oblivion, where the paint brushes float. <-- you played it?
12:32:40 <Vorpal> how the hell do you swim. Can't figure it out.
12:34:23 <fizzie> <fizzie> Vorpal: I played it a little bit. <- yesterday or so.
12:34:32 <Vorpal> fizzie, ah.
12:34:44 <fizzie> I remember doing swimming, but now how to do it.
12:34:44 <Vorpal> fizzie, so 1) how do you swim 2) where do you sell stolen items
12:35:19 <fizzie> If you join the Thieves Guild, their fences will let you use their services.
12:35:53 <Vorpal> fizzie, and how/where do I join that. And are there any options if I don't join that
12:37:27 <fizzie> According to UESPWiki, Thieves Guild fences, one of the Dark Brotherhood Murderers, and Mannheim Maulhand at the Inn of Ill Omen, accept stolen goods.
12:37:46 <Vorpal> ah interesting. Now to find "Inn of Ill Omen"
12:38:13 <fizzie> "on the Green Road between the Imperial City and Bravil (quest-related). It is just along the road from the Faregyl Inn.
12:38:13 <fizzie> The publican, Manheim Maulhand, buys potions and food whilst only selling the latter. In addition, he will also buy your stolen goods, even if you aren't part of the Thieves Guild. This, however, is only useful after you have reached the Mercantile skill perks that allow you to barter anything with him and invest in him."
12:38:44 <fizzie> You can probably join the guild with not much ill effects and then just ignore their questline.
12:41:09 <fizzie> There's a few options for joining, but the most straight-forward one (the one I think I stumbled by accident) was to read one of the "wanted" posters of Gray Fox in the city, then talk about that topic with people.
12:46:19 <Vorpal> fizzie, hm. I'm confused about the skills in this game. It seems you level up them independently? No global level thingy like many other games?
12:50:07 -!- Lymia_ has joined.
12:50:53 -!- Lymia_ has quit (Changing host).
12:50:53 -!- Lymia_ has joined.
12:50:55 -!- Lymia has quit (Disconnected by services).
12:50:57 <Vorpal> fizzie, hm he isn't buying my stolen stuff. Must be wrong category of items
12:50:59 -!- Lymia_ has changed nick to Lymia.
12:51:20 <Phantom_Hoover> Playing Oblivion, are we?
12:53:10 <Vorpal> Phantom_Hoover, yes. You played it?
12:53:21 <Vorpal> Phantom_Hoover, how the hell do I swim?
12:53:33 <Vorpal> I just sink and walk on the bottom when I try
12:53:36 <Phantom_Hoover> Tried Morrowind, but failed due to Wine not working for some reason.
12:53:41 <Vorpal> ah
12:53:44 <Phantom_Hoover> Vorpal, that's not how you swim?
12:54:04 <elliott> That's how _I_ swim.
12:54:25 <Vorpal> Phantom_Hoover, how do I swim then
12:55:02 <Phantom_Hoover> Vorpal, you walk around on the bottom of the water, same as everyone else.
12:55:13 <Vorpal> Phantom_Hoover, ...
12:55:24 <Vorpal> Phantom_Hoover, so why does the athletics skill mention swimming?
12:55:50 <fizzie> I've forgotten completely. I suppose you tried the jump key though?
12:55:55 <fizzie> That'd be the most logical choice.
12:56:20 <fizzie> Either that, or just looking upwards and trying to move forward.
12:56:42 <elliott> re
12:56:46 <Vorpal> hm didn't work with e before. Let me try again. Could it be heavy armour?
12:57:06 <fizzie> Yes, weight is a factor.
12:57:22 <Vorpal> hm
12:58:09 <fizzie> There's a quest (Mages Guild one maybe?) where they ask you to fetch a ring from the bottom of a well; but the ring is an "add few hundred stones of weight" ring, and it's a trick they play on you.
12:58:14 <fizzie> Then you drown.
12:58:16 <fizzie> Usually.
12:58:25 <elliott> X-D
12:58:31 <Patashu> wow, that's a dic kmove
12:59:14 <fizzie> http://www.uesp.net/wiki/Oblivion:Cheydinhal_Recommendation
13:00:11 <Vorpal> fizzie, ouch
13:00:25 <fizzie> "It does not actually use a Burden enchantment, it just has its weight set very high." Yeah, it weighs 150 units.
13:00:42 <fizzie> Made out of some ultra-dense matter, I suppose.
13:00:46 <Vorpal> fizzie, btw, is there like any storage chest you could use. Buy an apartment or whatever or such. Or can I expect items to remain where they are if I drop them somewhere?
13:03:51 <Vorpal> fizzie, anyway jumping didn't work, and I switcher to light armour
13:04:21 <Vorpal> oh wait, light armour and looking up works
13:04:22 <Vorpal> right
13:04:53 <fizzie> You can buy houses, and some questlines have you receiving places at the end of them.
13:05:09 <Vorpal> fizzie, ah. Are horses worth it btw?
13:05:20 <fizzie> I never bothered.
13:05:24 <Vorpal> I managed to get a lot of gold from a panaroid madman
13:05:36 <Vorpal> hm
13:06:30 <fizzie> Most chests are unsafe, but some (mostly quest-related, and then the bought houses) are safe: http://www.uesp.net/wiki/Oblivion:Containers#Safe_Containers
13:06:36 <fizzie> Dinnur time now.
13:06:42 <fizzie> (I.e. awaysh.)
13:07:35 <Vorpal> ah I'll use the chest in Weynon Priory for now
13:16:07 <Vorpal> fizzie, I like the scale of oblivion. The distances seems somewhat (though not completely) realistic. Unlike a lot of other games.
13:19:47 <Gregor> elliott, CakeProphet: All your ideas are terrible :P
13:19:59 -!- pikhq_ has joined.
13:20:05 -!- pikhq has quit (Ping timeout: 258 seconds).
13:20:23 <elliott> Gregor: I didn't give any more ideas :)
13:20:25 <elliott> I was SMRT.
13:20:32 <elliott> Gregor: I'm waiting for your master idea :P
13:20:58 <Gregor> I'm implementing my grotty inelegant base+geyser mechanism :(
13:21:10 <elliott> That's grotty and inelegant?
13:21:16 <Gregor> Idonno, I feel like it is :P
13:21:17 <elliott> That's how I assumed things worked originally
13:21:24 <elliott> Your geyser is your power socket
13:21:29 <elliott> The base is, like, a short-circuiter
13:21:30 <elliott> Makes perfect sense
13:21:44 <elliott> Though possibly not for those reasons
13:23:16 <Gregor> My kitten needs mittens so she can STOP CLAWING THE FUCK OUT OF ME
13:24:14 -!- ais523 has joined.
13:25:23 <cheater> kitten mittens for sittin'
13:27:18 <elliott> hi ais523
13:27:22 <ais523> hi elliott
13:29:31 <elliott> getViewBytes :: Get (Vector Word8)
13:29:31 <elliott> getViewBytes = do
13:29:31 <elliott> bytes <- getBytes viewSize
13:29:31 <elliott> let (ptr, offs, len) = BI.toForeignPtr bytes
13:29:31 <elliott> return $ V.unsafeFromForeignPtr ptr offs len
13:29:32 <elliott> getView :: Get (Vector Cell)
13:29:34 <elliott> getView = V.unsafeCast <$> getViewBytes
13:29:37 * elliott sits back, waits for ais523's death by shock
13:29:48 <elliott> BI there stands for Data.ByteString.Internals by the way :P
13:29:50 <ais523> oh, I wasn't looking
13:29:55 <elliott> Sorry, Internal.
13:30:00 <ais523> and now I've seen that sentence, I haven't looked just in case
13:30:02 <ais523> should I?
13:30:08 <elliott> Only if you can stand ... the heat.
13:30:14 * ais523 looks
13:30:32 <ais523> wow, that is indeed insane
13:30:44 * elliott bows.
13:30:52 <elliott> Sure is fast though :P
13:30:53 <ais523> my mind is refusing to work out what it actually does, other than a line-by-line translation of the individual lines
13:31:08 <ais523> is that some sort of type punning via unions/reinterpreting byte sequences, in Haskell?
13:31:44 <elliott> It reads viewSize worth of bytes as a ByteString, gets the underlying ForeignPtr storage (plus the offset into it and the length -- ByteString does efficient slicing this way), and creates an immutable Vector out of it
13:31:54 <elliott> (unsafely, because you could twiddle the ForeignPtr after and change an immutable value)
13:32:11 <elliott> it then casts the vector to have another element type which conveniently has the same Storable representation
13:32:44 <elliott> gotta do these kinds of things when your program has to read, parse, and make a decision based on that information in 0.06 seconds
13:32:58 <fizzie> Vorpal: There are some places where you can get inside the cities/towns from the "overworld" (jumping above the walls); if you manage that, you'll find out that they are just cheap low-resolution props, with clip-through walls.
13:33:13 -!- MSleep has changed nick to MDude.
13:33:54 <elliott> ais523: apart from that little performance trick, though, the whole program is not as bad as you might expect :P
13:34:27 <ais523> heh, TAEB uses the same trick
13:34:27 <Vorpal> fizzie, ouch
13:34:32 <fizzie> Vorpal: Also the same the other way around: if you climb out of a city without using a gate, you'll just fall through the ground and fall forever.
13:34:35 <ais523> although it's done purely in Perl, so not quite as bad
13:34:46 <elliott> ais523: heh, really? how?
13:34:48 <ais523> there's a comment next to it commenting on how ugly it is, but it speeds it up 30%
13:34:54 <Vorpal> fizzie, that sucks badly.
13:34:58 <ais523> elliott: oh, it just breaks encapsulation of the way Moose actually stores objects
13:35:11 <elliott> those unsafe calls are actually totally safe in the context of what I'm doing, thankfully
13:35:13 <ais523> and instead of going via accessors to access tiles, it just does a sequence of dereference operations
13:35:19 <elliott> they just avoid needlessly reconstructing the same representation
13:35:20 <elliott> ais523: heh
13:35:26 <elliott> ais523: Moose is hideously slow, isn't it?
13:35:29 <ais523> which I think compile pretty much directly into C
13:35:46 <ais523> Moose is relatively bad, although it's getting better, it does all sorts of ridiculous speed tricks
13:35:48 <fizzie> Vorpal: It was a complaint occasionally made, given that in Morrowind there's just the one world with no nasty transitions.
13:35:54 <Vorpal> fizzie, ah
13:36:29 <ais523> what's the etymology of the phrase "clip through"?
13:36:39 <ais523> I've known what it meant for ages, but am not sure why it means that
13:37:17 <fizzie> ais523: IDNOCLIP from Doom 2?-) (Though I suppose in reality the usage predates that.)
13:37:30 <itidus20> IDSPISPOPD
13:37:31 <elliott> Any procedure which identifies that portion of a picture which is either inside or outside a picture is referred to as a clipping algorithm or clipping.
13:37:31 <elliott> The region against which an object is to be clipped is called clipping window.
13:37:40 <itidus20> shrugs
13:37:45 <elliott> Due to the use of the term 'no clipping' to refer to turning off collision detection, the two are often confused.
13:37:47 <elliott> no origin :(
13:37:49 <ais523> ah, so the engine was using its clipping algorithm to calculate collisions?
13:38:09 <ais523> and so you turned off clipping to be able to walk through walls, as it turned off collisions as a side effect
13:38:11 <ais523> that would make sense
13:38:36 <itidus20> If only they released the source code to doom, obsessive anoraks could grok these answers.
13:38:41 <Vorpal> ais523, uh, that seems to be extrapolating quite heavily from what elliott said
13:38:51 <Patashu> doom's been cloned at least twice
13:38:54 <Patashu> so I think people know how it works
13:39:03 <ais523> Vorpal: it's an educated guess, based on what I know and what's been said in the channel
13:39:10 <ais523> it's not quite the same thing as extrapolation
13:39:12 <itidus20> im not being sarcastic... something else
13:39:15 <ais523> it's... induction, or something
13:39:30 <Vorpal> hm yeah
13:39:39 <itidus20> a sort of "emphasis through sarcasm"
13:39:44 <itidus20> shrugs
13:39:49 <fizzie> ais523: That, or just general association with "no use of that thing which causes the player to be 'clipped' to stay within the allowed region".
13:40:09 <ais523> hmm, I find it hard to imagine a non-convex clipping region
13:40:13 <ais523> or at least, non-simple
13:40:29 <ais523> (in the sense that I expect clipping regions to be topologically equivalent to a circle/sphere)
13:40:37 <ais523> I'm not sure why, there's no inherent reason why they should work like that
13:41:03 <fizzie> It's because it's harder to cut holes in the middle of the paper, as opposed to just whittling down the edges.
13:41:24 <itidus20> is non-convex like with a dent in it?
13:41:41 <itidus20> like pacman?
13:42:27 <Patashu> there are clipping algorithms for concave polygons and clipping regions
13:42:40 <ais523> itidus20: indeed
13:42:59 <Patashu> it's more complicated because it can return multiply polygon pieces when given one polygon
13:44:26 <fizzie> SVG lets you clip with any path, text, or basic shape.
13:44:38 <Patashu> you can define a clipping region out of -text-?!?
13:44:39 <Patashu> wow
13:44:47 <Patashu> or clip text?
13:44:55 <fizzie> The former.
13:45:09 <fizzie> The clip-path property of anything can refer to a text object.
13:45:18 <Patashu> Trippy
13:46:16 <fizzie> The (presumably more efficiently implemented" 'clip' property can only be a rectangle, though.
13:46:24 <fizzie> s/"/)/
13:46:57 <Patashu> is svg guaranteed to look the same no matter what the implementation is, like most of opengl's features?
13:47:53 <Vorpal> if you meet someone on a sidewalk, which side do you try to pass them on?
13:48:02 <Patashu> I keep left
13:48:07 <elliott> Vorpal: over
13:48:10 <Vorpal> Patashu, living in a left or right hand drive country?
13:48:14 <Patashu> left
13:48:16 <Vorpal> aha
13:48:23 <elliott> or sometimes through
13:48:47 <ais523> Vorpal: I pick a side according to where they and I are relative to each other
13:48:48 <Patashu> the fourth dimension collision resolution mechanisms I resort to do not have words in your english language!
13:49:05 <ais523> it's the easiest way to avoid collisions
13:49:15 <Gregor> OK, bases + flag geysers *grumble mumble*
13:49:19 <Vorpal> Patashu, do people usually pass on the left on sidewalks there? In Sweden, which is right hand drive, it is quite common that one person try to pass on the left and the other on the right. Leading to some swaying back and forth
13:49:21 <ais523> note that the sidewalks/pavements in the UK are typically on both sides of the road, so there's the added complication that we might be on either side of the road
13:49:27 <Patashu> Vorpal, almost always left
13:49:31 <Vorpal> hm
13:49:58 <fizzie> Patashu: That would I guess be the ideal, but I'm not sure how close it gets. It's not like OpenGL would guarantee you anything about cases involving floating-point rounding, either.
13:50:02 <Vorpal> ais523, well of course, but lets say it is a narrow enough sidewalk, not a broad one where 10 people could walk side by side.
13:50:23 <ais523> when walking along a road without pavements, the convention (it's enforced by the Highway Code, which isn't a law but if you don't follow it anything bad that happens is your fault by default) is that you walk on the right-hand side of the road, so there's no issue with passing other pedestrians because they're on the other side of the road already
13:50:27 <Patashu> floating point rounding is a bitch, but isn't it consistent across different implementations?
13:50:36 <Patashu> possibly not across different math libraries
13:50:48 <ais523> Vorpal: with enough room for two side-by-side, which is more or less universal, you pick whatever side you happen to be on relative to the other person, in the UK
13:50:59 <ais523> and if it's unclear, you guess and move that way a long time in advance, so the other person moves the other way
13:51:32 <ais523> the rules for pedestrian passing bicycle are more interesting, partly because they're completely different between the UK and Canada and I almost got run over as a result
13:51:55 <fizzie> ais523: Here it's the left side of the road, using the justification that then the lane immediately next to you (right-hand-side drive here) is the one where the approaching cars will come from the front, so you will notice them more easily; as opposed to walking on the right side and having a car surprise you from behind.
13:52:15 <ais523> fizzie: I think it's the same reasoning in the UK, just mirror-reversed
13:53:19 <Vorpal> ais523, and if you happen to be on a exact collision course?
13:53:22 <Gregor> elliott: Feel free to pull
13:53:35 <ais523> Vorpal: you can't tell that's going to happen, so you guess
13:53:45 <ais523> there's a 50% chance the two people make the same guess, and the situation resolves itself
13:53:53 <ais523> and a 50% chance you don't, in which case try again
13:54:14 <elliott> Gregor: But it'll break my code :P
13:54:15 <ais523> in fact, the odds are more favourable than that, because the two people probably won't guess at exactly the same time
13:54:26 <ais523> and the first person can observe the second person moving and choose the correct side as a result
13:55:35 <fizzie> Patashu: I don't think OpenGL defines the order of operations in e.g. matrix multiplication -- I mean, you'd want to leave room for optimization in the implementations -- and for example I'd assume something like z-fighting is allowed to look different on different display cards.
13:56:15 <Patashu> if matrix multiplication didn't have an order of operations, you'd have no guarantees as to which order your translates, rotates and so on were used in
13:56:18 <Patashu> bad example I think
13:56:33 <fizzie> Patashu: I mean the individual operations involved in multiplying two matrices.
13:56:53 <fizzie> Of course they define which side of the multiplication which matrix is on.
13:57:03 <Patashu> oh, I see - you're saying that depending on what order you do it in it might incur floating point errors differently
13:57:09 <fizzie> Well, it will.
13:57:59 <Patashu> http://glprogramming.com/red/appendixh.html
13:58:21 <fizzie> We had a "multiply two matrices" exercise in one "object-oriented programming course", and the automated exercise checker was using stringwise comparisons with no tolerance for error.
13:58:31 <Patashu> Ouch
13:58:33 <fizzie> So you had to get your floating-point errors in the same order as whoever made the model solution.
13:58:34 <Vorpal> fizzie, did you report that issue?
13:58:43 <fizzie> Vorpal: Yeah, I think it got fixed.
13:58:47 <Vorpal> goofd
13:58:49 <Vorpal> good*
13:59:00 <fizzie> It was especially aggravating since the exercise checker in question featured a tolerance option out-of-the-box.
13:59:38 <fizzie> So, "not a pixel-exact specification". Sounds reasonable; I mean, it's usually more about speed than exactness.
14:00:43 <Gregor> Bleh, my flag rules are borked >_<
14:00:45 <ais523> GPUs only started doing exact floating-point recently
14:00:55 <Gregor> Flags CAN move lightspeed ._.
14:02:29 <elliott> help why am i sixteen in hours who made this mistake........
14:02:32 <elliott> who is responsible
14:02:46 <elliott> im having fifth-life crisis
14:02:58 <fizzie> Didn't IEEE ad a "half-precision" (16-bit) float format to IEEE 754 recent-ishly, after it was used so widely in the graphics world?
14:03:03 <fizzie> s/ad/add/
14:03:04 <Patashu> you're about to be 16?
14:03:22 <elliott> yes, that's a thing about to occur.
14:03:35 <Patashu> dang I'm jealous
14:03:38 <Patashu> I'm 20 and a half -.-
14:04:02 <Patashu> 20 = old geezer in internet years
14:04:10 <elliott> ais523: hey you're triple old geyser
14:04:11 <elliott> flag geyser
14:04:13 <elliott> Gregor:
14:04:14 <elliott> i am
14:04:15 <shachaf> elliott: Don't worry, you'll die by the time you're 32.
14:04:16 <elliott> making everything relevant
14:04:23 <elliott> to everything else... also I can't type right now :/
14:04:33 <elliott> shachaf: OK, who stored my age in an unsigned five-bit integer?
14:04:35 <elliott> Was it you?
14:04:49 <elliott> I have to blame _someone_.
14:04:50 <shachaf> It was actually a signed six-bit integer.
14:05:05 <elliott> Ah.
14:05:06 <fizzie> One 6502-or-Z80-I-forget-which C compiler supported an 8-bit float format, I think.
14:05:08 <Gregor> So he'll turn -32.
14:05:22 <shachaf> No, he'll die.
14:05:55 <elliott> Why does that always happen to me?
14:05:57 <elliott> Dying, I mean.
14:06:10 <shachaf> You deserve it.
14:06:21 <shachaf> I think there was a song that said that.
14:06:27 <Patashu> wait, 8 bit float?
14:06:30 <Patashu> that sounds like a shitty idea I came up with once
14:06:35 <Patashu> and dropped when I realized how shit its precision was
14:06:38 <elliott> shachaf: Thanks for the CTCPs
14:06:42 <elliott> I'd lost them
14:06:45 <Gregor> The flag can form a surrogate tail for an electron, because its rules are basically identical to a tail >_>
14:07:10 <elliott> Gregor: X-D
14:07:16 <elliott> Gregor: Goes along for the ride
14:07:35 <Gregor> elliott: THIS GAME SUX :P
14:07:41 <fizzie> Patashu: http://en.wikipedia.org/wiki/Minifloat has a one-byte example, but doesn't list any notable use cases. I thought it might've been the CC65 compiler, but it's not.
14:07:43 <elliott> Gregor: :(
14:07:46 <elliott> Gregor: Or do you just mean this revision
14:07:50 <Gregor> I mean this revision
14:07:55 <elliott> Good :P
14:08:02 <elliott> Gregor: I still like the idea of flags hitching a ride, though.
14:08:12 <Gregor> elliott: I don't like the idea of lightspeed flags >_>
14:08:31 <Gregor> (Although of all the means of creating lightspeed flags, this is arguably the least offensive)
14:08:48 <elliott> Gregor: Just make a flag in tail position do something bad?
14:08:51 <elliott> Like turn the electron into a flag.
14:09:16 <Gregor> elliott: The electron DOES turn into a flag. Just like it WOULD turn into a tail. Hence "surrogate tail"
14:09:55 <elliott> Gregor: OK, what I mean is, no electron moves forward :P
14:10:25 <Gregor> elliott: Can't accomplish that without increasing neighborhood size.
14:11:09 <Gregor> Or, I suppose, the electron could turn into a tail instead of a flag if there's any open conductor around it ...
14:11:16 <elliott> Yes, good :P
14:11:19 <elliott> LOGIC
14:11:31 <Gregor> That also means you can't duplicate flags ...
14:11:48 <elliott> Good?
14:11:56 <Gregor> Maybe
14:12:01 <elliott> If you have two routes, one might be fast, one might be slow, you don't know which
14:12:04 <elliott> Just send the opponent's flag along both
14:12:06 <elliott> Best of both worlds
14:12:07 <elliott> Sux
14:13:40 <Gregor> Right, you can't (easily) do that.
14:13:58 <Gregor> (Actually you can do that, just not by duplication, you have to divide and conquer)
14:13:59 <Patashu> I don't get this: http://en.wikipedia.org/wiki/Exponent_bias Isn't the most significant place going to have the sign bit anyway?
14:15:30 <Gregor> Patashu: What do you mean "anyway"? This isn't a two's-complement integer, in principle they could put it anywhere.
14:16:33 <fizzie> Patashu: There's a sign bit for the value itself, but the exponent is logically speaking an unsigned integer, with that bias added.
14:16:35 <Gregor> elliott: Yeah, actually, it would be hard NOT to get the right effect with two branching routes, even without duplication.
14:16:45 <elliott> Gregor: Fair enough :P
14:16:59 <Gregor> elliott: If you just send electrons along both routes that don't interfere with one another, I think it'll work.
14:17:19 <fizzie> Patashu: Note that it has a range of e.g. -126 .. +127 and not -127 .. +126, which is what you'd get by treating the exponent as an equally-wide two's-complement signed integer.
14:17:28 <Gregor> Ohnowait, because once they merge they're pulling, so it'll just be a synchronization issue which gets the flag >_>
14:17:30 <Patashu> Hmm
14:18:03 -!- pikhq_ has quit (Read error: Operation timed out).
14:18:45 <Gregor> elliott: Ohwait, there's a simpler rule to get what I want; for an electron to turn into a flag, it must first have a tail.
14:19:28 <fizzie> Patashu: And there's also that ordering-when-treated-as-an-integer guarantee. That probably wouldn't work for a regular signed binary exponent.
14:19:58 <Patashu> I get it now
14:20:22 -!- pikhq has joined.
14:22:44 -!- Lymia has quit (Quit: Huggles for everybody~ ^_^).
14:23:35 <Gregor> elliott: Yup, that rule works :)
14:23:52 <elliott> Gregor: Woo
14:24:54 <Gregor> The only caveat I can see is that if you have tailless electrons next to flags, then BOTH dissipate. Which may be good or bad, but it's unexpected.
14:26:13 <Gregor> (Amongst the implications of this fact is that if you have a double-wire, flags will ALWAYS dissipate along it)
14:26:55 <Gregor> Err, that is, at the meeting of a single->double. I suppose if you had a double right up to the geyser, it'd work *shrugs*
14:29:02 <fizzie> Vorpal: Not related to anything, but in either Morrowind or Oblivion (I think Morrowind) I got my dude stuck in a piece of wall after jumping at it funnily, and he was *really* stuck. Some console commands finally got him extracted from that wall.
14:29:19 <Vorpal> fizzie, oh there are console commands? heh
14:30:02 <fizzie> It's bound to the standard key: where ~ is in US keylayout, the "§ or ½" key here.
14:30:27 <Vorpal> ah
14:33:50 <cheater> fizzie: what layout is that?
14:34:03 <fizzie> cheater: Finnish/Swedish.
14:35:55 <fizzie> Apparently Danish has a similar key there, except it swaps which is shifted (i.e. §/½ -> ½/§). Those Danes, always doing everything backwards.
14:37:38 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
14:38:56 <fizzie> It also reverses the Norwegian "Ø, Æ" (to right of L; corresponds to the Swedish/Finnish "Ö, Ä") to be "Æ, Ø" for no apparent reason.
14:53:00 -!- copumpkin has joined.
14:54:29 -!- MDude has quit (Ping timeout: 258 seconds).
14:56:35 -!- NihilistDandy has quit (Read error: Connection reset by peer).
14:56:53 -!- NihilistDandy has joined.
15:20:43 -!- pikhq has quit (Ping timeout: 252 seconds).
15:20:45 -!- pikhq_ has joined.
15:35:44 <elliott> Gregor: Has it changed again yet :P
15:47:21 -!- sliddy has joined.
15:47:22 -!- oerjan has joined.
15:48:35 -!- sllide has quit (Ping timeout: 252 seconds).
15:50:48 <elliott> hi oerjan
15:51:27 <oerjan> goætmida elliott
15:56:07 -!- jix has joined.
15:56:28 <elliott> Gregor: I'll test the changes soon...
16:06:47 <oerjan> <ais523> when walking along a road without pavements, the convention (it's enforced by the Highway Code, which isn't a law but if you don't follow it anything bad that happens is your fault by default) is that you walk on the right-hand side of the road, so there's no issue with passing other pedestrians because they're on the other side of the road already
16:07:09 * oerjan makes a mental mark that britain has the opposite rule of norway
16:07:44 <oerjan> wait, that's of course logical
16:08:30 <oerjan> <elliott> help why am i sixteen in hours who made this mistake........
16:08:53 <fizzie> oerjan: Goat's mid-body?
16:09:39 <oerjan> somehow i'd mentally marked it as september...
16:10:21 <fizzie> So your lavish birthday present is still in the mail! How unfortunate.
16:10:38 <oerjan> fizzie: just god ettermiddag horribly misspelled according to my dialect, which accidentally makes it look like sami
16:11:34 <oerjan> based on a pun by my ex-collaborator
16:13:47 <oerjan> <elliott> im having fifth-life crisis
16:15:06 <oerjan> the real crisis comes when augur rings your doorbell at midnight
16:15:22 <augur> <sulu> helloooooooo
16:16:26 <oerjan> who is sulu
16:16:29 <augur> ...
16:17:16 <ais523> hmm, the compose key has come in useful already
16:17:33 <ais523> retyping a Norwegian error message on a French website into Google Translate so I could figure out what it said
16:17:54 <oerjan> why didn't you just ask D:
16:18:04 <ais523> I don't know how to type å without using compose
16:18:08 <ais523> on this keyboard
16:18:14 <oerjan> å då så
16:18:27 <ais523> oerjan: because I'd still have had to retype it in order to tell you what it said
16:18:51 <ais523> the funny thing is, I'd actually guessed what it was purely from words that were almost the same in Norwegian and English
16:18:55 <ais523> like "software", which is identical
16:19:10 <oerjan> borrowing _does_ tend to do that.
16:19:19 <ais523> indeed
16:19:50 <oerjan> the more official norwegian is "programvare"
16:20:11 <ais523> and even that's pretty English-looking
16:20:30 <oerjan> yeah that's obviously a translation borrowing
16:21:01 <oerjan> except with something more descriptive instead of soft
16:22:29 <Phantom_Hoover> > 1220 / 170
16:22:29 <lambdabot> 7.176470588235294
16:22:41 <oerjan> > 1220 % 170
16:22:41 <lambdabot> 122 % 17
16:33:00 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
16:42:24 <Gregor> elliott: So, how's your warrior? 100% CHAMP?
16:44:32 <Gregor> elliott: Also, I'm thinking of adding your wire inventory to the outgoing message, so maybe protocol change weee :)
16:45:33 -!- zzo38 has joined.
16:54:43 <CakeProphet> :)
17:02:34 <zzo38> )
17:13:34 <elliott>
17:13:39 <elliott> Gregor: There's wire inventories now?
17:13:55 <Gregor> elliott: Soon.
17:14:06 <elliott> Gregor: I was never sure about them in the first place...
17:14:16 <elliott> Gregor: If destroying is slower than building, then building is basically hard-limited.
17:14:23 <Gregor> Oh ... that's a good point X-D
17:14:32 <Gregor> OK, they're gone again :P
17:14:36 <elliott> If it's not, then all hell breaks loose :P
17:15:23 <Gregor> elliott: Pull.
17:15:57 <elliott> Has it been reverted to http://codu.org/projects/rezzo/hg/index.cgi/rev/3a6964850280, because if so I need do nothing :P
17:16:05 <Gregor> No.
17:16:09 <elliott> How does the new agent-drawing work?
17:16:13 <elliott> Is it the TOTALLY AWESOME TAIL IDEA
17:16:17 <Gregor> No
17:16:24 <elliott> Psht :P
17:16:30 <elliott> What is it then
17:16:34 <Gregor> Arrows.
17:16:50 <elliott> Ah.
17:16:55 <elliott> Still can't see 'em, but it's a start :P
17:16:58 <Gregor> ...
17:17:03 <Gregor> They're friggin HUGE
17:17:04 <elliott> Would you accept a patch to add the trails?
17:17:19 <elliott> Gregor: Define huge
17:17:25 <elliott> Maybe my warrior crashed
17:17:28 <elliott> Has wander been updated?
17:17:40 <Gregor> wander was updated at some point, yes.
17:17:55 <elliott> Can't see 'em even with four :P
17:18:17 <Gregor> Did you ... recompile ...
17:18:23 <elliott> Hmm
17:18:24 <elliott> That
17:18:26 <elliott> That may be the issue
17:18:39 <elliott> WHOA now this is different :P
17:18:52 <elliott> What's the white blocks at the centre of these hubs?
17:19:09 <elliott> And how come the warriors seems to pass through the hubs
17:19:47 <elliott> Hmm, I take it the colouring is just some sort of highlight then...
17:20:25 <elliott> Now to add n-w support to the Haskell
17:22:30 <Gregor> The coloring is just a highlight. The white blocks are the base and flag geysers.
17:22:41 <elliott> Right.
17:22:45 <elliott> Any way to distinguish them?
17:22:54 <Gregor> Not at present :P
17:22:56 <elliott> And, hmm, why would there be four blocks as opposed to two?
17:23:05 <Gregor> Prettier symmetry *shrugs*
17:23:21 <Gregor> (You start with two bases in front of you and two geysers behind you)
17:24:36 <Gregor> Is there some canonical list of distinct colors in order by decreasing distinctiveness? (e.g. the list you'd use to choose colors for teams or bar-charts)
17:24:52 <elliott> Gregor: It's called a colour wheel :P
17:25:01 <elliott> Oh my god, this program's behaviour is so awesome.
17:25:07 <Gregor> elliott: That's in order of INCREASING distinctiveness, and uninvertable.
17:25:20 <elliott> It's caused a SHITLOAD of electrons to attach to this path it's building :P
17:25:30 <elliott> Gregor: Dunno then; something with HSV? LSV or whatever?
17:25:34 <Gregor> Is that a metric shitload or an imperial shitload?
17:25:57 <elliott> Gregor: http://ompldr.org/vOXp0ag http://ompldr.org/vOXp0aw
17:26:06 <elliott> It's literally eating its own wire while they pulse away madly now :P
17:26:21 <Gregor> elliott: But can you beat wander???
17:26:29 <elliott> Gregor: Can you even beat anything at this point
17:26:36 <elliott> Does the software recognise such a state
17:26:51 <Gregor> Umm ... no :P
17:26:57 <Gregor> But I can add that relatively quickly :P
17:27:01 <elliott> WTF at this blinking... electrons ca't exceed lightspeed.
17:27:16 <elliott> Might just be a zoom artefact
17:27:21 <elliott> Gregor: That would be good :P
17:27:25 <Gregor> Remember that thanks to you there's no synchronization between drawing and acting ;P
17:27:35 <elliott> Thanks to me? :P
17:27:41 <elliott> Oh, you removed the lock?
17:27:44 <Gregor> Yeah.
17:27:46 <elliott> Why, I agreed it was a good idea in the end :P
17:28:02 <elliott> I mean, your time limits only matter within a single turn; you can spend a second messing around drawing after that if you want to.
17:28:06 <Gregor> It was shockingly slow ...
17:28:07 <Gregor> that lock ...
17:28:13 <elliott> Ah.
17:28:20 <elliott> Gregor: Well what you really want is something COW
17:28:20 <Gregor> Besides, locking is for pussies.
17:28:32 <elliott> So that the CA can start modifying the world again while the display thread draws the original
17:28:37 <elliott> <Gregor> Besides, locking is for pussies.
17:28:43 <elliott> This line is doing something patently impossible and it's very noticable :P
17:28:54 <elliott> It's flickering on and off in its totality every tick.
17:29:25 <elliott> Is it just me or is the playfield mebbe a little oversized?
17:29:47 <Gregor> <elliott> It's flickering on and off in its totality every tick. That, uhh, shouldn't be a locking issue :P
17:30:03 <Gregor> Have your random seed and warrior? :P
17:30:05 <elliott> Sure it is; it's just reading the cells at the worst possible time.
17:30:16 <elliott> It's an electron/wire sequence.
17:30:22 <elliott> Well, electron/electron tail/wire
17:30:25 <elliott> Or maybe no wire
17:30:26 <elliott> w/e
17:30:28 <elliott> But okay
17:30:37 <elliott> elliott@katia:~/Code/rezzo$ ./rezzo ./wonder
17:30:38 <elliott> Random seed: 448210167
17:30:38 <elliott> wonder is
17:30:42 <Gregor> The thing is, unless it's only managing to read one in every three frames, that shouldn't happen.
17:30:47 <elliott> http://sprunge.us/LPVI
17:30:55 <elliott> compile with recent GHC and -O2
17:30:58 <elliott> needs the cereal package
17:30:59 <Gregor> Err, even then ... that just makes no sense.
17:31:09 <elliott> Gregor: Oh, and it reported NoMessage
17:31:10 <elliott> NoMessage
17:31:10 <elliott> NoMessage
17:31:11 <elliott> During the run
17:31:16 <elliott> It was a long run, but that's still some nondeterminism there :P
17:31:22 <elliott> (That means the server said it failed to send anything last turn)
17:32:10 <Gregor> elliott: HALP HOW DO I HASKELL
17:32:19 <elliott> Gregor: ghc --make -O2 wonder.hs
17:32:20 <Deewiant> ghc --make foo.hs -O2
17:32:24 <elliott> Gregor: If you get an error, tell me the error
17:33:23 <Gregor> wonder.hs:9:18:
17:33:23 <Gregor> Could not find module `Data.Vector.Storable':
17:33:23 <Gregor> Use -v to see a list of the files searched for.
17:33:30 <elliott> Gregor: cabal install vector cereal
17:33:36 <elliott> (You're almost certainly lacking cereal if you're lacking vector :))
17:33:39 <Gregor> Already installed cereal
17:33:45 <elliott> Do the same for vector then :P
17:33:55 <Gregor> You should know your real dependencies GEEZE
17:33:59 <elliott> The Glorious Glasgow Haskell Compilation System, version 7.0.4
17:33:59 <elliott> For reproducibility purposes ;-)
17:34:00 <elliott> Gregor: I do
17:34:05 <elliott> vector, cereal
17:34:16 <elliott> Oh, and bytestring but come on
17:34:18 <Gregor> <elliott> needs the cereal package
17:34:29 <elliott> Well yeah, it didn't occur to me that humans existed without cereal.
17:34:32 <Deewiant> Needs base, too!
17:34:33 <elliott> True in every sense of the word.
17:34:36 <elliott> Deewiant: WILL FIX
17:34:40 <Gregor> <elliott> needs the cereal package <-- did not mention vector
17:34:45 <elliott> WAAH WAAH
17:34:54 <elliott> You don't mention your gratuitous libc dependency in the Makefile either
17:35:09 <elliott> Gregor: It occurs to me that rezzo might want something like ais' Secret Project... you need more than reproducibility of the map, you need reproducibility of an entire run :P
17:35:13 <elliott> Which is exactly what ais is doing.
17:35:19 <elliott> I don't know how fast it is though.
17:35:25 <elliott> It works without any kind of emulation I think so maybe not so slow.
17:35:43 <Gregor> Graphics look all good to me *shrugs*
17:36:01 <Gregor> Yeah, I know, the random seed is only a small part of repro, but *eh*, it's better than nothing.
17:36:09 <elliott> <Gregor> Graphics look all good to me *shrugs*
17:36:10 <elliott> It takes ages
17:36:14 <elliott> Wait until it wraps around at least once
17:36:31 <Gregor> It's noming its own line right now.
17:36:41 <elliott> Wait until it gets about three/fourths up
17:36:43 <elliott> You should see the flickering
17:36:57 <elliott> Maybe it's just my display but the effect persisted on (badly smoothed) Compiz zoom
17:37:18 <Gregor> Oh, I see what's happening.
17:37:21 <Gregor> No, that's legit.
17:37:36 <elliott> What is happening :P
17:37:38 <Gregor> The electrons /next/ to that are happily attacking an empty conductor.
17:37:48 <Gregor> It totally fills up, then dissipates, then totally fills up again
17:37:56 <Gregor> Every cell has at least one electron next to it, in the next wire over.
17:38:07 <elliott> lol :P
17:38:10 <elliott> Nice.
17:38:53 <Gregor> (So no, no electrons are moving faster than lightspeed)
17:39:04 <Gregor> PS have we discussed how awesome the name for this software is?
17:39:12 <elliott> What's so awesome :P
17:39:38 <Gregor> Dood, it's REZZO
17:39:42 <Gregor> Say it with an Italian accent
17:39:46 <Gregor> Rezzo!
17:39:53 <elliott> Argh, I wanted to add SLIGHTLY non-trivial behaviour to wonder but I need a queue already
17:39:59 <elliott> Gregor: ...Resource?
17:40:04 <elliott> Resso...rect?
17:40:18 <elliott> You have to remember that I'm literally an idiot.
17:40:42 <elliott> Also my idea of an Italian accent is Mario.
17:40:43 <Vorpal> fizzie, any idea about this: I walked a long distance along a road and suddenly I started repeatedly falling through the road before being moved up again.
17:40:45 <Vorpal> very strange
17:40:52 <elliott> Vorpal: You may be in Hell.
17:41:09 <Vorpal> elliott, not really no
17:41:58 <elliott> Gregor: I don't suppose I can piggyback my Haskell warrior crap into the repo on the grounds of having a bunch of example warriors, 'cuz it sure would be convenient to commit this :P
17:42:10 <Gregor> elliott: The name has no meaning.
17:42:10 <elliott> TAKE OVER EVERY REPOSITORY........
17:42:18 <Gregor> elliott: I actually have no idea why I called it that.
17:42:21 <elliott> Gregor: Oh :P
17:42:25 <elliott> Well, it's a nice name.
17:42:39 <Gregor> elliott: I had started work on a precursor a few days ago, then gave up, then found that directory again but can't remember why I called it that.
17:42:44 <elliott> X-D
17:43:05 <elliott> I usually end up with directories in Code/ that I don't even know what they are.
17:43:38 <fizzie> Vorpal: Sounds more Minecrafty than Obliviony. :p
17:43:54 <Gregor> elliott: One sec.
17:43:59 <Vorpal> fizzie, was definitely oblivion.
17:45:02 <oerjan> google seems to imply rezzo means "shade"
17:45:58 <elliott> Gregor: What am I waiting for?
17:46:07 <fizzie> Vorpal: It's a glitchy game, though. If you haven't, I may suggest http://www.uesp.net/wiki/Tes4Mod:Unofficial_Oblivion_Patch -- though it probably wouldn't fix a bug like that, it's very good in terms of avoiding really annoying "oh no the quest state got all confused and now I can't progress" problems. (1800 bugs and 70000 object placement errors are no joke.)
17:46:44 <Gregor> My latency is like a bazillion right now.
17:46:45 <Vorpal> fizzie, ah, didn't know that. Will get it
17:46:49 <Gregor> elliott: I'm setting up a warriors repo.
17:47:01 <Gregor> Which would be done if my latency wasn't a billion
17:47:18 <elliott> Gregor: Great, so I can dominate the hill with my ten Haskell warriors with the same underlying framework
17:47:19 <elliott> WMAHAHAHAHAHA
17:47:20 <fizzie> Vorpal: As a word of warning, it does fix some exploitable-for-your-benefit bugs too, like the infamous floating brush one.
17:47:22 <elliott> W...mahaha.
17:47:35 <Vorpal> fizzie, floating brush?
17:47:44 <elliott> Gregor: I have a feeling this game will be less popular than BF Joust, more thinking required :P
17:47:45 <Gregor> elliott: https://codu.org/projects/rezzo/warriorhg/
17:47:52 <Gregor> elliott: Username ehird, password whatever it was for Plof.
17:48:00 <elliott> Does hg have a submodule thing?
17:48:03 <elliott> I forget.
17:48:08 <Gregor> Yes
17:48:21 <Gregor> See google.com/search?q=hgsub :P
17:48:35 <elliott> Jesus that's cpomplicated
17:48:41 <elliott> Maybe I'll just clone this into a subdirectory of my clone
17:49:05 <fizzie> Vorpal: In the "stock" Oblivion, paint brushes aren't affected by gravity. You can place them in air, and they stay exactly where they were put. In addition, if you place enough of them, you can jump and stand on top of them. Combined with one of the item-duplication bugs you can pretty much go anywhere, as long as you have the patience to place a few thousand paint brushes to build a bridge.
17:49:28 <elliott> fizzie: Amazing
17:49:29 <Vorpal> fizzie, lol
17:49:44 <Vorpal> fizzie, how could they not officially patch this stuff
17:49:50 <elliott> That is just the best bug ever
17:49:58 <oerjan> i cannot really get a confirmation from outside google translate, though.
17:50:02 <elliott> Is that simpler than using the console to cheat :-)
17:50:33 -!- pikhq has joined.
17:50:42 <fizzie> elliott: Probably not, but of course a purist would only use in-game mechanisms. Plus I think the console's not available for people playing the console versions. (How ironic.)
17:50:45 <Vorpal> elliott, nope. But it isn't technically cheating. Just exploiting a bug
17:50:46 <oerjan> oh there
17:51:13 -!- pikhq_ has quit (Ping timeout: 264 seconds).
17:51:14 <oerjan> English words for the Italian word rezzo
17:51:16 <oerjan> breeze, coolness, shade
17:51:43 <fizzie> "The console is only available on the PC; there is no way to use the console on the Xbox 360 or PS3 platforms." Right.
17:52:05 <oerjan> also it's an italian place name
17:52:37 <Gregor> oerjan: Well I knew it was Italian. Even though I "made it up", it sounds too Italian not to be legit.
17:54:05 <elliott> Gregor: I'ma just clone it into a subdirectory :P
17:54:11 <elliott> Unless you want to "officially" make it a subrepo.
17:57:51 <Gregor> I don't at all want to make it a subrepo.
17:58:01 <elliott> Okay.
17:58:07 <elliott> I don't know hg at all :P
17:59:24 <elliott> SF(ret->damage, malloc, NULL, (w*h));
17:59:24 <elliott> memset(ret->damage, 0, w*h);
17:59:27 <elliott> Gregor: Isn't calloc standard?
17:59:35 * elliott is trying to add trails
17:59:51 <ais523> calloc's rarely used, but that fits the definition of calloc pretty much exactly
17:59:55 <ais523> multiplication and all
18:00:23 <ais523> (what /is/ up with calloc's API?)
18:01:08 <elliott> ais523: mimics arrays, I guess
18:01:10 <elliott> static arrays, that is
18:01:15 -!- sliddy has changed nick to sllide.
18:01:23 <elliott> one param is a sizeof
18:01:25 <zzo38> I don't know, I have not used calloc in C
18:01:26 <fizzie> ais523: It does match fwrite/fread. Maybe they threw a d2 when deciding whether to do the multiplication inside or outside.
18:01:29 -!- sllide has changed nick to sliddy.
18:01:37 -!- sliddy has changed nick to sllide.
18:02:05 <ais523> I think someone pointed out that replacing calloc with malloc, a multiplication, and a zero is incorrect (the other way round is correct), but most stdlibs do anyway
18:02:16 <ais523> calloc(SIZE_MAX,SIZE_MAX) should probably fail
18:02:21 -!- copumpkin has joined.
18:02:28 <ais523> and definitely, shouldn't give you jus the one byte
18:03:08 <fizzie> Yes, I've always wondered if calloc impls bother to do the multiplication carefully.
18:03:14 <fizzie> Most callers of malloc certainly don't.
18:03:37 <ais523> fizzie: most impls in the wild don't either
18:03:48 <ais523> malloc callers probably know there can't be an overflow anyway, though
18:04:06 <ais523> or at least, that an overflow would break the program whether now or later
18:04:11 <Gregor> Yeah, I never use calloc, not sure why.
18:04:56 <ais523> because what it does is generally not a useful thing to do
18:05:21 <zzo38> How should Glk keyboard events be represented in Haskell, since using toEnum to convert invalid Unicode numbers to Char doesn't work
18:06:47 <elliott> zzo38: Word32, probabl
18:06:48 <elliott> y
18:07:14 <CakeProphet> best malloc implementation: void *malloc(size_t size) {return realloc(NULL, size);}
18:07:31 <zzo38> Yes that would work. I don't know if it is best way though
18:07:36 <Gregor> Especially good if you implement realloc in terms of malloc.
18:07:49 <CakeProphet> exactly. then you don't even have to implement anything!
18:08:19 <CakeProphet> lazy memory management.
18:08:44 <zzo38> It can use toEnum with 0xFFFF and 0xFFFE to Char but I don't know if that is proper in Haskell, since those are not valid Unicode characters.
18:10:08 <CakeProphet> (unsafeCoerce 0xFFFF) :: Char --can't be more proper than this
18:10:33 <oerjan> > maxBound :: Char
18:10:34 <lambdabot> '\1114111'
18:10:53 <oerjan> > showHex 1114111 ""
18:10:54 <lambdabot> "10ffff"
18:10:59 <elliott> Gregor: Well, I have tails... they're inefficient, have an overflow problem, and are always red... but apart from that...
18:10:59 <fizzie> Heh, "man mallopt" on my system: "[In synopsis:] void *malloc_get_state (void); int malloc_set_state (void *ptr); [In description:] malloc_get_state() returns a ... malloc_set_state()" (the ellipsis is a literal quote).
18:11:06 <zzo38> The Haskell 2010 report just says "The character type Char is an enumeration whose values represent Unicode (or equivalently ISO/IEC 10646) characters". It doesn't say some numbers that are still in the range 0x0000 to 0x10FFFF are valid or not valid.
18:11:17 <Gregor> elliott: Huh?
18:11:19 <elliott> zzo38: it also doesn't say that the type can't contain a pink banana
18:11:27 <elliott> zzo38: the values represent Unicode characters and therefore nothing else
18:11:28 <CakeProphet> fizzie: so you found a poorly documented piece of software?
18:11:28 <Gregor> elliott: Wait, you're implementing tails in rezzo???
18:11:34 <elliott> Gregor: Trails :P
18:11:38 <elliott> But I typo'd them as tails so NOW THEY'RE TAILS
18:11:42 <fizzie> CakeProphet: Not just any software, GNU software!
18:11:45 <zzo38> CakeProphet: Although, toEnum will also do that but only in range
18:11:50 <Gregor> elliott: If you commit that ... murder.
18:12:04 <elliott> Gregor: I don't have push access to the rezzo repository that I'm aware of.
18:12:11 <elliott> Gregor: But jeez, I was just writing it for you to take a look at :P
18:12:16 <zzo38> elliott: Does that mean GHC has a defect that allows (toEnum 0xFFFF :: Char) to work?
18:12:23 <Gregor> elliott: This is not snake, man :P
18:12:27 <elliott> Gregor: I don't see what's so inherently wrong about it; it only draws the colour when it would have been black.
18:12:32 <elliott> And no, but it provides much easier visibility of warriors.
18:12:36 <CakeProphet> > toEnum 0xFFFF :: Char
18:12:37 <lambdabot> '\65535'
18:12:44 <oerjan> > length [minBound .. maxBound :: Char]
18:12:45 <lambdabot> 1114112
18:12:54 <elliott> zzo38: hmm
18:13:00 <elliott> zzo38: I guess that's a bug, but a pretty low-priority one :P
18:13:13 <oerjan> > foldl1' seq [minBound .. maxBound :: Char]
18:13:14 <lambdabot> '\1114111'
18:13:21 <elliott> Gregor: BTW, by "tail", I mean it fades out the further away it is
18:13:31 <elliott> So it's basically just a SPEED LINE :P
18:13:36 <Gregor> Uhh
18:13:55 <oerjan> zzo38: no sign there is anything empty in the range
18:14:14 <fizzie> oerjan: Except the documentation, which says "Unicode characters".
18:14:17 <elliott> oerjan:
18:14:19 <elliott> oops
18:14:29 <elliott> oerjan: 0xFFFF isn't a Unicode character
18:14:33 <elliott> is it a Unicode codepoint, though?
18:14:36 <fizzie> It is.
18:14:36 <CakeProphet> older verions of malloc returned char *......?
18:14:43 <elliott> zzo38: I think the report really means codepoint and it just says character :-)
18:14:54 <fizzie> CakeProphet: Before the invention of "void *", that's probably the best you could do.
18:15:02 <elliott> CakeProphet: Like void * makes any sense
18:15:09 <elliott> sizeof(*p) where p is (void *) should be 0
18:15:14 <CakeProphet> void * makes perfect sense.
18:15:18 <elliott> sizeof(*p) where p is (void *) should be 0
18:15:27 <elliott> Or hmm
18:15:29 <elliott> What's sizeof(void)
18:15:31 <elliott> Can you even do that
18:15:33 <CakeProphet> no
18:15:41 <CakeProphet> void * just means you have a pointer...
18:15:42 <fizzie> Undefined: it's an incomplete type, that can never be completed.
18:15:44 <elliott> void isn't actually a type, so no, (void *) doesn't make sense.
18:15:51 <CakeProphet> no type. it's a pointer. it pointers to a word of memory.
18:15:53 <elliott> CakeProphet: "it makes sense because it just means what it means"
18:16:00 <CakeProphet> yep.
18:16:08 <elliott> nice circular
18:16:12 <elliott> but i have more fun things to do
18:16:18 <CakeProphet> rectangular logic?
18:19:10 <fizzie> A bitfield can also never be sizeof'd at all (or pointed to, even), nor can functions. Everything else (that is not an incomplete type) should be fair game.
18:19:32 <CakeProphet> basically void* makes sense because memory addresses are inherently typeless.
18:20:41 <CakeProphet> or they can be, anyways.
18:20:44 <fizzie> This is also the silly:
18:20:46 <fizzie> !c size_t foo = sizeof printf("foo - "), bar = sizeof (char[printf("bar - ")]); printf("baz: %zu %zu\n", foo, bar);
18:20:48 <EgoBot> bar - baz: 4 6
18:21:09 <fizzie> Pre-C99 it was always clear, the sizeof'd expression is never evaluated. But nowadays if it's a VLA it suddenly will be.
18:22:06 <CakeProphet> that's a beautiful misuse of features.
18:22:34 <elliott> so that sizeof is resolved at runtime? nice.
18:22:44 <CakeProphet> makes me proud to be a programmer.
18:22:48 <CakeProphet> with some many bright folks out there.
18:22:48 <elliott> i suppose they have to be for vlas.
18:28:18 -!- azaq23 has joined.
18:29:51 <zzo38> I still think Unicode is badly designed in many ways though
18:30:25 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
18:30:35 <elliott> Gregor: OK fine, no tails :P
18:30:36 <elliott> YOU WIN
18:30:41 <elliott> The psychological torture is too much.
18:33:02 <Gregor> I just added proper loss conditions.
18:33:10 <elliott> Gregor: I CAN;T TAKE IT ANY MOE
18:37:17 <Gregor> I daresay this game is starting to make sense.
18:37:36 <Gregor> I also daresay it will take all freaking eternity to FIND another player, let alone kill them.
18:38:06 -!- myndzi has joined.
18:38:55 <ais523> Gregor: isn't that the whole concept of Core Wars?
18:39:06 <ais523> well, except when you're playing against a paper-strategy program
18:39:40 <Gregor> Fair point
18:40:43 <Vorpal> <Gregor> I daresay this game is starting to make sense. <-- what game is it?
18:41:22 <Gregor> Vorpal: Rezzo. It's a competitive programming capture-the-flag game played on a wireworld-derived CA.
18:41:39 <Gregor> Also, its documentation is awesome:
18:41:39 <Gregor> $ ./rezzo --help
18:41:39 <Gregor> --help?! What's this nonsense!
18:41:40 <Vorpal> Gregor, innovative.
18:41:51 <Vorpal> Gregor, so what does man rezzo do?
18:42:04 <Gregor> $ man rezzo
18:42:04 <Gregor> No manual entry for rezzo
18:42:08 <Vorpal> Gregor, ouch
18:51:45 <elliott> Gregor: hg import patch for you: http://sprunge.us/hIKf
18:52:14 <Gregor> elliott: :(
18:52:32 <elliott> Meanwhile:
18:52:32 <elliott> https://codu.org/projects/rezzo/warriorhg/index.cgi/file/2cf20f7fdf02/wander.hs
18:52:35 <elliott> Fewer lines of code than yours.
18:52:43 <elliott> If you whip out the dependency argument I'll point to wander.c's dependencies :P
18:59:52 <CakeProphet> elliott: the next thing to do seems to be use a data structure to keep track of the current known grid.
19:00:08 <elliott> No, the next thing is a queue, and then the next thing after that is a threading system :P
19:00:11 <elliott> That comes later.
19:00:41 <CakeProphet> perhaps even make predictions about locations that are not in view by running the CA each step.
19:00:52 <CakeProphet> but keep the "predicted" grid seperate from the "last known" grid
19:03:25 <CakeProphet> also keep track of how long each predicted cell has deviated from the last known cell, so that the agent can make decisions on the likelihood of the predicted cells correctness.
19:05:46 -!- azaq23 has quit (Ping timeout: 260 seconds).
19:06:11 -!- azaq23 has joined.
19:08:27 <elliott> Gregor: Well, I've invented the most terrible one yet.
19:08:36 <Gregor> Yesssssssss
19:08:55 * elliott pushes
19:09:38 <elliott> Gregor: Pull warriors repo, make, then try rezzo on "tantrum" :P
19:10:30 <ais523> someone explain the rules of this game to me
19:10:36 <Gregor> elliott: Now that's what I call AI.
19:10:43 <elliott> ais523: WireWorld plus external influence
19:10:49 <Gregor> ais523: Do you know Wireworld? (If not, learn that first)
19:10:53 <ais523> I do
19:10:59 <ais523> well, I can't remember all the details
19:11:00 <Gregor> elliott: That arrow is throwing a FIT!
19:11:05 <ais523> but I knew them once, and I know the general concept
19:11:19 <elliott> ais523: bots can turn around, move forwards, move forwards and lay wire behind them (simultaneously), and hit the cell in front of them (four times to destroy)
19:11:38 <elliott> there's also bases and flag geysers, you have to attach the opponent's flag (travels with electron, comes from geyser) to your base
19:11:39 <ais523> ah, OK, four operations
19:11:44 <elliott> so it's CTF, WireWorld style
19:11:49 <Gregor> Yup
19:12:01 <Gregor> I should write down the CA rules :P
19:12:11 <ais523> and you can destroy each of wire/wire+spark/wire+tail back to no-wire by spending four turns?
19:12:13 <elliott> ais523: oh, and 0.06s per turn, realtime
19:12:29 <elliott> and you can turn exactly one cell to space by hitting four times, doesn't matter consecutive or not
19:12:33 <elliott> including geysers, etc.
19:12:38 <elliott> even agents i think?? Gregor?? :P
19:12:44 <ais523> what specifically's the victory condition?
19:12:44 <Gregor> No, not agents, bases or geysers.
19:12:51 <elliott> oh, okay
19:12:55 <Gregor> ais523: Enemy flag next to your base.
19:12:55 <elliott> ais523: <elliott> there's also bases and flag geysers, you have to attach the opponent's flag (travels with electron, comes from geyser) to your base
19:13:09 <elliott> Gregor: tantrm's strategy is truly brilliant
19:13:21 <elliott> Gregor: it builds forwards; if it can't, it hits out in front of it, and then turns left and restarts
19:13:29 <elliott> so if it gets trapped, it just spins around hitting things until it escapes
19:13:51 <ais523> can there be more than one flag corresponding to the same player at a time?
19:14:00 <elliott> yes.
19:14:04 <elliott> that's why you have a geyser of them :P
19:14:16 <ais523> I wasn't sure when the geyser generated a new one from the description so far
19:15:01 <Gregor> ais523: I'm writing up a README with a more useful description :P
19:15:02 <elliott> Gregor: Y'know, if both warriors respond in under their given time, you could avoid waiting the rest of the turn, and speed up perhaps the majority case massively...
19:15:26 <Gregor> elliott: Hello -q
19:15:37 <elliott> Gregor: Yeah, but, I mean, without disturbing the limit...
19:15:44 <Gregor> ... that's what -q does.
19:15:58 <ais523> I imagine the playfield has to be quite small to make this woek
19:15:59 <ais523> *work
19:16:01 <elliott> Gregor: Oh, really?
19:16:12 <Gregor> ais523: We're not really sure what, if anything, works :P
19:16:13 <elliott> ais523: I'm starting to think that the viewport should maybe be bigger and the playfield smaller
19:16:20 <elliott> the big field seems a non-starter to me
19:16:26 <elliott> it's essentially the same challenge repeated a bunh of times
19:16:27 <ais523> same
19:16:32 <elliott> which just = pointless slowness
19:16:40 <elliott> but you should have to explore a few areas before finding what you want
19:16:46 <elliott> so I'm not sure how big it should be
19:16:55 <ais523> what about a strategy of just building loads of wires connecting to your base
19:17:03 <elliott> I suspect that, modulo the time it actually takes to move, multiplying the viewport and board size by the same amount has no effect
19:17:06 <ais523> in the hope that a connection to the enemy's geyser ends up colliding with one
19:17:07 <elliott> on the overall slowness, I mean
19:17:27 <elliott> ais523: why would the enemy be connecting its geyser to anything?
19:17:40 <elliott> Gregor: Wow, tantrum is REALLY unproductive :P
19:17:44 <ais523> well, one of the wires you build might end up next to it eventually
19:18:11 <elliott> Gregor: I like how it's basically nondeterministically scribbling somehow...
19:18:16 <elliott> Langton's ant esque
19:18:35 <elliott> Gregor: OK, so new question: Why's -q not the default? :P
19:19:05 <Gregor> elliott: Because you should allow bots to use their spare time for thinking.
19:19:36 <elliott> Fair enough
19:19:49 <elliott> Didn't think of that because my two bots so far are really dumb :P
19:19:53 <elliott> And one of them is stolen :P
19:20:00 <ais523> Gregor: if they want to do that, why don't they just delay their submission until right at the end of their timeslice?
19:20:22 <elliott> ais523: Might miss it because of nondeterministicness... but that's also a good point
19:20:35 <elliott> (Nondeterministicnes sbeing "IO")
19:20:46 <elliott> What, less than four hours :/
19:21:13 <elliott> Gregor: Tantrum produces really interesting patterns :P
19:21:17 <Gregor> ais523: Yeah, too much scheduling involved, you couldn't do it accurately.
19:21:45 <ais523> elliott: isn't tantrum a variant of langton's ant?
19:21:56 <elliott> ais523: hmm, you think it might literally be that?
19:21:56 <ais523> not exactly the same because of the four-hits thing and it doesn't turn right on success
19:22:04 <ais523> but those are the only differences
19:22:04 <elliott> hmm
19:22:17 <elliott> that would explain why it's making interesting patterns spasmodically in its little corner :)
19:22:23 <elliott> when does it shoot away and become turing-complete?
19:22:42 <elliott> wait, does this mean that langton's ant can be decoded directly into rezzo?
19:22:44 <elliott> :D
19:24:49 <elliott> case updateAck update of
19:24:50 <elliott> OK -> push ActionQ (Turn R) >> push actionQ Build
19:24:50 <elliott> InvalidAction -> replicateM_ 4 (push actionQ Hit) >> push actionQ Advance >> push actionQ (Turn L) >> push actionQ Build
19:24:52 <elliott> feels like it should be easier
19:24:59 <elliott> (InvalidAction = "you tried to build/advance but you bashed into a wall")
19:28:47 <Gregor> ais523: https://codu.org/projects/rezzo/hg/index.cgi/raw-file/4f41806a8067/README
19:28:57 * ais523 reads
19:29:16 <ais523> elliott: I don't think Langton's Ant has ever been proven TC
19:29:45 <ais523> in fact, nobody's yet proven or disproven that given a finitely-many-cells-set initial condition, it always goes off and builds a highway eventually
19:30:30 <elliott> Gregor: The universality of Langton's ant was proven in 2000.[2]
19:30:31 <elliott> erm
19:30:31 <elliott> ais523:
19:30:37 <elliott> http://www.dim.uchile.cl/~anmoreir/oficial/langton_dam.pdf
19:30:49 <elliott> ais523: also osmeone else from the seolang wiki got published in Complex Systems.......
19:30:56 <ais523> elliott: aha
19:31:14 <elliott> but they were a person who is not as good a person who could have been published as most because they are the person who argued a lot about TC and "practical machines" (User:Oleg) oops......
19:31:28 <ais523> Gregor: the CA there looks a little buggy; in particular, flags don't conduct along conductors
19:31:32 <elliott> Gregor: -w and -h change the protocol, right?
19:31:33 <ais523> or, wait, do flags replace electron /tails/?
19:31:40 <Gregor> ais523: Flags replace electrons.
19:31:53 <Gregor> ais523: If you send an electron current at a flag, it will drag the flag towards the source.
19:32:25 <ais523> ah, hmm, so flags aren't actually anything like electrons, because they move in the other direction, and don't move of their own accord
19:33:01 <Gregor> Yeah
19:33:17 <Gregor> And actually you reminded me that I missed a condition in a rule :P
19:33:24 <Gregor> * electron:
19:33:24 <Gregor> * if one or more neighbor is a flag or flag geyser and one or more neighbor
19:33:24 <Gregor> is an electron tail,
19:33:48 <ais523> what information do agents have about their surroundings? just whether their previous attempted move was legal?
19:33:55 <elliott> ais523: they also see their viewport
19:34:01 <elliott> and the damages of all cells within
19:34:15 <ais523> everything, including owners of flags, etc?
19:34:24 <elliott> those are part of the states, so yes
19:34:34 <elliott> it's just a notational convenience to consider them equivalent
19:34:43 <ais523> hmm, and flags can only be destroyed by sending an electron adjacent to two differently-colored flags at once
19:35:06 <Gregor> ais523: Or just hitting them.
19:35:16 <ais523> ah right
19:35:16 <elliott> Hitting things: the best strategy.
19:36:03 <ais523> hmm, as far as I can tell it's completely obvious strategy to try to prevent any of your own flags being generated
19:36:31 <Gregor> ais523: That's obvious /strategy/, but it's not easily accomplished.
19:37:08 <ais523> against a single opponent, it's trivial; build a square of conductor (of any size, so long as you have room to move inside it) around your geyser
19:37:17 <ais523> that fits inside your viewport
19:37:24 <elliott> wire can be destroyed
19:37:26 <elliott> (conductor is a lame name)
19:37:31 <ais523> then whenever your opponent moves adjacent to it, you move to the other side of the same wire
19:37:48 <ais523> and repair it if they destroy it; repairing is faster than destroying
19:38:01 <elliott> Gregor: Writing a bot for this seems much more like a real AI task than BF Joust
19:38:08 <ais523> ah hmm, that only works if bots can't share a square
19:38:12 <elliott> Like, you want pathfinding pretty much immediately.
19:38:14 <elliott> ais523: They can't, CA.
19:38:17 <ais523> but you can easily always be in a position to repair
19:38:18 <Gregor> elliott: Yeah, but you can write it in any language, not just BF :P
19:38:21 <ais523> elliott: simple enough, then
19:38:37 <ais523> can you see which way the opponent is facing?
19:38:44 <elliott> Gregor: Doesn't make it easier :P
19:38:48 <elliott> ais523: Nope, but I did suggest that to Gregor once.
19:38:50 <ais523> if you can, it's even more obviously trivial to create an impenetrable convex barrier
19:38:59 -!- azaq23 has quit (Quit: Leaving.).
19:39:29 <ais523> if you can't, the opponent could knock the whole thing to 1 hit left, and then random-walk along it until you guessed the wrong direction and couldn't catch up with it
19:40:00 <elliott> Gregor: help hes desrtroying our ofensives
19:40:43 <ais523> this suffers from the usual BF Joust problem of "it can't do anything else", of course
19:40:44 <Gregor> He has fair points.
19:41:18 <Gregor> ais523: I'm hoping that the fact that the bots are in any language partially alleviates that :P
19:41:33 <ais523> Gregor: I mean, it's using all its actions defending
19:41:35 <ais523> and has no time to try to win
19:41:58 <Gregor> Oh, right.
19:42:01 <Gregor> You can only stalemate.
19:42:13 <Gregor> And if there are >2 bots, lol
19:42:40 <ais523> I know that in the "golfed BF Joust" thing I was wondering about, I was going to add a rule that "if the game goes to timeout, whichever program did the longest sequence of waits in a row wins"
19:42:43 <Vorpal> Gregor, how many dimensions does the game world have?
19:42:45 <Deewiant> How big is the world?
19:42:51 <Vorpal> 2D?
19:42:53 <Gregor> Vorpal: 2.
19:42:56 <Gregor> Deewiant: User-specified.
19:43:03 <Deewiant> Typical? :-P
19:43:05 <Gregor> Deewiant: Default 640x640 right now, which may be too big.
19:43:05 <elliott> <elliott> Gregor: -w and -h change the protocol, right?
19:43:14 <ais523> that rule basically makes defence programs and attack programs of similar qualities similar lengths
19:43:19 <Gregor> elliott: No, why would they?
19:43:22 <ais523> because you don't have to stick a whole full-tape clear in there
19:43:26 <Gregor> elliott: Only the viewport is part of the protocol.
19:43:28 <elliott> Gregor: Oh, viewport is still the same, duh...
19:43:38 <Vorpal> Gregor, is there a time limit for how long a bot is allowed for a turn?
19:43:50 <Gregor> Vorpal: 1/15th of a second, or as specified.
19:43:52 -!- azaq23 has joined.
19:43:57 <Vorpal> ah
19:44:34 <Vorpal> Gregor, the thing about allowing any language is good. Means you can do complex logic and tracking state of what the opponent did to a far greater level than in bfjoust
19:44:44 <Vorpal> Gregor, will egobot support tournaments for this?
19:45:10 <Vorpal> Gregor, view port? So the bots have a limited vision?
19:45:20 <Vorpal> makes everything a lot more interesting
19:46:01 <Gregor> Vorpal: EgoBot almost certainly won't :P
19:46:16 <Gregor> Vorpal: Yes, bots have a limited viewport. They also don't know their absolute location or orientation.
19:46:17 <elliott> Gregor: I'ma vote 338x338 for default size :P
19:46:31 <Gregor> elliott: That's ... a bit big, and not odd. Although I agree with increasing it.
19:46:31 <Deewiant> 338?
19:46:40 <elliott> Deewiant: Viewport squared times tw
19:46:40 <elliott> o
19:46:54 <elliott> At first I thought, viewport size of viewports
19:46:58 <elliott> But that's just 169x169
19:47:03 <elliott> You're likely to end up right next to your opponent
19:47:05 <ais523> do programs know the location of their own flag geyser and base?
19:47:06 <elliott> So I doubled it :P
19:47:11 <elliott> ais523: they spawn next to them, so yes
19:47:11 <Gregor> ais523: They start at them.
19:47:19 <ais523> oh, they're next to each other?
19:47:21 <zzo38> They have added some useful stuff in Glk although WinGlk is still using the old version of the specification.
19:47:35 <Gregor> ais523: Not /right/ next to each other, but close.
19:48:00 <Vorpal> <Gregor> Vorpal: Yes, bots have a limited viewport. They also don't know their absolute location or orientation. <-- assuming that the initial orientation and position is known then it becomes trivial
19:48:10 <Gregor> elliott: Maybe 33x33?
19:48:41 <Gregor> Vorpal: The initial orientation and position aren't known, but also aren't relevant, the point is just that you don't know what the server considers to be 0,0, you only know relative to your own starting position.
19:48:41 <zzo38> Including one thing I wanted to use, which is line terminator special keys. I sort of faked it in some of my own programs by adding keyboard shortcut resources to the Glk.dll file
19:48:48 <Gregor> Vorpal: Put differently, you have no compass.
19:49:14 <elliott> Gregor: You mean 429x429?
19:49:16 <Vorpal> I see
19:49:21 <elliott> I dunno... three hundred is big already.
19:49:21 <Gregor> elliott: No. No I do not :P
19:49:25 <elliott> WAIT
19:49:27 <elliott> WE ARE SO FOOLISH
19:49:31 <elliott> http://en.wikipedia.org/wiki/List_of_prime_numbers
19:49:39 <Vorpal> Gregor, how do you know when you hit a border of the world?
19:49:55 <elliott> Gregor: 277. Obviously.
19:49:56 <Gregor> Vorpal: The world is a torus.
19:50:00 <Gregor> elliott: I'mma go with 33.
19:50:02 <azaq23> "This list is incomplete"
19:50:04 <Vorpal> Gregor, ah
19:50:09 <elliott> Gregor: Wow, 277 is actually... good.
19:50:12 <elliott> Gregor: 33 is terrible :P
19:50:18 <Vorpal> elliott, why does it have to be prime?
19:50:21 <Gregor> elliott: (I'm also reducing the default world size)
19:50:34 <elliott> Gregor: I'm talking about world size...
19:50:46 <elliott> Gregor: http://ompldr.org/vOXp3bQ <-- 277x277 world
19:50:51 <elliott> That fits in well with a size-thirteen viewport
19:50:56 <elliott> Really well
19:51:00 <elliott> And is a nice good size when zoomed
19:51:01 <Vorpal> elliott, whoa, so many sub-categories of primes.
19:51:03 <elliott> ais523: Your opinions on that size?
19:51:07 <Gregor> elliott: ... >_<
19:51:07 <elliott> <Vorpal> elliott, why does it have to be prime?
19:51:10 <elliott> If you want even you want power of two
19:51:11 <Vorpal> elliott, I know only of a handful of those
19:51:13 <Gregor> elliott: I thought you were talking about the VIEWPORT, not the WORLD.
19:51:14 <elliott> If you want odd you want prime
19:51:17 <elliott> Gregor: Durrrr :P
19:51:19 <Vorpal> elliott, why.
19:51:20 <elliott> Gregor: No, the viewport is good as-is, I'd say
19:51:26 <ais523> elliott: I don't really have strong opinions about the size
19:51:28 <elliott> Gregor: Any more and it's too much to really process at once
19:51:34 <ais523> because I'm not really into this game
19:51:37 <ais523> yet, at least
19:51:39 <elliott> Gregor: Although, hmm
19:51:43 <ais523> maybe I will be if it evolves into something interesting
19:51:50 <elliott> Gregor: I could go for 29
19:51:51 <Gregor> ais523: The game is still very much in development, we're trying to figure out the right balance.
19:52:03 <elliott> Or 23
19:52:07 <elliott> Thirty-one is a bit big
19:52:08 <Gregor> elliott: So, there's no reason at all for the world to be a prime numbered size :P
19:52:10 <elliott> And thirty-three isn't even prime at all
19:52:12 <Vorpal> Gregor, is there any implementation of any parts of it yet?
19:52:22 <elliott> Gregor: EVEN POWER OF TWO, ODD PRIME
19:52:23 <Gregor> Vorpal: Yes. For example, all parts of it.
19:52:23 <elliott> THAT IS THE RULE
19:52:28 <Vorpal> Gregor, ah
19:52:37 <Gregor> elliott: But the world size doesn't need to be odd.
19:52:38 <elliott> Whoa, some flag action actually started happening.
19:52:38 <Vorpal> elliott, why does it have to be power of two or prime? I mean, I don't see any obvious reason here
19:52:42 <Gregor> elliott: In fact, it's currently even.
19:52:44 <elliott> And then it got obliterated.
19:52:47 <Gregor> Vorpal: Because we're computer scientists.
19:52:53 <Gregor> Vorpal: https://codu.org/projects/rezzo/hg/
19:52:54 <Vorpal> Gregor, so for vanity then
19:52:56 <Gregor> Yes
19:52:57 <elliott> Vorpal: OK, every number is either even or odd, right?
19:53:02 <Vorpal> elliott, ... yes
19:53:07 <elliott> And if you want an even number, you want a power of two, if you can pick a power of two, pick it, that's the rule in computing.
19:53:08 <ais523> elliott: no
19:53:11 <elliott> You always go for powers of two.
19:53:12 <elliott> ais523: Integer.
19:53:14 <Gregor> elliott: So I'mma go with 320x320.
19:53:17 <ais523> that's better
19:53:22 <Gregor> Or maybe 240x240?
19:53:27 <elliott> Vorpal: For ODD numbers, like say HASH TABLE SIZE
19:53:32 <ais523> 640x480!
19:53:32 <elliott> PRIMES generally perform unusually well
19:53:33 <Vorpal> elliott, I'm not agreeing with you on the even -> power of two, or odd -> prime
19:53:33 <elliott> Therefore
19:53:36 <elliott> If you want odd numbers
19:53:36 <Gregor> ais523: We're computer scientists, all numbers are integers :P
19:53:37 <elliott> You want primes
19:53:40 <Vorpal> elliott, it doesn't really matter here
19:53:47 <ais523> Gregor: that's not the case in AI
19:53:48 <elliott> Vorpal: Oh my god shut up you incredibly boring person.
19:53:55 <elliott> OBVIOUSLY I AM BEING ENTIRELY SERIOUS
19:53:59 <ais523> I know, because I was writing some floating-point AI code earlier today
19:54:00 <Vorpal> elliott, I'm fine with it if it is for vanity :P
19:54:03 <elliott> OBVIOUSLY I AM NOT JUST TRYING TO MAKE A COMPLETELY ARBITRARY CHOICE MORE FUN
19:54:19 <elliott> ais523: Hey, we need Secret Project
19:54:20 <ais523> you'd probably work out a good choice after some practice
19:54:22 <elliott> ais523: One important question
19:54:26 <elliott> ais523: How much does it slow down things running under it?
19:54:31 <elliott> We really want total repeatability of matches, y'see
19:54:44 <ais523> elliott: not very much if they're purely algorithmic, quite a lot if they make a lot of syscalls
19:54:54 <elliott> Hmm
19:54:57 <elliott> Like, what factor?
19:54:58 <ais523> also, it isn't finished yet
19:55:00 <Vorpal> elliott, it should be a regular prime!
19:55:01 <elliott> For a heavy syscall program
19:55:02 <ais523> I implemented select a couple of days ago
19:55:05 <Vorpal> elliott, to make it even more "fun"
19:55:27 <elliott> Gregor: It sure is fun to specify a size smaller than the viewport.
19:55:32 <Vorpal> or a regular prime that is also a sophie germain prime.
19:55:38 <Gregor> elliott: It does, in fact, work :)
19:55:38 <Vorpal> elliott, heh
19:55:45 <elliott> Gregor: Thank GOD :P
19:56:03 <ais523> elliott: I'm not sure; it multiplies context switches by a factor of 4 to 6, though, and those are probably going to be the most timeconsuming things
19:56:16 <ais523> for read and write, you have to multiply by another factor of 5
19:56:20 <elliott> Gregor: You should make sure every map has at least noe electron :P
19:56:24 <elliott> This map is TOTES UNWINNABLE
19:56:33 <ais523> because it has to work out if they're blocking or nonblocking first
19:56:34 <elliott> Gregor: Eh
19:56:36 <elliott> erm
19:56:37 <elliott> ais523: Eh
19:56:40 <ais523> and change timing rules according to if they do, in fact, block
19:56:41 <elliott> ais523: I guess it wouldn't work out then
19:56:41 <Deewiant> Eh
19:56:44 <Vorpal> ais523, isn't that just checking a flag?
19:56:44 <elliott> Deewiant: Eh
19:56:48 <Deewiant> elliott: Eh
19:56:52 <elliott> Deewiant: Eh
19:56:59 <ais523> Vorpal: yes, but it's checking a flag that's not in either your program, or the program you're testing
19:56:59 <elliott> Deewiant: How long until we get Trains: the Rezzo Series
19:57:04 <ais523> so you have to make a syscall to get it
19:57:23 <Vorpal> ais523, uh. You could cache it for the given fd
19:57:29 <ais523> lstat on /proc works, but injecting a fcntl into the testing program is probably faster
19:57:32 <Deewiant> elliott: When rezzo's closer to done than not-done
19:57:39 <ais523> however, getting the flag is only one of the five calls
19:57:46 <ais523> you have to set it too
19:57:46 <Vorpal> ais523, just cache it on open or fcntl?
19:57:55 <ais523> in order to work out if the read/write would block
19:58:05 <ais523> you set the handle to nonblocking, then try to do the read/write
19:58:06 <Vorpal> eh
19:58:11 <ais523> if it worked, great, set it back to blocking and you're done
19:58:17 <Vorpal> eh....
19:58:22 <ais523> if it didn't, set it back to blocking then repeat, and remember that that thread is blocked
19:58:29 <elliott> Deewiant: It's done insofar as it works and you can code things today
19:58:34 <elliott> The rules just might change a bit :P
19:58:44 <ais523> this would be so much simpler if I wasn't trying to make alternation of threads deterministic
19:59:02 <ais523> but you have to do that, as race conditions are a really common thing to happen in programs
19:59:17 <Deewiant> elliott: Yeah I don't count that as "done" :-P
19:59:23 <Vorpal> ais523, it is a bonus if you detect race conditions IMO
19:59:27 <elliott> Deewiant: You played BF Joust while its rules were still being tweaked
19:59:42 <Deewiant> elliott: Lower barrier of entry
19:59:44 <ais523> Vorpal: but you still have to make them reproducible
19:59:49 <Vorpal> ais523, hm true
20:00:06 <elliott> Deewiant: https://codu.org/projects/rezzo/warriorhg/index.cgi/file/34d876dfc612/tantrum.hs
20:00:15 <elliott> Deewiant: The parts relating to the queue and the IORef are going into Rezzo.hs, hopefully :P
20:00:22 <Vorpal> ais523, I guess you provide a way to try different slicing of the threads?
20:00:23 <elliott> i.e., everything but reallyDecide
20:00:36 <ais523> Vorpal: no
20:00:47 <ais523> that would be different, which means that it's not the same
20:00:52 <Vorpal> ais523, so there might be race conditions you can never try?
20:00:57 <Deewiant> elliott: hg clone and messing with Haskell is a bit more work than '!bfjoust foo bar' :-P
20:01:11 <ais523> Vorpal: and? all you're showing to me is that you don't know what Secret Project is for
20:01:12 <Vorpal> ais523, I'm asking about manually using some parameter or such to select a different slicing
20:01:21 <Vorpal> ais523, because you won't tell us!
20:01:23 <Vorpal> -_-
20:01:40 <ais523> anyway, there are infinitely many different slicings
20:01:50 <elliott> Deewiant: Pah :P
20:01:51 <Vorpal> true
20:02:02 <elliott> Deewiant: https://codu.org/projects/rezzo/warriorhg/index.cgi/file/34d876dfc612/Rezzo.hs Look at all this nectar I carefully optimised for you
20:02:08 <elliott> 113 getViewBytes :: Get (Vector Word8)
20:02:08 <elliott> 114 getViewBytes = do
20:02:08 <elliott> 115 bytes <- getBytes viewSize
20:02:08 <elliott> 116 let (ptr, offs, len) = BI.toForeignPtr bytes
20:02:08 <elliott> 117 return $ V.unsafeFromForeignPtr ptr offs len
20:02:09 <elliott> 118
20:02:10 <ais523> the one I've chosen is to context-switch at every syscall, with a different general rule for blocking syscalls, and a few specific exceptions (fork and exec are on that list)
20:02:11 <elliott> 119 getView :: Get (Vector Cell)
20:02:13 <elliott> 120 getView = V.unsafeCast <$> getViewBytes
20:02:14 <ais523> (also exit, for obvious reasons)
20:02:15 <elliott> LOOK AT MY SIN
20:02:18 <Vorpal> ais523, actually wait. Not true. Given programs run for finite time there is a huge but finite number of slicings
20:02:20 <ais523> *exit_group
20:02:46 <Gregor> I suppose the rezzo equivalent of an imp would be to wander around destroying every electron :P
20:02:49 <ais523> Vorpal: wrong, the length of time the program runs for could depend on how it was sliced
20:02:56 <Gregor> Stalemate yay
20:02:57 <Deewiant> elliott: Yeah, I was amused at the ^2 avoidance; how'd you pick up on that?
20:03:03 <CakeProphet> elliott: the flags, geysers, bases have parameters. THAT'S NOT HOW CA'S WORK BAAAAAW
20:03:20 <elliott> CakeProphet: >/dev/null
20:03:26 <Vorpal> ais523, you can only slice between instructions on x86 right?
20:03:28 <elliott> Gregor: I wonder if anyone will win? http://ompldr.org/vOXp3eA
20:03:30 <elliott> Deewiant: ghc-core
20:03:38 <Vorpal> ais523, possibly excluding the rep prefix
20:03:39 <Gregor> CakeProphet: The number of states is linear in the number of programs, not exponential.
20:03:44 <elliott> Deewiant: I think ^ (2::Int) might do it, but whatever
20:03:50 <ais523> Vorpal: that's not what I mean
20:03:54 <Deewiant> elliott: Right, so you actually went and properly optomized it
20:04:03 <ais523> I mean, a program could decide to terminate once it hit five detected race conditions in a row, or something
20:04:06 <elliott> Deewiant: The optimisation is maybe a little premature, but only because none of the current bots actually try to do anything at all :P
20:04:11 <elliott> Or, well, they DO, they just don't think.
20:04:18 <Vorpal> ais523, then what did you mean. A context switch has to happen at a specific point in the program code, no?
20:04:24 <CakeProphet> Gregor: true I suppose, but eventually the rules I came up with didn't involve any superimposing.
20:04:32 <ais523> Vorpal: I mean, the number of different ways the threads can be interleaved
20:04:38 <elliott> Deewiant: I should probably check whether the -funbox-strict-fields I have actually helps or not, but whatever
20:04:42 <ais523> at each point in the program, you can choose to context switch or not context switch
20:05:07 <elliott> <elliott> Gregor: I wonder if anyone will win? http://ompldr.org/vOXp3eA
20:05:09 <Vorpal> ais523, indeed. Lets say you have 2 threads running two instructions each. then you have: AABB ABBA ABAB BBAA BABA BAAB and so on
20:05:10 <elliott> EXCUSE ME THIS IS HILARIOUS
20:05:17 <elliott> They're still spinning around madly.
20:05:18 <ais523> I always context switch only at syscalls and syscall returns because it's a pain to hit any other moment in the program accurately
20:05:23 <CakeProphet> elliott: I guess eventually I'll need to a) get up-to-date on the current ruleset b) write a Perl player to destroy you. (muahahahahaha)
20:05:24 <Gregor> elliott: I'mma go with no :P
20:05:34 <Vorpal> ais523, which is finite, though it grows very quickly
20:05:38 <elliott> Gregor: EVENTUALLY they might rewrite the insane circuit to accidentally connect a flag and a base :P
20:05:44 <Gregor> CakeProphet: To be frank I totally didn't understand the last iteration of your rules.
20:05:47 <ais523> Vorpal: err, you have AABBABAB as well
20:05:47 <elliott> I like how there's still a hole left in the mess.
20:05:54 <elliott> CakeProphet: Perl? Good luck with that.
20:05:57 <ais523> nobody says that they have to interleave the same way each time round the loop
20:06:10 <Vorpal> ais523, I said for finite programs.
20:06:14 <Gregor> Yes, "do random shit" is surely the best strategy.
20:06:14 <elliott> Like, seriously, good luck with that, you might want to have long, hard talks with ais523.
20:06:17 <ais523> Vorpal: those are finite programs
20:06:31 <Vorpal> ais523, so where is the loop then? two instructions each and exit
20:06:31 <elliott> Who works under constraints of like, three moves per second, rather than FIFTEEN
20:06:37 <elliott> Is it fifteen? I don't even remember
20:06:45 <ais523> elliott: ?
20:06:48 <Vorpal> ais523, in this example that is
20:06:51 <elliott> ais523: TAEB vs. Rezzo
20:07:03 <Vorpal> ais523, I can't see where you get a loop in my example
20:07:05 <ais523> elliott: it's now up to about 5 per second regularly
20:07:14 <elliott> ais523: Wowzers :P
20:07:17 <ais523> Vorpal: oh, I see, you want your programs to be finitely long and contain no loops
20:07:25 <Vorpal> ais523, yes that is what I said.
20:07:25 <elliott> Gregor: Bug report: -w 1 -h 1 doesn't start
20:07:29 <ais523> such a great thing that all programs in practice work like that, right?
20:07:35 <elliott> Gregor: Nor does two
20:07:40 <Vorpal> ais523, or the loops they contain are only run a finite number of times
20:07:47 <elliott> Gregor: Three causes a floating point exception
20:07:50 <ais523> Vorpal: that's a crazy assumption
20:07:56 <elliott> Four hangs
20:08:04 <elliott> As does five
20:08:08 <ais523> the vast majority of programs won't exit given suitable input
20:08:11 <Vorpal> ais523, there are such programs. /bin/cat is bound by length of input for example
20:08:24 <ais523> Vorpal: /bin/cat /dev/zero
20:08:31 <Gregor> elliott: If it's too small to make loops, it barfs, yes.
20:08:37 <elliott> Gregor: Eight is the minimum height it'll start at :P
20:08:38 <Vorpal> ais523, yes. That is an infinite input.
20:08:41 <elliott> And what a GLORIOUS mess eight is.
20:08:48 <ais523> Vorpal: and it's one you have on your computer
20:08:51 <Vorpal> ais523, but changing the file changes the conditions anyway
20:08:54 <CakeProphet> Gregor: the flags move like electrons, and cancel each other out on collision like electrons, but move slower. When an electron collides with a flag it becomes a death flag. when a flag collides with a death flag it becomes a victory for the non-death flag's owner. collision of flags other than flag + death flag result in a conductor (though electron + death flag could result in something interesting, but that's somethin
20:09:00 <CakeProphet> probably got cut off.
20:09:06 <elliott> "but move slower" <-- with MAGIC.
20:09:07 <Deewiant> "but that's somethin"...
20:09:12 <ais523> Vorpal: do you see, anyway, that a flag to allow any possible interleaving of threads, and specifying which one, is insane?
20:09:18 <CakeProphet> elliott: yes, with rules, that you make. I don't care if it's not a CA.
20:09:18 <ais523> and really there's no reason for more than one anyway?
20:09:22 <Vorpal> ais523, definitely
20:09:32 <elliott> CakeProphet: Considering the ENTIRE IDEA Gregor had was to do it based on CA...
20:09:35 <Vorpal> ais523, but I do see a reason to test many if you want to find bugs
20:09:39 <CakeProphet> elliott: mmk
20:09:52 <Vorpal> ais523, kind of fuzz testing
20:10:06 <ais523> so, it turns out that the Secret Project is not designed for fuzztesting multithreaded programs
20:10:07 <Vorpal> ais523, btw about blocking or not, that depends on outside factors no?
20:10:14 <elliott> elliott@katia:~/Code/rezzo$ ./rezzo -q -w 8 -h 8 -z 9 warriors/tantrum warriors/tantrum warriors/tantrum warriors/tantrum
20:10:14 <elliott> Well this is somethink.
20:10:15 <ais523> nor do I think I've said anything that would imply it would
20:10:15 <Vorpal> ais523, like if a file is cached from disk
20:10:30 <ais523> and the Secret Project definitely does try to get rid of caching effects
20:10:37 <Vorpal> ais523, ah okay. How?
20:10:51 <ais523> by making the length of time the processor takes to actually do anything irrelevant
20:10:54 <ais523> that's obvious, isn't it?
20:11:02 <elliott> Bunch of InvalidMessages that one run there... blaming Gregor :P
20:11:10 <Vorpal> ais523, anyway if a read blocks or not is really up to the OS unless you emulate the entire file system and block layer. Or network layer or whatever.
20:11:11 <elliott> ais523: Yes, it is obviious.
20:11:14 <elliott> obvious.
20:11:18 <elliott> Ugh, more InvalidMessage
20:11:24 <elliott> Gregor: $ ./rezzo -q -w 90 -h 90 -z 9 warriors/tantrum warriors/tantrum warriors/tantrum warriors/tantrum
20:11:28 <CakeProphet> elliott: hey it just means that CA has some limitations. You could add a notion of time to the formalization so that transition rules only occur in (g`mod`n)==0 generations. :P
20:11:30 <ais523> elliott: good, for a moment I was wondering if it was me or Vorpal being stupid
20:11:35 <elliott> Gregor: Run that for a while, you start getting InvalidMessage spewed a bunch
20:11:40 <Vorpal> ais523, eh?
20:11:42 <ais523> Vorpal: whether a read blocks or not has nothing to do with cache effects
20:11:44 <elliott> Gregor: My understanding of the protocol is flawless so you have a bug :)
20:11:50 <Vorpal> ais523, I said *disk cache*
20:11:59 <zzo38> "For the purposes of derived instances, a newtype declaration is treated as a data declaration with a single constructor." No, I think that you should just be allowed to derive any class with newtype if the contained type has that class, and otherwise treat it as data with single constructor.
20:12:01 <ais523> Vorpal: whether a read blocks or not has nothing to do with disk cache
20:12:03 <Vorpal> ais523, as in, the file data loaded in to main memory
20:12:05 <Vorpal> ais523, really?
20:12:05 <elliott> Gregor: (-z 9 not necessary)
20:12:09 <zzo38> Why don't they do it like that?
20:12:10 <Vorpal> ais523, I thought it did.
20:12:12 <ais523> Vorpal: indeed
20:12:20 <ais523> if it finishes in finite time without any other change to the system, it isn't blocking
20:12:32 <elliott> zzo38: they do, with GeneralizedNewtypeDeriving for GHC
20:12:34 <CakeProphet> elliott: and besides, what's the purpose of it being a strict CA (which it currently is not anyways) other than saying "hey this is a cellular automata in the strictest sense possible (except it's not really)"
20:12:35 <ais523> try reading from a slow hard drive with O_NONBLOCK set, you'll find it works
20:12:38 <Vorpal> ais523, so uh what does a non-blocking read on a busy device do? That would wait for a while
20:12:45 <Vorpal> ah
20:12:47 <elliott> zzo38: it makes the derived Show instance less obvious, which is one disadvantage
20:12:53 <elliott> CakeProphet: It is currently a strict CA, and you're blathering nonsense.
20:12:58 <Vorpal> ais523, what about nfs?
20:13:11 <ais523> there's a special case for that, IIRC, and I forget what it is
20:13:13 <CakeProphet> elliott: whose number of states is dependent on number of players. Is that how CAs wor?
20:13:16 <CakeProphet> +k
20:13:20 <Vorpal> ais523, there generally is for nfs XD
20:13:23 <elliott> CakeProphet: Nope, there is a constant number of states.
20:13:23 <ais523> but the Secret Project controls all the filesystems you're allowed to access
20:13:25 <ais523> and none are on NFS
20:13:28 <ais523> so it doesn't come up
20:13:58 <CakeProphet> elliott: so then the flags, geysers, and bases, agents aren't states?
20:14:02 <elliott> CakeProphet: Yep.
20:14:05 <elliott> They are.
20:14:09 <Vorpal> ais523, Hm reading /dev/random can block iirc
20:14:11 <CakeProphet> then... how does that work.
20:14:21 <elliott> CakeProphet: Dunno, how about you find out rather than being an ass about it
20:14:28 <ais523> Vorpal: /dev/random is an interesting special case
20:14:33 <CakeProphet> elliott: I'm not I don't see how that is a constant number
20:14:33 <Gregor> Gawd I love the conversations on this channel.
20:14:35 <ais523> because how do you make a reproducible /dev/random?
20:14:43 <Gregor> "Ur a dumbarse" "Ur mom!" "lul"
20:14:52 <elliott> Gregor: You seem to be mistaking conversations for not having the patience to deal with someone
20:14:59 <Vorpal> ais523, well, you replace it with your own algorithm.
20:14:59 <Gregor> CakeProphet: The number of states is linear in the number of programs, so constant for a given run.
20:15:05 <ais523> Vorpal: yes, and you can pick one that never blocks
20:15:09 <elliott> Gregor: The number of states is constant.
20:15:14 <elliott> There are always ten of each player-specific state.
20:15:16 <Vorpal> ais523, not really realistic
20:15:20 <Vorpal> but sure
20:15:25 <ais523> Vorpal: so? it's /consistent/
20:15:29 <elliott> See also: ais523 dealing with Vorpal, the most amazing endurance feat ever.
20:15:38 <Vorpal> ais523, true
20:15:40 <Gregor> elliott: Well, fair enough, there's a max number of players, so in fact it's constant (though many will be unused)
20:15:46 <elliott> Gregor: "Many"
20:15:46 <elliott> :P
20:15:49 <elliott> At most 9
20:15:52 <CakeProphet> Gregor: so you have an infinite number of cellular automata that correspond to natural numbers.
20:15:53 <ais523> elliott: I think you understand the Secret Project Stage 1 much better than Vorpal does
20:15:55 <Gregor> elliott: 9*4
20:15:56 <Vorpal> ais523, anyway what about reading /dev/psaux? You talked about getting X to run under the secret project before iirc?
20:16:02 <CakeProphet> Gregor: perhaps excluding 0 and 1
20:16:07 <ais523> I can't mention much at all about Stage 2, though, or people would put 1 and 2 together
20:16:12 <elliott> ais523: Perhaps because I've stopped trying to guess the exact purpose
20:16:14 <ais523> Vorpal: I've never heard of /dev/psaux
20:16:18 <elliott> ais523: I think I have a good grasp of the workings, though
20:16:25 <Vorpal> ais523, the mouse, well the PS/2 mouse
20:16:27 <elliott> And I suspected that it'd do little to CPU-bound programs but slow down syscall-bound ones quite severely
20:16:30 <Gregor> CakeProphet: 0 and 1 are included, but sort of uninteresting. And as elliott points out, in fact it has a player # limit (10), so in that sense there's a limit.
20:16:32 <elliott> So I seem to have a working mental model of it.
20:16:33 <Vorpal> ais523, not sure where usb mice turn up
20:16:37 <ais523> Vorpal: oh, I'm going to support /dev/input/mice instead
20:16:50 <ais523> because all mice turn up there, and it's where programs tend to actually read in practice
20:16:56 <Vorpal> ais523, hm /dev/psaux seems to be legacy name for it these days. Go figures.
20:17:11 <elliott> psaux sounds like a squawk a bird makes
20:17:13 <ais523> also, because I finally figured out what format it was in
20:17:26 <ais523> which took several hours both experimenting and reading kernel sources
20:17:31 <Vorpal> heh
20:17:33 <Vorpal> ais523, no docs?
20:17:41 <zzo38> Is there anything like: derivable :: Name -> (Dec -> Q [Dec]) -> Q [Dec]; It would be useful to use in Template Haskell if you want to make up your own deriving of your own classes too, I would think
20:17:42 <elliott> Argh, I really need to figure out how feasible bidi parsers are
20:17:44 <CakeProphet> so yeah for this ruleset you could either 1) add a number of transitionary flag states to simulate the slow movement b) ditch that because it's awful and just change the rules because it's convenient.
20:18:02 <ais523> there are, but they don't describe the protocol
20:18:04 <elliott> You can't just "change the rules"
20:18:06 <elliott> A CA is a CA for a reason
20:18:09 <elliott> Namely, because it's a CA
20:18:10 <Vorpal> ais523, anyway what will you do for the mouse input?
20:18:15 <elliott> this is what Perl does to people
20:18:17 <CakeProphet> elliott: right, the idea here is that I don't care and it's not a CA anymore.
20:18:20 <Vorpal> ais523, pre-recorded input?
20:18:24 <ais523> Vorpal: that involves Stage 2, so I'll stay silent on it
20:18:29 <elliott> CakeProphet: I don't care
20:18:47 <Vorpal> ais523, when will you reveal that
20:18:53 <ais523> when Stage 3 is finished
20:18:57 <CakeProphet> elliott: it's a completely arbitrary thing to be concerned about. Also, it can still be modelled as a CA it's just slightly more tedious that way.
20:19:00 <Vorpal> ais523, and stage 3 is the last one?
20:19:13 <ais523> stage 3 is the purpose for which stages 1 and 2 exist
20:19:15 <Vorpal> so we won't hear any details about stage 2 or 3 until it is all done?
20:19:23 <Vorpal> :(
20:19:38 <Vorpal> you certainly do know how to build a hype though
20:19:45 <ais523> well, I need lots of help with stage 1
20:20:00 <ais523> and the hype is built to persuade people to help me with it
20:20:18 -!- monqy has joined.
20:20:21 -!- zzo38 has left.
20:20:59 <ais523> stage 2, it's much harder, because I have to ask the questions disguised in such a way that they're out of context (but have an obvious incorrect context so that people don't get suspicious), and I don't ask them in #esoteric either as it would be too obvious
20:21:12 <Vorpal> ais523, reveal details and you will get help.
20:21:23 <ais523> well, I don't need much help with it yet
20:21:28 <ais523> as I'm still trying to get stage 1 working
20:21:32 <elliott> Vorpal is really grumpy about this.
20:21:41 <ais523> anyway, I will say that being secret is a necessary property of the secret project
20:21:46 <Vorpal> elliott, certainly. Did you figure out what it was for yet?
20:21:59 <elliott> Vorpal: baww
20:21:59 <Vorpal> ais523, would it fail if not secret?
20:22:01 <ais523> yes
20:22:06 <ais523> it exists /for the purpose of being secret/
20:22:19 <Vorpal> ais523, oh I see. You are trolling us. Right.
20:22:33 <Vorpal> (good job though)
20:22:37 <ais523> well, yes I probably am, but that's not the project's purpose
20:22:46 <ais523> it's just a fun side-effect
20:23:05 <elliott> "trolling"
20:23:10 <elliott> if you're stupid enough to get annoyed about it
20:23:32 <ais523> well, it only trolls Vorpal, I think
20:23:51 <CakeProphet> conspiracy programs.
20:24:40 <ais523> its purpose is not trolling Vorpal, anyway
20:24:43 <ais523> its purpose is to be secret
20:24:56 <ais523> why this is the case, is also secret, for the same reason that the original project is secret
20:25:00 <fizzie> I think the /dev/input/mice protocol is documented, because I remember reading about it. I mean, doesn't it speak the regular PS/2 mouse protocol with the MS Intellimouse extensions?
20:25:15 <ais523> bleh, this is actually quite a hard concept to express
20:25:25 <CakeProphet> probably because it's so secret.
20:25:37 <ais523> fizzie: it speaks PS/2, and two different incompatible extension
20:25:41 <ais523> extensions
20:25:46 <ais523> depending on what's sent to it
20:26:15 <fizzie> Well, it speaks at least that Intellimouse thing.
20:28:25 <fizzie> MOUSEDEV_EMUL_PS2, MOUSEDEV_EMUL_IMPS, MOUSEDEV_EMUL_EXPS. Oh, right; basic Intellimouse, and Intellimouse Explorer, maybe?
20:28:44 <fizzie> I distinctly remember reading a document about this. But I suppose it was free-floating around the internet.
20:29:25 <elliott> hmm, this sure is hard when you're stubborn
20:33:31 <quintopia> "I just watched Source Code on DVD – it all seemed completely believable until I saw Jake Gyllenhaal using Bing as his search engine.
20:33:36 <quintopia> " -Weird Al
20:34:12 <CakeProphet> was he using a Mac as well?
20:35:38 <NihilistDandy> quintopia: I parsed that as a compiler flag
20:35:39 <Gregor> CakeProphet: OK, so even if we imagine that there's a proliferation of states associated with the flags such that they will "move slowly", I STILL don't get your idea.
20:35:48 <CakeProphet> It has been my observation in movie universe that Apple is the only PC manufacturer, so I woule assume so.
20:36:27 -!- ais523 has quit (Remote host closed the connection).
20:36:44 <NihilistDandy> CakeProphet: That's because they happen in the future, and in the future everything is white or aluminum
20:37:11 <CakeProphet> Gregor: The idea is that you want to electrify an opponent flag without electrifying your own.. I suppose that makes the win conditions somewhat chaotic but it means you could try to build trap circuits to make this possible.
20:38:09 <NihilistDandy> @hoogle text
20:38:09 <lambdabot> Text.Html text :: String -> HtmlAttr
20:38:09 <lambdabot> Text.PrettyPrint.HughesPJ text :: String -> Doc
20:38:09 <lambdabot> Text.XHtml.Transitional text :: String -> HtmlAttr
20:38:16 <NihilistDandy> @hayoo text
20:38:16 <lambdabot> Unknown command, try @list
20:38:32 <NihilistDandy> @google hackage text
20:38:33 <lambdabot> http://hackage.haskell.org/package/text
20:38:33 <lambdabot> Title: HackageDB: text-0.11.1.5
20:38:38 <elliott> ?src ShowS
20:38:38 <lambdabot> type ShowS = String -> String
20:38:46 <elliott> ?src ReadS
20:38:46 <lambdabot> Source not found. Wrong! You cheating scum!
20:38:49 <elliott> :'(
20:38:50 <elliott> ?src Read
20:38:50 <lambdabot> class Read a where
20:38:50 <lambdabot> readsPrec :: Int -> ReadS a
20:38:50 <lambdabot> readList :: ReadS [a]
20:38:50 <lambdabot> readPrec :: ReadPrec a
20:38:50 <lambdabot> readListPrec :: ReadPrec [a]
20:38:51 <elliott> :t read
20:38:52 <lambdabot> forall a. (Read a) => String -> a
20:38:52 <elliott> :t readS
20:38:54 <lambdabot> Not in scope: `readS'
20:38:57 <elliott> :t readsPrec
20:38:57 <lambdabot> forall a. (Read a) => Int -> String -> [(a, String)]
20:39:03 <CakeProphet> Gregor: also it makes you use a flag stream to win, instead of merely keeping it closed off from everything.
20:39:24 <NihilistDandy> elliott: Quite an outburst
20:39:27 <NihilistDandy> :D
20:41:02 <CakeProphet> Gregor: with the addition of some extra circuit components (diodes, pressure plates, a conductor cell similar to the "trampoline" in befunge that would make flags/electrons jump over the next cell) it would make it kind of a circuit-building battle.
20:42:27 <elliott> NihilistDandy: ?
20:42:53 <NihilistDandy> You and lambdabot talking to each other about reading
20:42:56 <CakeProphet> so a basic "attack" circuit would be a cross with a horizontal stream of electrons, and two diodes above and below the point of intersection.
20:43:27 <CakeProphet> the flag would pass through the diode, become electrified, and continue forward, while the horizontal electron stream couldn't propogate through the intersection (I think...)
20:43:47 <Gregor> CakeProphet: The degree of control required to electrify the enemy flag and not your own seems ... intense.
20:43:53 <CakeProphet> yep.
20:44:15 <NihilistDandy> This is quite odd
20:44:15 <oerjan> hm could the secret project be an OS-level time-traveling debugger...
20:44:57 <CakeProphet> Gregor: I think it might benefit from a mostly empty grid but I'm not so sure about that.
20:45:02 <elliott> oerjan: IT'S FEATHER
20:45:11 <elliott> OH M;Y GOD IT MAY ALERADY BE TOO LATE
20:45:15 <elliott> oerjan: GET THE FIRST PLANE TO BIRMINGHAM
20:45:17 <elliott> ILL MEET YOUAT THE AIRPORT
20:45:31 <CakeProphet> Gregor: empty except for electron loops to use as source currents.
20:45:34 <Gregor> elliott: You're gonna be waiting a while :P
20:45:55 <elliott> things i would watch: a thriller where a bunch of nerds on irc have to band together real quicklike to stop someone going insane and releasing terrors unto the universe because of their research
20:46:09 <CakeProphet> Gregor: also it might benefit from being able to build faster than the current system allows. So that complex circuits can be built somewhat quickly.
20:46:12 <elliott> we need more films aimed at the lucrative irc nerd demographic
20:46:31 <oerjan> elliott: oh darn
20:46:40 <elliott> oerjan: wat
20:46:52 <olsner> like... non-interactive text adventures?
20:47:02 <oerjan> elliott: no u wat
20:47:07 <elliott> olsner: no no. films.
20:47:22 <olsner> scrolls :)
20:47:24 <Gregor> `addquote <elliott> we need more films aimed at the lucrative irc nerd demographic
20:47:26 <HackEgo> 613) <elliott> we need more films aimed at the lucrative irc nerd demographic
20:48:09 <CakeProphet> Gregor: also view radius could be increased potentially. These are all variables that could be tuned with testing.
20:48:23 <elliott> Way ahead of you
20:48:25 <NihilistDandy> Scrolling up cinemas
20:52:02 <CakeProphet> Gregor: it is pretty complicated though. A top player would eventually need some pattern recognition abilities.
20:52:27 <Gregor> CakeProphet: I'm still digesting.
20:53:20 <Phantom_Hoover> `quote
20:53:22 <HackEgo> 437) <oklopol> are there boobs you wack and squeeze around to move the mouse? [...] <oklopol> like those little nipples in laptop keyboards, but they'd be full-blown boobies
20:54:12 <Phantom_Hoover> `quote
20:54:14 <HackEgo> 60) <apollo> What is there to talk about besides gay slang?
20:54:19 <Phantom_Hoover> `quote
20:54:21 <HackEgo> 486) <monqy> it was a wonderful dream <monqy> i died in it <monqy> that's how it started
20:54:24 <Phantom_Hoover> `quote
20:54:26 <HackEgo> 161) <ais523> cpressey: I have actually done a waterfall-model project that almost worked <cpressey> That's where you have a flexible kayak that bobs and weaves between the rocks as it plummets off the cliff
20:54:36 <Phantom_Hoover> `quote
20:54:38 <HackEgo> 27) IN EINEM ALTERNATIVEN UNIVERSUM (WO DIE NAZIS WON): <ehird> So kann ich nur schliessen, dass es falsch ist, oder die Welt ist vollig BONKERS. Gegrusset seist du der Fuhrer Hitler!
20:54:48 <Vorpal> Phantom_Hoover, did you know the bot does PM?
20:54:57 <Phantom_Hoover> Vorpal, NO
20:55:00 <Phantom_Hoover> `quote
20:55:00 <Phantom_Hoover> `quote
20:55:00 <Phantom_Hoover> `quote
20:55:00 <Phantom_Hoover> `quote
20:55:01 <Phantom_Hoover> `quote
20:55:02 <HackEgo> 219) <Gregor> elliott: My university has two Poultry Science buildings. <Gregor> Two!
20:55:03 <Vorpal> Phantom_Hoover, now you know
20:55:04 <HackEgo> 134) <oklopol> you move on the tape and shit
20:55:05 <HackEgo> 449) [on petrol] <ais523> oklofok: it's actually poisonous, so I advise against drinking it <Phantom_Hoover> ais523, also contains benzene, my carcinogen of choice.
20:55:05 <HackEgo> 20) <FireFly> Meh <FireFly> ._.
20:55:06 <HackEgo> 262) <j-invariant> 22:55 < qfr> How am I supposed to develop software in Haskell if I can't even prepare my projects in UML?! It seems like an impossible task. <j-invariant> HAHA [...] <j-invariant> this is amazing, like meeting a Mormon or something
20:55:46 <Phantom_Hoover> `quote 614
20:55:48 <HackEgo> 614) <Phantom_Hoover> Vorpal, of course I knew, you idiot.
20:56:05 <Vorpal> that one isn't even funny. Why is it there?
20:56:19 <elliott> anything against Vorpal goes in
20:56:28 <elliott> i dont know how that got there though
20:56:46 <Phantom_Hoover> `quote 614
20:56:48 <HackEgo> 614) <Phantom_Hoover> Oh come on isn't it obvious.
20:57:19 <elliott> Oh.
20:57:37 <olsner> fungot: kick it
20:57:37 <fungot> olsner: oh i am here already. outside the soya tha
20:57:37 <elliott> Phantom_Hoover: Help I need a crash course on how to be sixteen. I am not prepared.
20:57:57 <Phantom_Hoover> elliott, suggest you ask Taneb.
20:58:06 <Phantom_Hoover> I don't know how to be 16 in the back of beyond.
20:58:09 <Phantom_Hoover> Except in Ireland.
20:58:34 <olsner> elliott: I think you're supposed to be doing drugs and getting pregnant
20:59:42 -!- GreaseMonkey has joined.
21:01:00 <elliott> olsner: ok
21:01:11 <Gregor> elliott: I'm starting to think that tantrum isn't the best strategy.
21:01:40 <elliott> Gregor: Wow.
21:01:43 <elliott> Gregor: I'm.. shocked.
21:01:44 <elliott> Astonished.
21:01:46 <elliott> Shocktonished.
21:02:01 <elliott> Can you give the SLIGHTEST bit of evidence for this slander?
21:02:17 <oerjan> if tantrum is not giving the results you want, you are not using enough of it.
21:04:59 <CakeProphet> obviously the best approach is to use a botnet to traverse massive decision trees.
21:05:37 <oerjan> always a net win.
21:06:37 <CakeProphet> what's the sanest way to clear out /tmp without breaking anything?
21:06:52 <CakeProphet> I have a lot of junk tmp files that I need to remove, but I have no way to single them out in a single rm command
21:07:00 <oerjan> reboot
21:07:03 <CakeProphet> bah.
21:07:04 * oerjan runs away
21:07:15 <CakeProphet> THIS IS LINUX I REFUSE.
21:07:37 <olsner> just remove everything, that's what I do
21:07:43 <CakeProphet> yeah I'll see what happens.
21:07:48 <CakeProphet> should be fun.
21:08:06 <oerjan> and CakeProphet was never heard from again.
21:08:31 <CakeProphet> well, didn't seem to solve my close-to-max-memory-usage problem.
21:08:49 <pikhq> Is /tmp even a tmpfs on your system?
21:09:04 <oerjan> permfs
21:09:14 <olsner> CakeProphet: hmm, you have checked what's using the memory haven't you?
21:09:19 <fizzie> Or a "prmfs", to be more consistently named.
21:09:27 <oerjan> the files system implemented in cuneiform
21:09:30 <oerjan> *file
21:10:07 <olsner> is that the "cifs" thing?
21:10:08 <CakeProphet> chrome, java, chrome, chrome, chrome, chrome... I guess /tmp wasn't contributing much since I cleared it.
21:10:21 <olsner> kill the chromes
21:10:28 <CakeProphet> >_> yeah
21:10:35 <olsner> KILL THEM
21:10:48 <oerjan> Gregor will approve
21:11:03 <elliott> CakeProphet: be careful not to go by virtual memory
21:11:04 <CakeProphet> lol obviously I should go with my random hypothesis first before doing the obvious.
21:11:39 <CakeProphet> went from 86% to 23%
21:12:01 <olsner> so what did it?
21:12:06 <CakeProphet> chrome.
21:12:26 <CakeProphet> being alive for a week or more, me causing tabxplosions everytime I work on my freelancing project.
21:13:16 <Vorpal> CakeProphet, ram usage?
21:13:20 <Vorpal> heh
21:13:33 <Vorpal> CakeProphet, how much did chrome use in MB?
21:14:02 <Gregor> elliott: I just made the graphics SO SEXY you have no idea.
21:14:08 <CakeProphet> hard to say there were many processes. each one had around .3 GB or so.
21:14:13 <Vorpal> Gregor, screenshot
21:14:29 <elliott> Gregor: screnshotek
21:14:35 <elliott> are they textures
21:14:36 <Vorpal> CakeProphet, how much ram do you have in total?
21:14:47 <CakeProphet> 4 GB
21:14:52 <Vorpal> elliott, shaders!
21:14:58 <CakeProphet> yeah I don't feel like doing the math.
21:15:00 <elliott> http://codu.org/projects/rezzo/hg/ help i dont see what you actually did
21:15:01 <elliott> help
21:15:06 <CakeProphet> aka multiplication
21:15:13 <Vorpal> CakeProphet, heh, not much these days
21:15:15 <olsner> if the chrome people did it right, I think most of that memory per process should be shared memory
21:15:20 <elliott> http://codu.org/projects/rezzo/hg/index.cgi/rev/9b44df78ea77 Gregor: Did you forget something?
21:15:26 <elliott> olsner: they did do it right
21:15:30 <Vorpal> elliott, maybe he didn't commit it yet?
21:15:34 <elliott> Gregor: so where is the sexy..........e......................
21:15:39 <olsner> but of course, if you have enough processes they'll use a lot in total anyway
21:15:39 <CakeProphet> Vorpal: it's sufficient most of the time. This was an exceptional circumstance of negligence to reboot chrome.
21:16:01 <Vorpal> CakeProphet, ah. I find anything less than 8 GB annoying these days. My desktop has 16 GB
21:16:01 <Gregor> Vorpal, elliott: http://codu.org/tmp/rezzo1.png
21:16:12 <Vorpal> Gregor, looks cool
21:16:12 <oerjan> chrominal negligence
21:16:26 <Vorpal> Gregor, now it needs a shader, adding HDR.
21:16:27 <CakeProphet> Vorpal: that's insane I don't even know how I would reach 8 GB
21:16:31 <Vorpal> (because)
21:16:34 <CakeProphet> other than intentionally writing memory leaks.
21:17:26 <CakeProphet> pikhq: also mount | grep "/tmp" yields nothing.
21:20:24 <elliott> Gregor: where are the arrowes
21:20:31 <Gregor> elliott: ... still there.
21:20:39 <elliott> im cnsn t see in that screenshot
21:21:03 <Vorpal> CakeProphet, I have like 220 tabs open in firefox. And I can still do make -j8.
21:21:30 <Vorpal> CakeProphet, that is how I use my ram
21:21:33 <Vorpal> each to their own
21:21:36 <CakeProphet> uh my brain doesn't have the attention span for that many tabs.
21:21:41 <olsner> oh, you use it for firefox
21:22:21 <Vorpal> olsner, I have to say firefox 5 uses quite a bit less ram than older versions though. Still a memory hog, but not quite as bad
21:22:33 <Gregor> elliott: Dood, run with random seed 657868118
21:22:38 <Gregor> elliott: With four wanderers.
21:22:41 <Vorpal> olsner, and I never really liked chrome
21:22:47 <Gregor> elliott: Blue and orange/brown are RIGHT NEXT TO EACH OTHER :P
21:22:58 <olsner> I remember the times when firefox was an awesomely lean version of mozilla, it was usable with only 128MB of RAM
21:23:11 <elliott> $ ./rezzo -r 657868118 warriors/{wanderer,wanderer,wanderer,wanderer}
21:23:11 <elliott> Random seed: 657868118
21:23:13 <elliott> then it quits
21:23:14 <elliott> help
21:23:23 <Vorpal> olsner, heh. Not with 220 tabs though
21:23:29 <Deewiant> The web was simpler in those times
21:23:31 <Gregor> Also apparently my ability to take a random seed is borked or something ...
21:23:33 <Vorpal> olsner, anyway wasn't it firebird back then?
21:23:39 <Deewiant> Phoenix
21:23:49 <Vorpal> Deewiant, it was firebird at some point
21:24:04 <olsner> iirc phoenix was before firebird
21:24:05 <Deewiant> Yes, 0.7 or 0.8
21:24:06 <Vorpal> hm how did it grow so bloated.
21:24:17 <CakeProphet> Gregor: the board is fixed size right?
21:24:43 <Deewiant> Darn, 0.6 was Firebird, 0.8 was Firefox
21:24:44 <CakeProphet> hmmm I wonder
21:24:53 <CakeProphet> !perl print map 0, 1..5
21:24:55 <EgoBot> 00000
21:25:01 -!- oerjan has quit (Quit: Good night).
21:25:24 <CakeProphet> Perl never ceases to surprise.
21:25:33 <Gregor> CakeProphet: Size specified at runtime, defaults to 320x320.
21:25:38 <Gregor> elliott: Uhhhh, wtf?
21:25:41 <Vorpal> CakeProphet, it makes sense though
21:25:48 <CakeProphet> Vorpal: yes it does.
21:25:55 <Vorpal> Gregor, which language are you coding it in?
21:26:00 <Gregor> Vorpal: C.
21:26:05 <Vorpal> heh
21:26:12 <Vorpal> Gregor, why not haskell?
21:26:18 <Gregor> Because C is the best language for all porpoises.
21:26:27 <Vorpal> Gregor, tell that to elliott
21:26:44 <olsner> Gregor: but you're not a porpoise, are you?
21:26:45 <CakeProphet> !perl [map {[map 0,1..320]} 1..320]
21:26:58 <CakeProphet> !perl print [map {[map 0,1..320]} 1..320]
21:26:59 <EgoBot> ARRAY(0x7fcef4930068)
21:27:16 <Gregor> olsner: HOW DO YOU KNOW?
21:28:39 <olsner> Gregor: I just... know.
21:28:43 <Gregor> elliott: Re InvalidMessage stuff, it's because you're dead.
21:28:51 <CakeProphet> though I'm tempted to represent the board as a string so that I can use terrible regex hacks to match patterns.
21:28:57 <CakeProphet> perhaps I will have both.
21:29:15 <elliott> Gregor: Shouldn't that terminate the program
21:29:21 <Gregor> elliott: It should, but it doesn't :P
21:29:24 <elliott> Not much to think about when yer dead
21:29:25 <elliott> :P
21:29:27 <olsner> CakeProphet: sounds like you want to write this in sed, not in perl
21:29:39 <CakeProphet> olsner: no I want Perl for this one.
21:29:58 <olsner> CakeProphet: no you don't
21:30:39 <CakeProphet> I don't believe sed is a general purpose programming language.
21:30:43 <CakeProphet> not easily anyways.
21:30:54 -!- hagb4rd has joined.
21:30:59 <hagb4rd> hi
21:31:16 <olsner> the same could be sed for perl
21:31:22 <CakeProphet> ...no
21:31:36 <elliott> CakeProphet: https://github.com/darius/awklisp/blob/master/awklisp
21:31:39 <elliott> nicer than perl
21:32:03 <CakeProphet> that's not really saying much I guess. I'll look at it.
21:32:33 <CakeProphet> olsner: as far as I know sed cannot interface to a network without the help of bash.
21:32:47 <elliott> oh sed not awk
21:32:48 <elliott> who cares
21:32:49 <CakeProphet> but I don't know much about sed.
21:32:49 <elliott> awk is nicer
21:33:04 <olsner> that's true, sed has very poor communication skills
21:33:05 <hagb4rd> elliott: sorry elliot, didn't mean to bother yesterday..
21:33:10 <elliott> hagb4rd: ?
21:33:13 <elliott> i don't remember any botheration
21:33:17 <hagb4rd> k
21:33:20 <elliott> which reminds me, i should sleep.
21:33:25 <CakeProphet> also, believe it or not, Perl allows you to like... structure code and stuff.
21:33:33 <Gregor> elliott: With four tantrums on seed 657868118, brown kills blue :)
21:33:42 <elliott> Gregor: Have you fixed seed reading yet?
21:33:58 <elliott> Otherwise not much help :P
21:34:10 <Gregor> elliott: It wasn't broken, I was imagining things.
21:34:19 <olsner> you either have to pipe in/out through something that does everything for sed, or you can call external programs to do everything (but then you need a set of external programs that match what you need done...)
21:34:22 <elliott> elliott@katia:~/Code/rezzo$ ./rezzo -r 657868118 warriors/{wanderer,wanderer,wanderer,wanderer}
21:34:23 <elliott> Random seed: 657868118
21:34:23 <elliott> elliott@katia:~/Code/rezzo$
21:34:24 <elliott> Gregor: Then?
21:34:33 <pikhq> CakeProphet: Meh, who gives a fuck. C cannot interface to a network without the help of POSIX or Winsock.
21:34:36 <elliott> OH
21:34:40 <elliott> Gregor: Your error reporting SUCKS HARD
21:34:49 <Gregor> elliott: I actually have fixed that, just pushed :P
21:35:01 <Gregor> So PULL LIKE CRAZY
21:35:04 <Gregor> SO MUCH PULLING
21:35:05 <CakeProphet> pikhq: it's a bit different how it goes about that though.
21:35:14 <CakeProphet> meaning in C it's actually part of the language.
21:35:31 <pikhq> Depends on your notion of "part".
21:35:42 <CakeProphet> invokable within the language via functions.
21:36:06 <CakeProphet> so that it abstractions can be made over it.
21:36:09 <CakeProphet> -it
21:36:16 <pikhq> That's a poor notion.
21:36:27 <CakeProphet> it's still something that I can do with C networking that I cannot with sed.
21:36:31 <pikhq> Is zlib part of C?
21:36:46 <CakeProphet> so it's something to take note of.
21:36:50 <olsner> CakeProphet: what are you building btw?
21:37:09 <elliott> Gregor: Can't wait for red to die :P
21:37:27 <elliott> Gregor: Also, the arrows could do with being a little less translucent...
21:37:32 <CakeProphet> olsner: just toying with a Rezzo player in Perl, but I should really be doing more pertinent things.
21:37:32 <elliott> Hard to make them out in a sea of electrons.
21:37:41 <pikhq> Also, you can totally do networking from dc without bash.
21:37:44 <pikhq> Just need nc. :)
21:38:43 <elliott> Gregor: Why does "-q -r ..." not seem to take notice of the -q...
21:38:52 <CakeProphet> hmmm, I'm kind of surprised that Perl has no prototype for regex arguments, so that you can use /.../ instead of qr/.../ in the style of grep and split.
21:38:56 <elliott> Or is it just that slow :P
21:39:15 <Gregor> elliott: It's that slow.
21:39:34 <Gregor> elliott: On my quadcore it's lightnin' though :)
21:39:37 <CakeProphet> that would save TWO WHOLE CHARACTERS.
21:41:08 <elliott> Gregor: I really love how chaotic tantrum is :P
21:41:37 <elliott> It's harder to see all the spinning with these too-translucent arrows though OOOH BRING IT BACK TO THE MAIN POINT :P
21:41:45 <elliott> Do I have three green contestants...
21:42:05 <Gregor> elliott: It only initializes the first four colors, beyond that it's whatever garbage malloc() gave 8-D
21:42:17 <CakeProphet> split /\d+/, $string instead of split qr/\d+/, $string even though in most other contexts the /.../ would result in an immediate match on $_
21:42:24 <elliott> Gregor: Niiiiiiiiice
21:42:47 <Gregor> elliott: Err, five, rather.
21:42:52 <elliott> Gregor: Disappointed that -q without any warriors doesn't lock up my computer
21:47:07 <Gregor> elliott: Suggested colors for 6-10? :P
21:47:39 <CakeProphet> !perl sub bmap(&@){my$x=shift;map{map $x,$_}@_} $b = [map{[map 0, 1..5]} 1..5]; print @{(bmap {1} $b)->[0]}
21:47:44 <CakeProphet> :(
21:48:26 <quintopia> looks like this game is going to be, like, done today?
21:49:03 <quintopia> where does the name of the game come from, Gregor?
21:49:15 <Gregor> quintopia: Me.
21:49:21 <Gregor> *useless answer CITYYYY*
21:49:26 <hagb4rd> if we go fast enough we might be even get it done yesterday
21:49:30 <quintopia> you are secretly Rezzo???
21:49:34 <quintopia> that's your middle name?
21:49:46 <quintopia> Gregor Rezzo Richards. Guess it has a nice ring to it.
21:50:02 <elliott> Gregor: Chartreuse, octarine, mezoflouride, Rezzo Corporate Colour 9, autopsy red
21:50:09 <elliott> , tambourine stain
21:50:15 <elliott> , ballad architect
21:50:20 <elliott> , fascist umprinder
21:50:21 <elliott> Gregor: hth
21:50:22 -!- CakeProp1et has joined.
21:50:22 -!- CakeProphet has quit (Read error: Operation timed out).
21:52:29 <elliott> So guys
21:52:29 <elliott> What if i
21:52:31 <elliott> went to sleep
21:52:38 <CakeProp1et> you would die.
21:52:59 <elliott> aha, then i'd never become sixteen.
21:53:21 <olsner> oh, is it your sweet sixteen tomorrow?
21:53:48 <CakeProp1et> !perl sub test{print "lol"} map \test, 1..4
21:53:48 <EgoBot> lollollollol
21:53:54 <elliott> olsner: fsvo sweet
21:54:29 <CakeProp1et> that's, odd.
21:54:30 <CakeProp1et> !perl sub test{print "lol"} map &{\test}, 1..4
21:54:31 <EgoBot> Not a CODE reference at /tmp/input.15020 line 1.
21:54:39 <Gregor> OK, my colors are now: red, blue, green, orange, magenta, teal, puce, cyan, purple, light green
21:54:58 <elliott> You're a puce.
21:55:34 <elliott> OK
21:55:35 <elliott> really
21:55:36 <elliott> Goodnight.
21:55:58 <CakeProp1et> oh it's because bmap doesn't accept an arrayref. lame.
21:56:34 <Vorpal> elliott, have fun tomorrow then
21:56:51 <hagb4rd> that's nice..where can i get information on the egobot..is there a repo? could ya spend me a link? thanks
21:58:16 <hagb4rd> n8 elliott
21:58:56 <hagb4rd> what time do you have btw?
22:00:02 -!- elliott has quit (Ping timeout: 240 seconds).
22:00:24 <CakeProp1et> !perl sub bmap([&$]+){my$x=shift;map{map $x,$_}@_} $b = [map{[map 0, 1..5]} 1..5]; print (bmap {1} @$b)[0]
22:00:24 <EgoBot> Malformed prototype for main::bmap: [&$]+ at /tmp/input.15502 line 1.
22:02:37 <CakeProp1et> !perl sub bmap(\[&$]+){my$x=shift;map{map $x,$_}@_} $b = [map{[map 0, 1..5]} 1..5]; print (bmap {1} @$b)[0]
22:02:38 <EgoBot> Type of arg 1 to main::bmap must be one of [&$] (not anonymous hash ({})) at /tmp/input.15758 line 1, near "} @"
22:03:03 <CakeProp1et> heh.
22:03:53 <CakeProp1et> !perl sub bmap(\[&$]@){my$x=shift;map{map $x,$_}@_} $b = [map{[map 0, 1..5]} 1..5]; print (bmap 1, @$b)[0]
22:03:54 <EgoBot> Type of arg 1 to main::bmap must be one of [&$] (not constant item) at /tmp/input.15882 line 1, near "$b)"
22:04:01 <fizzie> If you have a \ in there, it's going to have to be a real thing that starts with & or $.
22:04:18 <CakeProp1et> ah right because it's a ref.
22:04:19 <quintopia> so
22:04:23 <quintopia> gaddafi is dead
22:04:28 <CakeProp1et> can't do \0
22:04:29 <fizzie> Well, no, it will be passed as a ref.
22:04:34 <CakeProp1et> that's what I mean.
22:04:51 <hagb4rd> quintopia: really?
22:04:57 <CakeProp1et> so you can't emulate map's signature with prototypes.
22:05:01 <CakeProp1et> not exactly.
22:05:43 <fizzie> (&@) possibly gets reasonably close.
22:06:04 <fizzie> It's what the docs use for an "almost exactly like" grep replacement, and grep's pretty close to map.
22:06:07 <quintopia> hagb4rd: i dont know
22:06:41 <CakeProp1et> yeah but that doesn't allow map 0, @list or grep /pattern/, @list
22:06:58 <CakeProp1et> the grep example being more common than the map one.
22:07:23 <CakeProp1et> ah well.
22:07:57 <CakeProp1et> I guess I'll just have to write {} and return with my map and grep like operators. the horror.
22:08:10 <quintopia> hagb4rd: looks like he was shot. alive but maybe not much longer?
22:08:33 <hagb4rd> quintopia: how can you tell?
22:08:49 <hagb4rd> qui´´´´
22:08:52 <hagb4rd> link?
22:08:53 <quintopia> http://twitter.com/#!/MalikAlAbdeh
22:12:30 <CakeProp1et> !perl print map ' ', 1..5
22:14:58 -!- FireFly has quit (Quit: FireFly).
22:36:08 -!- CakeProp1et has quit (Ping timeout: 268 seconds).
22:38:46 <Vorpal> quintopia, is it confirmed he is killed? By dependable sources?
22:39:06 <quintopia> read the twitter feed vorpal. says he is probably alive.
22:39:12 <Vorpal> ah
22:39:27 <Vorpal> quintopia, says killed in the top tweet
22:40:03 -!- CakeProphet has joined.
22:40:05 <Vorpal> wait, did I call it "tweet"? I meant "post" of course. "Tweet" is a silly name.
22:40:07 <azaq23> somehow twitter doesn't work for me anymore, FF 3.5.19. It shows the top bar and then nothing.
22:40:08 <CakeProphet> ($self->{arr}, $self->{str}) = ($g, join "\n", map {join '',@$_} @$g) if $g;
22:40:13 <CakeProphet> object-oriented Perl sure is fun.
22:40:24 <Vorpal> azaq23, tends to need js iirc
22:40:33 <Vorpal> yes that sucks
22:40:42 <quintopia> Vorpal: then it's still up in the air. i suspect he won't be alive tomorrow, either way.
22:41:02 <Vorpal> quintopia, is the shooting confirmed by reliable sources though?
22:41:03 <quintopia> also, tweet is correct. resistance to newspeak is futile.
22:41:14 <Vorpal> quintopia, such as NATO or whatever
22:41:20 <azaq23> Vorpal: JS is activated, otherwise this would be the easy reason. It still worked a month ago
22:41:30 <quintopia> the man is a journalist. he probably has sources that NATO doesn't
22:41:30 <Vorpal> huh
22:41:39 <Vorpal> quintopia, yes but are they reliable
22:42:23 <quintopia> the sources are anonymous. only the man doing the tweeting can be the judge of that
22:42:42 <quintopia> (anonymous to us, not to him, i mean)
22:42:47 <Vorpal> quintopia, so is there any other source than the man doing that posting on twitter?
22:42:50 <Vorpal> that is what I'm asking
22:42:58 <Vorpal> I don't know if I trust that man either
22:43:03 <Vorpal> I have never heard of him before
22:43:26 <quintopia> i don't know. have you looked?
22:43:28 <Vorpal> quintopia, In other words I'm asking for reliable independent sources.
22:43:42 <quintopia> why don't you seek them out then?
22:43:45 <Vorpal> quintopia, yes, tried google news
22:43:47 <Vorpal> nothing
22:44:15 <quintopia> i don't think other news services are going to say anything until the confusion has died down and the end result is absolutely confirmed.
22:44:28 <hagb4rd> reliable and independent..yes
22:44:32 -!- CakeProphet has quit (Ping timeout: 240 seconds).
22:44:44 <Vorpal> hagb4rd, exactly what I asked for. Reliable, independent
22:44:50 <Vorpal> err
22:44:51 <Vorpal> quintopia, ^
22:45:07 <quintopia> you're going to have to wait then
22:45:19 <quintopia> by tomorrow you will know
22:45:36 <Vorpal> quintopia, tomorrow what timezone? It is just after midnight here
22:45:38 <hagb4rd> i'd like to know who really is
22:46:04 <quintopia> check your morning tv news
22:46:06 -!- Patashu has joined.
22:46:13 <quintopia> i bet they'll know for sure by then
22:46:13 <Vorpal> quintopia, you mean news paper
22:46:22 <quintopia> no one reads newspapers
22:46:27 <Vorpal> quintopia, you live in US right?
22:46:37 <quintopia> also newspapers are printed much earlier than morning news is shot
22:46:39 <Vorpal> quintopia, in Sweden newspapers are still good quality, and common
22:47:12 <quintopia> wait until the morning tv news. i suspect newspapers wont have it yet
22:47:40 <Vorpal> quintopia, I don't even have a TV. So I'll check the radio then.
22:47:55 <Vorpal> quintopia, Sweden has public service on BBC quality level after all.
22:47:57 <Vorpal> unlike US
22:48:34 <quintopia> we have BBC america
22:48:59 <Vorpal> quintopia, okay, still it is not like it is BBCs main target.
22:49:31 <quintopia> you are very familiar with US news services?
22:49:34 <Vorpal> quintopia, and based on the name that covers more than one country
22:49:47 <hagb4rd> there are all kind of journalists in all ´countries
22:49:49 <Vorpal> quintopia, enough to know that public service over there is fairly limited
22:49:58 -!- CakeProphet has joined.
22:49:58 -!- CakeProphet has quit (Changing host).
22:49:59 -!- CakeProphet has joined.
22:50:04 <Vorpal> and that newspapers are not as common as in Europe
22:50:06 <quintopia> limited how
22:50:22 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
22:50:31 <quintopia> and newspapers are ridiculously common
22:50:37 <quintopia> and very complete
22:50:43 <Vorpal> quintopia, you said no one reads them
22:50:46 <quintopia> its just that paper journalism is the past
22:50:49 <Vorpal> that is what I meant
22:51:14 <hagb4rd> maybe ..ack
22:51:18 <Vorpal> quintopia, you have nothing like BBC really. You do have a few public service networks iirc, but no single major player like that.
22:51:34 <quintopia> i dont think you know much about the news here though. nott enough to directly compare quality.
22:51:49 <hagb4rd> right
22:51:57 <Vorpal> quintopia, possibly
22:52:25 <Vorpal> quintopia, oh and of course they are very US centric. And Fox is horrible.
22:52:56 <quintopia> not like newscorp doesnt do horrible things internationally.
22:53:12 <quintopia> but i dont hear many people criticizing NYTimes
22:53:28 <Vorpal> interesting
22:54:01 <Vorpal> maybe that paper have better quality?
22:54:08 <Vorpal> has*
22:54:23 <quintopia> including web
22:54:26 <quintopia> it may be so
22:54:40 <hagb4rd> they have the oldskool journalísts
22:55:02 <hagb4rd> but times will change
22:55:58 -!- CakeProphet has quit (Ping timeout: 240 seconds).
22:56:07 <quintopia> does CNN have a bad reputation outside the US?
22:56:24 <hagb4rd> no
22:56:35 <hagb4rd> but fox has
22:56:43 <hagb4rd> indeed
22:56:48 <quintopia> fox has a bad reputation IN the US. we call it an outlier.
22:56:54 -!- CakeProphet has joined.
22:56:55 -!- CakeProphet has quit (Changing host).
22:56:55 -!- CakeProphet has joined.
22:57:28 -!- CakeProp1et has joined.
22:57:31 <quintopia> but they are an opinion service, not a news service, so for delivering opinions they are pretty adequate
22:57:58 <hagb4rd> same shit we got here
22:58:07 <monqy> good thing they certainly don't call themselves a news source
22:58:12 <monqy> fair & balanced
22:58:12 <CakeProp1et> HALP HOW DO I SHOT FIND IN IRSSI
22:58:17 <monqy> help
22:58:31 <CakeProp1et> HALP TOO MANY WORDS
22:58:54 -!- CakeProphet has quit (Client Quit).
22:59:07 <CakeProp1et> brb
22:59:09 -!- CakeProp1et has quit (Client Quit).
22:59:26 <pikhq> Fox has a bad reputation in the US, except for its audience.
22:59:35 <pikhq> Which considers it a source of Truth.
22:59:37 -!- CakeProphet has joined.
23:01:47 <hagb4rd> which part does it make?
23:01:59 <hagb4rd> how big o
23:02:08 <hagb4rd> is the audience ..sorry
23:02:26 <pikhq> A fairly large portion of the GOP base.
23:03:15 <Gregor> pikhq: dood u shud rezzo
23:03:43 <hagb4rd> but its the center of america..and the south ..right?
23:03:49 <hagb4rd> not the coasts
23:04:43 <Vorpal> <hagb4rd> but times will change <-- maybe, but here newspapers survive by doing investigating journalism to a much higher degree than before.
23:04:59 <pikhq> And the US's electoral system is biased against population density.
23:05:00 <Vorpal> at least the ones that are still breaking even do
23:05:22 <CakeProphet> halp elliot's wonder.hs buffer cleared
23:05:26 <pikhq> Vorpal: Here journalism survives by spouting louder bullshit.
23:05:37 <Vorpal> pikhq, I think our way is better
23:05:37 <hagb4rd> lol
23:06:08 <pikhq> Yes, well, it is.
23:06:51 <Vorpal> pikhq, especially for democracy. Investigative journalism is an important tool to battle corruption.
23:07:25 <CakeProphet> Gregor: what's the link to that repo?
23:08:12 <Gregor> CakeProphet: https://codu.org/projects/rezzo/hg/
23:08:22 <hagb4rd> vorpal: absolutely
23:08:27 <pikhq> *Battle* corruption?
23:08:32 <pikhq> How unAmerican.
23:08:33 <Vorpal> pikhq, only reason I still subscribe to a newspaper is due to the really good quality journalism in it.
23:08:42 <Vorpal> svenska dagbladet
23:08:44 <Vorpal> svd.se
23:08:46 <Patashu> US POLITICS
23:09:58 <Vorpal> pikhq, that newspaper won a shitload of international awards. Not only for their journalism, but also for the design, and good use of graphics for visualisation iirc.
23:12:37 <CakeProphet> Gregor: agent ID = 0-9?
23:13:06 <Gregor> CakeProphet: Yes.
23:13:49 <olsner> Vorpal: don't be so confident that journalism is all free and awesome over here, it's merely less bad I think
23:14:14 <CakeProphet> !perl sub id2base($) {(qw(1 q 2 w 3 e 4 r 5 t 6 y 7 u 8 i 9 o 0 p))){shift}} print id2base(1)
23:14:14 <EgoBot> syntax error at /tmp/input.22813 line 1, near "))"
23:14:14 <Vorpal> olsner, true, not free. I mean SvD costs money certainly.
23:14:25 <Vorpal> olsner, anyway SvD /is/ good.
23:14:27 <CakeProphet> !perl sub id2base($) {(qw(1 q 2 w 3 e 4 r 5 t 6 y 7 u 8 i 9 o 0 p)){shift}} print id2base(1)
23:14:27 <EgoBot> syntax error at /tmp/input.22903 line 1, near "){"
23:14:31 <CakeProphet> bah
23:14:48 <olsner> Vorpal: I meant free as in freedom, freedom of the press to discover shit and write about it
23:15:07 <Vorpal> olsner, well, true, it could be getting worse. Who knows.
23:15:24 <CakeProphet> !perl sub id2base($) {tr/0-9/qwertyuiop/ =~ shift} print id2base(1)
23:15:32 <olsner> well, they are probably pretty free, but aren't very independent I think
23:15:37 <CakeProphet> I promise I'm not making like... a hilarious hack or anything.
23:16:11 <Vorpal> CakeProphet, if it doesn't print "just another perl hacker" I'm going to be disappointed
23:16:45 <CakeProphet> !perl sub id2base($) {shift =~ tr/0-9/qwertyuiop/} print id2base(1)
23:16:45 <EgoBot> Can't modify shift in transliteration (tr///) at /tmp/input.23127 line 1, near "tr/0-9/qwertyuiop/}"
23:17:06 <Vorpal> CakeProphet, but why not try it locally?
23:17:16 <Vorpal> just open a terminal emulator
23:17:24 <CakeProphet> this is actually more convenient.
23:17:29 <CakeProphet> I'll move to /msg
23:17:43 <Vorpal> CakeProphet, show us the end result though
23:18:17 <Vorpal> CakeProphet, also I have nothing against you doing it here. It is low rate enough to not be spammy :P
23:18:33 <Gregor> http://codu.org/projects/rezzo/hg/index.cgi/raw-file/tip/README.agents Here we go, a simple README for writing agents.
23:19:03 <Vorpal> Gregor, typo "my respond"
23:19:10 <Vorpal> should be "may"
23:19:37 <Gregor> Vorpal: Fixt.
23:19:46 <Vorpal> Gregor, :)
23:20:11 <CakeProphet> !perl sub id2base($) {my $_=shift;tr/0-9/qwertyuiop/;$_} print map id2base, 0..9
23:20:12 <EgoBot> Not enough arguments for main::id2base at /tmp/input.23915 line 1, near "id2base,"
23:20:21 <CakeProphet> !perl sub id2base($) {my $_=shift;tr/0-9/qwertyuiop/;$_} print map \id2base, 0..9
23:20:21 <EgoBot> Not enough arguments for main::id2base at /tmp/input.23974 line 1, near "id2base,"
23:20:25 <CakeProphet> ffff
23:20:39 <Vorpal> Gregor, so the client needs to be recompiled to use a different view port size? Hm
23:20:40 <CakeProphet> !perl sub id2base($) {my $_=shift;tr/0-9/qwertyuiop/;$_} print id2base 5
23:20:40 <EgoBot> y
23:20:41 <CakeProphet> tada
23:20:47 <CakeProphet> not terrible...
23:20:57 <CakeProphet> if I say "not terrible" enough it becomes not terrible.
23:21:10 <Gregor> Vorpal: It was argued that since this is essentially a realtime application, it's more important to know the size statically than to be flexible.
23:21:26 <Vorpal> ah I see
23:22:30 <CakeProphet> Vorpal: the purpose is to map each agent ID to a unique character for the purposes of representing the game grid.
23:22:44 <Vorpal> CakeProphet, ew
23:22:52 <Gregor> ... huh?
23:22:55 <CakeProphet> may not be necessary though.
23:23:40 <CakeProphet> Gregor: bases and geysers are states, but agents are not right?
23:23:46 <CakeProphet> otherwise moving around would destroy things.
23:24:27 <Gregor> CakeProphet: Agents are states, but agents may only move on blank spaces. The "wall" concept was merged into circuits.
23:25:05 <CakeProphet> ...I don't really like that but oh well.
23:26:16 <Vorpal> Gregor, so not really a CA any longer. Since the agent doesn't follow any CA laws
23:26:33 <CakeProphet> no opposite of that.
23:26:37 <CakeProphet> agents are states.
23:26:38 <Vorpal> after all it is controlled by an external program
23:26:42 <CakeProphet> well, yeah
23:26:53 <CakeProphet> controlled by a predetermined input string. :P
23:27:05 <Vorpal> CakeProphet, open('/dev/random')
23:27:15 <Vorpal> err " not '
23:27:37 <Vorpal> CakeProphet, you can't describe the agent's behaviour anyway in terms of the state of it and the neighbours
23:27:54 <Vorpal> iirc that is what makes a CA a CA, as opposed to for example a bully automata
23:28:28 <Gregor> <Vorpal> Gregor, so not really a CA any longer. Since the agent doesn't follow any CA laws // the CA and the agents were always independent. The agent DOES follow CA laws, it just only does so during the CA update.
23:28:36 <Gregor> The agent was never a CA itself, that makes no sense :P'
23:29:08 <Vorpal> Gregor, that is less of an issue when the agent is not a state :P
23:29:43 <Gregor> Vorpal: This opens the possibility of e.g. hitting agents (which currently you can't do)
23:30:02 <Gregor> Besides, it makes agent visibility not be yet more extra data.
23:30:06 <Vorpal> Gregor, so how do you win currently?
23:30:12 <Gregor> Vorpal: It's capture-the-flag.
23:30:18 <Vorpal> ah
23:30:28 <Vorpal> Gregor, flag geysers?
23:30:32 <Vorpal> how does that work
23:30:39 <Gregor> Vorpal: Did you read the README, or only README.agent? :P
23:30:47 <Vorpal> Gregor, link me to the readme
23:30:52 <Gregor> http://codu.org/projects/rezzo/hg/index.cgi/raw-file/tip/README
23:30:53 <Vorpal> I haven't seen it
23:32:46 <Vorpal> Gregor, btw the time system currently is unfair. I suggest basing it on CPU time instead somehow. After all, who knows what other process suddenly decides to run
23:33:16 <Gregor> Vorpal: I have decided to instead write a system that's actually implementable.
23:33:26 <Gregor> (It's unfair, but it's equally unfair to all contestants)
23:34:02 <CakeProphet> Vorpal the benefit of representing each possible state as a character is that I can use regex to match patterns.
23:34:12 <CakeProphet> that's the theory anyways. We'll see how it works out.
23:34:26 <Gregor> Oh, that's interesting ...
23:34:28 <Vorpal> CakeProphet, .... less efficient if you do it from C or such :P
23:34:48 <Gregor> Why do people seem to think that 1/15th of a second is some super-tiny amount of time? Implement it in Perl, who cares X-P
23:34:51 <Vorpal> Gregor, uh. How is it not implementable to measure CPU time. You just have to run the processes under your control.
23:34:59 <Vorpal> try ais secret project XD
23:35:07 <Gregor> Vorpal: Yeah, I don't got that ;P
23:35:18 <CakeProphet> Gregor: you think I'll end up going over the frame rate?
23:35:55 <Gregor> CakeProphet: Everything I've done in C has been way, way, way faster than it needed to be, so it's not like it's cutting it close.
23:36:07 <Patashu> Not fast enough
23:36:08 <Patashu> Code it in fortran
23:36:09 <CakeProphet> awesome.
23:36:22 <Vorpal> Gregor, hm what is a good algorithm to do pathing here. Considering the moving electrons I mean
23:36:47 <Gregor> Vorpal: The moving electrons have very little relevance to player pathing ...
23:37:03 <Vorpal> Gregor, iirc you said players could only enter empty cells?
23:37:12 <Vorpal> oh wait, conductors
23:37:15 <Gregor> Vorpal: Yes, but ele--yeah.
23:37:22 <Vorpal> Gregor, how do you cross a conductor?
23:37:25 <Gregor> Break it.
23:37:28 <CakeProphet> so far I've gone with the name "spartan" but I might change it once I actually have a strategy.
23:37:29 <Vorpal> ew
23:37:34 <Vorpal> Gregor, that is ugly
23:37:44 <Patashu> can you make a conductor go diagonally?
23:37:46 <Patashu> then agents can pass it
23:37:52 <CakeProphet> makes it easy to destroy circuits though.
23:37:52 <Gregor> Patashu: Yes, you can.
23:37:58 <CakeProphet> just flail around destructively.
23:38:01 <Gregor> Patashu: But you can't move diagonally.
23:38:05 <Patashu> o
23:38:07 <Gregor> CakeProphet: Destroying takes a while.
23:38:17 <CakeProphet> how so?
23:38:35 <Gregor> Cells have a damage value (which is completely independent of the CA)
23:38:59 <Vorpal> ew
23:39:04 <Vorpal> and the client can't see it
23:39:08 <Vorpal> just ew
23:39:14 <Gregor> Vorpal: So you've read but not actually read both of the README files then.
23:39:17 <Patashu> oh no...not...limited information
23:39:21 <Patashu> O_O
23:39:27 <CakeProphet> Gregor: so you... sit on the conductor for a while before it goes away, otherwise it gets replaced by a conductor when you step off?
23:39:30 <Gregor> Seeing as that you think that you can't see it when actually you can and it says so RIGHT IN THE FUCKING README
23:39:36 <Vorpal> oh I missed the damage array
23:39:37 <Gregor> READ
23:39:37 <Patashu> I demand a bfjoust variant where the player is told the status of the entire board
23:39:37 <Gregor> THE
23:39:38 <Vorpal> right
23:39:38 <Gregor> FUCKING
23:39:39 <Gregor> READMES
23:40:01 <Gregor> <-- much more polite in README form :P
23:40:25 <Vorpal> Patashu, go code it then
23:40:50 <Vorpal> Patashu, not that it will be interesting
23:40:51 <Patashu> it's an obvious joke
23:40:54 <Patashu> it won't
23:41:10 <Patashu> bfjoust is only interesting because you don't know what the fuck is going on except whether you're on a 0 or not
23:41:13 <Vorpal> perfect play would always lead to a draw. And perfect play would be even easier than in tic-tac-toe
23:41:42 <CakeProphet> Gregor: rezzo warrior repo plz (sorry if it's in plain site but I can't seem to get it from google or the previous link)
23:41:49 <CakeProphet> *sight
23:41:58 <Gregor> CakeProphet: That one's not in plain sight, since only elliott uses it :P
23:42:04 <Gregor> https://codu.org/projects/rezzo/warriorhg/
23:42:54 <Vorpal> Gregor, anyway hm I would make my client for the game multi-threaded.
23:43:03 <Gregor> Vorpal: Then do that :P
23:43:12 <Vorpal> Gregor, if I was about to do one :P
23:43:37 <CakeProphet> Gregor: reading Haskell is almost like reading a spec so I'm using it as reference. :P
23:44:14 <Vorpal> Gregor, oh another good trick: scan /proc for the server and suspend it while calculating the move. Since the other bot would not expect that, it should be an advantage.
23:44:16 <Vorpal> ;P
23:44:36 <Gregor> Vorpal: lol NO SIDE CHANNELS >_<
23:44:38 <Gregor> :P
23:44:42 <Vorpal> Gregor, aww
23:45:01 <Vorpal> Gregor, my next suggestion was using ptrace to modify the board :P
23:45:54 <Vorpal> Gregor, anyway a more borderline case would be busywaiting all the time you are not calculating
23:45:57 -!- hagb4rd has quit (Ping timeout: 252 seconds).
23:46:00 <Vorpal> I wonder what that would result in
23:46:06 <Vorpal> on all cores that is
23:46:15 <CakeProphet> heh, elliott and I used the same characters for the same states.
23:46:25 <Gregor> Vorpal: Probably snarfing up all the memory would be more valuable.
23:46:43 <Vorpal> Gregor, oh good point. But that would be tricky on linux.
23:47:00 <Gregor> while (1) malloc(1);
23:47:20 <Vorpal> Gregor, due to overcommiting, and swap you will not get the result you want from that I expect
23:47:48 <Gregor> Vorpal: Swapping is /exactly/ what you want. Overcommitting shouldn't be an issue with malloc(), glibc still needs its bookkeeping.
23:48:11 <Vorpal> Gregor, probably more efficient to just mmap a huge range and write to the first byte in every page
23:48:22 <Gregor> Vorpal: Yeah, that'd do.
23:48:29 <Gregor> setrlimit to the rescue :P
23:48:40 <fizzie> That sounds like a good way to get the best possible score for the OOM killer.
23:48:42 <CakeProphet> !perl print join "\n", qr/a/, qr/b/, qr/c/
23:48:43 <EgoBot> ​(?-xism:a)
23:48:45 <CakeProphet> lolwhut
23:48:49 <Vorpal> fizzie, oh true
23:49:33 <CakeProphet> !perl print "a\nb\nc"=~(join "\n", qr/a/, qr/b/, qr/c/)
23:49:34 <EgoBot> 1
23:49:36 <CakeProphet> :)
23:49:37 <Vorpal> Gregor, anyway filling up the ram of a modern desktop will take a while. I have 16 GB RAM.
23:49:52 <olsner> that'll take like several seconds
23:50:07 <Vorpal> olsner, yep. with 15 moves per second....
23:50:25 <Gregor> Vorpal: So, you're not gonna win in 45 moves *shrugs*
23:50:33 <Vorpal> heh
23:50:37 <CakeProphet> truly it is a glorious day when I can join regexes
23:50:42 <Vorpal> hm the first hdd I had was 3.2 GB iirc. That isn't a lot these days
23:50:43 <CakeProphet> though I suppose strings would have sufficed.
23:53:04 <Gregor> Vorpal: I could run the program under UMLBox with max (say) 64MB memory, and no more than one user process (which I /think/ still allows threads?)
23:53:18 <Vorpal> Gregor, no it doesn't
23:53:20 <Vorpal> afaik
23:53:35 <pikhq> It does with NPTL.
23:53:40 <Vorpal> ah okay
23:53:50 <Vorpal> Gregor, anyway 64 MB isn't much
23:53:57 <Vorpal> Gregor, not if you are using haskell
23:54:07 <pikhq> I at least think...
23:54:24 <Vorpal> Gregor, allow 1 GB or so. That would be more than enough. And not large enough to be problematic on a modern system.
23:54:30 <Vorpal> besides what is wrong with using fork()?
23:54:47 <Gregor> Vorpal: UML processes are processes, so you can still glut.
23:54:58 <Vorpal> Gregor, glut?
23:55:10 <Vorpal> as in the opengl related library?
23:55:13 <Vorpal> what
23:55:45 <Gregor> Why does NOÖNE no what glut means today.
23:55:52 <Vorpal> Gregor, tell me
23:55:59 <Gregor> Verb: Supply or fill to excess: "the factories for recycling paper are glutted".
23:56:09 <Vorpal> I see
23:56:33 <Vorpal> Gregor, must be deprecated. Removed in English 2011.08
23:56:41 <Gregor> :P
23:56:45 <fizzie> Gregor: It's because you keep using "no" for "know". The stupidity has retroactively spread.
23:56:59 <Gregor> fizzie: ... I seriously suck at English recently ...
23:57:17 <fizzie> I just got someone else's error message out of EgoBot via DCC, I think.
23:57:23 <Vorpal> heh
23:57:41 <Gregor> fizzie: Well, so long as /somebody/ gets them.
23:57:54 <Vorpal> Gregor, anyway 64 MB is tiny. 1 GB may be too much if you have many warriors
23:58:09 <Vorpal> Gregor, so, lets say 512 MB each? Sounds reasonable to me
23:58:11 <fizzie> http://p.zem.fi/yw0y -- wanted to check if it prints the other lines too, but it DCC-sent me someone's Haskell type problems.
23:58:28 <Gregor> Vorpal: My desktop has 1G 8-D
23:58:45 <Vorpal> Gregor, how quaint
23:58:45 <Gregor> (Nowait, 2G :P )
23:58:52 <Vorpal> still quaint
23:59:10 <Gregor> This desktop is from 2008.
23:59:13 <Vorpal> Gregor, anyway 64 MB each precludes many high level languages
23:59:19 <Vorpal> Gregor, low end then?
23:59:28 <Gregor> Vorpal: It's my main computer.
23:59:30 <Vorpal> Gregor, I mean my laptop from 2008 has more ram
23:59:37 <Vorpal> I think it is from 2008
23:59:42 <Gregor> I think 2008 might be wrong :P
23:59:43 <pikhq> Uh, 4G cost like $40 in 2008.
23:59:48 <Gregor> 2007?
23:59:49 -!- copumpkin has joined.
23:59:51 <Vorpal> okay 2009
23:59:52 <Gregor> Somewhere 'round there.
←2011-08-20 2011-08-21 2011-08-22→ ↑2011 ↑all