00:08:05 this guy has abused a bit the concept of a 'one-liner': http://www.dustindiaz.com/basement/js/dom.js (beware the link crashes my Mozilla; it works fine in Firefox 1.5) 00:12:27 btw, that's part of the source of http://www.dustindiaz.com/basement/tetris.html 00:12:47 8-D 00:12:50 dHTML TETRIS! 00:12:56 That's better than http://www.codu.org/evilpong/ 00:15:59 I prefer XML Tetris. 00:16:25 http://www.codu.org/rxml.php 00:21:39 yay, rxml rox 00:23:19 xml tetris? 00:23:57 is that based in the turing-completeness (I think) of xslt? 00:25:14 Actually, it's nearly pure SVG. 00:25:15 Has a tiny bit of embedded Javascript. 00:25:33 crap crap 00:28:27 oh 00:29:09 * bsmntbombdood borked his keyboard 00:30:45 oh and btw there's a version with bgm: http://www.dustindiaz.com/basement/tetris-s.html 01:14:19 -!- wooby has quit. 01:16:52 -!- CakeProphet has joined. 01:29:51 Anyone recommend a good Lisp implementation... that's... easy to setup on Windows? 01:39:40 Sure. 01:39:50 Install a real OS, then use SBCL 01:40:03 Emacs. 01:40:22 Although realise that running Windows makes everything comparatively hard to setup. 01:40:46 I got a windows version of xemacs running in 30 seconds 01:41:41 I got a GNU/Linux version of Emacs running in 0 seconds. 01:41:49 yep 01:42:02 well...it takes like 2 seconds to start up 01:42:15 But it takes 0 seconds for me to install it. . . 01:42:19 Preinstalled. ;) 01:42:21 yeah 01:42:41 I can't believe an OS would ship without a decent text editor 02:11:29 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 03:00:08 emacs is not a good lisp implementation. 03:01:33 It is a good emacs lisp implementation 03:01:52 i'm not even sure of that. 03:02:06 It is *the* Emacs Lisp implementation. 03:02:25 so? 03:24:37 * SimonRC goes to bed. 04:02:41 -!- GreaseMonkey has joined. 04:03:04 * pikhq takes a guess that GreaseMonkey likes Greasemonkey 04:05:59 * GreaseMonkey takes a guss that pikhq is correct 04:07:05 Connection error: Monkey too Greasy 04:07:19 yep <:D 04:10:35 * pikhq makes out with BFM 04:11:37 kinky 04:13:07 And incestous. 05:08:10 -!- GregorR-L has joined. 05:10:35 -!- calamari has quit (Remote closed the connection). 05:10:59 -!- calamari has joined. 05:11:08 hi 05:11:29 nonwrapping bf.. 5 - 12 = ? 05:12:03 5-12=-7 05:12:22 so one cell to store the sign ? 05:13:10 No, in nonwrapping BF, the cell is signed and either bound-checked or bignum. 05:13:36 Could be either *shrugs* 05:15:22 I always assumed a nonwrapping program would work in a wrapping interp.. guess that isn't always the case 05:16:23 In a wrapping interp, 5-12=-7==248. 05:17:04 248 / 2 = 124 -7/2 = 3 05:17:09 err -3 05:19:27 It's the whole "mod 255" thing that's mildly confusing. . . 05:21:30 Any ideas on how to best mutilate Windows? 05:21:54 Sgeo: I have some word documents you could open.. and some special multimedia files for your enjoyment 05:22:14 Now... how to get them from Host to Guest :/ 05:23:22 GregorR: what assumptions does your c compiler make about cells? 05:23:29 calamari, Win98 is running under VMware 05:23:36 ahh 05:23:55 Sgeo: format C: 05:23:56 here's something fun you can do 05:24:03 pikhq, I tried that 05:24:06 run debug 05:24:13 pikhq, it wouldn't let me 05:24:14 then enter this program: 05:24:19 a 05:24:23 cli 05:24:28 jmp 101 05:24:30 g 05:26:20 Sgeo: how'd it go? 05:26:38 I just got "^ Error" 05:26:51 where 05:26:56 on the g ? 05:26:59 Yes 05:27:08 sorry you need to push enter again after jmp 101 05:27:18 So it's 05:27:20 a 05:27:21 cli 05:27:24 jmp 101 05:27:26 05:27:26 g 05:27:27 ? 05:27:28 yes 05:27:36 but you're still okay 05:27:37 Should I close and restart debug? 05:27:42 you can just push enter 05:27:48 then g 05:28:25 The cursor just sort of... froze.. 05:28:30 yeah :) 05:28:44 windows is probably gone 05:28:57 (frozen) 05:29:05 Something that left it in a pseudousable state would have been preferable.. 05:29:08 (more fun) 05:29:26 I think it is cool how easy it is to screw up the multitasking in win98 05:29:43 What does that debug thing do anyway? 05:30:05 first it disables maskable interrupts 05:30:06 calamari: Win98 doesn't really multitask. 05:30:13 then it enters a very tight loop 05:30:18 It just imitates it for the user. 05:30:18 :p 05:30:23 pikhq: yeah it does.. p[reemptive too 05:30:44 Well, it isn't exactly good multitasking if one can preempt the preempting. 05:31:02 Night allk 05:31:06 pikhq: I didn't say it was good.. just saying it does do multitasking 05:31:24 I call that merely an imitation of multitasking. ;) 05:32:10 * Sgeo is confused 05:32:12 Night all 05:32:23 I call that an imitation of an argument :) 05:32:28 cya sgeo 05:32:34 As do I. ;) 05:32:41 -!- Sgeo has quit (Remote closed the connection). 05:33:53 -!- GregorR-L has quit ("Leaving"). 06:06:16 -!- calamari has quit ("Leaving"). 06:11:23 -!- GreaseMonkey has quit ("Connection error 130 (Monkey too greasy)"). 07:13:51 -!- pikhq has quit (Read error: 60 (Operation timed out)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 10:12:42 -!- tgwizard has joined. 10:19:18 -!- ivan` has joined. 12:41:49 -!- jix_ has joined. 14:19:12 -!- jix__ has joined. 14:35:28 -!- jix_ has quit (Read error: 110 (Connection timed out)). 14:55:11 -!- ivan` has quit (" HydraIRC -> http://www.hydrairc.com <-"). 15:08:22 -!- Sgeo has joined. 15:52:02 -!- kipple_ has joined. 16:22:55 -!- oerjan has joined. 18:18:56 -!- CakeProphet has quit ("haaaaaaaaaa"). 18:37:54 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 19:23:07 -!- jix_ has joined. 20:05:28 Most fun way to fubar Win98? 20:16:45 -!- EgoBot has joined. 20:31:17 Sgeo: F00F bug? 20:31:44 No clue what that is 20:32:18 it makes your computer go up in smoke *F00F* 20:34:18 Would it be impolite of me to shorten the Deadfish interpreter? 20:35:58 Wait a minute... 20:36:51 It _really_ does not read any commands 20:39:51 OK if I am to believe the example then the interpreter is buggy rather than intentional 20:43:55 -!- GregorR has quit (Read error: 104 (Connection reset by peer)). 20:44:32 http://216.239.59.104/search?q=cache:4DSsRj2iMo4J:www.x86.org/errata/dec97/f00fbug.htm+f00f+bug&hl=en&gl=uk&ct=clnk&cd=1 20:44:59 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)). 20:49:20 Gah. I can't believe I forgot what scanf does. 20:51:59 printf except backwards 20:52:47 But it doesn't discard the rest of the line, does it? 20:53:21 scanf(3) 20:53:42 I am already reading it. 20:58:02 -!- GregorR has joined. 21:01:26 Meh. It's hard to forget C. 21:02:04 Easy to forget clib functions 21:02:25 scanf? 21:02:38 ? 21:02:49 My brain confused it with sscanf I think. 21:02:58 Aha. 21:03:13 woot C has continuations 21:03:15 So somehow I got the idea the program never read input. 21:03:36 Continuations? call/cc style? 21:03:40 yeah 21:03:41 Since when? 21:03:48 How? 21:03:48 since never 21:04:11 i assume he's talking about setjmp/longjmp? 21:04:21 setcontext(2) 21:04:54 Switching between multiple threads of control within a process. 21:05:33 swapcontext(3) 21:05:34 Oh. Hmm... 21:05:39 oh, huh, that does look like continuations 21:05:46 Yeah, it does. 21:05:54 :) 21:05:58 Who knew. 21:07:07 damn, right after I discover this, I have to do homework 21:07:52 That's probably what all the Scheme interpreters use to implement call/cc. 21:08:32 I think that Scheme terps actually use call/cc to implement call/cc. 21:08:41 Razor-X: except for the overwhelming majority that are written in Scheme 21:09:02 Well... I'm thinking Gambit/Stalin/Chicken. 21:09:13 You can add it to a graph-reduction-based interpreter without too much trouble, I suspect. 21:10:10 Maybe the C-based ones have an explicit (spaghetti) stack rather than an implicit one, whereupon call/cc become easier. 21:10:27 hum, my linux box has swapcontext, but not my bsd box 21:11:22 Always read the CONFORMING TO section. 21:12:21 SUSv2, POSIX 1003.1-2001. 21:16:15 methough bsd was posix complient 21:16:33 I don't know what revision *shrugs* 22:18:08 -!- calamari has joined. 22:18:38 hi 22:19:23 * calamari has an idea .. :) 22:19:47 * oerjan prepares to shoot calamari 22:19:51 * bsmntbombdood waits 22:20:06 I want to see if I can convert labels and gotos into if's, while's, etc 22:20:44 the idea would be to break down a complex program (using gotos, while, if, break, etc) into just gotos, then reconstruct it again 22:20:56 this would be handy for break/continue removal 22:21:13 if,whiles are implemented with gotos 22:21:28 bsmntbombdood: yes, I know 22:21:39 calamari: It is possible, but you may need to introduce some temporary variables. 22:22:02 SimonRC: yeah.. the hard part at least for my brain is building some kind of tree or such 22:22:17 well, you just need one variable, to save the next label 22:22:23 then I can figure out where the loops are 22:22:24 OTOH, BFBASIC manages to handle arbitrary gotos with just while loops. 22:22:26 -!- CakeProphet has joined. 22:22:39 SimonRC: yeah it does.. but I cheated and used labels and gotos 22:22:57 SimonRC: I'm trying to avoid that and hopefully produce more efficient code 22:23:23 with the goal of making it easier to translate a language such as spaghetti or linguine into bf 22:23:30 and then a giant case statement in a while (1) 22:23:43 oerjan: that's eseentially what I do with bfbasic 22:23:50 the case statement is then easily turned into nested if then else 22:24:47 and it's kinda slow :) 22:25:11 would be better to unravel the goto's, even if it means duplication of code blocks 22:25:13 I think the tricky one is 10 FOO; 20 BAR; 30 MAYBE GOTO 10; 40 MAYBE GOTO 20; 22:26:34 * SimonRC spots that a "do{}while()" is just a backward jump and an "unless(){}" is just a forward one. 22:26:39 hmm 22:27:52 SimonRC: okay I've decomposed that tricky loop 22:28:28 how? 22:28:31 not sure how to write it in here tho.. let me try 22:28:39 ABCDE 22:28:54 B-C goes to A 22:28:57 -!- jix_ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:29:10 D-E goes to B .. that's the original 22:29:29 do you follow the notation for the original program? 22:30:06 A,B,C,D,E are blocks of code 22:30:06 rather difficult to match 5 letters with 4 statements 22:30:17 huh? 22:30:28 like I said.. hard to write in irc 22:30:30 hehe 22:30:39 let me translate it into basic like you did 22:31:36 i think possibly you are dealing with the wire-crossing problem 22:32:02 no I'm dealing with a text interface problem 22:32:13 as in, just if and while cannot build flowcharts with crossing wires without extra temporary variables 22:32:23 who said anything about that 22:32:31 I was just saying I was able to unravel it 22:32:57 if anyone wants to say it is impossible then prepare to own up to it hehe 22:33:36 let me draw a little diagram and post it 22:34:08 I will boldly assert that it is impossible to translate my code into plain loops and ifs without either duplicating code or creating superfluous temporary variables. 22:34:20 actually that example does not really have wire-crossing 22:34:46 SimonRC: right.. if you duplicate code 22:34:54 that's what I intend to do 22:34:56 oerjan: it does if you require that all the points are on the x-axis and all wires must only go through the upper half-plane 22:35:04 if you duplicate part of the coee, it is easily unraveled 22:35:25 right, that makes sense 22:35:33 that's what I was just drawing up 22:35:49 guess I don't need to now hehe 22:35:58 -!- ihope has joined. 22:36:01 11.1265006 milligrams. 22:36:16 of crack 22:36:24 argh, a drive-by chemist! 22:36:35 heh 22:37:08 * SimonRC goes for pizza, and then to bed, most likely. 22:37:28 i think it is possible to make code which cannot be unraveled simply with duplication 22:38:21 that's easy.. a break statement 22:39:22 hmm maybe that can be unraveled as well 22:39:27 need to map these out 22:39:58 anyhow, I think I'm on to something... translate into gotos, then recompose for the target language 22:40:19 should be more efficient than the huge switch statement hack 22:44:23 this is essentially a finite state machine problem 22:44:57 oerjan: cool 22:45:07 can every FSA be implemented with just while and case (getc()) statements? 22:45:25 well, bf implements everything with just while 22:45:41 i am still talking about avoiding temporary variables 22:45:45 -!- kipple_ has quit (Read error: 131 (Connection reset by peer)). 22:45:45 oic 22:45:59 so if you had a bf with one cell 22:46:28 Every FSA can be implemented using only goto. 22:46:33 right 22:46:44 * oerjan bops ihope on the head 22:46:50 if and goto 22:46:53 we are discussing _removing_ gotos 22:46:58 -!- kipple_ has joined. 22:47:00 Oh. 22:47:44 ihope: my idea is to decompose a program into goto's and labels then rebuild it for a target language 22:48:03 -!- kipple_ has quit (Client Quit). 22:48:18 intriguing 22:48:41 this looks like a job for an esoteric BASIC coder! 22:48:43 the first step is to unravel weird goto loops into traditional structured code 22:48:47 hehe 22:48:49 * RodgerTheGreat runs for his cape and cowl 22:51:52 yeah, I can see how conditional jumps could become tricky to unravel. 22:52:18 the tough part is seperating gotos that are branches from gotos that form loops 22:53:03 for one thing, while loops always have just two exits 22:53:20 graphically speaking 22:53:30 some loops can be directly unfolded, but others are integral to the functioning of the program- the main loop, at least 22:53:37 yeah 22:54:32 blah I think I made a mistake in SimonRC's problem above 22:54:49 the code duplication doesn't seem to be working for that one 22:54:57 hm 22:55:41 is the goal to create space-efficient code or speed-efficient code, or either? 22:56:09 speed efficient 22:56:14 ah 22:56:41 ahh got it finally 22:57:13 the problem was that I was trying to keep the d-while.. needed to convert it to a plain while 22:57:34 ok based on the limit to two exits for a while loop, here is a test case: 22:57:54 4 statements, each of which can branch to any of the others 22:58:08 cool :) this is helpful stuff 23:00:09 * calamari waits for the code 23:00:28 oh i thought it was obvious what i meant 23:00:35 no 23:01:25 10 MAYBE GOTO 30 OR 40 : 20 MAYBE GOTO 10 OR 40 : 30 MAYBE GOTO 10 OR 20 : 40 GOTO 10, 20 OR 30 23:01:48 I don't understand statement 40 23:02:17 ok make that 40 MAYBE GOTO 20 OR 30 : 50 GOTO 10 23:02:24 ok 23:02:51 oh and by the way the MAYBE is to mean that one option is not to jump at all 23:03:12 ??? 23:03:29 couldn't each "maybe" be first broken into a pair of "jump or not" instructions? 23:03:43 yeah 23:03:46 -!- tgwizard has quit (Remote closed the connection). 23:03:48 if I understand 23:03:49 so for each statement, there are 3 possible statements to do next 23:04:01 still unrollinging the first problem, it's long hehe 23:04:30 well i am sort of trying to be brief 23:05:17 there done finally with the first one 23:05:28 shall I write it in code? 23:05:49 perhaps abbreviated.. 23:06:44 A B WHILE C { A B } WHILE D { B WHILE C { A B } } 23:06:54 a and b are foo and bar 23:10:35 hm. interesting 23:10:43 oerjan: check that this is equiv to your code: 23:11:50 10 MAYBE 30 ELSE 15 : 15 MAYBE 40 ELSE 20 : 20 MAYBE 10 ELSE 25 : 25 MAYBE 40 ELSE 30 : 30 MAYBE 10 ELSE 35 : 35 MAYBE 20 ELSE 40 : 40 MAYBE 20 ELSE 45 : 45 MAYBE 30 ELSE 10 23:11:55 btw my code is just a flowchart in the form of the edges of a tetrahedron 23:13:23 you can also remove the "else xxx" and add 50 goto 10 23:13:27 (as you had) 23:13:49 * calamari draws it 23:14:58 looks fine to me 23:15:38 if that doesn't work then we need an example with real wire crossing 23:16:21 if you can find a very simple one that'd be great 23:16:30 this is rather long hehe 23:17:43 well the two simplest non-planar graphs are the complete graph on 5 points (i.e. 5 statements all connected) and the 3 + 3 bipartite graph (the famous 3 houses connected to 3 utilities puzzle) 23:18:33 so you gave the first ? 23:18:58 no i just gave you 4 points, thought that might still be impossible 23:20:26 i have this feeling this has something to do with the fundamental group of the graphs 23:21:28 I still haven't finished drawing the original problem yet hehe 23:22:05 oh, draw a square with one diagonal, and then a curved line between the other two points 23:22:30 oic 23:22:44 I'm drawing it as a flow chart 23:23:01 -!- Aardwolf has quit ("Ik zen der is mee weg"). 23:23:24 i guess you need to duplicate the lines then 23:23:35 yeah 23:23:49 I can already see a huge mess brewing 23:25:23 okay done drawing.. now the part that should be impossible 23:25:30 maybe try just 3 points first, i am not quite sure about that case 23:25:55 there is no exit.. interesting :) that's okay I guess 23:26:24 well you can just add a couple if you want :) 23:26:40 right.. 50 maybe 10 23:30:21 I discovered the two great secrets to writing great fiction. 23:30:27 But then I forgot one. 23:31:40 the other one is to have an unfallible memory :) 23:33:33 A photographic memory? 23:33:45 That'd help, yes. 23:35:06 i don't need photographic memory. 23:35:09 i have a camera. 23:35:47 what about this much smaller problem: 10 MAYBE GOTO 50 : 20 MAYBE GOTO 50 : 30 FOO : 40 GOTO 10 : 50 BAR 23:36:10 that's the break statement 23:37:02 Take pictures of your novel and stick them in your ears? 23:37:14 That'd probably work, yes. 23:38:50 So assuming having a photographic memory is one secret to writing good fiction, the other just might be to describe the world the characters are in. 23:40:12 oerjan: I can't remember.. were you disallowing temp variables for the solution? 23:40:24 yes 23:40:32 if so, I don't see a way to solve my problem, and it's a subset of yours 23:40:37 If you describe the world where it's not actually important that the world be described, the effect is that the world doesn't seem to exist only where it's important to the plot. 23:40:42 mine translates to the following code 23:40:52 while A { if B { C } } 23:41:16 not seeing a way to turn that if into a while without a temp variable 23:41:39 eh, i have certainly not disallowed _if_s 23:41:42 If one day somebody visits a store, and you didn't describe the store earlier, it seems like it spawned out of nowhere as soon as the person decided to visit it. 23:42:16 oerjan: oh, I thought the point was to only use while loops 23:45:30 although, I only need one variable to convert as many nested if's as I want into whiles 23:45:31 well it was you who stated the problem, i just disallowed temporary variables so we couldn't use that giant case statement you said was inefficient 23:45:38 right 23:48:09 what kind of language is it you want to translate into by the way? 23:48:43 well bf.. but I was hoping this could help for other langs too 23:49:09 ah, then you definitely want to disallow ifs 23:49:44 well, like I say above, I can do them with constant memory in bf 23:49:49 so I think it's fine 23:51:05 then you could do case statements as well 23:51:15 yeah I know 23:51:58 I think in the case of your problem, both methods would be about the same speed 23:52:38 but in the typical cases, not using case statements in bf would be a win 23:53:46 one idea is to encode the label in binary and use a branching tree for the case statement 23:54:06 yeah, we thought of that too :) 23:54:17 but didn't implement it 23:54:34 instead we decided to trade memory for speed 23:54:52 (in the second version of bfbasic labels) 23:55:24 -!- lament has changed nick to Lament. 23:55:42 of course one advantage of not using the case statement is I won't have a limit on the number of branch points 23:55:58 -!- Lament has changed nick to lament. 23:56:45 hey, how many people have read about this thing before? http://www.retrothing.com/2006/12/the_tinkertoy_c.html 23:57:31 i have 23:58:13 cool 23:58:22 I found an article explaining how it worked a while back, but it never had any pictures of the device