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