00:13:01 -!- kar8nga has quit (Remote host closed the connection).
00:14:16 -!- pikhq has quit (Read error: Connection reset by peer).
00:16:28 <Sgeo> Didn't get a perfect grade on my exam.
00:16:37 <Sgeo> Now arguing that her answers are incorrect
00:16:41 -!- pikhq has joined.
00:17:47 -!- FireFly has quit (Quit: Leaving).
00:29:33 -!- coppro has joined.
00:31:01 -!- Sgeo has quit (Ping timeout: 264 seconds).
01:00:54 -!- augur has quit (Ping timeout: 240 seconds).
01:27:56 -!- augur has joined.
01:29:05 -!- myndzi\ has joined.
01:30:01 -!- Gregor has quit (*.net *.split).
01:30:01 -!- olsner has quit (*.net *.split).
01:30:02 -!- jcp has quit (*.net *.split).
01:30:03 -!- pikhq has quit (*.net *.split).
01:30:03 -!- uorygl has quit (*.net *.split).
01:30:03 -!- cheater2 has quit (*.net *.split).
01:30:04 -!- ineiros has quit (*.net *.split).
01:30:04 -!- lament has quit (*.net *.split).
01:30:05 -!- sshc has quit (*.net *.split).
01:30:07 -!- pineapple has quit (*.net *.split).
01:30:07 -!- rodgort has quit (*.net *.split).
01:30:07 -!- chickenzilla has quit (*.net *.split).
01:30:08 -!- myndzi has quit (*.net *.split).
01:30:08 -!- jix_ has quit (*.net *.split).
01:30:08 -!- cal153 has quit (*.net *.split).
01:30:08 -!- SimonRC has quit (*.net *.split).
01:30:09 -!- mtve has quit (*.net *.split).
01:32:49 -!- SimonRC has joined.
01:32:49 -!- jcp has joined.
01:32:49 -!- Gregor has joined.
01:32:49 -!- olsner has joined.
01:32:49 -!- chickenzilla has joined.
01:32:49 -!- rodgort has joined.
01:32:49 -!- pineapple has joined.
01:33:10 -!- sshc has joined.
01:33:17 -!- pikhq has joined.
01:33:17 -!- uorygl has joined.
01:33:17 -!- cheater2 has joined.
01:33:17 -!- lament has joined.
01:33:17 -!- ineiros has joined.
01:33:19 -!- jix has joined.
01:33:41 -!- augur has changed nick to Guest8510.
01:35:24 -!- cal153 has joined.
01:36:13 -!- Gracenotes has joined.
01:45:25 -!- HackEgo has joined.
01:45:26 -!- EgoBot has joined.
02:05:19 * Gregor looks for an excuse to reference http://media.fukung.net/images/6793/chowneduck.jpg on Wikipedia (NSFW)
02:08:44 -!- Sgeo has joined.
02:13:32 -!- Tritonio_GR has joined.
02:28:57 -!- Guest8510 has changed nick to augur.
02:29:05 -!- coppro has quit (Quit: reboot).
02:32:38 -!- coppro has joined.
02:39:07 -!- Asztal has quit (Ping timeout: 260 seconds).
02:54:03 -!- pikhq has quit (Quit: leaving).
02:55:54 -!- pikhq has joined.
02:58:27 -!- pikhq has quit (Client Quit).
03:05:11 -!- sshc has quit (Ping timeout: 246 seconds).
03:05:11 -!- SimonRC has quit (Ping timeout: 246 seconds).
03:05:18 -!- uorygl has quit (*.net *.split).
03:05:18 -!- cheater2 has quit (*.net *.split).
03:05:18 -!- ineiros has quit (*.net *.split).
03:05:18 -!- lament has quit (*.net *.split).
03:05:50 -!- sshc has joined.
03:06:19 -!- SimonRC has joined.
03:06:56 -!- uorygl has joined.
03:06:56 -!- cheater2 has joined.
03:06:56 -!- lament has joined.
03:06:56 -!- ineiros has joined.
03:08:51 -!- adu has joined.
03:19:32 -!- oerjan has joined.
03:23:45 * Sgeo tried to argue that the Data Structures class should use Python
03:24:05 <oklopol> maybe http://en.wikipedia.org/wiki/Not_safe_for_work?
03:29:48 <coppro> Sgeo: that sounds horrible
03:30:46 <coppro> because, data structures are a low-level concept; they should be implemented in a low-level language
03:32:10 <Sgeo> Well, are there low-level languages that are less syntactically insane than C++?
03:33:22 * oerjan thinks we use Modula-2, way back :)
03:37:09 -!- mtve has joined.
03:52:37 -!- Oranjer has left (?).
04:08:54 <coppro> adu: after my great start yesterday, I'm sure my completed program has about 10 stylistic pas faux
04:10:19 <coppro> http://pastie.org/885958
04:18:09 -!- Tritonio_GR has quit (Read error: Connection reset by peer).
04:25:52 <oerjan> coppro: the main thing i notice is that you are using a lot of == rather than pattern matching
04:26:14 <coppro> oerjan: yeah; not sure how to pattern match against my monster of a type
04:26:19 <coppro> (at least, to pattern match nicely
04:30:53 <oerjan> step (VM {future = []}) = return ()
04:32:42 -!- augur has quit (Ping timeout: 248 seconds).
04:40:14 <coppro> oerjan: I'm having one issue: jump f o c i v@(VM {future = o:_}) is not a valid pattern?
04:40:54 <oerjan> coppro: indeed you cannot compare things in patterns. call the second o' or something and add a | o == o' guard
04:41:25 <oerjan> coppro: maybe i'm a little late, but you might want to use a case expression if it's awkward to do all the pattern matching at top level (i.e. case instr of ...)
04:42:25 <coppro> oerjan: Well, I've already rewritten it, and it doesn't look too horrid
04:42:52 <oerjan> it was mainly that value = ... that made me wonder, since you are using it in several branches
04:45:15 -!- nooga has joined.
04:45:44 <coppro> not sure about jump though; the inability to compare in a guard is annoying
04:46:12 <coppro> I guess I have no choice but to use another guard instead of a pattern
04:51:32 -!- pikhq has joined.
04:55:28 -!- adu has quit (Quit: adu).
04:57:40 -!- adu has joined.
04:59:04 <nooga> there's a party in my flat and i don't even know who did this party
05:03:34 <oerjan> took you long enough :D
05:08:12 -!- jcp has quit (Changing host).
05:08:12 -!- jcp has joined.
05:08:49 -!- jcp has quit (Changing host).
05:08:49 -!- jcp has joined.
05:17:58 <Sgeo> What's the language where === is used for case statements?
05:18:13 <Sgeo> Too many languages in too short a period of time can be confusing
05:27:40 -!- augur has joined.
06:11:26 -!- Asztal has joined.
06:16:51 -!- augur has quit (Ping timeout: 265 seconds).
06:31:01 -!- jcp has quit (Quit: I will do anything (almost) for a new router.).
06:35:17 <coppro> Sgeo: I dunno; which languages actually have ===? PHP's the only one I can think of offhand
06:35:32 <Sgeo> I think I may be thinking of Ruby
06:36:02 <Sgeo> Right now trying to get a handle on Erlang instead of sleeping
06:36:34 <coppro> ah yes, it is Ruby, according to the doc
06:37:32 <coppro> that, to me, looks like something out of perldoc
06:37:40 <coppro> (yes, I know it isn't)
06:38:35 * Sgeo is overdosing on languages
06:39:37 <coppro> Sgeo: the Erlang language is simple, but coding Erlang is all about the library
06:41:42 * Sgeo really should find a motivation to learn Erlang
06:45:53 -!- adu has quit (*.net *.split).
06:45:54 -!- Sgeo has quit (*.net *.split).
06:45:54 -!- AnMaster has quit (*.net *.split).
06:45:54 -!- Quadrescence has quit (*.net *.split).
06:45:55 -!- yiyus has quit (*.net *.split).
06:47:02 -!- oerjan has quit (Quit: leaving).
06:53:06 -!- adu has joined.
06:53:06 -!- Sgeo has joined.
06:53:06 -!- Quadrescence has joined.
06:53:06 -!- AnMaster has joined.
06:53:06 -!- yiyus has joined.
06:55:02 -!- sebbu2 has joined.
06:55:06 -!- sebbu has quit (Ping timeout: 248 seconds).
06:55:23 -!- sebbu2 has changed nick to sebbu.
07:07:03 <Sgeo> For some reason, Erlang isn't really grabbing my interest
07:11:39 <coppro> because the online stuff sucks?
07:17:49 -!- augur has joined.
07:57:55 -!- tombom has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:13:56 -!- Asztal has quit (Ping timeout: 246 seconds).
08:15:28 -!- Gracenotes has quit (Quit: Leaving).
08:50:17 -!- tombom has quit (Quit: Leaving).
09:00:48 -!- nooga_ has joined.
09:03:38 -!- nooga has quit (Ping timeout: 248 seconds).
09:32:03 -!- myndzi\ has quit (Ping timeout: 240 seconds).
09:32:46 -!- myndzi has joined.
09:40:32 -!- cheater2 has quit (Ping timeout: 240 seconds).
09:41:39 -!- cheater2 has joined.
09:48:48 <Geekthras> coppro: doesn't javascript have ===?
09:49:02 <Geekthras> doesn't it check real equality instead of confusing equality?
09:56:17 -!- ais523 has joined.
10:18:15 <augur> ais523: would you be interested in ... a challenge?
10:18:24 <ais523> augur: it depends on the details
10:18:51 <augur> basically, i will design an esolang of some sort
10:18:57 <augur> relatively simple and not complicated at all
10:19:05 <augur> maybe ill even use an existing one
10:19:19 <augur> and then ill provide some visualization of a program executing.
10:19:31 <ais523> and I have to deduce the esolang from that visualization?
10:19:42 <augur> or at least the constructs of the language
10:20:07 <ais523> it sounds interesting, at least
10:20:20 <ais523> probably best if, as last time, we make guesses to you via PM, so everyone can play
10:21:30 <augur> actually, i like the idea of this being collaborative.
10:22:19 <augur> the idea is that it should be vaguely like reverse engineering the brain
10:22:25 <augur> all you have is data about program execution
10:22:32 <augur> and you dont even know what the data represents
10:28:23 -!- lereah_ has joined.
11:28:06 -!- FireFly has joined.
11:29:19 -!- kar8nga has joined.
11:51:23 <Deewiant> AnMaster: Found another apparent bug in cfunge's bounds calculation; this time I'm a bit more sure because efunge agrees with CCBI
12:08:11 -!- sebbu2 has joined.
12:08:18 -!- sebbu has quit (Ping timeout: 252 seconds).
12:08:34 -!- sebbu2 has changed nick to sebbu.
14:19:23 <AnMaster> (by the way, I hope you realise that efunge could be incorrect as well)
14:19:31 <Deewiant> http://tar.us.to:12345/ run slowdown.b98 on mycology.b98
14:19:46 <AnMaster> Deewiant, wget http://tar.us.to:12345/ ?
14:19:56 <Deewiant> No, click the link and download the two files.
14:20:31 <AnMaster> Deewiant, so what am I supposed to look for?
14:20:50 <ais523> grr, I've just closed Firefox three times by accident in the last ten minutes
14:20:52 <Deewiant> It quits right after the relevant line of output.
14:20:56 <ais523> by typoing control-Q rather than control-W
14:21:25 <AnMaster> Deewiant, build/cfunge experimental/slowdown.b98 experimental/mycology.b98 ?
14:21:42 <AnMaster> Deewiant, are those BAD relevant?
14:21:45 <Deewiant> efunge will probably take a few minutes.
14:22:05 <AnMaster> " That the greatest point, relative to that point, is ( 180 544 )"?
14:22:59 <AnMaster> Deewiant, how fast is that computer where it takes "a few minutes"?
14:23:14 <Deewiant> It takes a bit under 20 seconds for me.
14:23:17 <AnMaster> " That the greatest point, relative to that point, is ( 180 539 )"
14:23:48 <AnMaster> Deewiant, is the 544 correct at any point btw?
14:24:03 <Deewiant> AnMaster: If you remove a couple of lines from the end of the file (five was enough IIRC) cfunge and efunge will agree.
14:24:28 <AnMaster> Deewiant, what do those lines do btw?
14:24:37 <Deewiant> Those lines at the end of the file do nothing.
14:24:45 <Deewiant> You can remove any five lines that aren't executed, IIRC.
14:24:49 <AnMaster> shouldn't both shrink equally much then
14:24:57 <AnMaster> also remove from which file? cfunge or efunge?
14:25:08 <Deewiant> efunge shrinks by five, cfunge shrinks by five plus the five that it's getting wrong now.
14:25:35 <AnMaster> so what on earth is going on there ^_^
14:25:47 <AnMaster> Deewiant, does it matter that:
14:25:52 <AnMaster> cfunge: That the least point containing a non-space cell is ( 65000 64995 )
14:26:00 <AnMaster> efunge: That the least point containing a non-space cell is ( 65000 65000 )
14:26:06 <Deewiant> Well yes, that would appear to be the cause of the problem.
14:26:22 <AnMaster> Deewiant, so what causes that difference in least space cell I wonder
14:26:38 <AnMaster> it seems that slowdown decides on different positions for the upper corner to me?
14:26:52 <Deewiant> That slowdown has been hard-coded to use 65000,65000
14:27:13 <AnMaster> Deewiant, well then, so what we are looking at is what is going on at (65000,64995) then?
14:28:45 <AnMaster> Deewiant, does it quit by @ or by q?
14:28:50 * AnMaster wonders where to set the breakpoint
14:35:30 <AnMaster> Deewiant, so manually setting fspace.boundsexact=false and running bounds shrinking fixes it
14:35:42 <AnMaster> so probably that flag isn't set when it should be
14:35:58 <AnMaster> now of course, figuring out when it should be set is a different issue
14:37:25 -!- Asztal has joined.
14:37:25 <AnMaster> Deewiant, are you sure there is never anything at the y coordinate 64995 ?
14:37:56 <Deewiant> I can't think of what might be there but I can't remember the full details of how slowdown works
14:38:56 * AnMaster tries break fungespace_set if position.y=64995
14:39:22 <AnMaster> which dumped me right into gdb
14:39:51 <AnMaster> considering nothing has yet been printed on stdio
14:40:00 <AnMaster> Deewiant, any clue as to what that might be?
14:40:02 <Deewiant> slowdown doesn't print anything to stdio
14:40:11 <ais523> doesn't mycology write to (-5,-5)?
14:40:18 <AnMaster> Deewiant, well then it is before or very very early on in mycology
14:40:29 <ais523> AnMaster: take stdio buffering into account
14:40:32 <Deewiant> ais523: No, to (-3,-2); and this one doesn't since it goes straight to the y test
14:40:47 <Deewiant> AnMaster: This Mycology does only the y test
14:40:55 <AnMaster> ais523, yes but since it is line buffered it must be quite early on still I guess
14:41:05 <Deewiant> It starts out by running y and saying "y claims all of the following"
14:41:22 <Deewiant> If it's a p before the y it's from slowdown
14:41:39 <AnMaster> Deewiant, trying to remember what variable it was in
14:41:56 <AnMaster> $4 = {stack = 0x247d420, position = {x = 14, y = 1}, delta = {x = 1, y = 0}, storageOffset = {x = 0, y = 0}, mode = 0 '\0', needMove = true, stringLastWasSpace = false,
14:41:56 <AnMaster> fingerSUBRisRelative = false, ID = 0, stackstack = 0x247d400, fingerOpcodes = {{size = 0, top = 0, entries = 0x0} <repeats 26 times>}, fingerHRTItimestamp = 0x0}
14:42:40 <Deewiant> AnMaster: storageOffset = 0,0 and that bit is "044p"...
14:43:31 <AnMaster> and down another frame where they are added together
14:44:00 <AnMaster> the call is: fungespace_set(value, vector_create_ref(position->x + offset->x, position->y + offset->y));
14:44:10 <AnMaster> to me this looks almost like a compiler bug
14:44:19 <ais523> AnMaster: are any of the variables in question changed inside the functions themselves?
14:44:25 <AnMaster> or vector_create_ref messing up?!
14:44:56 <AnMaster> #define vector_create_ref(a, b) (& (funge_vector) { .x = (a), .y = (b) })
14:45:04 <AnMaster> well, *I* can't see anything wrong with that
14:45:26 <AnMaster> maybe gdb is messing up somehow?
14:45:29 <Deewiant> It's worth seeing whether it's just GCC failing at compound literal codegen
14:45:37 -!- oerjan has joined.
14:45:47 <AnMaster> Deewiant, well, it is odd that it hasn't showed up before this then
14:46:39 <AnMaster> well, build with icc gives same results
14:46:58 <AnMaster> Deewiant, not running under gdb
14:47:30 * AnMaster tries to remember how to get icc to generate a usable-with-gdb binary
14:49:13 <AnMaster> Deewiant, hrrm I can't get any values for that condition to break with icc
14:49:19 <AnMaster> not even the supposed correct value
14:49:29 <oerjan> <ais523> by typoing control-Q rather than control-W <-- heh synchronicity, i just today read this link on reddit: http://www.codinghorror.com/blog/2010/03/the-opposite-of-fitts-law.html
14:50:07 <ais523> AnMaster: maybe there isn't enough debug info to tell where to break
14:50:10 <oerjan> and that example was mentioned in one of the comments (either on the blog or reddit)
14:50:27 <AnMaster> ais523, well gdb usually complains instead of happily reporting that the breakpoint was set in that case
14:50:35 <AnMaster> I suspect inlining behind my back
14:50:51 <Deewiant> Compile without optimizations?
14:51:11 <oerjan> also the thing i previously mentioned about simon tatham puzzles's q command fits right in :(
14:51:20 <fizzie> Incidentally, how does a compound literal like that work, memory-wise? Apparently you can take the address of it, but how long does it live?
14:51:24 <Deewiant> Seems strange that it'd inline in that case...
14:51:51 <AnMaster> oops. gdb errored on that break
14:52:06 <AnMaster> Die: DW_TAG_restrict_type (abbrev = 12, offset = 37969)
14:52:06 <AnMaster> DW_AT_type (DW_FORM_ref4) constant ref: 37963 (adjusted)
14:52:06 <AnMaster> Dwarf Error: Cannot find type of die [in module /home/arvid/src/own/cfunge/trunk/build_clang/cfunge]
14:52:29 <AnMaster> whatever "die" is. I don't remember any such function
14:52:48 <Deewiant> die is the Debugging Information Entry
14:53:28 <fizzie> Ah, automatic storage duration with the enclosing block.
14:53:35 <AnMaster> fizzie, well since it is never returned it should be fine
14:53:46 <AnMaster> it is used as an argument in a function call
14:54:37 <fizzie> AnMaster: Yes, that sounds safe enough. But just "never returned" is not good enough; you can't use it even in the same function if you go outside the block it was in.
14:54:42 <AnMaster> anyway it seems like gdb messes it up
14:55:05 <AnMaster> since if continuing after that break it breaks a lot more, but after that the program just ends up printing garbage
14:55:22 <fizzie> Something like "foo *p; if (cond) { p = vector_create_ref(...); } else { p = vector_create_ref(...); } func(p);" would be unsafe, as far as I can tell.
14:55:39 <AnMaster> but that isn't how it is used there (or anywhere else that I know of)
14:55:59 <Deewiant> fizzie: All the more reason to use ?: instead of if-else
14:55:59 <AnMaster> do gdb ends up changing something it seems
14:57:02 <AnMaster> wrong syntax to gdb's break if
14:57:26 <AnMaster> ah now we found a true one I think
14:58:00 <AnMaster> $2 = {stack = 0x18e7420, position = {x = 6, y = 35}, delta = {x = 0, y = 1}, storageOffset = {x = 65000, y = 65000},
14:58:07 <AnMaster> Deewiant, does that make any sense for it?
14:58:30 <AnMaster> the arguments to p was {x = -5, y = -5}
14:58:41 <AnMaster> Deewiant, why are you writing something there
14:59:26 <Deewiant> I think it counts the number of cells to p, to give the correct argument to k.
14:59:45 <AnMaster> Deewiant, at {x = 25, y = 37} it writes an 1 to the same place btw
15:00:00 <Deewiant> And thereafter a 2, and then a 3, all the way to 152100, yes. :-P
15:00:11 <Deewiant> But then it's spaced in the kp.
15:00:22 <Deewiant> If you break at 65067,65000 you'll see it's blank.
15:01:58 <AnMaster> Deewiant, it writes a space much earlier than that
15:02:10 <AnMaster> ip is at (25,37) when it first writes a space there
15:02:37 <AnMaster> that is probably counting still
15:03:04 <AnMaster> Deewiant, it is in fact a space when it puts the value 32 there :P
15:03:34 <Deewiant> Well, it's a nonspace after 33 until the kp. :-P
15:04:35 <AnMaster> Deewiant, did you say "65067,65000"?
15:04:48 <Deewiant> 2010-03-25 15:59:58 ( Deewiant) If you break at 65067,65000
15:04:52 <AnMaster> when ip is at {x = 64998, y = 65000} it writes a space there
15:05:20 <AnMaster> so what's with the "65067" then?
15:05:32 <Deewiant> 65067,65000 is the first non-marker to be executed after the kp.
15:05:43 <oklopol> sometimes i wonder if AnMaster is ircing with telnet or something
15:05:59 <oklopol> (AnMaster: Deewiant, did you say "65067,65000"?)
15:08:22 -!- Tritonio_GR has joined.
15:09:44 <AnMaster> Deewiant, is this 64995,64995 the first thing that k clears or something?
15:10:01 <AnMaster> I wonder if making it the last thing would make a difference to the bug
15:10:13 <AnMaster> would be really interested in knowing that.
15:11:00 * Deewiant prints out a 456325-cell stack
15:12:11 <Deewiant> AnMaster: It's not the first, it's around the tenth or so
15:13:16 <Deewiant> It clears (0,-1), (0,-2), (0,-3), (-1,-1), (-2,-2), (-3,-3), (-4,-4), (-5,-5), and then the original source.
15:13:27 <Deewiant> (Apply the storage offset yourself.)
15:13:45 -!- adu has quit (Quit: adu).
15:15:51 <AnMaster> so well the minimisation function does something wrong when called once
15:15:57 <AnMaster> but if called again "fixes" it
15:17:17 <ais523> AnMaster: what algorithm are you using to find bounds?
15:17:40 <AnMaster> ais523, well that is the thing. It uses a simple heuristics to select algorithm
15:18:39 <AnMaster> for "small" current bounds it uses a "shrink bounds towards the middle" algorithm based on the row/col value count info
15:18:56 <AnMaster> but for very large bounds it seems likely that most of it is sparse
15:19:05 <AnMaster> so thus it enumerates the values in the hash table
15:19:13 <AnMaster> and it seems like the bug is in the large model
15:20:36 <ais523> hmm, this has got me wondering if there's a general O(1) algo for bounds update
15:20:47 <ais523> that is, O(1) both on unblanking cells, and on blanking them
15:20:58 <AnMaster> and the reason the x bound is right
15:21:04 <AnMaster> is that it uses the small model at that point
15:21:20 <AnMaster> because the difference is _just_ in between the difference in this case
15:21:26 <AnMaster> topLeftCorner = {x = 0, y = 0}, bottomRightCorner = {x = 65180, y = 65539}
15:21:50 <ais523> actually, probably not, as that would likely lead to O(n) sorting
15:21:53 <Deewiant> AnMaster: I figured it was something like that; I minimized the point to (65000,65000) when trying to find something as small as possible
15:21:59 <ais523> you can do bounds update in O(log n), though
15:22:21 <ais523> in the number of cells that don't contain spaces
15:22:39 <Deewiant> AnMaster: efunge was annoyingly slow when it was 500 million ;-P
15:23:04 <ais523> AnMaster: in each cell, hold a pointer to the next cell and previous cell sorted vertically over horizontally, and horizontally over vertically
15:23:07 <AnMaster> Deewiant, I'm not sure why really. Maybe bignums aren't as efficient as they could be?
15:23:16 <AnMaster> but that doesn't really make sense here
15:23:27 <ais523> then, blanking a cell is O(1) (just remove the element from the linked lists)
15:23:36 <ais523> now, there only problem is finding the previous and next cell
15:23:43 <Deewiant> AnMaster: General slowness. slowdown runs 11 million ticks before getting to Mycology.
15:23:46 <AnMaster> ais523, how do you do random access of the cells?
15:23:52 <ais523> which, if you use something like a skiplist rather than linked list, is O(log n)
15:24:00 <ais523> and you do random access by looking at them in your hash table
15:24:01 <Deewiant> AnMaster: And this was before I had cut off around 400 lines from the mycology.b98.
15:24:10 <ais523> this is in addition to whatever mechanism you normally use for updates
15:24:18 <ais523> O(log n), but the constant factor is rather nastily large
15:24:25 <AnMaster> ais523, well okay, the storage requirement is non-trivial isn't it?
15:24:34 <Deewiant> It only quintuples the size of a cell :-)
15:24:39 <AnMaster> ais523, what I do is to keep a count of set values in each column and row
15:24:49 <ais523> AnMaster: I suggested that algo a while back, too
15:25:02 <ais523> but it's O(n) in the size of the area before bounds shrinking
15:25:22 <Deewiant> O(n) in size but O(log n) in memory
15:25:24 <ais523> because shrinking bounds means you need to check every count to see if it's 0 or not
15:25:58 <ais523> Deewiant: that algo's O(n) in both, as you need to store the arrays
15:26:12 <ais523> as in, the small algo for cfunge is O(n) in memory, O(n) in time
15:26:30 <Deewiant> Hmm, it is O(n) in the worst case, you're right.
15:26:33 <AnMaster> ais523, except outside the basic static area which is something like 1024x1024 unless I misremember
15:26:47 <Deewiant> I thought it was 512x1024, to fit Mycology ;-P
15:26:55 <AnMaster> Deewiant, maybe it was, I don't remember
15:27:37 <AnMaster> considering that it grows fairly rapidly in size due to the multiplication there you can't make it too big
15:28:57 <AnMaster> ais523, also the algorithm is fairly fast in practise.
15:29:21 <ais523> yes; I'm wondering what the theoretically best-in-the-limit-in-the-worst-case algo is
15:29:24 <AnMaster> faster than the large model in fact (profiled for a number of programs, not just mycology)
15:29:30 <ais523> rather than the one that's most practically useful
15:33:15 <ais523> ooh, instead of putting pointers in the cells, you could just record, for each row and column with a nonspace cell in, the next and previous row or column with a nonspace cell in
15:33:20 <ais523> nooga_: automated Befunge testsuite
15:33:28 <Deewiant> ais523: Store cells in a heap and you get it in O(1)?
15:33:54 <Deewiant> AnMaster: It helps, but you still have to calculate whether the row/column has spaces.
15:33:56 <ais523> Deewiant: no, not O(1), because you can't remove entries from a heap
15:34:17 <Deewiant> AnMaster: I mean, it's not a super-improvement. :-P
15:34:29 <AnMaster> Deewiant, what isn't compared to what?
15:34:51 <ais523> there probably is a way to make a heap with removable entries, though (maybe use a heap and hashtable together?)
15:34:53 <AnMaster> Deewiant, I was talking about the cause of the bug.
15:35:04 <Deewiant> AnMaster: Ah, I thought you were talking about what ais just said.
15:35:04 <AnMaster> now I have to figure out how to fix it
15:35:16 <Deewiant> ais523: You can pop from a heap.
15:35:25 <ais523> Deewiant: but not remove entries from inside the heap
15:35:28 <ais523> only if they're at the top
15:35:32 <Deewiant> ais523: Yes you can, it's just O(n). :-P
15:35:33 <oklopol> you can remove entries from a heap, just increase-key it up and then remove it?
15:35:38 <AnMaster> Deewiant, I *think* but I'm not quite sure yet that I just check if there is an entry in the hash table for that column, but not what value that entry has
15:35:45 <Deewiant> ais523: But the bounds calculation itself is O(1).
15:36:00 <Deewiant> oklopol: Assuming you have a pointer to it, yes.
15:36:02 <AnMaster> Deewiant, for normal funge space I drop the cell if I write a space, instead of storing a space
15:36:18 <AnMaster> but it seems I don't do the same thing for the bounds array when they hit 0
15:36:20 <ais523> so we now have an algo that's O(log n) in the number of times a row or column has had a value in it once and then removed again
15:36:40 <oklopol> also it's impossible to do that in O(1) with any heap iirc
15:37:11 <ais523> removing the top entry of a heap is O(log n), isn't it? or is it adding an entry that's O(log n)?
15:37:21 <ais523> one of them must be, or you could have an O(n) sort
15:37:23 -!- kar8nga has quit (Remote host closed the connection).
15:37:24 <oklopol> in a fibonacci heap only deletion is O(1)
15:37:28 <ais523> * O(n) comparison sort
15:37:44 <Deewiant> ais523: Amortized O(1) is possible.
15:37:44 <ais523> oklopol: I assumed you meant binary heap
15:37:59 <ais523> Deewiant: not for both operations
15:38:10 <oklopol> oh well in a binary heap only merge is O(n), and pretty much everything else is O(log n)
15:38:22 <ais523> both remove top, and add anywhere
15:39:47 <ais523> an operation that's O(log n) in the number of rows+columns every time you p a cell is not really optimal, though
15:39:51 <oklopol> it's actually really easy to make everything except remove top O(1), just put them in a stack or something... :P
15:40:08 <ais523> but having a fast remove top is what makes a heap a heap, IMO
15:40:38 -!- werdan7 has quit (Ping timeout: 608 seconds).
15:41:03 <oklopol> is it trivially easy/impossible to make addition O(log n) and remove top O(1)?
15:41:06 <ais523> hmm, you'd just use a type of heap with O(1) add, and O(log n) delete and delete top
15:41:10 <pineapple> ais523: why is it incorrect today?
15:41:30 <oklopol> if it was correct today, then it would be incorrect today by what it says, a contradiction
15:42:14 <ais523> oklopol: hmm, that's an interesting question
15:42:31 <ais523> O(1) remove top implies that it has to be stored in completely sorted order, in some sense
15:42:51 <ais523> you can easily do it O(log n) add, O(1) remove top /amortized/, by simply amortizing the remove onto the ad
15:44:20 <oklopol> well right, but isn't even binary heap amortized O(1) for everything except remove top, everything that's removed has to have been added at some point
15:44:30 <oklopol> oh well i guess you don't have to remove
15:45:00 <oklopol> because you, on the other hand, have to add before you can remove
15:45:11 <oklopol> but yeah i meant actual constant time
15:47:03 <AnMaster> Deewiant, might take a few minutes to be visible due to caching effects
15:47:35 <ais523> hmm, actually you can't
15:48:06 <ais523> no, I'm wrong, you can
15:48:23 <ais523> because adding to a tree of size n, and removing from a tree of size n, must mirror exactly, or have more adds
15:48:31 <ais523> what gets amortized onto what is weird, though
15:48:55 <Deewiant> AnMaster: Right, appears to work now.
15:49:23 <oklopol> well the thing is complexities of a data structure should be considered one big whole, it's just harder to express
15:50:04 -!- werdan7 has joined.
15:50:22 <oerjan> i think you could remove top O(1) exactly if you keep a linked list + a tree for addition
15:50:22 <ais523> e.g. in a fibonacci heap, if you add loads of elements then extract top once, it actually does an O(n) search for the top element
15:50:32 <ais523> oerjan: adding to a tree is O(log n)
15:50:34 <AnMaster> Deewiant, I might have time to do a release this week. Not sure
15:50:50 <AnMaster> if I don't, it is unlikely to happen for several weeks
15:50:53 <ais523> but that O(n) is amortized onto all the adds you did, and the deletes are O(log n) after that
15:50:57 <oerjan> ais523: yes, but don't modify the tree when removing
15:51:09 <AnMaster> Deewiant, but I'll wait until the weekend at least, in case you find more bugs
15:51:32 <AnMaster> Deewiant, as for efunge being slow. Have you tried with HiPE?
15:51:38 <oerjan> wait with that until you add something else
15:51:38 <ais523> oerjan: then extract top is O(n) in the number of previous extracts
15:51:54 <oerjan> ais523: no, because you _keep_ a linked list
15:52:03 <AnMaster> Deewiant, first check erlang is compiled with hipe
15:52:16 <oerjan> i said keep a linked list + a tree, modify only list on removal
15:52:24 <ais523> oh, the idea is that you add elements to the tree, and it's a tree of pointers to the linked list
15:52:47 <ais523> so adding is O(log n) to both add to the tree, and find where in the list to add it, and O(1) to add to the linked list in the appropriate place
15:52:56 <AnMaster> Deewiant, yes it is hipe enabled
15:53:02 <AnMaster> Deewiant, then see efunge README
15:53:22 <oklopol> why is it O(1) to add to the linked list?
15:53:30 <AnMaster> ERL_COMPILER_OPTIONS='[inline,native,{hipe,[o3]}]' make
15:53:41 <AnMaster> Deewiant, be sure to make clean first
15:53:46 <ais523> oklopol: because you have a pointer to where in the list you're adding it, and so can just update a constant number of next and prev pointers
15:53:55 <AnMaster> Deewiant, this might or might not help
15:54:04 <ais523> four for a doubly linked list, two for a singly linked list
15:54:08 <AnMaster> and at most it will do a small difference.
15:54:08 <oklopol> oh, well then doesn't the linked list work as a heap already?
15:54:13 <ais523> then one more to get the new tree element to point to the list
15:54:27 <ais523> oklopol: you need to look at the tree (which is presumably kept balanced and sorted) to know where in the list to add, though
15:54:50 <oklopol> this has gotten to the stage where i'd start making things precise.
15:55:02 <AnMaster> Deewiant, did it make any measurable difference?
15:55:24 <Deewiant> AnMaster: Around 50-70% improvement (if I remember the previous time correctly)
15:55:35 <AnMaster> that is a lot more than I expected
15:55:46 <oklopol> oh the tree is a search tree, right
15:55:47 <AnMaster> Deewiant, I expected around 10% improvement at *most*
15:56:02 <Deewiant> AnMaster: I might have built without any optimizations previously.
15:56:18 <AnMaster> Deewiant, well, probably, that is the default. Anyway on normal mycology it seems pretty fast to me
15:56:31 <Deewiant> Mycology is a very fast program to run.
15:56:36 <ais523> hmm, apparently Brodal queues have the same (non-amortized) performance as the amortized performance of Fibonnacci heaps
15:56:38 <AnMaster> of course cfunge is a lot faster at mycology
15:56:57 <AnMaster> Deewiant, yes it is nowdays. Before HRTI check was taking quite a lot of time. Did you change anything about how that was done?
15:57:04 <ais523> couldn't you just detect mycology and cat a model output?
15:57:15 <AnMaster> ais523, what would the point of that be?
15:57:35 <ais523> oklopol: you need to look at the tree (which is presumably kept balanced and sorted) to know where in the list to add, though
15:57:46 <ais523> *you could compare to a stored copy as you read it in
15:57:46 <AnMaster> Deewiant, would be version specific yes
15:57:50 <Deewiant> AnMaster: I don't think I've changed it recently but maybe I misremember
15:58:07 <ais523> note that that is a plausible typo, it only takes one keypress or touchpad knock to accidentally repeat a previous line rather than write a new one
15:58:15 <Deewiant> I changed it at some point, but I think that was to make it slower, not faster.
15:59:03 <ais523> AnMaster: you know how readline works, pressing up gives you a previous line?
15:59:11 <ais523> well, both the up arrow key press does
15:59:14 <ais523> and scrolling the mouse wheel
15:59:21 <ais523> and you can do a mouse-wheel-scroll by touching the touchpad
15:59:25 <AnMaster> ais523, here scrolling mouse wheel scrolls the terminal
15:59:40 <ais523> AnMaster: same here, but I'm not using a terminal
15:59:49 <AnMaster> ais523, well what program then?
16:00:13 <AnMaster> also iirc you can turn that scroll thing off for touchpad
16:00:17 -!- nooga has joined.
16:00:26 <ais523> AnMaster: I know, I turned it on deliberately
16:00:30 <ais523> not having a mouse, it's actually useful
16:00:56 <ais523> Konversation, and only if the cursor is over the message-typing box at the time
16:03:28 <ais523> why did you ask what client I was using rather than CTCP VERSIONing it?
16:03:28 -!- nooga_ has quit (Ping timeout: 258 seconds).
16:07:55 <Deewiant> AnMaster's client doesn't respond to VERSION
16:08:22 <AnMaster> Deewiant, correct. I have a *!*@* ignore on CTCP and DCC (apart from CTCP ACTION)
16:25:22 -!- nooga has quit (Ping timeout: 264 seconds).
16:34:08 -!- jcp has joined.
16:36:36 -!- charlls has joined.
16:43:31 -!- MigoMipo has joined.
17:05:11 -!- werdan7 has quit (Ping timeout: 622 seconds).
17:08:26 -!- Tritonio_GR has quit (Ping timeout: 258 seconds).
17:08:44 -!- BeholdMyGlory has joined.
17:17:46 -!- werdan7 has joined.
17:22:50 -!- coppro has quit (Ping timeout: 248 seconds).
17:28:58 -!- lereah_ has quit (Remote host closed the connection).
18:02:37 -!- tombom has joined.
18:15:59 -!- oerjan has quit (Quit: Good night).
18:25:35 -!- Tritonio_GR has joined.
18:26:04 -!- ais523 has quit (Remote host closed the connection).
18:34:22 <AnMaster> Deewiant, btw what was the cause of that bug in ccbi that you thought was a bug in cfunge and efunge?
18:35:56 <Deewiant> Basically the bounds were right the first time, but not thereafter (if they changed)
18:38:35 -!- Sgeo has quit (Read error: Connection reset by peer).
18:42:58 -!- Sgeo has joined.
18:49:58 -!- Slereah has quit (Ping timeout: 264 seconds).
18:56:13 -!- Slereah has joined.
19:01:55 -!- charlesq__ has joined.
19:01:59 -!- charlesq__ has quit (Read error: Connection reset by peer).
19:04:58 -!- charlls has quit (Ping timeout: 258 seconds).
19:12:04 -!- Tritonio_GR has quit (Quit: Leaving.).
19:13:41 -!- mibygl_ has joined.
19:13:55 <mibygl_> If you defunge something, it is defunct. If you befunge something, it is befunct.
19:24:17 <AnMaster> mibygl_, so you plan to make a language called defunge now?
19:25:40 * Sgeo growls at newscientist articles costing money
19:26:00 <Sgeo> Where else am I likely to find articles related to psychology stuff?
19:27:23 <AnMaster> Sgeo, why are you so angry over it costing money?
19:28:01 <Sgeo> Because I want free stuff
19:28:29 <Sgeo> At any rate, I don't feel like spending money just to do a simple homework assignment, just because I don't know where else to look
19:31:13 <Sgeo> I just want to find something online
19:31:28 <Sgeo> Some nice news article about the physical brain or about conditioning
19:32:12 <Sgeo> http://7thspace.com/headlines/339167/effects_of_local_anesthesia_of_the_cerebellum_on_classical_fear_conditioning_in_goldfish.html maybe
19:32:49 <AnMaster> Sgeo, universities generally have subscriptions for various stuff btw.
19:32:55 <AnMaster> so connecting from there might work
19:33:16 <AnMaster> same goes for some libraries to some stuff, not as common though
19:33:31 <mibygl_> My library has online stuff.
19:33:31 <AnMaster> oh and yeah, checking the books in the library would probably work
19:33:59 <Sgeo> How about I just use this article I found
19:34:05 <AnMaster> mibygl_, usually just encyclopedias and such accessible from the public computers in the library in my experience
19:34:33 <AnMaster> Sgeo, sure, but that isn't what the discussion is about any more
19:38:51 * Sgeo plays a bit of Robozzle
19:50:33 -!- kar8nga has joined.
19:56:42 -!- mibygl_ has quit (Ping timeout: 252 seconds).
20:37:21 -!- Azstal has joined.
20:39:14 -!- Asztal has quit (Ping timeout: 265 seconds).
20:39:28 -!- Azstal has changed nick to Asztal.
20:58:59 -!- Oranjer has joined.
21:00:55 -!- kar8nga has quit (Remote host closed the connection).
21:35:41 -!- Phantom_Hoover has joined.
21:37:15 <Phantom_Hoover> Re the wire-crossing problem, specifically the strong version on the wiki page, what effect does the TCness of Rule 110 have on this?
21:41:06 -!- Phantom_Hoover has quit (Quit: ChatZilla 0.9.86 [Firefox 3.5.8/20100214235838]).
21:41:07 <AnMaster> what is the wire crossing problem now again?
21:42:56 <Oranjer> could have been an accident
21:50:39 <AnMaster> hm what about the wire crossing problem in wireworld
21:51:37 * Sgeo remembers learning of wireworld from Mirek's Celebration
21:53:17 <Sgeo> ". Its a testament to our modesty that it was not until September 2004 that we wrote up our work."
21:54:46 * AnMaster fires up golly to try some out
21:59:53 <Sgeo> Someone should make a C compiler for the Wireworld computer
22:05:39 <AnMaster> Sgeo, near impossible considering how little memory it has
22:06:27 * AnMaster imagines wireworld but with induction as well
22:07:30 <lament> the wireworld computer looks so pretty
22:07:50 <lament> much nicer than the life turing machine
22:14:29 <Ilari> Was the strong version the one where memory is considered too (and the weak version was just for control logic)?
22:24:00 -!- Oranjer has left (?).
22:30:30 <AnMaster> but I guess someone in here should know
22:30:49 <AnMaster> I mean, I want to forward sound from one computer to another
22:30:57 <AnMaster> so all sound plays through one computer
22:31:21 * AnMaster looks at fizzie as the most likely person to know
22:32:57 <oklopol> lattices are too complicated
22:33:26 <oklopol> i've been doing this one exercise about them for like 6 hours
22:34:49 <AnMaster> oklopol, tell me, what are they. Simplify if needed
22:35:36 <AnMaster> I just want a "popular science" kind of view, nothing to detailed. Just enough to know what the heck they are roughly
22:35:42 <oklopol> posets where any two elements have a sup and an inf, that is, for all x, y \in L there's a z such that z >= x, z >= y, and for all w >= x, w >= y, w >= z
22:35:55 -!- Phantom_Hoover has joined.
22:36:03 <oklopol> well then they are these pretty things you can draaw
22:36:20 <AnMaster> oklopol, are they related to matrices in any ways?
22:36:37 <oklopol> where did you get that idea
22:37:20 <AnMaster> oklopol, anyway, what are their applications?
22:37:34 <oklopol> well they have all sorts of applications in universal algebra
22:38:00 <Phantom_Hoover> WP gives about five different definitions for mathematical lattices.
22:38:00 <AnMaster> oklopol, I have no clue what that is XD
22:38:25 <AnMaster> Phantom_Hoover, any of them halfway understandable to a non-mathematician?
22:38:51 <oklopol> the poset one was probably a bad choice, because AnMaster already knows boolean algebras, i think
22:38:54 <Phantom_Hoover> One of them is set theory, which you don't even do in any standard curriculum I know of until uni.
22:39:00 <oklopol> lattices are just boolean algebras without complement, 0 and 1
22:39:03 <AnMaster> oklopol, I know a bit about them, No expert
22:39:18 <oklopol> and they don't have to be distributive
22:39:25 <AnMaster> oklopol, boolean without true, false or complement?
22:39:43 <oklopol> yeah, lattices are like boolean algebras but more general
22:40:20 <oklopol> i've only seen algebras in serious contexts
22:42:35 <Phantom_Hoover> So, wait, are we talking about the set theory lattices, the vectory ones or the graphy ones?
22:47:14 <oklopol> the algebra called lattice.
22:49:42 <oklopol> the "type of partially ordered set"
22:51:22 <oklopol> i'm supposed to prove congruence lattices of lattices are distributive
22:52:42 <oklopol> which i imagine would follow quite easily if i understood what actually happens when we make a congruence where a = b in a lattice
22:57:50 <Deewiant> AnMaster: More cfunge bugs! Either o or i, don't know which. http://tar.us.to:12345/mycology.b98
22:58:18 <Deewiant> AnMaster: Also, efunge apparently doesn't like q with a negative value; might not be a bug.
22:58:37 <Deewiant> Phantom_Hoover: Funge ~= fungus
22:58:56 <Deewiant> Wasn't my idea, there was a test suite called "Fungus" before this.
23:00:50 <oklopol> i love it how a question that's taken me ~3 hours is between two questions that follow from the definitions so directly i can't really come up with anything to write down except "A because B, B because A"
23:01:35 <oklopol> or maybe more like "clearly A => B, clearly B => A"
23:01:55 <Ilari> What's the difficult one?
23:02:17 <oklopol> "congruence lattices of lattices are distributive" is the one that's taken me 6 hours
23:02:32 <oklopol> the 3 hour one is about lattices too, but i'm afraid you might directly see the solution to that
23:02:42 <oklopol> which would be embarrassing
23:02:56 <oklopol> i hope the distributivity one sounds complicated enough that no one looks into it
23:03:31 <oklopol> a lattice is distributive if a ^ (b v c) = (a ^ b) v (a ^ c), and same for ^ and v reversed
23:03:47 <oklopol> (for all elements a, b, c in the lattice)
23:04:40 <oklopol> a congruence ~ is an equivalence relation of algebra A s.t. if f is an n-ary operation of A, and a_1 ~ b_1, ..., a_n ~ b_n, then f(a_1, ..., a_n) ~ f(b_1, ..., b_n)
23:05:06 -!- coppro has joined.
23:05:13 <oklopol> an equivalence relation on the algebra's elements that's compatible with the algebra's operations
23:06:08 <coppro> I had a crazy idea today
23:06:20 <coppro> What if types aren't distinct entities?
23:08:46 <coppro> in other words, a value can possess multiple types at once
23:08:46 <oklopol> the congruence lattice is formed by taking all the congruences of a lattice, and having the lattice operations be (~_1) ^ (~_2) = (~_1) \cap (~_2) and (~_1) v (~_2) = (~) such that { x ~ y | iff there's a sequence of elements a_1, ..., a_n in L such that x ~_1 a_1 ~_2 a_2 ~_1 a_3 ~_2 ... ~_1 y}
23:09:05 <coppro> its actual type would be the union of all its "datapacks", which is what I've named then
23:09:19 <oklopol> where \cap is done on the set representation of the congruences, {(a, b) | a ~ b}
23:09:57 <oklopol> the actual problem is probably easier than following this explanation
23:10:56 -!- MigoMipo has quit (Remote host closed the connection).
23:12:08 <Phantom_Hoover> Even having proper formatting would do a world of good.
23:14:10 <oklopol> *all the congruences of an algebra
23:14:26 -!- kar8nga has joined.
23:14:38 <oklopol> clearly {x ~ y | iff there's a sequence of elements a_1, ..., a_n in L such that x ~_1 a_1 ~_2 a_2 ~_1 a_3 ~_2 ... ~_1 y} is a congruence
23:16:08 <Ilari> One of my ideas is for language that doesn't have named variables, only indirection operator as interface to memory.
23:16:57 <Phantom_Hoover> oklopol: Are you trying to get help on your maths (homework|assignment|.*) on an esoteric language board?
23:17:37 <oklopol> no not really, just chatting because i'm getting frustrated with the problems
23:17:49 <oklopol> and i can only chat about the problems because after a day of doing them nothing else seems important
23:18:03 <Gregor> Ilari: So, the Lambda calculus with DeBruin indices.
23:18:25 <Ilari> If number type is bignum, then that would be TC given sufficient set of other operations (but it isn't TC with bounded numbers, unless there is another kind of memory).
23:18:29 <oklopol> it's not exactly the kind of problem you can ask help for if people don't know what lattices are
23:18:36 <oklopol> because it's a very hard problem even if you do
23:20:13 -!- Tritonio_GR has joined.
23:20:52 <oklopol> Phantom_Hoover: but i occasionally do ask for help here because #math is full of maggots and i don't know any alternatives to irc
23:21:46 -!- BeholdMyGlory has quit (Read error: Connection reset by peer).
23:22:44 <oklopol> it's a rather hostile place from time to time
23:23:36 <coppro> example idea for my language: there would be a Nil datapack with no contents, and a value could be expressed as either Nil or an Int by {Nil~Int} (or, equivalently, {Int~Nil}, ~ being XOR
23:23:37 <oklopol> mostly because most people who ask questions there are fucking retarded
23:24:42 <oklopol> but also because the people who answer questions there are fucking retarded
23:24:49 <coppro> Phantom_Hoover: Int just means Int, which must have a value
23:25:02 <coppro> {Nil~Int} means "either Nil or Int, but not both"
23:25:22 <coppro> ideally, it would have type inference so you'd never have to write that out
23:26:22 <Ilari> Weakly typed languages can put any value into any variable. How that's different?
23:27:04 <oklopol> ...okay about the problem that's taken me 3 hours now, i just read the next page of the book and there's a relevant theorem which i'd forgotten about
23:27:15 <coppro> Ilari: this is strongly typed
23:27:36 <coppro> Ilari: And some datapacks would require the presence of others, effectively creating inheritance
23:27:55 <oklopol> our high school universal algebra course didn't do lattices.
23:28:45 <AnMaster> <Deewiant> AnMaster: More cfunge bugs! Either o or i, don't know which. http://tar.us.to:12345/mycology.b98
23:29:05 <Deewiant> It quits right after the relevant output.
23:29:38 <AnMaster> Deewiant, why can't you just explain what in the file is wrong
23:29:53 <Deewiant> cfunge says BAD, efunge and ccbi don't -> not my problem.
23:30:02 -!- tombom has quit (Quit: Leaving).
23:30:15 <AnMaster> there was a newline at the top
23:30:22 <Deewiant> There should be an A there to start with.
23:30:38 <AnMaster> Deewiant, where does the A come from?
23:30:46 <oklopol> what if it turns out befunge is just a big waste of you people's time?
23:30:50 <Deewiant> You can see the area being printed if you grep for "|A |"
23:30:55 <oklopol> and it never gets you a job or anything
23:31:02 <Deewiant> oklopol: I'd be surprised if it turns out it isn't
23:31:11 <Deewiant> It may've already got me a job or three
23:31:26 <Deewiant> Who knows if it really made a difference, but it did come up in the interview.
23:31:32 <AnMaster> Deewiant, so where does the C come from?
23:32:16 <Deewiant> ASCII too advanced for you? :-P
23:32:21 <Deewiant> The N gets overwritten with a newline
23:32:39 <AnMaster> Deewiant, should there be a space after the B?
23:32:52 <Deewiant> Well, er, depends on what you mean
23:33:00 <Deewiant> That's UNDEF and noted in the output
23:33:09 <AnMaster> Deewiant, I can make a good case for it both being stripped and for it staying there
23:33:19 <Deewiant> That's UNDEF and noted in the output
23:33:40 <Deewiant> I was considering requiring stripping but I got lazy.
23:33:45 <AnMaster> Deewiant, also something is fishy with the y test:
23:33:50 <AnMaster> That the greatest point, relative to that point, is ( 183 177 )
23:33:51 <AnMaster> BAD: should have been ( 183 911 )
23:34:01 <AnMaster> that seems improbably to be a cfunge bug
23:34:15 <Deewiant> Surprise! If I give only the first 200 lines of Mycology the y test complains that it doesn't have all of it
23:34:40 <AnMaster> Deewiant, however since you told me before one should fix the first bug first I really should fix it first ;P
23:34:55 <Deewiant> Go ahead, fill the file with nonsense if you want :-P
23:35:22 <AnMaster> asdjfILHGWAIUhpwoaiuehföaokshf sfasdga asgf8395ansjsahflkajhelkfhsTo be an infinite number of apes or not to befjahslkjr2a
23:35:36 <Deewiant> That works too, just don't go over 180 columns.
23:36:10 <AnMaster> Deewiant, what is "A\nB[ ]\nC[\n]" used for?
23:37:05 <AnMaster> Deewiant, interesting ><>p on the line below it
23:37:22 <AnMaster> do you test t there or something
23:37:25 <Deewiant> It's part of the concurrency testing.
23:38:31 <AnMaster> Deewiant, think a hot water radiator
23:38:57 <AnMaster> Deewiant, what was the <<<<<< bit then?
23:39:22 <Deewiant> It's overkill error testing for ] with a noncardinal delta
23:39:36 <AnMaster> Deewiant, well you have it elsewhere too
23:39:43 <Deewiant> I reappropriated that block of code within it (which used to be all <<<<<<<<) for this stuff
23:39:58 <Deewiant> That's concurrency testing again.
23:40:10 <AnMaster> Deewiant, all around the file stuff?
23:40:50 <AnMaster> Deewiant, physically in the file the |A | thing is the line *after* it
23:40:53 <Deewiant> But because you made the annoying realization that o in text mode can be tested, I had to add that somewhere, so now it's a bit more confusing that way.
23:41:42 <AnMaster> you didn't *have* to test it though
23:42:05 -!- Phantom_Hoover has quit (Quit: ChatZilla 0.9.86 [Firefox 3.5.8/20100214235838]).
23:43:06 <fizzie> AnMaster: Network audio cross-platform seems to be a horrible mess; the ones I know about on Linux are JACK's rather kludgy-looking "netjack" thing, and Pulseaudio's (which is pretty popular) network server support. Oh, and ESD does audio-over-network, too, but I doubt that's used very much nowadays.
23:43:22 <fizzie> Pulse's networking might be the best bet if your system uses that already.
23:43:39 <AnMaster> Fungespace (105,148) to (109,150) follows:
23:44:15 <AnMaster> fizzie, I have pulseaudio on one system, plain ALSA with "jack when required" on the other
23:44:27 <Sgeo> Surely the memory can be increased
23:44:35 <Sgeo> Although architecture issues are probably significant
23:44:36 <AnMaster> fizzie, hm what about http://alsa.opensrc.org/index.php/Network
23:46:03 <Sgeo> after a while (depending on the speed of your computer, it could easily be half an hour)
23:46:09 <fizzie> AnMaster: Well, yes, alsa's pretty flexibly configurable too, it sounds reasonable that you could hack some arecord-netcat-aplay plumbing, but it does sound a bit messy.
23:46:19 <Sgeo> But then, that was written some time ago, presumably
23:46:31 * AnMaster tries to make sense of his code for text file mode
23:47:07 <AnMaster> ssize_t lastspace = (ssize_t)size->x; ????
23:47:20 <Deewiant> fizzie: output audio | ssh host dd of=/dev/dsp ;-)
23:47:31 <fizzie> AnMaster: I think JACK's netjack is at least somewhat latency-optimized, though obviously networking is horribly slow compared to anything else. Though I guess netcat's UDP mode is not such a horribly bad idea either.
23:47:50 <AnMaster> fizzie, would use it for games
23:48:03 <fizzie> Of course no authentication or any fancy negotiation there; if you have that "nc -u -l -p 8100 | aplay" running, it basically means that any UDP packets that come to that port come out of your speakers directly.
23:48:08 <AnMaster> as in, wesnoth or widelands or whatever
23:48:23 <AnMaster> fizzie, anyway I'm on a trusted lan basically
23:49:50 <AnMaster> huh what the heck did that logic do
23:49:55 <Ilari> Yes, that's for playback, but how you get apps to send the audio as UDP packets?
23:49:58 <fizzie> If you want it only now and then, I guess that "arecord to capture what would come out" + nc + aplay solution is not too bad. I wouldn't keep that thing running all the time.
23:50:26 <fizzie> Ilari: "arecord -t wav -f cd | nc -u server port" is what they used there.
23:50:31 -!- Oranjer has joined.
23:50:34 <AnMaster> okay I think that test is broken
23:51:01 <AnMaster> Deewiant, so I know the cause of the bug, but I have absolutely no clue how to fix it yet
23:51:20 <fizzie> Ilari: (You just need to set the capture source to "mixer" so that it captures what would go out locally.)
23:51:31 <AnMaster> Deewiant, one or several off by one errors in the code that strips spaces from the end of each line
23:51:52 <AnMaster> Deewiant, problem is that when I "fix" it, it breaks the logic elsewhere
23:52:14 <AnMaster> so I can atm get right for either multi-char lines or for single-char lines
23:52:55 <AnMaster> Deewiant, btw, doesn't the spec say there shouldn't be any EOL?
23:53:42 <AnMaster> Deewiant, should it strip empty lines? I don
23:54:09 <Deewiant> I'm willing to read that as "any extra EOLs"; it's a UNIX convention that newlines are line terminators, not line separators, after all.
23:54:24 <fizzie> I guess netcat's UDP mode will at least make small enough UDP packets that they are less than the MTU, so you won't get that much lag out of that particular bit; given 1500 or so bytes, that's just 375 samples (< 10 ms) of 44.1kHz 16-bit stereo. It's anyone's guess how much arecord will buffer before doing any write()s, of course.
23:54:30 <Deewiant> And no, it shouldn't strip empty lines.
23:55:11 <AnMaster> Deewiant, I think cfunge strips all of them, I don't know if efunge strips all
23:57:13 <fizzie> AnMaster: Well, you can push anything through that, of course. I was just calculating those numbers based on what they used ("-f cd").
23:58:42 <AnMaster> Deewiant, pushing fix, cache effects might apply
23:59:31 <Deewiant> AnMaster: Hang on, I think there might be an efunge bug here too (or CCBI)